Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 93 additions & 0 deletions deapi/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,25 @@ def list_properties(self, options=None, search=None):
available_properties = [p for p in available_properties if search in p]
return available_properties

def list_registers(self, options=None, search=None):
"""
Get a list of register names from the current camera on DE-Server

Parameters
----------
options : list, optional
Options to pass to the server, by default None
"""
available_registers = self.__getStrings(self.LIST_REGISTERS, options)
if available_registers != False:
self.available_registers = available_registers

if logLevel == logging.DEBUG:
log.debug("Available camera registers: %s", available_registers)
if search is not None:
available_registers = [p for p in available_registers if search in p]
return available_registers

@deprecated_argument(
name="propertyName", since="5.2.0", alternative="property_name"
)
Expand Down Expand Up @@ -485,6 +504,39 @@ def get_property(self, property_name: str):
)

return ret

def get_register(self, register_name: str):
"""
Get the value of a register of the current camera on DE-Server

Parameters
----------
register_name : str
The name of the register to get the value of
"""
t0 = self.GetTime()
ret = False

if register_name is not None:
command = self._addSingleCommand(self.GET_REGISTER, register_name)
response = self._sendCommand(command)
if response != False:
values = self.__getParameters(response.acknowledge[0])
if type(values) is list:
if len(values) > 0:
ret = values[0] # always return the first value
else:
ret = values

if logLevel == logging.DEBUG:
log.debug(
"GetRegister: %s = %s, completed in %.1f ms",
register_name,
values,
(self.GetTime() - t0) * 1000,
)

return ret

def get_server_version(self):
"""
Expand Down Expand Up @@ -583,6 +635,41 @@ def set_property_and_get_changed_properties(self, name, value, changed_propertie
)

return ret


@write_only
def set_register(self, name: str, value):
"""
Set the value of a register of the current camera on DE-Server

Parameters
----------
name : str
The name of the register to set the value of
value : any
The value to set the register to
"""

t0 = self.GetTime()
ret = False

if name is not None and value is not None:
command = self._addSingleCommand(self.SET_REGISTER, name, [value])
response = self._sendCommand(command)
if response != False:
ret = response.acknowledge[0].error != True
self.refreshProperties = True

if logLevel == logging.DEBUG:
log.debug(
"SetRegister: %s = %s, completed in %.1f ms",
name,
value,
(self.GetTime() - t0) * 1000,
)

return ret


@write_only
def set_engineering_mode(self, enable, password):
Expand Down Expand Up @@ -2685,6 +2772,9 @@ def ParseChangedProperties(self, changedProperties, response):
GetProperty = get_property
SetProperty = set_property
SetPropertyAndGetChangedProperties = set_property_and_get_changed_properties
GetRegister = get_register
SetRegister = set_register
ListRegisters = list_registers
setEngMode = set_engineering_mode
SetHWROI = set_hw_roi
SetHWROIAndGetChangedProperties = set_hw_roi_and_get_changed_properties
Expand Down Expand Up @@ -2756,6 +2846,9 @@ def ParseChangedProperties(self, changedProperties, response):
SET_ADAPTIVE_ROI = 33
SET_ADAPTIVE_ROI_AND_GET_CHANGED_PROPERTIES = 34
GET_PROPERTY_SPECIFICATIONS = 35
GET_REGISTER = 38
SET_REGISTER = 39
LIST_REGISTERS = 40


MMF_DATA_HEADER_SIZE = 24
Expand Down
Loading