diff --git a/Python/XA/BBD30X/bbd30x_test_script.py b/Python/XA/BBD30X/bbd30x_test_script.py new file mode 100644 index 0000000..40dc249 --- /dev/null +++ b/Python/XA/BBD30X/bbd30x_test_script.py @@ -0,0 +1,105 @@ +import platform + +from thorlabs_xa.products.bbd30x import Bbd30x +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import ( + TLMC_AuxIoPortMode, + TLMC_AuxIoPortNumber, + TLMC_DigitalOutput, + TLMC_OperatingMode, + TLMC_RackBayNumber, + TLMC_SettingStringFormat, +) +from thorlabs_xa.shared.params import TLMC_DeviceInfo +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +BBD30X_PART_NUMBER = "BBD303" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = { + "PartNumber": BBD30X_PART_NUMBER, + "SerialNumber": "103003334", + "Channels": [ + {"BayNumber": 1, "SerialNumber": "104003335", "ActuatorType": "DDS220"}, + {"BayNumber": 2, "SerialNumber": "104003336", "ActuatorType": "DDS300"}, + {"BayNumber": 3, "SerialNumber": "104003337", "ActuatorType": "DDS600"}, + ], +} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo | None: + try: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + except XADeviceException as e: + print(f"Unable to create simulation for {BBD30X_PART_NUMBER}: {e.error_code}") + return None + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = BBD30X_PART_NUMBER + device_info.device = SIMULATION_CONFIG_STRING["SerialNumber"] + device_info.transport = "" + return device_info + + +def main() -> None: + device: Bbd30x | None = None + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + devices = system_manager.get_device_list() + device_info: TLMC_DeviceInfo | None = None + + for listed_device_info in devices: + if listed_device_info.part_number == BBD30X_PART_NUMBER: + device_info = listed_device_info + + if not device_info: + device_info = create_simulation(system_manager) + + if not device_info: + print("No compatible BBD30X device available.") + system_manager.shutdown() + return + + try: + device = system_manager.open_device_as(device_info.device, device_info.transport, TLMC_OperatingMode.TLMC_OperatingMode_Default, Bbd30x) + + DiagnosticsHelper.console(device.get_hardware_info(DEFAULT_TIMEOUT)) + + application_firmware, device_firmware = device.get_firmware_version_info(DEFAULT_TIMEOUT) + DiagnosticsHelper.console(f"Application firmware: {application_firmware}") + DiagnosticsHelper.console(f"Device firmware: {device_firmware}") + + device.set_digital_output_states(TLMC_DigitalOutput.TLMC_DigitalOutput_1) + DiagnosticsHelper.console(f"Digital outputs: {device.get_digital_output_states(DEFAULT_TIMEOUT).name}") + + device.set_aux_io_port_mode( + TLMC_AuxIoPortNumber.TLMC_AuxIoPortNumber_Port1, + TLMC_AuxIoPortMode.TLMC_AuxIoPortMode_SoftwareControlled, + ) + DiagnosticsHelper.console( + f"Aux mode: {device.get_aux_io_port_mode(TLMC_AuxIoPortNumber.TLMC_AuxIoPortNumber_Port1, DEFAULT_TIMEOUT).name}" + ) + + DiagnosticsHelper.console( + f"Rack bay 1 state: {device.get_rack_bay_occupied_state(TLMC_RackBayNumber.TLMC_RackBayNumber_1, DEFAULT_TIMEOUT).name}" + ) + + DiagnosticsHelper.console(device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True)) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + finally: + if device: + device.disconnect() + device.close() + system_manager.shutdown() + + +if __name__ == "__main__": + main() diff --git a/Python/XA/BBD30XLogicalChannel/bbd30x_logical_channel_test_script.py b/Python/XA/BBD30XLogicalChannel/bbd30x_logical_channel_test_script.py new file mode 100644 index 0000000..407ff73 --- /dev/null +++ b/Python/XA/BBD30XLogicalChannel/bbd30x_logical_channel_test_script.py @@ -0,0 +1,90 @@ +import platform + +from thorlabs_xa.products.bbd30x_logical_channel import Bbd30xLogicalChannel +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import TLMC_EnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_SettingStringFormat, TLMC_StopMode +from thorlabs_xa.shared.params import TLMC_DeviceInfo +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +BBD30X_PART_NUMBER = "BBD303" +BBD30X_PARENT_SERIAL = "103003334" +BBD30X_CHANNEL_SERIAL = "104003335" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = { + "PartNumber": BBD30X_PART_NUMBER, + "SerialNumber": BBD30X_PARENT_SERIAL, + "Channels": [ + {"BayNumber": 1, "SerialNumber": BBD30X_CHANNEL_SERIAL, "ActuatorType": "DDS220"}, + {"BayNumber": 2, "SerialNumber": "104003336", "ActuatorType": "DDS300"}, + {"BayNumber": 3, "SerialNumber": "104003337", "ActuatorType": "DDS600"}, + ], +} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo | None: + try: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + except XADeviceException as e: + print(f"Unable to create simulation for {BBD30X_PART_NUMBER}: {e.error_code}") + return None + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = "BBD30X Logical Channel" + device_info.device = BBD30X_CHANNEL_SERIAL + device_info.transport = BBD30X_PARENT_SERIAL + return device_info + + +def main() -> None: + device = None + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + device_info: TLMC_DeviceInfo | None = None + for listed_device_info in system_manager.get_device_list(): + is_known_serial = listed_device_info.device == BBD30X_CHANNEL_SERIAL + is_logical_description = "logical" in listed_device_info.device_type_description.lower() + if is_known_serial or is_logical_description: + device_info = listed_device_info + + if not device_info: + device_info = create_simulation(system_manager) + + if not device_info: + print("No compatible BBD30X logical channel available.") + system_manager.shutdown() + return + + try: + device = system_manager.open_device_as(device_info.device, device_info.transport, TLMC_OperatingMode.TLMC_OperatingMode_Default, Bbd30xLogicalChannel) + + device.set_enable_state(TLMC_EnableState.TLMC_Enabled) + DiagnosticsHelper.console(f"Enable state: {device.get_enable_state(DEFAULT_TIMEOUT)}") + + DiagnosticsHelper.console(device.get_hardware_info(DEFAULT_TIMEOUT)) + + device.move(TLMC_MoveMode.TLMC_MoveMode_ContinuousForward, 300, DEFAULT_TIMEOUT) + device.stop(TLMC_StopMode.TLMC_StopMode_Immediate, DEFAULT_TIMEOUT) + + device.request_status(DEFAULT_TIMEOUT) + DiagnosticsHelper.console_object(device.get_universal_status(DEFAULT_TIMEOUT)) + DiagnosticsHelper.console_object(device.get_universal_status_bits(DEFAULT_TIMEOUT)) + + DiagnosticsHelper.console(device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True)) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + finally: + if device: + device.close() + system_manager.shutdown() + + +if __name__ == "__main__": + main() diff --git a/Python/XA/BPC301/bpc301_test_script.py b/Python/XA/BPC301/bpc301_test_script.py new file mode 100644 index 0000000..501ab86 --- /dev/null +++ b/Python/XA/BPC301/bpc301_test_script.py @@ -0,0 +1,77 @@ +import platform + +from thorlabs_xa.products.bpc301 import Bpc301 +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import TLMC_EnableState, TLMC_OperatingMode, TLMC_PZ_PositionControlMode, TLMC_SettingStringFormat +from thorlabs_xa.shared.params import TLMC_DeviceInfo +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +BPC301_PART_NUMBER = "BPC301" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = {"PartNumber": BPC301_PART_NUMBER, "SerialNumber": "71003331"} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo | None: + try: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + except XADeviceException as e: + print(f"Unable to create simulation for {BPC301_PART_NUMBER}: {e.error_code}") + return None + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = BPC301_PART_NUMBER + device_info.device = SIMULATION_CONFIG_STRING["SerialNumber"] + device_info.transport = "" + return device_info + + +def main() -> None: + device: Bpc301 | None = None + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + device_info: TLMC_DeviceInfo | None = None + for listed_device_info in system_manager.get_device_list(): + if listed_device_info.part_number == BPC301_PART_NUMBER: + device_info = listed_device_info + + if not device_info: + device_info = create_simulation(system_manager) + + if not device_info: + print("No compatible BPC301 device available.") + system_manager.shutdown() + return + + try: + device = system_manager.open_device_as(device_info.device, device_info.transport, TLMC_OperatingMode.TLMC_OperatingMode_Default, Bpc301) + + device.set_enable_state(TLMC_EnableState.TLMC_Enabled) + DiagnosticsHelper.console(f"Enable state: {device.get_enable_state(DEFAULT_TIMEOUT).name}") + DiagnosticsHelper.console_object(device.get_hardware_info(DEFAULT_TIMEOUT)) + + device.set_position_control_mode(TLMC_PZ_PositionControlMode.TLMC_PZ_PositionControlMode_OpenLoop, DEFAULT_TIMEOUT) + DiagnosticsHelper.console(f"Position control mode: {device.get_position_control_mode(DEFAULT_TIMEOUT).name}") + + device.set_output_voltage(1000) + DiagnosticsHelper.console(f"Piezo voltage: {device.get_output_voltage(DEFAULT_TIMEOUT)}") + + DiagnosticsHelper.console(device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True)) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + finally: + if device: + device.disconnect() + device.close() + system_manager.shutdown() + + +if __name__ == "__main__": + main() diff --git a/Python/XA/BPC30X/bpc30x_test_script.py b/Python/XA/BPC30X/bpc30x_test_script.py new file mode 100644 index 0000000..ae81e07 --- /dev/null +++ b/Python/XA/BPC30X/bpc30x_test_script.py @@ -0,0 +1,90 @@ +import platform + +from thorlabs_xa.products.bpc30x import Bpc30x +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import TLMC_DigitalOutput, TLMC_OperatingMode, TLMC_RackBayNumber, TLMC_SettingStringFormat +from thorlabs_xa.shared.params import TLMC_DeviceInfo +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +BPC30X_PART_NUMBER = "BPC303" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = { + "PartNumber": BPC30X_PART_NUMBER, + "SerialNumber": "71003334", + "Channels": [ + {"BayNumber": 1, "SerialNumber": "91003335", "ActuatorType": "DDS220"}, + {"BayNumber": 2, "SerialNumber": "91003336", "ActuatorType": "DDS300"}, + {"BayNumber": 3, "SerialNumber": "91003337", "ActuatorType": "DDS600"}, + ], +} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo | None: + try: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + except XADeviceException as e: + print(f"Unable to create simulation for {BPC30X_PART_NUMBER}: {e.error_code}") + return None + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = BPC30X_PART_NUMBER + device_info.device = str(SIMULATION_CONFIG_STRING["SerialNumber"]) + device_info.transport = "" + return device_info + + +def main() -> None: + device: Bpc30x | None = None + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + devices = system_manager.get_device_list() + device_info: TLMC_DeviceInfo | None = None + + for listed_device_info in devices: + if listed_device_info.part_number == BPC30X_PART_NUMBER: + device_info = listed_device_info + + if not device_info: + device_info = create_simulation(system_manager) + + if not device_info: + print("No compatible BPC30X device available.") + system_manager.shutdown() + return + + try: + device = system_manager.open_device_as(device_info.device, device_info.transport, TLMC_OperatingMode.TLMC_OperatingMode_Default, Bpc30x) + + DiagnosticsHelper.console(device.get_hardware_info(DEFAULT_TIMEOUT)) + + application_firmware, device_firmware = device.get_firmware_version_info(DEFAULT_TIMEOUT) + DiagnosticsHelper.console(f"Application firmware: {application_firmware}") + DiagnosticsHelper.console(f"Device firmware: {device_firmware}") + + device.set_digital_output_states(TLMC_DigitalOutput.TLMC_DigitalOutput_1) + DiagnosticsHelper.console(f"Digital outputs: {device.get_digital_output_states(DEFAULT_TIMEOUT).name}") + + DiagnosticsHelper.console( + f"Rack bay 1 state: {device.get_rack_bay_occupied_state(TLMC_RackBayNumber.TLMC_RackBayNumber_1, DEFAULT_TIMEOUT).name}" + ) + + DiagnosticsHelper.console(device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True)) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + finally: + if device: + device.disconnect() + device.close() + system_manager.shutdown() + + +if __name__ == "__main__": + main() diff --git a/Python/XA/BPC30XLogicalChannel/bpc30x_logical_channel_test_script.py b/Python/XA/BPC30XLogicalChannel/bpc30x_logical_channel_test_script.py new file mode 100644 index 0000000..d8f4282 --- /dev/null +++ b/Python/XA/BPC30XLogicalChannel/bpc30x_logical_channel_test_script.py @@ -0,0 +1,86 @@ +import platform + +from thorlabs_xa.products.bpc30x_logical_channel import Bpc30xLogicalChannel +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import TLMC_EnableState, TLMC_OperatingMode, TLMC_PZ_PositionControlMode, TLMC_SettingStringFormat +from thorlabs_xa.shared.params import TLMC_DeviceInfo +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +BPC30X_PART_NUMBER = "BPC303" +BPC30X_PARENT_SERIAL = "71003334" +BPC30X_CHANNEL_SERIAL = "91003335" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = { + "PartNumber": BPC30X_PART_NUMBER, + "SerialNumber": BPC30X_PARENT_SERIAL, + "Channels": [ + {"BayNumber": 1, "SerialNumber": BPC30X_CHANNEL_SERIAL, "ActuatorType": "DDS220"}, + {"BayNumber": 2, "SerialNumber": "91003336", "ActuatorType": "DDS300"}, + {"BayNumber": 3, "SerialNumber": "91003337", "ActuatorType": "DDS600"}, + ], +} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo | None: + try: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + except XADeviceException as e: + print(f"Unable to create simulation for {BPC30X_PART_NUMBER}: {e.error_code}") + return None + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = "BPC30X Logical Channel" + device_info.device = BPC30X_CHANNEL_SERIAL + device_info.transport = BPC30X_PARENT_SERIAL + return device_info + + +def main() -> None: + device: Bpc30xLogicalChannel | None = None + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + device_info: TLMC_DeviceInfo | None = None + for listed_device_info in system_manager.get_device_list(): + if listed_device_info.device == BPC30X_CHANNEL_SERIAL: + device_info = listed_device_info + + if not device_info: + device_info = create_simulation(system_manager) + + if not device_info: + print("No compatible BPC30X logical channel available.") + system_manager.shutdown() + return + + try: + device = system_manager.open_device_as(device_info.device, device_info.transport, TLMC_OperatingMode.TLMC_OperatingMode_Default, Bpc30xLogicalChannel) + + device.set_enable_state(TLMC_EnableState.TLMC_Enabled) + DiagnosticsHelper.console(f"Enable state: {device.get_enable_state(DEFAULT_TIMEOUT).name}") + DiagnosticsHelper.console(device.get_hardware_info(DEFAULT_TIMEOUT)) + + device.set_position_control_mode(TLMC_PZ_PositionControlMode.TLMC_PZ_PositionControlMode_OpenLoop, DEFAULT_TIMEOUT) + DiagnosticsHelper.console(f"Position control mode: {device.get_position_control_mode(DEFAULT_TIMEOUT).name}") + + device.set_output_voltage(900) + DiagnosticsHelper.console(f"Piezo position: {device.get_output_voltage(DEFAULT_TIMEOUT)}") + + DiagnosticsHelper.console(device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True)) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + finally: + if device: + device.close() + system_manager.shutdown() + + +if __name__ == "__main__": + main() diff --git a/Python/XA/BSC201/bsc201_test_script.py b/Python/XA/BSC201/bsc201_test_script.py new file mode 100644 index 0000000..2857e64 --- /dev/null +++ b/Python/XA/BSC201/bsc201_test_script.py @@ -0,0 +1,95 @@ +import platform + +from thorlabs_xa.products.bsc201 import Bsc201 +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import TLMC_BowIndex, TLMC_DigitalOutput, TLMC_EnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_SettingStringFormat, TLMC_StopMode +from thorlabs_xa.shared.params import TLMC_DeviceInfo +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +BSC201_PART_NUMBER = "BSC201" +BSC201_PARENT_SERIAL = "40003334" +BSC201_CHANNEL_SERIAL = "40003335" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = { + "PartNumber": BSC201_PART_NUMBER, + "SerialNumber": BSC201_PARENT_SERIAL, + "Channels": [ + {"BayNumber": 1, "SerialNumber": BSC201_CHANNEL_SERIAL, "ActuatorType": "DRV001"}, + {"BayNumber": 2, "SerialNumber": "40003336", "ActuatorType": "DRV001"}, + {"BayNumber": 3, "SerialNumber": "40003337", "ActuatorType": "DRV001"}, + ], +} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo | None: + try: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + except XADeviceException as e: + print(f"Unable to create simulation for {BSC201_PART_NUMBER}: {e.error_code}") + return None + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = BSC201_PART_NUMBER + device_info.device = BSC201_CHANNEL_SERIAL + device_info.transport = BSC201_PARENT_SERIAL + return device_info + + +def main() -> None: + device: Bsc201 | None = None + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + device_info: TLMC_DeviceInfo | None = None + for listed_device_info in system_manager.get_device_list(): + if listed_device_info.device == BSC201_CHANNEL_SERIAL: + device_info = listed_device_info + + if not device_info: + device_info = create_simulation(system_manager) + + if not device_info: + print("No compatible BSC201 device available.") + system_manager.shutdown() + return + + try: + device = system_manager.open_device_as(device_info.device, device_info.transport, TLMC_OperatingMode.TLMC_OperatingMode_Default, Bsc201) + + device.set_enable_state(TLMC_EnableState.TLMC_Enabled) + DiagnosticsHelper.console(f"Enable state: {device.get_enable_state(DEFAULT_TIMEOUT)}") + + DiagnosticsHelper.console_object(device.get_hardware_info(DEFAULT_TIMEOUT)) + + device.set_digital_output_states(TLMC_DigitalOutput.TLMC_DigitalOutput_1) + DiagnosticsHelper.console(f"Digital outputs: {device.get_digital_output_states(DEFAULT_TIMEOUT)}") + + device.set_bow_index(TLMC_BowIndex.TLMC_BowIndex_SCurve2) + DiagnosticsHelper.console(f"Bow index: {device.get_bow_index(DEFAULT_TIMEOUT)}") + + device.move(TLMC_MoveMode.TLMC_MoveMode_ContinuousForward, 300, DEFAULT_TIMEOUT) + device.stop(TLMC_StopMode.TLMC_StopMode_Immediate, DEFAULT_TIMEOUT) + + device.request_status(DEFAULT_TIMEOUT) + DiagnosticsHelper.console_object(device.get_stepper_status(DEFAULT_TIMEOUT)) + DiagnosticsHelper.console_object(device.get_universal_status_bits(DEFAULT_TIMEOUT)) + + DiagnosticsHelper.console(device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True)) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + finally: + if device: + device.disconnect() + device.close() + system_manager.shutdown() + + +if __name__ == "__main__": + main() diff --git a/Python/XA/BSC201V4/bsc201v4_test_script.py b/Python/XA/BSC201V4/bsc201v4_test_script.py new file mode 100644 index 0000000..f1afb7f --- /dev/null +++ b/Python/XA/BSC201V4/bsc201v4_test_script.py @@ -0,0 +1,91 @@ +import platform + +from thorlabs_xa.products.bsc201v4 import Bsc201v4 +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import TLMC_BowIndex, TLMC_DigitalOutput, TLMC_EnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_SettingStringFormat, TLMC_StopMode +from thorlabs_xa.shared.params import TLMC_DeviceInfo +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +BSC201V4_PART_NUMBER = "BSC201" +BSC201V4_PARENT_SERIAL = "40003334" +BSC201V4_CHANNEL_SERIAL = "40003335" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = { + "PartNumber": BSC201V4_PART_NUMBER, + "SerialNumber": BSC201V4_PARENT_SERIAL, + "Channels": [ + {"BayNumber": 1, "SerialNumber": BSC201V4_CHANNEL_SERIAL, "ActuatorType": "DRV001"}, + {"BayNumber": 2, "SerialNumber": "40003336", "ActuatorType": "DRV001"}, + {"BayNumber": 3, "SerialNumber": "40003337", "ActuatorType": "DRV001"}, + ], +} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo | None: + try: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + except XADeviceException as e: + print(f"Unable to create simulation for BSC201V4: {e.error_code}") + return None + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = "BSC201V4" + device_info.device = BSC201V4_CHANNEL_SERIAL + device_info.transport = BSC201V4_PARENT_SERIAL + return device_info + + +def main() -> None: + device: Bsc201v4 | None = None + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + device_info: TLMC_DeviceInfo | None = None + for listed_device_info in system_manager.get_device_list(): + if listed_device_info.device == BSC201V4_CHANNEL_SERIAL: + device_info = listed_device_info + + if not device_info: + device_info = create_simulation(system_manager) + + if not device_info: + print("No compatible BSC201V4 device available.") + system_manager.shutdown() + return + + try: + device = system_manager.open_device_as(device_info.device, device_info.transport, TLMC_OperatingMode.TLMC_OperatingMode_Default, Bsc201v4) + + device.set_enable_state(TLMC_EnableState.TLMC_Enabled) + DiagnosticsHelper.console(f"Enable state: {device.get_enable_state(DEFAULT_TIMEOUT).name}") + + DiagnosticsHelper.console_object(device.get_hardware_info(DEFAULT_TIMEOUT)) + + device.set_digital_output_states(TLMC_DigitalOutput.TLMC_DigitalOutput_1) + DiagnosticsHelper.console(f"Digital outputs: {device.get_digital_output_states(DEFAULT_TIMEOUT).name}") + + device.set_bow_index(TLMC_BowIndex.TLMC_BowIndex_SCurve2) + DiagnosticsHelper.console(f"Bow index: {device.get_bow_index(DEFAULT_TIMEOUT).name}") + + device.move(TLMC_MoveMode.TLMC_MoveMode_ContinuousForward, 300, DEFAULT_TIMEOUT) + device.stop(TLMC_StopMode.TLMC_StopMode_Immediate, DEFAULT_TIMEOUT) + + DiagnosticsHelper.console(device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True)) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + finally: + if device: + device.disconnect() + device.close() + system_manager.shutdown() + + +if __name__ == "__main__": + main() diff --git a/Python/XA/BSC20X/bsc20x_test_script.py b/Python/XA/BSC20X/bsc20x_test_script.py new file mode 100644 index 0000000..efe4fb7 --- /dev/null +++ b/Python/XA/BSC20X/bsc20x_test_script.py @@ -0,0 +1,89 @@ +import platform + +from thorlabs_xa.products.bsc20x import Bsc20x +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import TLMC_DigitalOutput, TLMC_OperatingMode, TLMC_RackBayNumber, TLMC_SettingStringFormat +from thorlabs_xa.shared.params import TLMC_DeviceInfo +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +BSC20X_PART_NUMBER = "BSC201" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = { + "PartNumber": BSC20X_PART_NUMBER, + "SerialNumber": "40003334", + "Channels": [ + {"BayNumber": 1, "SerialNumber": "40003335", "ActuatorType": "DRV001"}, + {"BayNumber": 2, "SerialNumber": "40003336", "ActuatorType": "DRV001"}, + {"BayNumber": 3, "SerialNumber": "40003337", "ActuatorType": "DRV001"}, + ], +} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo | None: + try: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + except XADeviceException as e: + print(f"Unable to create simulation for {BSC20X_PART_NUMBER}: {e.error_code}") + return None + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = BSC20X_PART_NUMBER + device_info.device = str(SIMULATION_CONFIG_STRING["SerialNumber"]) + device_info.transport = "" + return device_info + + +def main() -> None: + device: Bsc20x | None = None + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + devices = system_manager.get_device_list() + device_info: TLMC_DeviceInfo | None = None + + for listed_device_info in devices: + if listed_device_info.part_number == BSC20X_PART_NUMBER: + device_info = listed_device_info + + if not device_info: + device_info = create_simulation(system_manager) + + if not device_info: + print("No compatible BSC20X device available.") + system_manager.shutdown() + return + + try: + device = system_manager.open_device_as(device_info.device, device_info.transport, TLMC_OperatingMode.TLMC_OperatingMode_Default, Bsc20x) + + DiagnosticsHelper.console(device.get_hardware_info(DEFAULT_TIMEOUT)) + application_firmware, device_firmware = device.get_firmware_version_info(DEFAULT_TIMEOUT) + DiagnosticsHelper.console(f"Application firmware: {application_firmware}") + DiagnosticsHelper.console(f"Device firmware: {device_firmware}") + + device.set_digital_output_states(TLMC_DigitalOutput.TLMC_DigitalOutput_1) + DiagnosticsHelper.console(f"Digital outputs: {device.get_digital_output_states(DEFAULT_TIMEOUT).name}") + + DiagnosticsHelper.console( + f"Rack bay 1 state: {device.get_rack_bay_occupied_state(TLMC_RackBayNumber.TLMC_RackBayNumber_1, DEFAULT_TIMEOUT).name}" + ) + + DiagnosticsHelper.console(device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True)) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + finally: + if device: + device.disconnect() + device.close() + system_manager.shutdown() + + +if __name__ == "__main__": + main() diff --git a/Python/XA/BSC20XLogicalChannel/bsc20x_logical_channel_test_script.py b/Python/XA/BSC20XLogicalChannel/bsc20x_logical_channel_test_script.py new file mode 100644 index 0000000..bb06825 --- /dev/null +++ b/Python/XA/BSC20XLogicalChannel/bsc20x_logical_channel_test_script.py @@ -0,0 +1,94 @@ +import platform + +from thorlabs_xa.products.bsc20x_logical_channel import Bsc20xLogicalChannel +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import TLMC_BowIndex, TLMC_DigitalOutput, TLMC_EnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_SettingStringFormat, TLMC_StopMode +from thorlabs_xa.shared.params import TLMC_DeviceInfo +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +BSC20X_PART_NUMBER = "BSC201" +BSC20X_PARENT_SERIAL = "40003334" +BSC20X_CHANNEL_SERIAL = "40003335" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = { + "PartNumber": BSC20X_PART_NUMBER, + "SerialNumber": BSC20X_PARENT_SERIAL, + "Channels": [ + {"BayNumber": 1, "SerialNumber": BSC20X_CHANNEL_SERIAL, "ActuatorType": "DRV001"}, + {"BayNumber": 2, "SerialNumber": "40003336", "ActuatorType": "DRV001"}, + {"BayNumber": 3, "SerialNumber": "40003337", "ActuatorType": "DRV001"}, + ], +} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo | None: + try: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + except XADeviceException as e: + print(f"Unable to create simulation for {BSC20X_PART_NUMBER}: {e.error_code}") + return None + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = "BSC20X Logical Channel" + device_info.device = BSC20X_CHANNEL_SERIAL + device_info.transport = BSC20X_PARENT_SERIAL + return device_info + + +def main() -> None: + device: Bsc20xLogicalChannel | None = None + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + device_info: TLMC_DeviceInfo | None = None + for listed_device_info in system_manager.get_device_list(): + if listed_device_info.device == BSC20X_CHANNEL_SERIAL: + device_info = listed_device_info + + if not device_info: + device_info = create_simulation(system_manager) + + if not device_info: + print("No compatible BSC20X logical channel available.") + system_manager.shutdown() + return + + try: + device = system_manager.open_device_as(device_info.device, device_info.transport, TLMC_OperatingMode.TLMC_OperatingMode_Default, Bsc20xLogicalChannel) + + device.set_enable_state(TLMC_EnableState.TLMC_Enabled) + DiagnosticsHelper.console(f"Enable state: {device.get_enable_state(DEFAULT_TIMEOUT)}") + DiagnosticsHelper.console_object(device.get_hardware_info(DEFAULT_TIMEOUT)) + + device.set_digital_output_states(TLMC_DigitalOutput.TLMC_DigitalOutput_1) + DiagnosticsHelper.console(f"Digital outputs: {device.get_digital_output_states(DEFAULT_TIMEOUT)}") + + device.set_bow_index(TLMC_BowIndex.TLMC_BowIndex_SCurve2) + DiagnosticsHelper.console(f"Bow index: {device.get_bow_index(DEFAULT_TIMEOUT)}") + + device.move(TLMC_MoveMode.TLMC_MoveMode_ContinuousForward, 300, DEFAULT_TIMEOUT) + device.stop(TLMC_StopMode.TLMC_StopMode_Immediate, DEFAULT_TIMEOUT) + + device.request_status(DEFAULT_TIMEOUT) + DiagnosticsHelper.console_object(device.get_stepper_status(DEFAULT_TIMEOUT)) + DiagnosticsHelper.console_object(device.get_universal_status_bits(DEFAULT_TIMEOUT)) + + DiagnosticsHelper.console(device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True)) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + finally: + if device: + device.disconnect() + device.close() + system_manager.shutdown() + + +if __name__ == "__main__": + main() diff --git a/Python/XA/BSC20XV4LogicalChannel/bsc20xv4_logical_channel_test_script.py b/Python/XA/BSC20XV4LogicalChannel/bsc20xv4_logical_channel_test_script.py new file mode 100644 index 0000000..231ca18 --- /dev/null +++ b/Python/XA/BSC20XV4LogicalChannel/bsc20xv4_logical_channel_test_script.py @@ -0,0 +1,94 @@ +import platform + +from thorlabs_xa.products.bsc20xv4_logical_channel import Bsc20xv4LogicalChannel +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import TLMC_BowIndex, TLMC_DigitalOutput, TLMC_EnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_SettingStringFormat, TLMC_StopMode +from thorlabs_xa.shared.params import TLMC_DeviceInfo +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +BSC20XV4_PART_NUMBER = "BSC201" +BSC20XV4_PARENT_SERIAL = "40003334" +BSC20XV4_CHANNEL_SERIAL = "40003335" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = { + "PartNumber": BSC20XV4_PART_NUMBER, + "SerialNumber": BSC20XV4_PARENT_SERIAL, + "Channels": [ + {"BayNumber": 1, "SerialNumber": BSC20XV4_CHANNEL_SERIAL, "ActuatorType": "DRV001"}, + {"BayNumber": 2, "SerialNumber": "40003336", "ActuatorType": "DRV001"}, + {"BayNumber": 3, "SerialNumber": "40003337", "ActuatorType": "DRV001"}, + ], +} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo | None: + try: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + except XADeviceException as e: + print(f"Unable to create simulation for BSC20XV4 logical channel: {e.error_code}") + return None + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = "BSC20XV4 Logical Channel" + device_info.device = BSC20XV4_CHANNEL_SERIAL + device_info.transport = BSC20XV4_PARENT_SERIAL + return device_info + + +def main() -> None: + device: Bsc20xv4LogicalChannel | None = None + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + device_info: TLMC_DeviceInfo | None = None + for listed_device_info in system_manager.get_device_list(): + if listed_device_info.device == BSC20XV4_CHANNEL_SERIAL: + device_info = listed_device_info + + if not device_info: + device_info = create_simulation(system_manager) + + if not device_info: + print("No compatible BSC20XV4 logical channel available.") + system_manager.shutdown() + return + + try: + device = system_manager.open_device_as(device_info.device, device_info.transport, TLMC_OperatingMode.TLMC_OperatingMode_Default, Bsc20xv4LogicalChannel) + + device.set_enable_state(TLMC_EnableState.TLMC_Enabled) + DiagnosticsHelper.console(f"Enable state: {device.get_enable_state(DEFAULT_TIMEOUT)}") + DiagnosticsHelper.console_object(device.get_hardware_info(DEFAULT_TIMEOUT)) + + device.set_digital_output_states(TLMC_DigitalOutput.TLMC_DigitalOutput_1) + DiagnosticsHelper.console(f"Digital outputs: {device.get_digital_output_states(DEFAULT_TIMEOUT)}") + + device.set_bow_index(TLMC_BowIndex.TLMC_BowIndex_SCurve2) + DiagnosticsHelper.console(f"Bow index: {device.get_bow_index(DEFAULT_TIMEOUT)}") + + device.move(TLMC_MoveMode.TLMC_MoveMode_ContinuousForward, 300, DEFAULT_TIMEOUT) + device.stop(TLMC_StopMode.TLMC_StopMode_Immediate, DEFAULT_TIMEOUT) + + device.request_status(DEFAULT_TIMEOUT) + DiagnosticsHelper.console_object(device.get_stepper_status(DEFAULT_TIMEOUT)) + DiagnosticsHelper.console_object(device.get_universal_status_bits(DEFAULT_TIMEOUT)) + + DiagnosticsHelper.console(device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True)) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + finally: + if device: + device.disconnect() + device.close() + system_manager.shutdown() + + +if __name__ == "__main__": + main() diff --git a/Python/XA/KBD101/kbd101_test_script.py b/Python/XA/KBD101/kbd101_test_script.py new file mode 100644 index 0000000..20011ab --- /dev/null +++ b/Python/XA/KBD101/kbd101_test_script.py @@ -0,0 +1,82 @@ +import platform + +from thorlabs_xa.products.kbd101 import Kbd101 +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import TLMC_EnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_SettingStringFormat, TLMC_StopMode +from thorlabs_xa.shared.params import TLMC_DeviceInfo +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +KBD101_PART_NUMBER = "KBD101" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = { + "PartNumber": KBD101_PART_NUMBER, + "SerialNumber": "28000001", + "ActuatorType": "DDSM100", +} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo | None: + try: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + except XADeviceException as e: + print(f"Unable to create simulation for {KBD101_PART_NUMBER}: {e.error_code}") + return None + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = KBD101_PART_NUMBER + device_info.device = SIMULATION_CONFIG_STRING["SerialNumber"] + device_info.transport = "" + return device_info + + +def main() -> None: + device: Kbd101 | None = None + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + device_info: TLMC_DeviceInfo | None = None + for listed_device_info in system_manager.get_device_list(): + if listed_device_info.part_number == KBD101_PART_NUMBER: + device_info = listed_device_info + + if not device_info: + device_info = create_simulation(system_manager) + + if not device_info: + print("No compatible KBD101 device available.") + system_manager.shutdown() + return + + try: + device = system_manager.open_device_as(device_info.device, device_info.transport, TLMC_OperatingMode.TLMC_OperatingMode_Default, Kbd101) + + device.set_enable_state(TLMC_EnableState.TLMC_Enabled) + DiagnosticsHelper.console(f"Enable state: {device.get_enable_state(DEFAULT_TIMEOUT).name}") + DiagnosticsHelper.console(device.get_hardware_info(DEFAULT_TIMEOUT)) + + device.move(TLMC_MoveMode.TLMC_MoveMode_ContinuousForward, 300, DEFAULT_TIMEOUT) + device.stop(TLMC_StopMode.TLMC_StopMode_Immediate, DEFAULT_TIMEOUT) + + device.request_status(DEFAULT_TIMEOUT) + DiagnosticsHelper.console_object(device.get_universal_status(DEFAULT_TIMEOUT)) + DiagnosticsHelper.console_object(device.get_universal_status_bits(DEFAULT_TIMEOUT)) + + DiagnosticsHelper.console(device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True)) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + finally: + if device: + device.disconnect() + device.close() + system_manager.shutdown() + + +if __name__ == "__main__": + main() diff --git a/Python/XA/KPC101/kpc101_test_script.py b/Python/XA/KPC101/kpc101_test_script.py index 469e6c7..a771f9d 100644 --- a/Python/XA/KPC101/kpc101_test_script.py +++ b/Python/XA/KPC101/kpc101_test_script.py @@ -277,7 +277,7 @@ def main() -> None: # Set to open loop position control mode DiagnosticsHelper.console("Setting to open loop control mode...") - device.set_position_control_mode(TLMC_PZ_PositionControlMode.TLMC_PZ_PositionControlMode_OpenLoop) + device.set_position_control_mode(TLMC_PZ_PositionControlMode.TLMC_PZ_PositionControlMode_OpenLoop, DEFAULT_TIMEOUT) position_control_mode_returned = device.get_position_control_mode(DEFAULT_TIMEOUT) diff --git a/Python/XA/KST101/kst101_test_script.py b/Python/XA/KST101/kst101_test_script.py new file mode 100644 index 0000000..11ed2e7 --- /dev/null +++ b/Python/XA/KST101/kst101_test_script.py @@ -0,0 +1,82 @@ +import platform + +from thorlabs_xa.products.kst101 import Kst101 +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import TLMC_EnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_SettingStringFormat, TLMC_StopMode +from thorlabs_xa.shared.params import TLMC_DeviceInfo +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +KST101_PART_NUMBER = "KST101" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = { + "PartNumber": KST101_PART_NUMBER, + "SerialNumber": "26100001", + "ActuatorType": "FW103", +} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo | None: + try: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + except XADeviceException as e: + print(f"Unable to create simulation for {KST101_PART_NUMBER}: {e.error_code}") + return None + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = KST101_PART_NUMBER + device_info.device = SIMULATION_CONFIG_STRING["SerialNumber"] + device_info.transport = "" + return device_info + + +def main() -> None: + device: Kst101 | None = None + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + device_info: TLMC_DeviceInfo | None = None + for listed_device_info in system_manager.get_device_list(): + if listed_device_info.part_number == KST101_PART_NUMBER: + device_info = listed_device_info + + if not device_info: + device_info = create_simulation(system_manager) + + if not device_info: + print("No compatible KST101 device available.") + system_manager.shutdown() + return + + try: + device = system_manager.open_device_as(device_info.device, device_info.transport, TLMC_OperatingMode.TLMC_OperatingMode_Default, Kst101) + + device.set_enable_state(TLMC_EnableState.TLMC_Enabled) + DiagnosticsHelper.console(f"Enable state: {device.get_enable_state(DEFAULT_TIMEOUT)}") + DiagnosticsHelper.console_object(device.get_hardware_info(DEFAULT_TIMEOUT)) + + device.move(TLMC_MoveMode.TLMC_MoveMode_ContinuousForward, 300, DEFAULT_TIMEOUT) + device.stop(TLMC_StopMode.TLMC_StopMode_Immediate, DEFAULT_TIMEOUT) + + device.request_status(DEFAULT_TIMEOUT) + DiagnosticsHelper.console_object(device.get_stepper_status(DEFAULT_TIMEOUT)) + DiagnosticsHelper.console_object(device.get_universal_status_bits(DEFAULT_TIMEOUT)) + + DiagnosticsHelper.console(device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True)) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + finally: + if device: + device.disconnect() + device.close() + system_manager.shutdown() + + +if __name__ == "__main__": + main() diff --git a/Python/XA/LNNX/lnnx_test_script.py b/Python/XA/LNNX/lnnx_test_script.py new file mode 100644 index 0000000..c9754fa --- /dev/null +++ b/Python/XA/LNNX/lnnx_test_script.py @@ -0,0 +1,84 @@ +import platform + +from thorlabs_xa.products.lnnx import Lnnx +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import TLMC_DigitalOutput, TLMC_OperatingMode, TLMC_RackBayNumber, TLMC_SettingStringFormat +from thorlabs_xa.shared.params import TLMC_DeviceInfo +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +LNNX_PART_NUMBER = "LNN001" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = {"PartNumber": LNNX_PART_NUMBER, "SerialNumber": "15000001"} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo | None: + try: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + except XADeviceException as e: + print(f"Unable to create simulation for {LNNX_PART_NUMBER}: {e.error_code}") + return None + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = LNNX_PART_NUMBER + device_info.device = SIMULATION_CONFIG_STRING["SerialNumber"] + device_info.transport = "" + return device_info + + +def main() -> None: + device: Lnnx | None = None + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + device_info: TLMC_DeviceInfo | None = None + for listed_device_info in system_manager.get_device_list(): + if listed_device_info.part_number == LNNX_PART_NUMBER: + device_info = listed_device_info + + if not device_info: + device_info = create_simulation(system_manager) + + if not device_info: + print("No compatible LNNX device available.") + system_manager.shutdown() + return + + try: + device = system_manager.open_device_as(device_info.device, device_info.transport, TLMC_OperatingMode.TLMC_OperatingMode_Default, Lnnx) + + DiagnosticsHelper.console_object(device.get_hardware_info(DEFAULT_TIMEOUT)) + application_firmware, device_firmware = device.get_firmware_version_info(DEFAULT_TIMEOUT) + DiagnosticsHelper.console(f"Application firmware: {application_firmware}") + DiagnosticsHelper.console(f"Device firmware: {device_firmware}") + + device.set_digital_output_states(TLMC_DigitalOutput.TLMC_DigitalOutput_1) + DiagnosticsHelper.console(f"Digital inputs: {device.get_digital_input_states(DEFAULT_TIMEOUT)}") + DiagnosticsHelper.console(f"Digital outputs: {device.get_digital_output_states(DEFAULT_TIMEOUT)}") + + DiagnosticsHelper.console_object(device.get_nano_trak_status(DEFAULT_TIMEOUT)) + DiagnosticsHelper.console_object(device.get_nano_trak_mode(DEFAULT_TIMEOUT)) + DiagnosticsHelper.console_object(device.get_monitor_output_params(DEFAULT_TIMEOUT)) + + DiagnosticsHelper.console( + f"Rack bay 1 state: {device.get_rack_bay_occupied_state(TLMC_RackBayNumber.TLMC_RackBayNumber_1, DEFAULT_TIMEOUT)}" + ) + + DiagnosticsHelper.console(device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True)) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + finally: + if device: + device.disconnect() + device.close() + system_manager.shutdown() + + +if __name__ == "__main__": + main() diff --git a/Python/XA/LNNXLogicalChannel/lnnx_logical_channel_test_script.py b/Python/XA/LNNXLogicalChannel/lnnx_logical_channel_test_script.py new file mode 100644 index 0000000..fe9ab3e --- /dev/null +++ b/Python/XA/LNNXLogicalChannel/lnnx_logical_channel_test_script.py @@ -0,0 +1,85 @@ +import platform + +from thorlabs_xa.products.lnnx_logical_channel import LnnxLogicalChannel +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import TLMC_EnableState, TLMC_OperatingMode, TLMC_PZ_PositionControlMode, TLMC_SettingStringFormat +from thorlabs_xa.shared.params import TLMC_DeviceInfo +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +LNNX_PART_NUMBER = "LNN001" +LNNX_PARENT_SERIAL = "15000001" +LNNX_CHANNEL_SERIAL = "15000002" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = { + "PartNumber": LNNX_PART_NUMBER, + "SerialNumber": LNNX_PARENT_SERIAL, + "Channels": [{"BayNumber": 1, "SerialNumber": LNNX_CHANNEL_SERIAL}], +} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo | None: + try: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + except XADeviceException as e: + print(f"Unable to create simulation for LNNX logical channel: {e.error_code}") + return None + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = "LNNX Logical Channel" + device_info.device = LNNX_CHANNEL_SERIAL + device_info.transport = LNNX_PARENT_SERIAL + return device_info + + +def main() -> None: + device: LnnxLogicalChannel | None = None + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + device_info: TLMC_DeviceInfo | None = None + for listed_device_info in system_manager.get_device_list(): + if listed_device_info.device == LNNX_CHANNEL_SERIAL: + device_info = listed_device_info + + if not device_info: + device_info = create_simulation(system_manager) + + if not device_info: + print("No compatible LNNX logical channel available.") + system_manager.shutdown() + return + + try: + device = system_manager.open_device_as(device_info.device, device_info.transport, TLMC_OperatingMode.TLMC_OperatingMode_Default, LnnxLogicalChannel) + + device.set_enable_state(TLMC_EnableState.TLMC_Enabled) + DiagnosticsHelper.console(f"Enable state: {device.get_enable_state(DEFAULT_TIMEOUT)}") + DiagnosticsHelper.console_object(device.get_hardware_info(DEFAULT_TIMEOUT)) + + device.set_position_control_mode(TLMC_PZ_PositionControlMode.TLMC_PZ_PositionControlMode_OpenLoop, DEFAULT_TIMEOUT) + DiagnosticsHelper.console(f"Position control mode: {device.get_position_control_mode(DEFAULT_TIMEOUT)}") + + device.set_position(600) + DiagnosticsHelper.console(f"Piezo position: {device.get_position(DEFAULT_TIMEOUT)}") + + DiagnosticsHelper.console_object(device.get_piezo_status(DEFAULT_TIMEOUT)) + DiagnosticsHelper.console_object(device.get_piezo_status_bits(DEFAULT_TIMEOUT)) + + DiagnosticsHelper.console(device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True)) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + finally: + if device: + device.close() + system_manager.shutdown() + + +if __name__ == "__main__": + main() diff --git a/Python/XA/PDXC2/pdxc2_test_script.py b/Python/XA/PDXC2/pdxc2_test_script.py new file mode 100644 index 0000000..3964164 --- /dev/null +++ b/Python/XA/PDXC2/pdxc2_test_script.py @@ -0,0 +1,83 @@ +import platform + +from thorlabs_xa.products.pdxc2 import Pdxc2 +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import TLMC_EnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_PZ_PositionControlMode, TLMC_SettingStringFormat, TLMC_StopMode +from thorlabs_xa.shared.params import TLMC_DeviceInfo +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +PDXC2_PART_NUMBER = "PDXC2" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = { + "PartNumber": PDXC2_PART_NUMBER, + "SerialNumber": "112000002", + "ActuatorType": "PDX1", +} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo | None: + try: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + except XADeviceException as e: + print(f"Unable to create simulation for {PDXC2_PART_NUMBER}: {e.error_code}") + return None + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = PDXC2_PART_NUMBER + device_info.device = SIMULATION_CONFIG_STRING["SerialNumber"] + device_info.transport = "" + return device_info + + +def main() -> None: + device: Pdxc2 | None = None + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + device_info: TLMC_DeviceInfo | None = None + for listed_device_info in system_manager.get_device_list(): + if listed_device_info.part_number == PDXC2_PART_NUMBER: + device_info = listed_device_info + + if not device_info: + device_info = create_simulation(system_manager) + + if not device_info: + print("No compatible PDXC2 device available.") + system_manager.shutdown() + return + + try: + device = system_manager.open_device_as(device_info.device, device_info.transport, TLMC_OperatingMode.TLMC_OperatingMode_Default, Pdxc2) + + device.set_enable_state(TLMC_EnableState.TLMC_Enabled) + DiagnosticsHelper.console(f"Enable state: {device.get_enable_state(DEFAULT_TIMEOUT).name}") + DiagnosticsHelper.console_object(device.get_hardware_info(DEFAULT_TIMEOUT)) + + device.set_position_control_mode(TLMC_PZ_PositionControlMode.TLMC_PZ_PositionControlMode_OpenLoop, DEFAULT_TIMEOUT) + DiagnosticsHelper.console(f"Position control mode: {device.get_position_control_mode(DEFAULT_TIMEOUT).name}") + + device.move(TLMC_MoveMode.TLMC_MoveMode_JogForward, 200, DEFAULT_TIMEOUT) + device.stop(TLMC_StopMode.TLMC_StopMode_Immediate, DEFAULT_TIMEOUT) + + device.request_status(DEFAULT_TIMEOUT) + DiagnosticsHelper.console_object(device.get_stage_axis_params(DEFAULT_TIMEOUT)) + DiagnosticsHelper.console(device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True)) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + finally: + if device: + device.disconnect() + device.close() + system_manager.shutdown() + + +if __name__ == "__main__": + main() diff --git a/Python/XA/PDXC3/pdxc3_test_script.py b/Python/XA/PDXC3/pdxc3_test_script.py new file mode 100644 index 0000000..18573ae --- /dev/null +++ b/Python/XA/PDXC3/pdxc3_test_script.py @@ -0,0 +1,117 @@ +import platform + +from thorlabs_xa.products.pdxc3 import Pdxc3 +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import TLMC_MoveSyncStartTrigger, TLMC_OperatingMode, TLMC_SettingStringFormat +from thorlabs_xa.shared.params import TLMC_DeviceInfo, TLMC_MoveSyncArray, TLMC_MoveSyncParams, TLMC_MoveSyncStartParams +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +PDXC3_PART_NUMBER = "PDXC3" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = { + "PartNumber": PDXC3_PART_NUMBER, + "SerialNumber": "129000002", + "Channels": [ + {"BayNumber": 1, "ActuatorType": "PDX1"}, + {"BayNumber": 2, "ActuatorType": "PDX1"}, + {"BayNumber": 3, "ActuatorType": "PDX1"}, + ], +} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo | None: + try: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + except XADeviceException as e: + print(f"Unable to create simulation for {PDXC3_PART_NUMBER}: {e.error_code}") + return None + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = PDXC3_PART_NUMBER + device_info.device = str(SIMULATION_CONFIG_STRING["SerialNumber"]) + device_info.transport = "" + return device_info + + +def main() -> None: + device: Pdxc3 | None = None + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + device_info: TLMC_DeviceInfo | None = None + for listed_device_info in system_manager.get_device_list(): + if listed_device_info.part_number == PDXC3_PART_NUMBER: + device_info = listed_device_info + + if not device_info: + device_info = create_simulation(system_manager) + + if not device_info: + print("No compatible PDXC3 device available.") + system_manager.shutdown() + return + + try: + device = system_manager.open_device_as(device_info.device, device_info.transport, TLMC_OperatingMode.TLMC_OperatingMode_Default, Pdxc3) + + DiagnosticsHelper.console(device.get_hardware_info(DEFAULT_TIMEOUT)) + application_firmware, device_firmware = device.get_firmware_version_info(DEFAULT_TIMEOUT) + DiagnosticsHelper.console(f"Application firmware: {application_firmware}") + DiagnosticsHelper.console(f"Device firmware: {device_firmware}") + + # Send new move sync array to the controller + DiagnosticsHelper.console("Setting example move sync array...") + + move_sync_array = TLMC_MoveSyncArray() + move_sync_array.array_id = 1 + move_sync_array.channels = 3 + move_sync_array.num_points = 3 + move_sync_array.start_index = 0 + move_sync_array.time_positions = [ + 0,1100000,1150000, + 250,1119781,1149511, + 250,1139515,1148043, + ] + + device.set_move_sync_array(move_sync_array) + + # Send new move sync params to the controller + DiagnosticsHelper.console("Setting example move sync params...") + + move_sync_params = TLMC_MoveSyncParams() + move_sync_params.array_id = 1 + move_sync_params.cycle_start_index = 127 + move_sync_params.cycle_end_index = 254 + move_sync_params.number_of_cycles = 1 + move_sync_params.end_index = 255 + move_sync_params.deceleration = 10000 + device.set_move_sync_params(move_sync_params) + + # Send new move sync start params to the controller + DiagnosticsHelper.console("Setting example move sync start params...") + + move_sync_start_params = TLMC_MoveSyncStartParams() + move_sync_start_params.array_id = 1 + move_sync_start_params.channels = 3 + move_sync_start_params.trigger = TLMC_MoveSyncStartTrigger.TLMC_MoveSyncStartTrigger_Software + device.move_sync_start(move_sync_start_params) + + DiagnosticsHelper.console(device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True)) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + finally: + if device: + device.disconnect() + device.close() + system_manager.shutdown() + + +if __name__ == "__main__": + main() diff --git a/Python/XA/PDXC3Subchannel/pdxc3_subchannel_test_script.py b/Python/XA/PDXC3Subchannel/pdxc3_subchannel_test_script.py new file mode 100644 index 0000000..712fce4 --- /dev/null +++ b/Python/XA/PDXC3Subchannel/pdxc3_subchannel_test_script.py @@ -0,0 +1,90 @@ +import platform +from typing import cast + +from thorlabs_xa.products.pdxc3 import Pdxc3 +from thorlabs_xa.products.pdxc3_subchannel import Pdxc3Subchannel +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import TLMC_EnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_PZ_PositionControlMode, TLMC_SettingStringFormat, TLMC_StopMode +from thorlabs_xa.shared.params import TLMC_DeviceInfo +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +PDXC3_PART_NUMBER = "PDXC3" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = { + "PartNumber": PDXC3_PART_NUMBER, + "SerialNumber": "129000002", + "Channels": [ + {"BayNumber": 1, "ActuatorType": "PDX1"}, + {"BayNumber": 2, "ActuatorType": "PDX1"}, + {"BayNumber": 3, "ActuatorType": "PDX1"}, + ], +} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo | None: + try: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + except XADeviceException as e: + print(f"Unable to create simulation for {PDXC3_PART_NUMBER}: {e.error_code}") + return None + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = PDXC3_PART_NUMBER + device_info.device = str(SIMULATION_CONFIG_STRING["SerialNumber"]) + device_info.transport = "" + return device_info + + +def main() -> None: + parent_device: Pdxc3 | None = None + device: Pdxc3Subchannel | None = None + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + device_info: TLMC_DeviceInfo | None = None + for listed_device_info in system_manager.get_device_list(): + if listed_device_info.part_number == PDXC3_PART_NUMBER: + device_info = listed_device_info + + if not device_info: + device_info = create_simulation(system_manager) + + if not device_info: + print("No compatible PDXC3 device available.") + system_manager.shutdown() + return + + try: + parent_device = system_manager.open_device_as(device_info.device, device_info.transport, TLMC_OperatingMode.TLMC_OperatingMode_Default, Pdxc3) + device = cast(Pdxc3Subchannel, parent_device.get_subchannel(1)) + + device.set_enable_state(TLMC_EnableState.TLMC_Enabled) + DiagnosticsHelper.console(f"Enable state: {device.get_enable_state(DEFAULT_TIMEOUT).name}") + + device.set_position_control_mode(TLMC_PZ_PositionControlMode.TLMC_PZ_PositionControlMode_OpenLoop, DEFAULT_TIMEOUT) + DiagnosticsHelper.console(f"Position control mode: {device.get_position_control_mode(DEFAULT_TIMEOUT).name}") + + device.move(TLMC_MoveMode.TLMC_MoveMode_JogForward, 200, DEFAULT_TIMEOUT) + device.stop(TLMC_StopMode.TLMC_StopMode_Immediate, DEFAULT_TIMEOUT) + + device.request_status(DEFAULT_TIMEOUT) + DiagnosticsHelper.console_object(device.get_stage_axis_params(DEFAULT_TIMEOUT)) + DiagnosticsHelper.console(device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True)) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + finally: + if parent_device: + parent_device.disconnect() + parent_device.close() + system_manager.shutdown() + + +if __name__ == "__main__": + main() diff --git a/Python/XA/TBD001/tbd001_test_script.py b/Python/XA/TBD001/tbd001_test_script.py new file mode 100644 index 0000000..d8a91d3 --- /dev/null +++ b/Python/XA/TBD001/tbd001_test_script.py @@ -0,0 +1,81 @@ +import platform + +from thorlabs_xa.products.tbd001 import Tbd001 +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import TLMC_EnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_SettingStringFormat, TLMC_StopMode +from thorlabs_xa.shared.params import TLMC_DeviceInfo +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +TBD001_PART_NUMBER = "TBD001" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = { + "PartNumber": TBD001_PART_NUMBER, + "SerialNumber": "28001234", + "ActuatorType": "MTS25-Z8", +} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo | None: + try: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + except XADeviceException as e: + print(f"Unable to create simulation for {TBD001_PART_NUMBER}: {e.error_code}") + return None + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = TBD001_PART_NUMBER + device_info.device = SIMULATION_CONFIG_STRING["SerialNumber"] + device_info.transport = "" + return device_info + + +def main() -> None: + device: Tbd001 | None = None + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + device_info: TLMC_DeviceInfo | None = None + for listed_device_info in system_manager.get_device_list(): + if listed_device_info.part_number == TBD001_PART_NUMBER: + device_info = listed_device_info + + if not device_info: + device_info = create_simulation(system_manager) + + if not device_info: + print("No compatible TBD001 device available.") + system_manager.shutdown() + return + + try: + device = system_manager.open_device_as(device_info.device, device_info.transport, TLMC_OperatingMode.TLMC_OperatingMode_Default, Tbd001) + + device.set_enable_state(TLMC_EnableState.TLMC_Enabled) + DiagnosticsHelper.console(f"Enable state: {device.get_enable_state(DEFAULT_TIMEOUT).name}") + DiagnosticsHelper.console(device.get_hardware_info(DEFAULT_TIMEOUT)) + + device.move(TLMC_MoveMode.TLMC_MoveMode_JogForward, 300, DEFAULT_TIMEOUT) + device.stop(TLMC_StopMode.TLMC_StopMode_Immediate, DEFAULT_TIMEOUT) + + device.request_status(DEFAULT_TIMEOUT) + DiagnosticsHelper.console_object(device.get_universal_status(DEFAULT_TIMEOUT)) + DiagnosticsHelper.console_object(device.get_universal_status_bits(DEFAULT_TIMEOUT)) + + DiagnosticsHelper.console(device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True)) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + finally: + if device: + device.close() + system_manager.shutdown() + + +if __name__ == "__main__": + main() diff --git a/Python/XA/UMCX/umcx_test_script.py b/Python/XA/UMCX/umcx_test_script.py new file mode 100644 index 0000000..17c52eb --- /dev/null +++ b/Python/XA/UMCX/umcx_test_script.py @@ -0,0 +1,174 @@ +import platform + +from thorlabs_xa.products.umcx import Umcx +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import ( + TLMC_AuxIoPortMode, + TLMC_AuxIoPortNumber, + TLMC_MoveSyncStartTrigger, + TLMC_OperatingMode, + TLMC_RackBayNumber, + TLMC_SettingStringFormat, +) +from thorlabs_xa.shared.params import TLMC_DeviceInfo, TLMC_MoveSyncArray, TLMC_MoveSyncParams, TLMC_MoveSyncStartParams +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +UMCX_PART_NUMBER = "UMC1" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = { + "PartNumber": UMCX_PART_NUMBER, + "SerialNumber": "121000002", + "Channels": [ + { + "BayNumber": 1, + "SerialNumber": "126000003", + "ActuatorType": "DDS220", + } + ], +} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = str(SIMULATION_CONFIG_STRING["PartNumber"]) + device_info.device = str(SIMULATION_CONFIG_STRING["SerialNumber"]) + device_info.transport = "" + + return device_info + + +def main() -> None: + device: Umcx | None = None + + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + # If using Linux, we are required to state the port explicitly. Replace if you require an alternative port. + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + devices = system_manager.get_device_list() + device_info: TLMC_DeviceInfo | None = None + + if not devices: + print("No devices found, check that your device is powered and is visible to your system. Continuing with simulation!") + device_info = create_simulation(system_manager) + else: + print("Devices found:") + for listed_device_info in devices: + print(f"{listed_device_info.device_type_description}:{listed_device_info.device} found at {listed_device_info.transport} ({listed_device_info.part_number})") + + if listed_device_info.part_number == UMCX_PART_NUMBER: + device_info = listed_device_info + + if not device_info: + print("No UMCX devices found, check that your device is powered and is visible to your system. Continuing with simulation!") + device_info = create_simulation(system_manager) + + try: + device = system_manager.open_device_as( + device_info.device, + device_info.transport, + TLMC_OperatingMode.TLMC_OperatingMode_Default, + Umcx, + ) + + DiagnosticsHelper.console("Getting hardware info...") + DiagnosticsHelper.console_object(device.get_hardware_info(DEFAULT_TIMEOUT)) + + DiagnosticsHelper.console("Getting firmware version info...") + application_firmware, device_firmware = device.get_firmware_version_info(DEFAULT_TIMEOUT) + DiagnosticsHelper.console(f"Application firmware: {application_firmware}") + DiagnosticsHelper.console(f"Device firmware: {device_firmware}") + + DiagnosticsHelper.console("Testing AUX IO port mode round trip...") + test_port = TLMC_AuxIoPortNumber.TLMC_AuxIoPortNumber_Port1 + device.set_aux_io_port_mode( + test_port, + TLMC_AuxIoPortMode.TLMC_AuxIoPortMode_SoftwareControlled, + ) + + aux_mode_returned = device.get_aux_io_port_mode(test_port, DEFAULT_TIMEOUT) + + DiagnosticsHelper.console(f"Received AUX IO mode: {aux_mode_returned}") + + if aux_mode_returned == TLMC_AuxIoPortMode.TLMC_AuxIoPortMode_SoftwareControlled: + DiagnosticsHelper.console_green("AUX IO port mode round trip test passed.") + else: + DiagnosticsHelper.console_error("AUX IO port mode round trip test failed.") + + DiagnosticsHelper.console("Testing AUX IO software states round trip...") + software_states = 0x01 + device.set_aux_io_software_states(software_states) + + software_states_returned = device.get_aux_io_software_states(DEFAULT_TIMEOUT) + + DiagnosticsHelper.console(f"Sent: {software_states}") + DiagnosticsHelper.console(f"Received: {software_states_returned}") + + if software_states == software_states_returned: + DiagnosticsHelper.console_green("AUX IO software states round trip test passed.") + else: + DiagnosticsHelper.console_error("AUX IO software states round trip test failed.") + + DiagnosticsHelper.console("Reading rack bay 1 occupied state...") + bay_1_state = device.get_rack_bay_occupied_state(TLMC_RackBayNumber.TLMC_RackBayNumber_1, DEFAULT_TIMEOUT) + DiagnosticsHelper.console(f"Rack bay 1 state: {bay_1_state}") + + # Send new move sync array to the controller + move_sync_array = TLMC_MoveSyncArray() + move_sync_array.array_id = 1 + move_sync_array.channels = 3 + move_sync_array.num_points = 3 + move_sync_array.start_index = 0 + move_sync_array.time_positions = [ + 0,1100000,1150000, + 250,1119781,1149511, + 250,1139515,1148043, + ] + + device.set_move_sync_array(move_sync_array) + + # Send new move sync params to the controller + move_sync_params = TLMC_MoveSyncParams() + move_sync_params.array_id = 1 + move_sync_params.cycle_start_index = 127 + move_sync_params.cycle_end_index = 254 + move_sync_params.number_of_cycles = 1 + move_sync_params.end_index = 255 + move_sync_params.deceleration = 10000 + device.set_move_sync_params(move_sync_params) + + # Send new move sync start params to the controller + move_sync_start_params = TLMC_MoveSyncStartParams() + move_sync_start_params.array_id = 1 + move_sync_start_params.channels = 3 + move_sync_start_params.trigger = TLMC_MoveSyncStartTrigger.TLMC_MoveSyncStartTrigger_Software + device.move_sync_start(move_sync_start_params) + + DiagnosticsHelper.console("Getting settings JSON...") + json_settings = device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True) + DiagnosticsHelper.console(json_settings) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + + finally: + if device: + DiagnosticsHelper.console("Shutting down UMCX...") + device.disconnect() + device.close() + + DiagnosticsHelper.console("Shutting down system...") + system_manager.shutdown() + + DiagnosticsHelper.console("Completed.") + + +if __name__ == "__main__": + main() diff --git a/Python/XA/UMCXBrushlessLogicalChannel/umcx_brushless_logical_channel_test_script.py b/Python/XA/UMCXBrushlessLogicalChannel/umcx_brushless_logical_channel_test_script.py new file mode 100644 index 0000000..4ed6fb9 --- /dev/null +++ b/Python/XA/UMCXBrushlessLogicalChannel/umcx_brushless_logical_channel_test_script.py @@ -0,0 +1,216 @@ +import platform + +from thorlabs_xa.products.umcx_brushless_logical_channel import UmcxBrushlessLogicalChannel +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import ( + TLMC_EnableState, + TLMC_MoveMode, + TLMC_OperatingMode, + TLMC_SettingStringFormat, + TLMC_StopMode, +) +from thorlabs_xa.shared.params import ( + TLMC_DeviceInfo, + TLMC_GeneralMoveParams, + TLMC_MoveAbsoluteParams, + TLMC_MoveRelativeParams, + TLMC_VelocityParams, +) +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +UMCX_PART_NUMBER = "UMC1" +UMCX_SERIAL_NUMBER = "121000002" +UMCX_BRUSHLESS_CHANNEL_SERIAL_NUMBER = "126000003" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = { + "PartNumber": UMCX_PART_NUMBER, + "SerialNumber": UMCX_SERIAL_NUMBER, + "Channels": [ + { + "BayNumber": 1, + "SerialNumber": UMCX_BRUSHLESS_CHANNEL_SERIAL_NUMBER, + "ActuatorType": "DDS220", + } + ], +} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = "UMCX Brushless Logical Channel" + device_info.device = UMCX_BRUSHLESS_CHANNEL_SERIAL_NUMBER + device_info.transport = UMCX_SERIAL_NUMBER + + return device_info + + +def main() -> None: + device: UmcxBrushlessLogicalChannel | None = None + + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + # If using Linux, we are required to state the port explicitly. Replace if you require an alternative port. + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + devices = system_manager.get_device_list() + device_info: TLMC_DeviceInfo | None = None + + if not devices: + print("No devices found, check that your device is powered and is visible to your system. Continuing with simulation!") + device_info = create_simulation(system_manager) + else: + print("Devices found:") + for listed_device_info in devices: + print(f"{listed_device_info.device_type_description}:{listed_device_info.device} found at {listed_device_info.transport} ({listed_device_info.part_number})") + + is_known_serial = listed_device_info.device == UMCX_BRUSHLESS_CHANNEL_SERIAL_NUMBER + is_brushless_description = "brushless" in listed_device_info.device_type_description.lower() + + if is_known_serial or is_brushless_description: + device_info = listed_device_info + + if not device_info: + print("No UMCX brushless logical channel devices found, continuing with simulation!") + device_info = create_simulation(system_manager) + + try: + device = system_manager.open_device_as( + device_info.device, + device_info.transport, + TLMC_OperatingMode.TLMC_OperatingMode_Default, + UmcxBrushlessLogicalChannel, + ) + + DiagnosticsHelper.console("Enabling UMCX brushless logical channel...") + device.set_enable_state(TLMC_EnableState.TLMC_Enabled) + + enable_state = device.get_enable_state(DEFAULT_TIMEOUT) + if enable_state == TLMC_EnableState.TLMC_Enabled: + DiagnosticsHelper.console_green("UMCX brushless logical channel enabled.") + else: + DiagnosticsHelper.console_error("UMCX brushless logical channel not enabled as expected.") + + DiagnosticsHelper.console("Identifying device...") + device.identify() + + DiagnosticsHelper.console("Getting hardware info...") + DiagnosticsHelper.console_object(device.get_hardware_info(DEFAULT_TIMEOUT)) + + DiagnosticsHelper.console("Testing round trip of general move params...") + general_move_params = TLMC_GeneralMoveParams() + general_move_params.backlash_distance = 100 + + device.set_general_move_params(general_move_params) + general_move_params_returned = device.get_general_move_params(DEFAULT_TIMEOUT) + + sent_general_move_params = DiagnosticsHelper.object_as_string(general_move_params) + received_general_move_params = DiagnosticsHelper.object_as_string(general_move_params_returned) + + DiagnosticsHelper.console(f"Sent: {sent_general_move_params}") + DiagnosticsHelper.console(f"Received: {received_general_move_params}") + + if sent_general_move_params == received_general_move_params: + DiagnosticsHelper.console_green("General move params round trip test passed.") + else: + DiagnosticsHelper.console_error("General move params round trip test failed.") + + DiagnosticsHelper.console("Testing round trip of velocity params...") + velocity_params = TLMC_VelocityParams() + velocity_params.acceleration = 200 + velocity_params.max_velocity = 300 + velocity_params.min_velocity = 0 + + device.set_velocity_params(velocity_params) + velocity_params_returned = device.get_velocity_params(DEFAULT_TIMEOUT) + + sent_velocity_params = DiagnosticsHelper.object_as_string(velocity_params) + received_velocity_params = DiagnosticsHelper.object_as_string(velocity_params_returned) + + DiagnosticsHelper.console(f"Sent: {sent_velocity_params}") + DiagnosticsHelper.console(f"Received: {received_velocity_params}") + + if sent_velocity_params == received_velocity_params: + DiagnosticsHelper.console_green("Velocity params round trip test passed.") + else: + DiagnosticsHelper.console_error("Velocity params round trip test failed.") + + DiagnosticsHelper.console("Testing round trip of move absolute params...") + move_absolute_params = TLMC_MoveAbsoluteParams() + move_absolute_params.absolute_position = 500 + + device.set_move_absolute_params(move_absolute_params) + move_absolute_params_returned = device.get_move_absolute_params(DEFAULT_TIMEOUT) + + sent_move_absolute_params = DiagnosticsHelper.object_as_string(move_absolute_params) + received_move_absolute_params = DiagnosticsHelper.object_as_string(move_absolute_params_returned) + + DiagnosticsHelper.console(f"Sent: {sent_move_absolute_params}") + DiagnosticsHelper.console(f"Received: {received_move_absolute_params}") + + if sent_move_absolute_params == received_move_absolute_params: + DiagnosticsHelper.console_green("Move absolute params round trip test passed.") + else: + DiagnosticsHelper.console_error("Move absolute params round trip test failed.") + + device.move(TLMC_MoveMode.TLMC_MoveMode_AbsoluteToProgrammedPosition, 0, DEFAULT_TIMEOUT) + + DiagnosticsHelper.console("Testing round trip of move relative params...") + move_relative_params = TLMC_MoveRelativeParams() + move_relative_params.relative_distance = 250 + + device.set_move_relative_params(move_relative_params) + move_relative_params_returned = device.get_move_relative_params(DEFAULT_TIMEOUT) + + sent_move_relative_params = DiagnosticsHelper.object_as_string(move_relative_params) + received_move_relative_params = DiagnosticsHelper.object_as_string(move_relative_params_returned) + + DiagnosticsHelper.console(f"Sent: {sent_move_relative_params}") + DiagnosticsHelper.console(f"Received: {received_move_relative_params}") + + if sent_move_relative_params == received_move_relative_params: + DiagnosticsHelper.console_green("Move relative params round trip test passed.") + else: + DiagnosticsHelper.console_error("Move relative params round trip test failed.") + + device.move(TLMC_MoveMode.TLMC_MoveMode_RelativeByProgrammedDistance, 0, DEFAULT_TIMEOUT) + + position_counter = device.get_position_counter(DEFAULT_TIMEOUT) + DiagnosticsHelper.console(f"Position counter: {position_counter}") + + DiagnosticsHelper.console("Requesting status and reading UMC status...") + device.request_status(DEFAULT_TIMEOUT) + DiagnosticsHelper.console_object(device.get_umc_status(DEFAULT_TIMEOUT)) + + DiagnosticsHelper.console("Getting universal status bits...") + DiagnosticsHelper.console_object(device.get_universal_status_bits(DEFAULT_TIMEOUT)) + + DiagnosticsHelper.console("Getting settings JSON...") + json_settings = device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True) + DiagnosticsHelper.console(json_settings) + + DiagnosticsHelper.console("Stopping device...") + device.stop(TLMC_StopMode.TLMC_StopMode_Immediate, DEFAULT_TIMEOUT) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + + finally: + if device: + DiagnosticsHelper.console("Shutting down UMCX brushless logical channel...") + device.close() + + DiagnosticsHelper.console("Shutting down system...") + system_manager.shutdown() + + DiagnosticsHelper.console("Completed.") + + +if __name__ == "__main__": + main() diff --git a/Python/XA/UMCXStepperLogicalChannel/umcx_stepper_logical_channel_test_script.py b/Python/XA/UMCXStepperLogicalChannel/umcx_stepper_logical_channel_test_script.py new file mode 100644 index 0000000..9a6e9f1 --- /dev/null +++ b/Python/XA/UMCXStepperLogicalChannel/umcx_stepper_logical_channel_test_script.py @@ -0,0 +1,260 @@ +import platform + +from thorlabs_xa.products.umcx_stepper_logical_channel import UmcxStepperLogicalChannel +from thorlabs_xa.shared.diagnostics_helper import DiagnosticsHelper +from thorlabs_xa.shared.enums import ( + TLMC_BowIndex, + TLMC_DigitalOutput, + TLMC_EnableState, + TLMC_MoveMode, + TLMC_OperatingMode, + TLMC_SettingStringFormat, + TLMC_StopMode, +) +from thorlabs_xa.shared.params import ( + TLMC_DeviceInfo, + TLMC_GeneralMoveParams, + TLMC_MoveAbsoluteParams, + TLMC_MoveRelativeParams, + TLMC_VelocityParams, +) +from thorlabs_xa.shared.system_manager import SystemManager +from thorlabs_xa.shared.xa_error_factory import XADeviceException + +UMCX_PART_NUMBER = "UMC1" +UMCX_SERIAL_NUMBER = "121000002" +UMCX_STEPPER_CHANNEL_SERIAL_NUMBER = "127000003" +DEFAULT_TIMEOUT = 5000 + +SIMULATION_CONFIG_STRING = { + "PartNumber": UMCX_PART_NUMBER, + "SerialNumber": UMCX_SERIAL_NUMBER, + "Channels": [ + { + "BayNumber": 1, + "SerialNumber": UMCX_STEPPER_CHANNEL_SERIAL_NUMBER, + "ActuatorType": "DDS220", + } + ], +} + + +def create_simulation(system_manager: SystemManager) -> TLMC_DeviceInfo: + system_manager.create_simulation(SIMULATION_CONFIG_STRING) + + device_info = TLMC_DeviceInfo() + device_info.device_type_description = "UMCX Stepper Logical Channel" + device_info.device = UMCX_STEPPER_CHANNEL_SERIAL_NUMBER + device_info.transport = UMCX_SERIAL_NUMBER + + return device_info + + +def main() -> None: + device: UmcxStepperLogicalChannel | None = None + + system_manager = SystemManager.instance() + + if platform.system() == "Linux": + # If using Linux, we are required to state the port explicitly. Replace if you require an alternative port. + system_manager.startup("deviceDiscovery.connections=/dev/ttyUSB0") + else: + system_manager.startup() + + devices = system_manager.get_device_list() + device_info: TLMC_DeviceInfo | None = None + + if not devices: + print("No devices found, check that your device is powered and is visible to your system. Continuing with simulation!") + device_info = create_simulation(system_manager) + else: + print("Devices found:") + for listed_device_info in devices: + print(f"{listed_device_info.device_type_description}:{listed_device_info.device} found at {listed_device_info.transport} ({listed_device_info.part_number})") + + is_known_serial = listed_device_info.device == UMCX_STEPPER_CHANNEL_SERIAL_NUMBER + is_stepper_description = "stepper" in listed_device_info.device_type_description.lower() + + if is_known_serial or is_stepper_description: + device_info = listed_device_info + + if not device_info: + print("No UMCX stepper logical channel devices found, continuing with simulation!") + device_info = create_simulation(system_manager) + + try: + device = system_manager.open_device_as( + device_info.device, + device_info.transport, + TLMC_OperatingMode.TLMC_OperatingMode_Default, + UmcxStepperLogicalChannel, + ) + + DiagnosticsHelper.console("Enabling UMCX stepper logical channel...") + device.set_enable_state(TLMC_EnableState.TLMC_Enabled) + + enable_state = device.get_enable_state(DEFAULT_TIMEOUT) + if enable_state == TLMC_EnableState.TLMC_Enabled: + DiagnosticsHelper.console_green("UMCX stepper logical channel enabled.") + else: + DiagnosticsHelper.console_error("UMCX stepper logical channel not enabled as expected.") + + DiagnosticsHelper.console("Identifying device...") + device.identify() + + DiagnosticsHelper.console("Getting hardware info...") + DiagnosticsHelper.console_object(device.get_hardware_info(DEFAULT_TIMEOUT)) + + DiagnosticsHelper.console("Testing round trip of digital output states...") + digital_output = TLMC_DigitalOutput.TLMC_DigitalOutput_1 + device.set_digital_output_states(digital_output) + + digital_output_returned = device.get_digital_output_states(DEFAULT_TIMEOUT) + DiagnosticsHelper.console(f"Sent: {digital_output}") + DiagnosticsHelper.console(f"Received: {digital_output_returned}") + + if digital_output == digital_output_returned: + DiagnosticsHelper.console_green("Digital output states round trip test passed.") + else: + DiagnosticsHelper.console_error("Digital output states round trip test failed.") + + DiagnosticsHelper.console("Testing round trip of bow index...") + bow_index = TLMC_BowIndex.TLMC_BowIndex_SCurve2 + device.set_bow_index(bow_index) + + bow_index_returned = device.get_bow_index(DEFAULT_TIMEOUT) + DiagnosticsHelper.console(f"Sent: {bow_index}") + DiagnosticsHelper.console(f"Received: {bow_index_returned}") + + if bow_index == bow_index_returned: + DiagnosticsHelper.console_green("Bow index round trip test passed.") + else: + DiagnosticsHelper.console_error("Bow index round trip test failed.") + + DiagnosticsHelper.console("Testing round trip of encoder counter...") + encoder_counter = 1234 + device.set_encoder_counter(encoder_counter) + + encoder_counter_returned = device.get_encoder_counter(DEFAULT_TIMEOUT) + DiagnosticsHelper.console(f"Sent: {encoder_counter}") + DiagnosticsHelper.console(f"Received: {encoder_counter_returned}") + + if encoder_counter == encoder_counter_returned: + DiagnosticsHelper.console_green("Encoder counter round trip test passed.") + else: + DiagnosticsHelper.console_error("Encoder counter round trip test failed.") + + DiagnosticsHelper.console("Testing round trip of general move params...") + general_move_params = TLMC_GeneralMoveParams() + general_move_params.backlash_distance = 80 + + device.set_general_move_params(general_move_params) + general_move_params_returned = device.get_general_move_params(DEFAULT_TIMEOUT) + + sent_general_move_params = DiagnosticsHelper.object_as_string(general_move_params) + received_general_move_params = DiagnosticsHelper.object_as_string(general_move_params_returned) + + DiagnosticsHelper.console(f"Sent: {sent_general_move_params}") + DiagnosticsHelper.console(f"Received: {received_general_move_params}") + + if sent_general_move_params == received_general_move_params: + DiagnosticsHelper.console_green("General move params round trip test passed.") + else: + DiagnosticsHelper.console_error("General move params round trip test failed.") + + DiagnosticsHelper.console("Testing round trip of velocity params...") + velocity_params = TLMC_VelocityParams() + velocity_params.acceleration = 180 + velocity_params.max_velocity = 280 + velocity_params.min_velocity = 0 + + device.set_velocity_params(velocity_params) + velocity_params_returned = device.get_velocity_params(DEFAULT_TIMEOUT) + + sent_velocity_params = DiagnosticsHelper.object_as_string(velocity_params) + received_velocity_params = DiagnosticsHelper.object_as_string(velocity_params_returned) + + DiagnosticsHelper.console(f"Sent: {sent_velocity_params}") + DiagnosticsHelper.console(f"Received: {received_velocity_params}") + + if sent_velocity_params == received_velocity_params: + DiagnosticsHelper.console_green("Velocity params round trip test passed.") + else: + DiagnosticsHelper.console_error("Velocity params round trip test failed.") + + DiagnosticsHelper.console("Testing round trip of move absolute params...") + move_absolute_params = TLMC_MoveAbsoluteParams() + move_absolute_params.absolute_position = 400 + + device.set_move_absolute_params(move_absolute_params) + move_absolute_params_returned = device.get_move_absolute_params(DEFAULT_TIMEOUT) + + sent_move_absolute_params = DiagnosticsHelper.object_as_string(move_absolute_params) + received_move_absolute_params = DiagnosticsHelper.object_as_string(move_absolute_params_returned) + + DiagnosticsHelper.console(f"Sent: {sent_move_absolute_params}") + DiagnosticsHelper.console(f"Received: {received_move_absolute_params}") + + if sent_move_absolute_params == received_move_absolute_params: + DiagnosticsHelper.console_green("Move absolute params round trip test passed.") + else: + DiagnosticsHelper.console_error("Move absolute params round trip test failed.") + + device.move(TLMC_MoveMode.TLMC_MoveMode_AbsoluteToProgrammedPosition, 0, DEFAULT_TIMEOUT) + + DiagnosticsHelper.console("Testing round trip of move relative params...") + move_relative_params = TLMC_MoveRelativeParams() + move_relative_params.relative_distance = 200 + + device.set_move_relative_params(move_relative_params) + move_relative_params_returned = device.get_move_relative_params(DEFAULT_TIMEOUT) + + sent_move_relative_params = DiagnosticsHelper.object_as_string(move_relative_params) + received_move_relative_params = DiagnosticsHelper.object_as_string(move_relative_params_returned) + + DiagnosticsHelper.console(f"Sent: {sent_move_relative_params}") + DiagnosticsHelper.console(f"Received: {received_move_relative_params}") + + if sent_move_relative_params == received_move_relative_params: + DiagnosticsHelper.console_green("Move relative params round trip test passed.") + else: + DiagnosticsHelper.console_error("Move relative params round trip test failed.") + + device.move(TLMC_MoveMode.TLMC_MoveMode_RelativeByProgrammedDistance, 0, DEFAULT_TIMEOUT) + + position_counter = device.get_position_counter(DEFAULT_TIMEOUT) + DiagnosticsHelper.console(f"Position counter: {position_counter}") + + DiagnosticsHelper.console("Requesting status and reading UMC status...") + device.request_status(DEFAULT_TIMEOUT) + DiagnosticsHelper.console_object(device.get_umc_status(DEFAULT_TIMEOUT)) + + DiagnosticsHelper.console("Reading stepper loop params...") + DiagnosticsHelper.console_object(device.get_stepper_loop_params(DEFAULT_TIMEOUT)) + + DiagnosticsHelper.console("Getting universal status bits...") + DiagnosticsHelper.console_object(device.get_universal_status_bits(DEFAULT_TIMEOUT)) + + DiagnosticsHelper.console("Getting settings JSON...") + json_settings = device.get_settings(TLMC_SettingStringFormat.TLMC_SettingStringFormat_Json, True) + DiagnosticsHelper.console(json_settings) + + DiagnosticsHelper.console("Stopping device...") + device.stop(TLMC_StopMode.TLMC_StopMode_Immediate, DEFAULT_TIMEOUT) + + except XADeviceException as e: + print("Encountered error, code:", e.error_code) + + finally: + if device: + DiagnosticsHelper.console("Shutting down UMCX stepper logical channel...") + device.close() + + DiagnosticsHelper.console("Shutting down system...") + system_manager.shutdown() + + DiagnosticsHelper.console("Completed.") + + +if __name__ == "__main__": + main() diff --git a/Python/XA/xa_source/CHANGELOG.md b/Python/XA/xa_source/CHANGELOG.md index 59996a1..1684a38 100644 --- a/Python/XA/xa_source/CHANGELOG.md +++ b/Python/XA/xa_source/CHANGELOG.md @@ -5,9 +5,80 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] +## [1.6.1] - 2026-09-09 -## [1.3.0] - 2026-06-29 +### Fixed + +- KIM notification ID enum fields could cause typing error due to trailing commas. + +## [1.6.0] - 2026-09-08 + +### Added + +- KIM001 product API support. + +## 1.5.0 - 2026-09-08 + +### Added + +- BBD30x product API support. +- BPC30x product API support. +- BPC301 product API support. +- BSC201 product API support. +- BSC201v4 product API support. +- KST101 product API support. +- KBD101 product API support. +- PDXC2 product API support. +- PDXC3 product API support. +- TBD001 product API support. + +### Fixed + +- MoveSyncArray now correctly stores time positions as an array rather than a single value. +- LTS API now exposes UniversalStatusBits API. +- Setting AuxIoPortMode now calls the correctly named function in the native API. +- Native API: PDXC2/3 now raises 'stopped' message when the device is stopped. +- UMC brushless and stepper logical channels incorrectly exposed PositionCounter functionality. + +## [1.4.0] - 2026-09-02 + +### Added + +- UMC product API support. + +### Fixed + +- Native API: Resolved a crash when using multiple FTDI devices simultaneously. + +## [1.3.3] - 2026-08-25 + +### Added + +- Provided stage identifier values for DDS800 and DDS1000. + +### Fixed + +- Native API: Improvements in the area of ethernet stability and error recovery. +- Native API: Issues with TLMC_RegisterLoggingHandler formatting resolved. +- Native API: Issues with TLMC_DiscoverEthernetDeviceInfo formatting resolved. +- Native API: Devices connected via ethernet were potentially not having their firmware level checked. +- UMC stepper logical channel incorrectly exposed disconnect functionality. + +### Changed + +- Native API: Internal improvements. + +## [1.3.2] - 2026-08-07 + +### Fixed + +- In the native API, PositionCounter device feature is now present for LTS and its simulation. + +## [1.3.1] - 2026-07-01 + +### Fixed + +- In the native API, simulations are now correctly filtering packets according to channel ID. ### Changed diff --git a/Python/XA/xa_source/ReadMe.md b/Python/XA/xa_source/ReadMe.md index 2822034..a248537 100644 --- a/Python/XA/xa_source/ReadMe.md +++ b/Python/XA/xa_source/ReadMe.md @@ -2,7 +2,7 @@ This is the official Python SDK for the Thorlabs XA Motion Control Platform. The required binary file is included with the package and will be installed to the shared python directory. Please refer to the LICENSE file for details regarding the licensing of this package and its dependencies. # Devices Currently Supported -KDC101, KST201, KPC101, and LTS150C/300C/600C. +BBD30x, BPC30x BPC301, BSC20x, BSC20xv4, BSC201, KBD101, KDC101, KIM001, KST101, KST201, KPC101, LTS150C/300C/600C, PDXC2, PDXC3, TBD001, and UMC. # Tested Operating Systems Win 10 @@ -10,5 +10,5 @@ Win 11 Linux Ubuntu WSL2 and Mint 22.2 ARM/x86_64 -Support -Please contact Thorlabs Tech Support at techsupport@thorlabs.com if you have any questions or to request the Linux/ARM builds. The XA GUI with supported documents can be downloaded from the [Thorlabs website](https://www.thorlabs.com/software-pages/motion_control). More details on the XA software can be found in the user [guide](https://www.thorlabs.com/xa-software?tabName=XA%20Overview). \ No newline at end of file +# Support +Please contact Thorlabs Tech Support at techsupport@thorlabs.com if you have any questions. The XA GUI with supported documents can be downloaded from the [Thorlabs website](https://www.thorlabs.com/software-pages/motion_control). More details on the XA software can be found in the user [guide](https://www.thorlabs.com/xa-software?tabName=XA%20Overview). diff --git a/Python/XA/xa_source/pyproject.toml b/Python/XA/xa_source/pyproject.toml index f5b211d..af7cc04 100644 --- a/Python/XA/xa_source/pyproject.toml +++ b/Python/XA/xa_source/pyproject.toml @@ -1,3 +1,3 @@ [build-system] -requires = ["setuptools>=61.0", "wheel"] +requires = ["setuptools>=70.1"] build-backend = "setuptools.build_meta" \ No newline at end of file diff --git a/Python/XA/xa_source/setup.py b/Python/XA/xa_source/setup.py index 2a0ab2a..33c2618 100644 --- a/Python/XA/xa_source/setup.py +++ b/Python/XA/xa_source/setup.py @@ -1,8 +1,6 @@ from setuptools import setup, find_packages, Distribution -from wheel.bdist_wheel import bdist_wheel as _bdist_wheel +from setuptools.command.bdist_wheel import bdist_wheel as _bdist_wheel import platform -import shutil -import os from pathlib import Path # Open the readme content for including as the long description of the package diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bbd30x_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bbd30x_feature_group.py new file mode 100644 index 0000000..dd4d675 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bbd30x_feature_group.py @@ -0,0 +1,129 @@ +import thorlabs_xa.interfaces.device_feature_groups.bbd30x_feature_group + +from thorlabs_xa.interfaces.device_features.analog_monitor_configuration_params import AnalogMonitorConfigurationParams +from thorlabs_xa.interfaces.device_features.aux_io_configuration_params import AuxIoConfigurationParams +from thorlabs_xa.interfaces.device_features.digital_input_states import DigitalInputStates +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.io_configuration_params import IoConfigurationParams +from thorlabs_xa.interfaces.device_features.lcd_display_params import LcdDisplayParams +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move_sync_array import MoveSyncArray +from thorlabs_xa.interfaces.device_features.move_sync_params import MoveSyncParams +from thorlabs_xa.interfaces.device_features.move_sync_start import MoveSyncStart +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.rack_bay_occupied_state import RackBayOccupiedState +from thorlabs_xa.interfaces.device_features.rack_identify import RackIdentify +from thorlabs_xa.interfaces.device_features.settings import Settings + +from thorlabs_xa.implementations.device_features.analog_monitor_configuration_params_feature import AnalogMonitorConfigurationParamsFeature +from thorlabs_xa.implementations.device_features.aux_io_configuration_params_feature import AuxIoConfigurationParamsFeature +from thorlabs_xa.implementations.device_features.digital_input_states_feature import DigitalInputStatesFeature +from thorlabs_xa.implementations.device_features.digital_output_states_feature import DigitalOutputStatesFeature +from thorlabs_xa.implementations.device_features.disconnect_feature import DisconnectFeature +from thorlabs_xa.implementations.device_features.firmware_version_info_feature import FirmwareVersionInfoFeature +from thorlabs_xa.implementations.device_features.hardware_info_feature import HardwareInfoFeature +from thorlabs_xa.implementations.device_features.io_configuration_params_feature import IoConfigurationParamsFeature +from thorlabs_xa.implementations.device_features.lcd_display_params_feature import LcdDisplayParamsFeature +from thorlabs_xa.implementations.device_features.load_params_feature import LoadParamsFeature +from thorlabs_xa.implementations.device_features.move_sync_array_feature import MoveSyncArrayFeature +from thorlabs_xa.implementations.device_features.move_sync_params_feature import MoveSyncParamsFeature +from thorlabs_xa.implementations.device_features.move_sync_start_feature import MoveSyncStartFeature +from thorlabs_xa.implementations.device_features.persist_params_feature import PersistParamsFeature +from thorlabs_xa.implementations.device_features.rack_bay_occupied_state_feature import RackBayOccupiedStateFeature +from thorlabs_xa.implementations.device_features.rack_identify_feature import RackIdentifyFeature +from thorlabs_xa.implementations.device_features.settings_feature import SettingsFeature + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +class Bbd30xFeatureGroup(thorlabs_xa.interfaces.device_feature_groups.bbd30x_feature_group.Bbd30xFeatureGroup): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self._analog_monitor_configuration_params_feature = AnalogMonitorConfigurationParamsFeature(device_handle, native_functions) + self._aux_io_configuration_params_feature = AuxIoConfigurationParamsFeature(device_handle, native_functions) + self._digital_input_states_feature = DigitalInputStatesFeature(device_handle, native_functions) + self._digital_output_states_feature = DigitalOutputStatesFeature(device_handle, native_functions) + self._disconnect_feature = DisconnectFeature(device_handle, native_functions) + self._firmware_version_info_feature = FirmwareVersionInfoFeature(device_handle, native_functions) + self._hardware_info_feature = HardwareInfoFeature(device_handle, native_functions) + self._io_configuration_params_feature = IoConfigurationParamsFeature(device_handle, native_functions) + self._lcd_display_params_feature = LcdDisplayParamsFeature(device_handle, native_functions) + self._load_params_feature = LoadParamsFeature(device_handle, native_functions) + self._move_sync_array_feature = MoveSyncArrayFeature(device_handle, native_functions) + self._move_sync_params_feature = MoveSyncParamsFeature(device_handle, native_functions) + self._move_sync_start_feature = MoveSyncStartFeature(device_handle, native_functions) + self._persist_params_feature = PersistParamsFeature(device_handle, native_functions) + self._rack_bay_occupied_state_feature = RackBayOccupiedStateFeature(device_handle, native_functions) + self._rack_identify_feature = RackIdentifyFeature(device_handle, native_functions) + self._settings_feature = SettingsFeature(device_handle, native_functions) + + @property + def analog_monitor_configuration_params_feature(self) -> AnalogMonitorConfigurationParams: + return self._analog_monitor_configuration_params_feature + + @property + def aux_io_configuration_params_feature(self) -> AuxIoConfigurationParams: + return self._aux_io_configuration_params_feature + + @property + def digital_input_states_feature(self) -> DigitalInputStates: + return self._digital_input_states_feature + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: + return self._digital_output_states_feature + + @property + def disconnect_feature(self) -> Disconnect: + return self._disconnect_feature + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: + return self._firmware_version_info_feature + + @property + def hardware_info_feature(self) -> HardwareInfo: + return self._hardware_info_feature + + @property + def rack_identify_feature(self) -> RackIdentify: + return self._rack_identify_feature + + @property + def io_configuration_params_feature(self) -> IoConfigurationParams: + return self._io_configuration_params_feature + + @property + def lcd_display_params_feature(self) -> LcdDisplayParams: + return self._lcd_display_params_feature + + @property + def load_params_feature(self) -> LoadParams: + return self._load_params_feature + + @property + def move_sync_array_feature(self) -> MoveSyncArray: + return self._move_sync_array_feature + + @property + def move_sync_params_feature(self) -> MoveSyncParams: + return self._move_sync_params_feature + + @property + def move_sync_start_feature(self) -> MoveSyncStart: + return self._move_sync_start_feature + + @property + def persist_params_feature(self) -> PersistParams: + return self._persist_params_feature + + @property + def rack_bay_occupied_state_feature(self) -> RackBayOccupiedState: + return self._rack_bay_occupied_state_feature + + @property + def settings_feature(self) -> Settings: + return self._settings_feature \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bbd30x_logical_channel_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bbd30x_logical_channel_feature_group.py new file mode 100644 index 0000000..9bb5b04 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bbd30x_logical_channel_feature_group.py @@ -0,0 +1,276 @@ +import thorlabs_xa.interfaces.device_feature_groups.bbd30x_logical_channel_feature_group + +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.current_loop_params import CurrentLoopParams +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.end_of_move_messages_mode import EndOfMoveMessagesMode +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.io_position_trigger_enable_state import IoPositionTriggerEnableState +from thorlabs_xa.interfaces.device_features.io_trigger_params import IoTriggerParams +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.joystick_params import JoystickParams +from thorlabs_xa.interfaces.device_features.lcd_move_params import LcdMoveParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.motor_output_params import MotorOutputParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.position_loop_params import PositionLoopParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.track_settle_params import TrackSettleParams +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status import UniversalStatus +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams + +from thorlabs_xa.implementations.device_features.connected_product_feature import ConnectedProductFeature +from thorlabs_xa.implementations.device_features.current_loop_params_feature import CurrentLoopParamsFeature +from thorlabs_xa.implementations.device_features.enable_state_feature import EnableStateFeature +from thorlabs_xa.implementations.device_features.end_of_move_messages_mode_feature import EndOfMoveMessagesModeFeature +from thorlabs_xa.implementations.device_features.firmware_version_info_feature import FirmwareVersionInfoFeature +from thorlabs_xa.implementations.device_features.general_move_params_feature import GeneralMoveParamsFeature +from thorlabs_xa.implementations.device_features.hardware_info_feature import HardwareInfoFeature +from thorlabs_xa.implementations.device_features.home_feature import HomeFeature +from thorlabs_xa.implementations.device_features.home_params_feature import HomeParamsFeature +from thorlabs_xa.implementations.device_features.identify_feature import IdentifyFeature +from thorlabs_xa.implementations.device_features.io_position_trigger_enable_state_feature import IoPositionTriggerEnableStateFeature +from thorlabs_xa.implementations.device_features.io_trigger_params_feature import IoTriggerParamsFeature +from thorlabs_xa.implementations.device_features.jog_params_feature import JogParamsFeature +from thorlabs_xa.implementations.device_features.joystick_params_feature import JoystickParamsFeature +from thorlabs_xa.implementations.device_features.lcd_move_params_feature import LcdMoveParamsFeature +from thorlabs_xa.implementations.device_features.limit_switch_params_getter_feature import LimitSwitchParamsGetterFeature +from thorlabs_xa.implementations.device_features.load_params_feature import LoadParamsFeature +from thorlabs_xa.implementations.device_features.motor_output_params_feature import MotorOutputParamsFeature +from thorlabs_xa.implementations.device_features.move_feature import MoveFeature +from thorlabs_xa.implementations.device_features.move_absolute_params_feature import MoveAbsoluteParamsFeature +from thorlabs_xa.implementations.device_features.move_relative_params_feature import MoveRelativeParamsFeature +from thorlabs_xa.implementations.device_features.persist_params_feature import PersistParamsFeature +from thorlabs_xa.implementations.device_features.position_counter_feature import PositionCounterFeature +from thorlabs_xa.implementations.device_features.position_loop_params_feature import PositionLoopParamsFeature +from thorlabs_xa.implementations.device_features.profile_mode_params_feature import ProfileModeParamsFeature +from thorlabs_xa.implementations.device_features.restore_factory_defaults_feature import RestoreFactoryDefaultsFeature +from thorlabs_xa.implementations.device_features.rich_response_feature import RichResponseFeature +from thorlabs_xa.implementations.device_features.settings_feature import SettingsFeature +from thorlabs_xa.implementations.device_features.stage_axis_params_feature import StageAxisParamsFeature +from thorlabs_xa.implementations.device_features.status_items_feature import StatusItemsFeature +from thorlabs_xa.implementations.device_features.status_mode_feature import StatusModeFeature +from thorlabs_xa.implementations.device_features.status_request_feature import StatusRequestFeature +from thorlabs_xa.implementations.device_features.stop_feature import StopFeature +from thorlabs_xa.implementations.device_features.track_settle_params_feature import TrackSettleParamsFeature +from thorlabs_xa.implementations.device_features.unit_converter_feature import UnitConverterFeature +from thorlabs_xa.implementations.device_features.universal_status_feature import UniversalStatusFeature +from thorlabs_xa.implementations.device_features.universal_status_bits_feature import UniversalStatusBitsFeature +from thorlabs_xa.implementations.device_features.velocity_params_feature import VelocityParamsFeature + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +class Bbd30xLogicalChannelFeatureGroup(thorlabs_xa.interfaces.device_feature_groups.bbd30x_logical_channel_feature_group.Bbd30xLogicalChannelFeatureGroup): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self._connected_product_feature = ConnectedProductFeature(device_handle, native_functions) + self._current_loop_params_feature = CurrentLoopParamsFeature(device_handle, native_functions) + self._enable_state_feature = EnableStateFeature(device_handle, native_functions) + self._end_of_move_messages_mode_feature = EndOfMoveMessagesModeFeature(device_handle, native_functions) + self._firmware_version_info_feature = FirmwareVersionInfoFeature(device_handle, native_functions) + self._general_move_params_feature = GeneralMoveParamsFeature(device_handle, native_functions) + self._hardware_info_feature = HardwareInfoFeature(device_handle, native_functions) + self._home_feature = HomeFeature(device_handle, native_functions) + self._home_params_feature = HomeParamsFeature(device_handle, native_functions) + self._identify_feature = IdentifyFeature(device_handle, native_functions) + self._io_position_trigger_enable_state_feature = IoPositionTriggerEnableStateFeature(device_handle, native_functions) + self._io_trigger_params_feature = IoTriggerParamsFeature(device_handle, native_functions) + self._jog_params_feature = JogParamsFeature(device_handle, native_functions) + self._joystick_params_feature = JoystickParamsFeature(device_handle, native_functions) + self._lcd_move_params_feature = LcdMoveParamsFeature(device_handle, native_functions) + self._limit_switch_params_getter_feature = LimitSwitchParamsGetterFeature(device_handle, native_functions) + self._load_params_feature = LoadParamsFeature(device_handle, native_functions) + self._motor_output_params_feature = MotorOutputParamsFeature(device_handle, native_functions) + self._move_feature = MoveFeature(device_handle, native_functions) + self._move_absolute_params_feature = MoveAbsoluteParamsFeature(device_handle, native_functions) + self._move_relative_params_feature = MoveRelativeParamsFeature(device_handle, native_functions) + self._persist_params_feature = PersistParamsFeature(device_handle, native_functions) + self._position_counter_feature = PositionCounterFeature(device_handle, native_functions) + self._position_loop_params_feature = PositionLoopParamsFeature(device_handle, native_functions) + self._profile_mode_params_feature = ProfileModeParamsFeature(device_handle, native_functions) + self._restore_factory_defaults_feature = RestoreFactoryDefaultsFeature(device_handle, native_functions) + self._rich_response_feature = RichResponseFeature(device_handle, native_functions) + self._settings_feature = SettingsFeature(device_handle, native_functions) + self._stage_axis_params_feature = StageAxisParamsFeature(device_handle, native_functions) + self._status_items_feature = StatusItemsFeature(device_handle, native_functions) + self._status_mode_feature = StatusModeFeature(device_handle, native_functions) + self._status_request_feature = StatusRequestFeature(device_handle, native_functions) + self._stop_feature = StopFeature(device_handle, native_functions) + self._track_settle_params_feature = TrackSettleParamsFeature(device_handle, native_functions) + self._unit_converter_feature = UnitConverterFeature(device_handle, native_functions) + self._universal_status_feature = UniversalStatusFeature(device_handle, native_functions) + self._universal_status_bits_feature = UniversalStatusBitsFeature(device_handle, native_functions) + self._velocity_params_feature = VelocityParamsFeature(device_handle, native_functions) + + @property + def connected_product_feature(self) -> ConnectedProduct: + return self._connected_product_feature + + @property + def current_loop_params_feature(self) -> CurrentLoopParams: + return self._current_loop_params_feature + + @property + def enable_state_feature(self) -> EnableState: + return self._enable_state_feature + + @property + def end_of_move_messages_mode_feature(self) -> EndOfMoveMessagesMode: + return self._end_of_move_messages_mode_feature + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: + return self._firmware_version_info_feature + + @property + def general_move_params_feature(self) -> GeneralMoveParams: + return self._general_move_params_feature + + @property + def hardware_info_feature(self) -> HardwareInfo: + return self._hardware_info_feature + + @property + def home_feature(self) -> Home: + return self._home_feature + + @property + def home_params_feature(self) -> HomeParams: + return self._home_params_feature + + @property + def identify_feature(self) -> Identify: + return self._identify_feature + + @property + def io_position_trigger_enable_state_feature(self) -> IoPositionTriggerEnableState: + return self._io_position_trigger_enable_state_feature + + @property + def io_trigger_params_feature(self) -> IoTriggerParams: + return self._io_trigger_params_feature + + @property + def jog_params_feature(self) -> JogParams: + return self._jog_params_feature + + @property + def joystick_params_feature(self) -> JoystickParams: + return self._joystick_params_feature + + @property + def lcd_move_params_feature(self) -> LcdMoveParams: + return self._lcd_move_params_feature + + @property + def limit_switch_params_getter_feature(self) -> LimitSwitchParamsGetter: + return self._limit_switch_params_getter_feature + + @property + def load_params_feature(self) -> LoadParams: + return self._load_params_feature + + @property + def motor_output_params_feature(self) -> MotorOutputParams: + return self._motor_output_params_feature + + @property + def move_feature(self) -> Move: + return self._move_feature + + @property + def move_absolute_params_feature(self) -> MoveAbsoluteParams: + return self._move_absolute_params_feature + + @property + def move_relative_params_feature(self) -> MoveRelativeParams: + return self._move_relative_params_feature + + @property + def persist_params_feature(self) -> PersistParams: + return self._persist_params_feature + + @property + def position_counter_feature(self) -> PositionCounter: + return self._position_counter_feature + + @property + def position_loop_params_feature(self) -> PositionLoopParams: + return self._position_loop_params_feature + + @property + def profile_mode_params_feature(self) -> ProfileModeParams: + return self._profile_mode_params_feature + + @property + def restore_factory_defaults_feature(self) -> RestoreFactoryDefaults: + return self._restore_factory_defaults_feature + + @property + def rich_response_feature(self) -> RichResponse: + return self._rich_response_feature + + @property + def settings_feature(self) -> Settings: + return self._settings_feature + + @property + def stage_axis_params_feature(self) -> StageAxisParams: + return self._stage_axis_params_feature + + @property + def status_items_feature(self) -> StatusItems: + return self._status_items_feature + + @property + def status_mode_feature(self) -> StatusMode: + return self._status_mode_feature + + @property + def status_request_feature(self) -> StatusRequest: + return self._status_request_feature + + @property + def stop_feature(self) -> Stop: + return self._stop_feature + + @property + def track_settle_params_feature(self) -> TrackSettleParams: + return self._track_settle_params_feature + + @property + def unit_converter_feature(self) -> UnitConverter: + return self._unit_converter_feature + + @property + def universal_status_feature(self) -> UniversalStatus: + return self._universal_status_feature + + @property + def universal_status_bits_feature(self) -> UniversalStatusBits: + return self._universal_status_bits_feature + + @property + def velocity_params_feature(self) -> VelocityParams: + return self._velocity_params_feature \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bpc301_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bpc301_feature_group.py new file mode 100644 index 0000000..e46437d --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bpc301_feature_group.py @@ -0,0 +1,178 @@ +import thorlabs_xa.interfaces.device_feature_groups.bpc301_feature_group + +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.piezo.max_output_voltage_params import MaxOutputVoltageParams +from thorlabs_xa.interfaces.device_features.piezo.max_travel import MaxTravel +from thorlabs_xa.interfaces.device_features.piezo.output_voltage import OutputVoltage +from thorlabs_xa.interfaces.device_features.piezo.output_voltage_control_source_params import OutputVoltageControlSourceParams +from thorlabs_xa.interfaces.device_features.piezo.output_waveform import OutputWaveform +from thorlabs_xa.interfaces.device_features.piezo.piezo_status import PiezoStatus +from thorlabs_xa.interfaces.device_features.piezo.piezo_status_bits import PiezoStatusBits +from thorlabs_xa.interfaces.device_features.piezo.position import Position +from thorlabs_xa.interfaces.device_features.piezo.position_control_mode import PositionControlMode +from thorlabs_xa.interfaces.device_features.piezo.position_loop_params import PositionLoopParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.piezo.slew_rate_params import SlewRateParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.piezo.zero import Zero + +from thorlabs_xa.implementations.device_features.digital_output_states_feature import DigitalOutputStatesFeature +from thorlabs_xa.implementations.device_features.disconnect_feature import DisconnectFeature +from thorlabs_xa.implementations.device_features.enable_state_feature import EnableStateFeature +from thorlabs_xa.implementations.device_features.firmware_version_info_feature import FirmwareVersionInfoFeature +from thorlabs_xa.implementations.device_features.hardware_info_feature import HardwareInfoFeature +from thorlabs_xa.implementations.device_features.identify_feature import IdentifyFeature +from thorlabs_xa.implementations.device_features.load_params_feature import LoadParamsFeature +from thorlabs_xa.implementations.device_features.piezo.max_output_voltage_params_feature import MaxOutputVoltageParamsFeature +from thorlabs_xa.implementations.device_features.piezo.max_travel_feature import MaxTravelFeature +from thorlabs_xa.implementations.device_features.piezo.output_voltage_feature import OutputVoltageFeature +from thorlabs_xa.implementations.device_features.piezo.output_voltage_control_source_params_feature import OutputVoltageControlSourceParamsFeature +from thorlabs_xa.implementations.device_features.piezo.output_waveform_feature import OutputWaveformFeature +from thorlabs_xa.implementations.device_features.piezo.piezo_status_feature import PiezoStatusFeature +from thorlabs_xa.implementations.device_features.piezo.piezo_status_bits_feature import PiezoStatusBitsFeature +from thorlabs_xa.implementations.device_features.piezo.position_feature import PositionFeature +from thorlabs_xa.implementations.device_features.piezo.position_control_mode_feature import PositionControlModeFeature +from thorlabs_xa.implementations.device_features.piezo.position_loop_params_feature import PositionLoopParamsFeature +from thorlabs_xa.implementations.device_features.restore_factory_defaults_feature import RestoreFactoryDefaultsFeature +from thorlabs_xa.implementations.device_features.settings_feature import SettingsFeature +from thorlabs_xa.implementations.device_features.piezo.slew_rate_params_feature import SlewRateParamsFeature +from thorlabs_xa.implementations.device_features.status_items_feature import StatusItemsFeature +from thorlabs_xa.implementations.device_features.status_mode_feature import StatusModeFeature +from thorlabs_xa.implementations.device_features.unit_converter_feature import UnitConverterFeature +from thorlabs_xa.implementations.device_features.piezo.zero_feature import ZeroFeature + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +class Bpc301FeatureGroup(thorlabs_xa.interfaces.device_feature_groups.bpc301_feature_group.Bpc301FeatureGroup): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self._digital_output_states_feature = DigitalOutputStatesFeature(device_handle, native_functions) + self._disconnect_feature = DisconnectFeature(device_handle, native_functions) + self._enable_state_feature = EnableStateFeature(device_handle, native_functions) + self._firmware_version_info_feature = FirmwareVersionInfoFeature(device_handle, native_functions) + self._hardware_info_feature = HardwareInfoFeature(device_handle, native_functions) + self._identify_feature = IdentifyFeature(device_handle, native_functions) + self._load_params_feature = LoadParamsFeature(device_handle, native_functions) + self._max_output_voltage_params_feature = MaxOutputVoltageParamsFeature(device_handle, native_functions) + self._max_travel_feature = MaxTravelFeature(device_handle, native_functions) + self._output_voltage_feature = OutputVoltageFeature(device_handle, native_functions) + self._output_voltage_control_source_params_feature = OutputVoltageControlSourceParamsFeature(device_handle, native_functions) + self._output_waveform_feature = OutputWaveformFeature(device_handle, native_functions) + self._piezo_status_feature = PiezoStatusFeature(device_handle, native_functions) + self._piezo_status_bits_feature = PiezoStatusBitsFeature(device_handle, native_functions) + self._position_feature = PositionFeature(device_handle, native_functions) + self._position_control_mode_feature = PositionControlModeFeature(device_handle, native_functions) + self._position_loop_params_feature = PositionLoopParamsFeature(device_handle, native_functions) + self._restore_factory_defaults_feature = RestoreFactoryDefaultsFeature(device_handle, native_functions) + self._settings_feature = SettingsFeature(device_handle, native_functions) + self._slew_rate_params_feature = SlewRateParamsFeature(device_handle, native_functions) + self._status_items_feature = StatusItemsFeature(device_handle, native_functions) + self._status_mode_feature = StatusModeFeature(device_handle, native_functions) + self._unit_converter_feature = UnitConverterFeature(device_handle, native_functions) + self._zero_feature = ZeroFeature(device_handle, native_functions) + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: + return self._digital_output_states_feature + + @property + def disconnect_feature(self) -> Disconnect: + return self._disconnect_feature + + @property + def enable_state_feature(self) -> EnableState: + return self._enable_state_feature + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: + return self._firmware_version_info_feature + + @property + def hardware_info_feature(self) -> HardwareInfo: + return self._hardware_info_feature + + @property + def identify_feature(self) -> Identify: + return self._identify_feature + + @property + def load_params_feature(self) -> LoadParams: + return self._load_params_feature + + @property + def max_output_voltage_params_feature(self) -> MaxOutputVoltageParams: + return self._max_output_voltage_params_feature + + @property + def max_travel_feature(self) -> MaxTravel: + return self._max_travel_feature + + @property + def output_voltage_feature(self) -> OutputVoltage: + return self._output_voltage_feature + + @property + def output_voltage_control_source_params_feature(self) -> OutputVoltageControlSourceParams: + return self._output_voltage_control_source_params_feature + + @property + def output_waveform_feature(self) -> OutputWaveform: + return self._output_waveform_feature + + @property + def piezo_status_feature(self) -> PiezoStatus: + return self._piezo_status_feature + + @property + def piezo_status_bits_feature(self) -> PiezoStatusBits: + return self._piezo_status_bits_feature + + @property + def position_feature(self) -> Position: + return self._position_feature + + @property + def position_control_mode_feature(self) -> PositionControlMode: + return self._position_control_mode_feature + + @property + def position_loop_params_feature(self) -> PositionLoopParams: + return self._position_loop_params_feature + + @property + def restore_factory_defaults_feature(self) -> RestoreFactoryDefaults: + return self._restore_factory_defaults_feature + + @property + def settings_feature(self) -> Settings: + return self._settings_feature + + @property + def slew_rate_params_feature(self) -> SlewRateParams: + return self._slew_rate_params_feature + + @property + def status_items_feature(self) -> StatusItems: + return self._status_items_feature + + @property + def status_mode_feature(self) -> StatusMode: + return self._status_mode_feature + + @property + def unit_converter_feature(self) -> UnitConverter: + return self._unit_converter_feature + + @property + def zero_feature(self) -> Zero: + return self._zero_feature \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bpc30x_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bpc30x_feature_group.py new file mode 100644 index 0000000..6bf94cf --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bpc30x_feature_group.py @@ -0,0 +1,66 @@ +import thorlabs_xa.interfaces.device_feature_groups.bpc30x_feature_group + +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.rack_bay_occupied_state import RackBayOccupiedState +from thorlabs_xa.interfaces.device_features.rack_identify import RackIdentify +from thorlabs_xa.interfaces.device_features.settings import Settings + +from thorlabs_xa.implementations.device_features.digital_output_states_feature import DigitalOutputStatesFeature +from thorlabs_xa.implementations.device_features.disconnect_feature import DisconnectFeature +from thorlabs_xa.implementations.device_features.firmware_version_info_feature import FirmwareVersionInfoFeature +from thorlabs_xa.implementations.device_features.hardware_info_feature import HardwareInfoFeature +from thorlabs_xa.implementations.device_features.load_params_feature import LoadParamsFeature +from thorlabs_xa.implementations.device_features.rack_bay_occupied_state_feature import RackBayOccupiedStateFeature +from thorlabs_xa.implementations.device_features.rack_identify_feature import RackIdentifyFeature +from thorlabs_xa.implementations.device_features.settings_feature import SettingsFeature + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +class Bpc30xFeatureGroup(thorlabs_xa.interfaces.device_feature_groups.bpc30x_feature_group.Bpc30xFeatureGroup): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self._digital_output_states_feature = DigitalOutputStatesFeature(device_handle, native_functions) + self._disconnect_feature = DisconnectFeature(device_handle, native_functions) + self._firmware_version_info_feature = FirmwareVersionInfoFeature(device_handle, native_functions) + self._hardware_info_feature = HardwareInfoFeature(device_handle, native_functions) + self._load_params_feature = LoadParamsFeature(device_handle, native_functions) + self._rack_bay_occupied_state_feature = RackBayOccupiedStateFeature(device_handle, native_functions) + self._rack_identify_feature = RackIdentifyFeature(device_handle, native_functions) + self._settings_feature = SettingsFeature(device_handle, native_functions) + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: + return self._digital_output_states_feature + + @property + def disconnect_feature(self) -> Disconnect: + return self._disconnect_feature + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: + return self._firmware_version_info_feature + + @property + def hardware_info_feature(self) -> HardwareInfo: + return self._hardware_info_feature + + @property + def load_params_feature(self) -> LoadParams: + return self._load_params_feature + + @property + def rack_bay_occupied_state_feature(self) -> RackBayOccupiedState: + return self._rack_bay_occupied_state_feature + + @property + def rack_identify_feature(self) -> RackIdentify: + return self._rack_identify_feature + + @property + def settings_feature(self) -> Settings: + return self._settings_feature \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bpc30x_logical_channel_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bpc30x_logical_channel_feature_group.py new file mode 100644 index 0000000..4b5de44 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bpc30x_logical_channel_feature_group.py @@ -0,0 +1,164 @@ +import thorlabs_xa.interfaces.device_feature_groups.bpc30x_logical_channel_feature_group + +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.piezo.max_output_voltage_params import MaxOutputVoltageParams +from thorlabs_xa.interfaces.device_features.piezo.max_travel import MaxTravel +from thorlabs_xa.interfaces.device_features.piezo.output_voltage import OutputVoltage +from thorlabs_xa.interfaces.device_features.piezo.output_voltage_control_source_params import OutputVoltageControlSourceParams +from thorlabs_xa.interfaces.device_features.piezo.output_waveform import OutputWaveform +from thorlabs_xa.interfaces.device_features.piezo.piezo_status import PiezoStatus +from thorlabs_xa.interfaces.device_features.piezo.piezo_status_bits import PiezoStatusBits +from thorlabs_xa.interfaces.device_features.piezo.position import Position +from thorlabs_xa.interfaces.device_features.piezo.position_control_mode import PositionControlMode +from thorlabs_xa.interfaces.device_features.piezo.position_loop_params import PositionLoopParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.piezo.slew_rate_params import SlewRateParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.piezo.zero import Zero + +from thorlabs_xa.implementations.device_features.enable_state_feature import EnableStateFeature +from thorlabs_xa.implementations.device_features.firmware_version_info_feature import FirmwareVersionInfoFeature +from thorlabs_xa.implementations.device_features.hardware_info_feature import HardwareInfoFeature +from thorlabs_xa.implementations.device_features.identify_feature import IdentifyFeature +from thorlabs_xa.implementations.device_features.load_params_feature import LoadParamsFeature +from thorlabs_xa.implementations.device_features.piezo.max_output_voltage_params_feature import MaxOutputVoltageParamsFeature +from thorlabs_xa.implementations.device_features.piezo.max_travel_feature import MaxTravelFeature +from thorlabs_xa.implementations.device_features.piezo.output_voltage_feature import OutputVoltageFeature +from thorlabs_xa.implementations.device_features.piezo.output_voltage_control_source_params_feature import OutputVoltageControlSourceParamsFeature +from thorlabs_xa.implementations.device_features.piezo.output_waveform_feature import OutputWaveformFeature +from thorlabs_xa.implementations.device_features.piezo.piezo_status_feature import PiezoStatusFeature +from thorlabs_xa.implementations.device_features.piezo.piezo_status_bits_feature import PiezoStatusBitsFeature +from thorlabs_xa.implementations.device_features.piezo.position_feature import PositionFeature +from thorlabs_xa.implementations.device_features.piezo.position_control_mode_feature import PositionControlModeFeature +from thorlabs_xa.implementations.device_features.piezo.position_loop_params_feature import PositionLoopParamsFeature +from thorlabs_xa.implementations.device_features.restore_factory_defaults_feature import RestoreFactoryDefaultsFeature +from thorlabs_xa.implementations.device_features.settings_feature import SettingsFeature +from thorlabs_xa.implementations.device_features.piezo.slew_rate_params_feature import SlewRateParamsFeature +from thorlabs_xa.implementations.device_features.status_items_feature import StatusItemsFeature +from thorlabs_xa.implementations.device_features.status_mode_feature import StatusModeFeature +from thorlabs_xa.implementations.device_features.unit_converter_feature import UnitConverterFeature +from thorlabs_xa.implementations.device_features.piezo.zero_feature import ZeroFeature + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +class Bpc30xLogicalChannelFeatureGroup(thorlabs_xa.interfaces.device_feature_groups.bpc30x_logical_channel_feature_group.Bpc30xLogicalChannelFeatureGroup): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self._enable_state_feature = EnableStateFeature(device_handle, native_functions) + self._firmware_version_info_feature = FirmwareVersionInfoFeature(device_handle, native_functions) + self._hardware_info_feature = HardwareInfoFeature(device_handle, native_functions) + self._identify_feature = IdentifyFeature(device_handle, native_functions) + self._load_params_feature = LoadParamsFeature(device_handle, native_functions) + self._max_output_voltage_params_feature = MaxOutputVoltageParamsFeature(device_handle, native_functions) + self._max_travel_feature = MaxTravelFeature(device_handle, native_functions) + self._output_voltage_feature = OutputVoltageFeature(device_handle, native_functions) + self._output_voltage_control_source_params_feature = OutputVoltageControlSourceParamsFeature(device_handle, native_functions) + self._output_waveform_feature = OutputWaveformFeature(device_handle, native_functions) + self._piezo_status_feature = PiezoStatusFeature(device_handle, native_functions) + self._piezo_status_bits_feature = PiezoStatusBitsFeature(device_handle, native_functions) + self._position_feature = PositionFeature(device_handle, native_functions) + self._position_control_mode_feature = PositionControlModeFeature(device_handle, native_functions) + self._position_loop_params_feature = PositionLoopParamsFeature(device_handle, native_functions) + self._restore_factory_defaults_feature = RestoreFactoryDefaultsFeature(device_handle, native_functions) + self._settings_feature = SettingsFeature(device_handle, native_functions) + self._slew_rate_params_feature = SlewRateParamsFeature(device_handle, native_functions) + self._status_items_feature = StatusItemsFeature(device_handle, native_functions) + self._status_mode_feature = StatusModeFeature(device_handle, native_functions) + self._unit_converter_feature = UnitConverterFeature(device_handle, native_functions) + self._zero_feature = ZeroFeature(device_handle, native_functions) + + @property + def enable_state_feature(self) -> EnableState: + return self._enable_state_feature + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: + return self._firmware_version_info_feature + + @property + def hardware_info_feature(self) -> HardwareInfo: + return self._hardware_info_feature + + @property + def identify_feature(self) -> Identify: + return self._identify_feature + + @property + def load_params_feature(self) -> LoadParams: + return self._load_params_feature + + @property + def max_output_voltage_params_feature(self) -> MaxOutputVoltageParams: + return self._max_output_voltage_params_feature + + @property + def max_travel_feature(self) -> MaxTravel: + return self._max_travel_feature + + @property + def output_voltage_feature(self) -> OutputVoltage: + return self._output_voltage_feature + + @property + def output_voltage_control_source_params_feature(self) -> OutputVoltageControlSourceParams: + return self._output_voltage_control_source_params_feature + + @property + def output_waveform_feature(self) -> OutputWaveform: + return self._output_waveform_feature + + @property + def piezo_status_feature(self) -> PiezoStatus: + return self._piezo_status_feature + + @property + def piezo_status_bits_feature(self) -> PiezoStatusBits: + return self._piezo_status_bits_feature + + @property + def position_feature(self) -> Position: + return self._position_feature + + @property + def position_control_mode_feature(self) -> PositionControlMode: + return self._position_control_mode_feature + + @property + def position_loop_params_feature(self) -> PositionLoopParams: + return self._position_loop_params_feature + + @property + def restore_factory_defaults_feature(self) -> RestoreFactoryDefaults: + return self._restore_factory_defaults_feature + + @property + def settings_feature(self) -> Settings: + return self._settings_feature + + @property + def slew_rate_params_feature(self) -> SlewRateParams: + return self._slew_rate_params_feature + + @property + def status_items_feature(self) -> StatusItems: + return self._status_items_feature + + @property + def status_mode_feature(self) -> StatusMode: + return self._status_mode_feature + + @property + def unit_converter_feature(self) -> UnitConverter: + return self._unit_converter_feature + + @property + def zero_feature(self) -> Zero: + return self._zero_feature \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bsc201_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bsc201_feature_group.py new file mode 100644 index 0000000..55d207c --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bsc201_feature_group.py @@ -0,0 +1,276 @@ +import thorlabs_xa.interfaces.device_feature_groups.bsc201_feature_group + +from thorlabs_xa.interfaces.device_features.adc_inputs import AdcInputs +from thorlabs_xa.interfaces.device_features.bow_index import BowIndex +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.encoder_counter import EncoderCounter +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.limit_switch_params_setter import LimitSwitchParamsSetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.no_flash_programming import NoFlashProgramming +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.power_params import PowerParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stepper_loop_params import StepperLoopParams +from thorlabs_xa.interfaces.device_features.stepper_status import StepperStatus +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.trigger_params_for_stepper import TriggerParamsForStepper +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams +from thorlabs_xa.interfaces.device_features.yes_flash_programming import YesFlashProgramming + +from thorlabs_xa.implementations.device_features.adc_inputs_feature import AdcInputsFeature +from thorlabs_xa.implementations.device_features.bow_index_feature import BowIndexFeature +from thorlabs_xa.implementations.device_features.connected_product_feature import ConnectedProductFeature +from thorlabs_xa.implementations.device_features.digital_output_states_feature import DigitalOutputStatesFeature +from thorlabs_xa.implementations.device_features.disconnect_feature import DisconnectFeature +from thorlabs_xa.implementations.device_features.enable_state_feature import EnableStateFeature +from thorlabs_xa.implementations.device_features.encoder_counter_feature import EncoderCounterFeature +from thorlabs_xa.implementations.device_features.firmware_version_info_feature import FirmwareVersionInfoFeature +from thorlabs_xa.implementations.device_features.general_move_params_feature import GeneralMoveParamsFeature +from thorlabs_xa.implementations.device_features.hardware_info_feature import HardwareInfoFeature +from thorlabs_xa.implementations.device_features.home_feature import HomeFeature +from thorlabs_xa.implementations.device_features.home_params_feature import HomeParamsFeature +from thorlabs_xa.implementations.device_features.identify_feature import IdentifyFeature +from thorlabs_xa.implementations.device_features.jog_params_feature import JogParamsFeature +from thorlabs_xa.implementations.device_features.limit_switch_params_getter_feature import LimitSwitchParamsGetterFeature +from thorlabs_xa.implementations.device_features.limit_switch_params_setter_feature import LimitSwitchParamsSetterFeature +from thorlabs_xa.implementations.device_features.load_params_feature import LoadParamsFeature +from thorlabs_xa.implementations.device_features.move_feature import MoveFeature +from thorlabs_xa.implementations.device_features.move_absolute_params_feature import MoveAbsoluteParamsFeature +from thorlabs_xa.implementations.device_features.move_relative_params_feature import MoveRelativeParamsFeature +from thorlabs_xa.implementations.device_features.no_flash_programming_feature import NoFlashProgrammingFeature +from thorlabs_xa.implementations.device_features.persist_params_feature import PersistParamsFeature +from thorlabs_xa.implementations.device_features.position_counter_feature import PositionCounterFeature +from thorlabs_xa.implementations.device_features.power_params_feature import PowerParamsFeature +from thorlabs_xa.implementations.device_features.profile_mode_params_feature import ProfileModeParamsFeature +from thorlabs_xa.implementations.device_features.rich_response_feature import RichResponseFeature +from thorlabs_xa.implementations.device_features.settings_feature import SettingsFeature +from thorlabs_xa.implementations.device_features.status_items_feature import StatusItemsFeature +from thorlabs_xa.implementations.device_features.status_mode_feature import StatusModeFeature +from thorlabs_xa.implementations.device_features.status_request_feature import StatusRequestFeature +from thorlabs_xa.implementations.device_features.stepper_loop_params_feature import StepperLoopParamsFeature +from thorlabs_xa.implementations.device_features.stepper_status_feature import StepperStatusFeature +from thorlabs_xa.implementations.device_features.stop_feature import StopFeature +from thorlabs_xa.implementations.device_features.trigger_params_for_stepper_feature import TriggerParamsForStepperFeature +from thorlabs_xa.implementations.device_features.unit_converter_feature import UnitConverterFeature +from thorlabs_xa.implementations.device_features.universal_status_bits_feature import UniversalStatusBitsFeature +from thorlabs_xa.implementations.device_features.velocity_params_feature import VelocityParamsFeature +from thorlabs_xa.implementations.device_features.yes_flash_programming_feature import YesFlashProgrammingFeature + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +class Bsc201FeatureGroup(thorlabs_xa.interfaces.device_feature_groups.bsc201_feature_group.Bsc201FeatureGroup): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self._adc_inputs_feature = AdcInputsFeature(device_handle, native_functions) + self._bow_index_feature = BowIndexFeature(device_handle, native_functions) + self._connected_product_feature = ConnectedProductFeature(device_handle, native_functions) + self._digital_output_states_feature = DigitalOutputStatesFeature(device_handle, native_functions) + self._disconnect_feature = DisconnectFeature(device_handle, native_functions) + self._enable_state_feature = EnableStateFeature(device_handle, native_functions) + self._encoder_counter_feature = EncoderCounterFeature(device_handle, native_functions) + self._firmware_version_info_feature = FirmwareVersionInfoFeature(device_handle, native_functions) + self._general_move_params_feature = GeneralMoveParamsFeature(device_handle, native_functions) + self._hardware_info_feature = HardwareInfoFeature(device_handle, native_functions) + self._home_feature = HomeFeature(device_handle, native_functions) + self._home_params_feature = HomeParamsFeature(device_handle, native_functions) + self._identify_feature = IdentifyFeature(device_handle, native_functions) + self._jog_params_feature = JogParamsFeature(device_handle, native_functions) + self._limit_switch_params_getter_feature = LimitSwitchParamsGetterFeature(device_handle, native_functions) + self._limit_switch_params_setter_feature = LimitSwitchParamsSetterFeature(device_handle, native_functions) + self._load_params_feature = LoadParamsFeature(device_handle, native_functions) + self._move_feature = MoveFeature(device_handle, native_functions) + self._move_absolute_params_feature = MoveAbsoluteParamsFeature(device_handle, native_functions) + self._move_relative_params_feature = MoveRelativeParamsFeature(device_handle, native_functions) + self._no_flash_programming_feature = NoFlashProgrammingFeature(device_handle, native_functions) + self._persist_params_feature = PersistParamsFeature(device_handle, native_functions) + self._position_counter_feature = PositionCounterFeature(device_handle, native_functions) + self._power_params_feature = PowerParamsFeature(device_handle, native_functions) + self._profile_mode_params_feature = ProfileModeParamsFeature(device_handle, native_functions) + self._rich_response_feature = RichResponseFeature(device_handle, native_functions) + self._settings_feature = SettingsFeature(device_handle, native_functions) + self._status_items_feature = StatusItemsFeature(device_handle, native_functions) + self._status_mode_feature = StatusModeFeature(device_handle, native_functions) + self._status_request_feature = StatusRequestFeature(device_handle, native_functions) + self._stepper_loop_params_feature = StepperLoopParamsFeature(device_handle, native_functions) + self._stepper_status_feature = StepperStatusFeature(device_handle, native_functions) + self._stop_feature = StopFeature(device_handle, native_functions) + self._trigger_params_for_stepper_feature = TriggerParamsForStepperFeature(device_handle, native_functions) + self._unit_converter_feature = UnitConverterFeature(device_handle, native_functions) + self._universal_status_bits_feature = UniversalStatusBitsFeature(device_handle, native_functions) + self._velocity_params_feature = VelocityParamsFeature(device_handle, native_functions) + self._yes_flash_programming_feature = YesFlashProgrammingFeature(device_handle, native_functions) + + @property + def adc_inputs_feature(self) -> AdcInputs: + return self._adc_inputs_feature + + @property + def bow_index_feature(self) -> BowIndex: + return self._bow_index_feature + + @property + def connected_product_feature(self) -> ConnectedProduct: + return self._connected_product_feature + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: + return self._digital_output_states_feature + + @property + def disconnect_feature(self) -> Disconnect: + return self._disconnect_feature + + @property + def enable_state_feature(self) -> EnableState: + return self._enable_state_feature + + @property + def encoder_counter_feature(self) -> EncoderCounter: + return self._encoder_counter_feature + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: + return self._firmware_version_info_feature + + @property + def general_move_params_feature(self) -> GeneralMoveParams: + return self._general_move_params_feature + + @property + def hardware_info_feature(self) -> HardwareInfo: + return self._hardware_info_feature + + @property + def home_feature(self) -> Home: + return self._home_feature + + @property + def home_params_feature(self) -> HomeParams: + return self._home_params_feature + + @property + def identify_feature(self) -> Identify: + return self._identify_feature + + @property + def jog_params_feature(self) -> JogParams: + return self._jog_params_feature + + @property + def limit_switch_params_getter_feature(self) -> LimitSwitchParamsGetter: + return self._limit_switch_params_getter_feature + + @property + def limit_switch_params_setter_feature(self) -> LimitSwitchParamsSetter: + return self._limit_switch_params_setter_feature + + @property + def load_params_feature(self) -> LoadParams: + return self._load_params_feature + + @property + def move_feature(self) -> Move: + return self._move_feature + + @property + def move_absolute_params_feature(self) -> MoveAbsoluteParams: + return self._move_absolute_params_feature + + @property + def move_relative_params_feature(self) -> MoveRelativeParams: + return self._move_relative_params_feature + + @property + def no_flash_programming_feature(self) -> NoFlashProgramming: + return self._no_flash_programming_feature + + @property + def persist_params_feature(self) -> PersistParams: + return self._persist_params_feature + + @property + def position_counter_feature(self) -> PositionCounter: + return self._position_counter_feature + + @property + def power_params_feature(self) -> PowerParams: + return self._power_params_feature + + @property + def profile_mode_params_feature(self) -> ProfileModeParams: + return self._profile_mode_params_feature + + @property + def rich_response_feature(self) -> RichResponse: + return self._rich_response_feature + + @property + def settings_feature(self) -> Settings: + return self._settings_feature + + @property + def status_items_feature(self) -> StatusItems: + return self._status_items_feature + + @property + def status_mode_feature(self) -> StatusMode: + return self._status_mode_feature + + @property + def status_request_feature(self) -> StatusRequest: + return self._status_request_feature + + @property + def stepper_loop_params_feature(self) -> StepperLoopParams: + return self._stepper_loop_params_feature + + @property + def stepper_status_feature(self) -> StepperStatus: + return self._stepper_status_feature + + @property + def stop_feature(self) -> Stop: + return self._stop_feature + + @property + def trigger_params_for_stepper_feature(self) -> TriggerParamsForStepper: + return self._trigger_params_for_stepper_feature + + @property + def unit_converter_feature(self) -> UnitConverter: + return self._unit_converter_feature + + @property + def universal_status_bits_feature(self) -> UniversalStatusBits: + return self._universal_status_bits_feature + + @property + def velocity_params_feature(self) -> VelocityParams: + return self._velocity_params_feature + + @property + def yes_flash_programming_feature(self) -> YesFlashProgramming: + return self._yes_flash_programming_feature \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bsc201v4_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bsc201v4_feature_group.py new file mode 100644 index 0000000..450ca7d --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bsc201v4_feature_group.py @@ -0,0 +1,283 @@ +import thorlabs_xa.interfaces.device_feature_groups.bsc201v4_feature_group + +from thorlabs_xa.interfaces.device_features.adc_inputs import AdcInputs +from thorlabs_xa.interfaces.device_features.bow_index import BowIndex +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.encoder_counter import EncoderCounter +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.limit_switch_params_setter import LimitSwitchParamsSetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.no_flash_programming import NoFlashProgramming +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.power_params import PowerParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.set_actuator_type import SetActuatorType +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stepper_loop_params import StepperLoopParams +from thorlabs_xa.interfaces.device_features.stepper_status import StepperStatus +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.trigger_params_for_stepper import TriggerParamsForStepper +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams +from thorlabs_xa.interfaces.device_features.yes_flash_programming import YesFlashProgramming + +from thorlabs_xa.implementations.device_features.adc_inputs_feature import AdcInputsFeature +from thorlabs_xa.implementations.device_features.bow_index_feature import BowIndexFeature +from thorlabs_xa.implementations.device_features.connected_product_feature import ConnectedProductFeature +from thorlabs_xa.implementations.device_features.digital_output_states_feature import DigitalOutputStatesFeature +from thorlabs_xa.implementations.device_features.disconnect_feature import DisconnectFeature +from thorlabs_xa.implementations.device_features.enable_state_feature import EnableStateFeature +from thorlabs_xa.implementations.device_features.encoder_counter_feature import EncoderCounterFeature +from thorlabs_xa.implementations.device_features.firmware_version_info_feature import FirmwareVersionInfoFeature +from thorlabs_xa.implementations.device_features.general_move_params_feature import GeneralMoveParamsFeature +from thorlabs_xa.implementations.device_features.hardware_info_feature import HardwareInfoFeature +from thorlabs_xa.implementations.device_features.home_feature import HomeFeature +from thorlabs_xa.implementations.device_features.home_params_feature import HomeParamsFeature +from thorlabs_xa.implementations.device_features.identify_feature import IdentifyFeature +from thorlabs_xa.implementations.device_features.jog_params_feature import JogParamsFeature +from thorlabs_xa.implementations.device_features.limit_switch_params_getter_feature import LimitSwitchParamsGetterFeature +from thorlabs_xa.implementations.device_features.limit_switch_params_setter_feature import LimitSwitchParamsSetterFeature +from thorlabs_xa.implementations.device_features.load_params_feature import LoadParamsFeature +from thorlabs_xa.implementations.device_features.move_feature import MoveFeature +from thorlabs_xa.implementations.device_features.move_absolute_params_feature import MoveAbsoluteParamsFeature +from thorlabs_xa.implementations.device_features.move_relative_params_feature import MoveRelativeParamsFeature +from thorlabs_xa.implementations.device_features.no_flash_programming_feature import NoFlashProgrammingFeature +from thorlabs_xa.implementations.device_features.persist_params_feature import PersistParamsFeature +from thorlabs_xa.implementations.device_features.position_counter_feature import PositionCounterFeature +from thorlabs_xa.implementations.device_features.power_params_feature import PowerParamsFeature +from thorlabs_xa.implementations.device_features.profile_mode_params_feature import ProfileModeParamsFeature +from thorlabs_xa.implementations.device_features.rich_response_feature import RichResponseFeature +from thorlabs_xa.implementations.device_features.set_actuator_type_feature import SetActuatorTypeFeature +from thorlabs_xa.implementations.device_features.settings_feature import SettingsFeature +from thorlabs_xa.implementations.device_features.status_items_feature import StatusItemsFeature +from thorlabs_xa.implementations.device_features.status_mode_feature import StatusModeFeature +from thorlabs_xa.implementations.device_features.status_request_feature import StatusRequestFeature +from thorlabs_xa.implementations.device_features.stepper_loop_params_feature import StepperLoopParamsFeature +from thorlabs_xa.implementations.device_features.stepper_status_feature import StepperStatusFeature +from thorlabs_xa.implementations.device_features.stop_feature import StopFeature +from thorlabs_xa.implementations.device_features.trigger_params_for_stepper_feature import TriggerParamsForStepperFeature +from thorlabs_xa.implementations.device_features.unit_converter_feature import UnitConverterFeature +from thorlabs_xa.implementations.device_features.universal_status_bits_feature import UniversalStatusBitsFeature +from thorlabs_xa.implementations.device_features.velocity_params_feature import VelocityParamsFeature +from thorlabs_xa.implementations.device_features.yes_flash_programming_feature import YesFlashProgrammingFeature + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +class Bsc201v4FeatureGroup(thorlabs_xa.interfaces.device_feature_groups.bsc201v4_feature_group.Bsc201v4FeatureGroup): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self._adc_inputs_feature = AdcInputsFeature(device_handle, native_functions) + self._bow_index_feature = BowIndexFeature(device_handle, native_functions) + self._connected_product_feature = ConnectedProductFeature(device_handle, native_functions) + self._digital_output_states_feature = DigitalOutputStatesFeature(device_handle, native_functions) + self._disconnect_feature = DisconnectFeature(device_handle, native_functions) + self._enable_state_feature = EnableStateFeature(device_handle, native_functions) + self._encoder_counter_feature = EncoderCounterFeature(device_handle, native_functions) + self._firmware_version_info_feature = FirmwareVersionInfoFeature(device_handle, native_functions) + self._general_move_params_feature = GeneralMoveParamsFeature(device_handle, native_functions) + self._hardware_info_feature = HardwareInfoFeature(device_handle, native_functions) + self._home_feature = HomeFeature(device_handle, native_functions) + self._home_params_feature = HomeParamsFeature(device_handle, native_functions) + self._identify_feature = IdentifyFeature(device_handle, native_functions) + self._jog_params_feature = JogParamsFeature(device_handle, native_functions) + self._limit_switch_params_getter_feature = LimitSwitchParamsGetterFeature(device_handle, native_functions) + self._limit_switch_params_setter_feature = LimitSwitchParamsSetterFeature(device_handle, native_functions) + self._load_params_feature = LoadParamsFeature(device_handle, native_functions) + self._move_feature = MoveFeature(device_handle, native_functions) + self._move_absolute_params_feature = MoveAbsoluteParamsFeature(device_handle, native_functions) + self._move_relative_params_feature = MoveRelativeParamsFeature(device_handle, native_functions) + self._no_flash_programming_feature = NoFlashProgrammingFeature(device_handle, native_functions) + self._persist_params_feature = PersistParamsFeature(device_handle, native_functions) + self._position_counter_feature = PositionCounterFeature(device_handle, native_functions) + self._power_params_feature = PowerParamsFeature(device_handle, native_functions) + self._profile_mode_params_feature = ProfileModeParamsFeature(device_handle, native_functions) + self._rich_response_feature = RichResponseFeature(device_handle, native_functions) + self._set_actuator_type_feature = SetActuatorTypeFeature(device_handle, native_functions) + self._settings_feature = SettingsFeature(device_handle, native_functions) + self._status_items_feature = StatusItemsFeature(device_handle, native_functions) + self._status_mode_feature = StatusModeFeature(device_handle, native_functions) + self._status_request_feature = StatusRequestFeature(device_handle, native_functions) + self._stepper_loop_params_feature = StepperLoopParamsFeature(device_handle, native_functions) + self._stepper_status_feature = StepperStatusFeature(device_handle, native_functions) + self._stop_feature = StopFeature(device_handle, native_functions) + self._trigger_params_for_stepper_feature = TriggerParamsForStepperFeature(device_handle, native_functions) + self._unit_converter_feature = UnitConverterFeature(device_handle, native_functions) + self._universal_status_bits_feature = UniversalStatusBitsFeature(device_handle, native_functions) + self._velocity_params_feature = VelocityParamsFeature(device_handle, native_functions) + self._yes_flash_programming_feature = YesFlashProgrammingFeature(device_handle, native_functions) + + @property + def adc_inputs_feature(self) -> AdcInputs: + return self._adc_inputs_feature + + @property + def bow_index_feature(self) -> BowIndex: + return self._bow_index_feature + + @property + def connected_product_feature(self) -> ConnectedProduct: + return self._connected_product_feature + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: + return self._digital_output_states_feature + + @property + def disconnect_feature(self) -> Disconnect: + return self._disconnect_feature + + @property + def enable_state_feature(self) -> EnableState: + return self._enable_state_feature + + @property + def encoder_counter_feature(self) -> EncoderCounter: + return self._encoder_counter_feature + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: + return self._firmware_version_info_feature + + @property + def general_move_params_feature(self) -> GeneralMoveParams: + return self._general_move_params_feature + + @property + def hardware_info_feature(self) -> HardwareInfo: + return self._hardware_info_feature + + @property + def home_feature(self) -> Home: + return self._home_feature + + @property + def home_params_feature(self) -> HomeParams: + return self._home_params_feature + + @property + def identify_feature(self) -> Identify: + return self._identify_feature + + @property + def jog_params_feature(self) -> JogParams: + return self._jog_params_feature + + @property + def limit_switch_params_getter_feature(self) -> LimitSwitchParamsGetter: + return self._limit_switch_params_getter_feature + + @property + def limit_switch_params_setter_feature(self) -> LimitSwitchParamsSetter: + return self._limit_switch_params_setter_feature + + @property + def load_params_feature(self) -> LoadParams: + return self._load_params_feature + + @property + def move_feature(self) -> Move: + return self._move_feature + + @property + def move_absolute_params_feature(self) -> MoveAbsoluteParams: + return self._move_absolute_params_feature + + @property + def move_relative_params_feature(self) -> MoveRelativeParams: + return self._move_relative_params_feature + + @property + def no_flash_programming_feature(self) -> NoFlashProgramming: + return self._no_flash_programming_feature + + @property + def persist_params_feature(self) -> PersistParams: + return self._persist_params_feature + + @property + def position_counter_feature(self) -> PositionCounter: + return self._position_counter_feature + + @property + def power_params_feature(self) -> PowerParams: + return self._power_params_feature + + @property + def profile_mode_params_feature(self) -> ProfileModeParams: + return self._profile_mode_params_feature + + @property + def rich_response_feature(self) -> RichResponse: + return self._rich_response_feature + + @property + def set_actuator_type_feature(self) -> SetActuatorType: + return self._set_actuator_type_feature + + @property + def settings_feature(self) -> Settings: + return self._settings_feature + + @property + def status_items_feature(self) -> StatusItems: + return self._status_items_feature + + @property + def status_mode_feature(self) -> StatusMode: + return self._status_mode_feature + + @property + def status_request_feature(self) -> StatusRequest: + return self._status_request_feature + + @property + def stepper_loop_params_feature(self) -> StepperLoopParams: + return self._stepper_loop_params_feature + + @property + def stepper_status_feature(self) -> StepperStatus: + return self._stepper_status_feature + + @property + def stop_feature(self) -> Stop: + return self._stop_feature + + @property + def trigger_params_for_stepper_feature(self) -> TriggerParamsForStepper: + return self._trigger_params_for_stepper_feature + + @property + def unit_converter_feature(self) -> UnitConverter: + return self._unit_converter_feature + + @property + def universal_status_bits_feature(self) -> UniversalStatusBits: + return self._universal_status_bits_feature + + @property + def velocity_params_feature(self) -> VelocityParams: + return self._velocity_params_feature + + @property + def yes_flash_programming_feature(self) -> YesFlashProgramming: + return self._yes_flash_programming_feature \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bsc20x_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bsc20x_feature_group.py new file mode 100644 index 0000000..1dbe1f1 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bsc20x_feature_group.py @@ -0,0 +1,66 @@ +import thorlabs_xa.interfaces.device_feature_groups.bsc20x_feature_group + +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.rack_identify import RackIdentify +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.rack_bay_occupied_state import RackBayOccupiedState +from thorlabs_xa.interfaces.device_features.settings import Settings + +from thorlabs_xa.implementations.device_features.digital_output_states_feature import DigitalOutputStatesFeature +from thorlabs_xa.implementations.device_features.disconnect_feature import DisconnectFeature +from thorlabs_xa.implementations.device_features.firmware_version_info_feature import FirmwareVersionInfoFeature +from thorlabs_xa.implementations.device_features.hardware_info_feature import HardwareInfoFeature +from thorlabs_xa.implementations.device_features.rack_identify_feature import RackIdentifyFeature +from thorlabs_xa.implementations.device_features.load_params_feature import LoadParamsFeature +from thorlabs_xa.implementations.device_features.rack_bay_occupied_state_feature import RackBayOccupiedStateFeature +from thorlabs_xa.implementations.device_features.settings_feature import SettingsFeature + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +class Bsc20xFeatureGroup(thorlabs_xa.interfaces.device_feature_groups.bsc20x_feature_group.Bsc20xFeatureGroup): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self._digital_output_states_feature = DigitalOutputStatesFeature(device_handle, native_functions) + self._disconnect_feature = DisconnectFeature(device_handle, native_functions) + self._firmware_version_info_feature = FirmwareVersionInfoFeature(device_handle, native_functions) + self._hardware_info_feature = HardwareInfoFeature(device_handle, native_functions) + self._rack_identify_feature = RackIdentifyFeature(device_handle, native_functions) + self._load_params_feature = LoadParamsFeature(device_handle, native_functions) + self._rack_bay_occupied_state_feature = RackBayOccupiedStateFeature(device_handle, native_functions) + self._settings_feature = SettingsFeature(device_handle, native_functions) + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: + return self._digital_output_states_feature + + @property + def disconnect_feature(self) -> Disconnect: + return self._disconnect_feature + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: + return self._firmware_version_info_feature + + @property + def hardware_info_feature(self) -> HardwareInfo: + return self._hardware_info_feature + + @property + def rack_identify_feature(self) -> RackIdentify: + return self._rack_identify_feature + + @property + def load_params_feature(self) -> LoadParams: + return self._load_params_feature + + @property + def rack_bay_occupied_state_feature(self) -> RackBayOccupiedState: + return self._rack_bay_occupied_state_feature + + @property + def settings_feature(self) -> Settings: + return self._settings_feature \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bsc20x_logical_channel_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bsc20x_logical_channel_feature_group.py new file mode 100644 index 0000000..6eb9af9 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bsc20x_logical_channel_feature_group.py @@ -0,0 +1,283 @@ +import thorlabs_xa.interfaces.device_feature_groups.bsc20x_logical_channel_feature_group + +from thorlabs_xa.interfaces.device_features.adc_inputs import AdcInputs +from thorlabs_xa.interfaces.device_features.bow_index import BowIndex +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.encoder_counter import EncoderCounter +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.joystick_params import JoystickParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.limit_switch_params_setter import LimitSwitchParamsSetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.no_flash_programming import NoFlashProgramming +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.power_params import PowerParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stepper_loop_params import StepperLoopParams +from thorlabs_xa.interfaces.device_features.stepper_status import StepperStatus +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.trigger_params_for_stepper import TriggerParamsForStepper +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams +from thorlabs_xa.interfaces.device_features.yes_flash_programming import YesFlashProgramming + +from thorlabs_xa.implementations.device_features.adc_inputs_feature import AdcInputsFeature +from thorlabs_xa.implementations.device_features.bow_index_feature import BowIndexFeature +from thorlabs_xa.implementations.device_features.connected_product_feature import ConnectedProductFeature +from thorlabs_xa.implementations.device_features.digital_output_states_feature import DigitalOutputStatesFeature +from thorlabs_xa.implementations.device_features.disconnect_feature import DisconnectFeature +from thorlabs_xa.implementations.device_features.enable_state_feature import EnableStateFeature +from thorlabs_xa.implementations.device_features.encoder_counter_feature import EncoderCounterFeature +from thorlabs_xa.implementations.device_features.firmware_version_info_feature import FirmwareVersionInfoFeature +from thorlabs_xa.implementations.device_features.general_move_params_feature import GeneralMoveParamsFeature +from thorlabs_xa.implementations.device_features.hardware_info_feature import HardwareInfoFeature +from thorlabs_xa.implementations.device_features.home_feature import HomeFeature +from thorlabs_xa.implementations.device_features.home_params_feature import HomeParamsFeature +from thorlabs_xa.implementations.device_features.identify_feature import IdentifyFeature +from thorlabs_xa.implementations.device_features.jog_params_feature import JogParamsFeature +from thorlabs_xa.implementations.device_features.joystick_params_feature import JoystickParamsFeature +from thorlabs_xa.implementations.device_features.limit_switch_params_getter_feature import LimitSwitchParamsGetterFeature +from thorlabs_xa.implementations.device_features.limit_switch_params_setter_feature import LimitSwitchParamsSetterFeature +from thorlabs_xa.implementations.device_features.load_params_feature import LoadParamsFeature +from thorlabs_xa.implementations.device_features.move_feature import MoveFeature +from thorlabs_xa.implementations.device_features.move_absolute_params_feature import MoveAbsoluteParamsFeature +from thorlabs_xa.implementations.device_features.move_relative_params_feature import MoveRelativeParamsFeature +from thorlabs_xa.implementations.device_features.no_flash_programming_feature import NoFlashProgrammingFeature +from thorlabs_xa.implementations.device_features.persist_params_feature import PersistParamsFeature +from thorlabs_xa.implementations.device_features.position_counter_feature import PositionCounterFeature +from thorlabs_xa.implementations.device_features.power_params_feature import PowerParamsFeature +from thorlabs_xa.implementations.device_features.profile_mode_params_feature import ProfileModeParamsFeature +from thorlabs_xa.implementations.device_features.rich_response_feature import RichResponseFeature +from thorlabs_xa.implementations.device_features.settings_feature import SettingsFeature +from thorlabs_xa.implementations.device_features.status_items_feature import StatusItemsFeature +from thorlabs_xa.implementations.device_features.status_mode_feature import StatusModeFeature +from thorlabs_xa.implementations.device_features.status_request_feature import StatusRequestFeature +from thorlabs_xa.implementations.device_features.stepper_loop_params_feature import StepperLoopParamsFeature +from thorlabs_xa.implementations.device_features.stepper_status_feature import StepperStatusFeature +from thorlabs_xa.implementations.device_features.stop_feature import StopFeature +from thorlabs_xa.implementations.device_features.trigger_params_for_stepper_feature import TriggerParamsForStepperFeature +from thorlabs_xa.implementations.device_features.unit_converter_feature import UnitConverterFeature +from thorlabs_xa.implementations.device_features.universal_status_bits_feature import UniversalStatusBitsFeature +from thorlabs_xa.implementations.device_features.velocity_params_feature import VelocityParamsFeature +from thorlabs_xa.implementations.device_features.yes_flash_programming_feature import YesFlashProgrammingFeature + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +class Bsc20xLogicalChannelFeatureGroup(thorlabs_xa.interfaces.device_feature_groups.bsc20x_logical_channel_feature_group.Bsc20xLogicalChannelFeatureGroup): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self._adc_inputs_feature = AdcInputsFeature(device_handle, native_functions) + self._bow_index_feature = BowIndexFeature(device_handle, native_functions) + self._connected_product_feature = ConnectedProductFeature(device_handle, native_functions) + self._digital_output_states_feature = DigitalOutputStatesFeature(device_handle, native_functions) + self._disconnect_feature = DisconnectFeature(device_handle, native_functions) + self._enable_state_feature = EnableStateFeature(device_handle, native_functions) + self._encoder_counter_feature = EncoderCounterFeature(device_handle, native_functions) + self._firmware_version_info_feature = FirmwareVersionInfoFeature(device_handle, native_functions) + self._general_move_params_feature = GeneralMoveParamsFeature(device_handle, native_functions) + self._hardware_info_feature = HardwareInfoFeature(device_handle, native_functions) + self._home_feature = HomeFeature(device_handle, native_functions) + self._home_params_feature = HomeParamsFeature(device_handle, native_functions) + self._identify_feature = IdentifyFeature(device_handle, native_functions) + self._jog_params_feature = JogParamsFeature(device_handle, native_functions) + self._joystick_params_feature = JoystickParamsFeature(device_handle, native_functions) + self._limit_switch_params_getter_feature = LimitSwitchParamsGetterFeature(device_handle, native_functions) + self._limit_switch_params_setter_feature = LimitSwitchParamsSetterFeature(device_handle, native_functions) + self._load_params_feature = LoadParamsFeature(device_handle, native_functions) + self._move_feature = MoveFeature(device_handle, native_functions) + self._move_absolute_params_feature = MoveAbsoluteParamsFeature(device_handle, native_functions) + self._move_relative_params_feature = MoveRelativeParamsFeature(device_handle, native_functions) + self._no_flash_programming_feature = NoFlashProgrammingFeature(device_handle, native_functions) + self._persist_params_feature = PersistParamsFeature(device_handle, native_functions) + self._position_counter_feature = PositionCounterFeature(device_handle, native_functions) + self._power_params_feature = PowerParamsFeature(device_handle, native_functions) + self._profile_mode_params_feature = ProfileModeParamsFeature(device_handle, native_functions) + self._rich_response_feature = RichResponseFeature(device_handle, native_functions) + self._settings_feature = SettingsFeature(device_handle, native_functions) + self._status_items_feature = StatusItemsFeature(device_handle, native_functions) + self._status_mode_feature = StatusModeFeature(device_handle, native_functions) + self._status_request_feature = StatusRequestFeature(device_handle, native_functions) + self._stepper_loop_params_feature = StepperLoopParamsFeature(device_handle, native_functions) + self._stepper_status_feature = StepperStatusFeature(device_handle, native_functions) + self._stop_feature = StopFeature(device_handle, native_functions) + self._trigger_params_for_stepper_feature = TriggerParamsForStepperFeature(device_handle, native_functions) + self._unit_converter_feature = UnitConverterFeature(device_handle, native_functions) + self._universal_status_bits_feature = UniversalStatusBitsFeature(device_handle, native_functions) + self._velocity_params_feature = VelocityParamsFeature(device_handle, native_functions) + self._yes_flash_programming_feature = YesFlashProgrammingFeature(device_handle, native_functions) + + @property + def adc_inputs_feature(self) -> AdcInputs: + return self._adc_inputs_feature + + @property + def bow_index_feature(self) -> BowIndex: + return self._bow_index_feature + + @property + def connected_product_feature(self) -> ConnectedProduct: + return self._connected_product_feature + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: + return self._digital_output_states_feature + + @property + def disconnect_feature(self) -> Disconnect: + return self._disconnect_feature + + @property + def enable_state_feature(self) -> EnableState: + return self._enable_state_feature + + @property + def encoder_counter_feature(self) -> EncoderCounter: + return self._encoder_counter_feature + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: + return self._firmware_version_info_feature + + @property + def general_move_params_feature(self) -> GeneralMoveParams: + return self._general_move_params_feature + + @property + def hardware_info_feature(self) -> HardwareInfo: + return self._hardware_info_feature + + @property + def home_feature(self) -> Home: + return self._home_feature + + @property + def home_params_feature(self) -> HomeParams: + return self._home_params_feature + + @property + def identify_feature(self) -> Identify: + return self._identify_feature + + @property + def jog_params_feature(self) -> JogParams: + return self._jog_params_feature + + @property + def joystick_params_feature(self) -> JoystickParams: + return self._joystick_params_feature + + @property + def limit_switch_params_getter_feature(self) -> LimitSwitchParamsGetter: + return self._limit_switch_params_getter_feature + + @property + def limit_switch_params_setter_feature(self) -> LimitSwitchParamsSetter: + return self._limit_switch_params_setter_feature + + @property + def load_params_feature(self) -> LoadParams: + return self._load_params_feature + + @property + def move_feature(self) -> Move: + return self._move_feature + + @property + def move_absolute_params_feature(self) -> MoveAbsoluteParams: + return self._move_absolute_params_feature + + @property + def move_relative_params_feature(self) -> MoveRelativeParams: + return self._move_relative_params_feature + + @property + def no_flash_programming_feature(self) -> NoFlashProgramming: + return self._no_flash_programming_feature + + @property + def persist_params_feature(self) -> PersistParams: + return self._persist_params_feature + + @property + def position_counter_feature(self) -> PositionCounter: + return self._position_counter_feature + + @property + def power_params_feature(self) -> PowerParams: + return self._power_params_feature + + @property + def profile_mode_params_feature(self) -> ProfileModeParams: + return self._profile_mode_params_feature + + @property + def rich_response_feature(self) -> RichResponse: + return self._rich_response_feature + + @property + def settings_feature(self) -> Settings: + return self._settings_feature + + @property + def status_items_feature(self) -> StatusItems: + return self._status_items_feature + + @property + def status_mode_feature(self) -> StatusMode: + return self._status_mode_feature + + @property + def status_request_feature(self) -> StatusRequest: + return self._status_request_feature + + @property + def stepper_loop_params_feature(self) -> StepperLoopParams: + return self._stepper_loop_params_feature + + @property + def stepper_status_feature(self) -> StepperStatus: + return self._stepper_status_feature + + @property + def stop_feature(self) -> Stop: + return self._stop_feature + + @property + def trigger_params_for_stepper_feature(self) -> TriggerParamsForStepper: + return self._trigger_params_for_stepper_feature + + @property + def unit_converter_feature(self) -> UnitConverter: + return self._unit_converter_feature + + @property + def universal_status_bits_feature(self) -> UniversalStatusBits: + return self._universal_status_bits_feature + + @property + def velocity_params_feature(self) -> VelocityParams: + return self._velocity_params_feature + + @property + def yes_flash_programming_feature(self) -> YesFlashProgramming: + return self._yes_flash_programming_feature \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bsc20xv4_logical_channel_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bsc20xv4_logical_channel_feature_group.py new file mode 100644 index 0000000..9add9b1 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/bsc20xv4_logical_channel_feature_group.py @@ -0,0 +1,290 @@ +import thorlabs_xa.interfaces.device_feature_groups.bsc20xv4_logical_channel_feature_group + +from thorlabs_xa.interfaces.device_features.adc_inputs import AdcInputs +from thorlabs_xa.interfaces.device_features.bow_index import BowIndex +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.encoder_counter import EncoderCounter +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.joystick_params import JoystickParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.limit_switch_params_setter import LimitSwitchParamsSetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.no_flash_programming import NoFlashProgramming +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.power_params import PowerParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.set_actuator_type import SetActuatorType +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stepper_loop_params import StepperLoopParams +from thorlabs_xa.interfaces.device_features.stepper_status import StepperStatus +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.trigger_params_for_stepper import TriggerParamsForStepper +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams +from thorlabs_xa.interfaces.device_features.yes_flash_programming import YesFlashProgramming + +from thorlabs_xa.implementations.device_features.adc_inputs_feature import AdcInputsFeature +from thorlabs_xa.implementations.device_features.bow_index_feature import BowIndexFeature +from thorlabs_xa.implementations.device_features.connected_product_feature import ConnectedProductFeature +from thorlabs_xa.implementations.device_features.digital_output_states_feature import DigitalOutputStatesFeature +from thorlabs_xa.implementations.device_features.disconnect_feature import DisconnectFeature +from thorlabs_xa.implementations.device_features.enable_state_feature import EnableStateFeature +from thorlabs_xa.implementations.device_features.encoder_counter_feature import EncoderCounterFeature +from thorlabs_xa.implementations.device_features.firmware_version_info_feature import FirmwareVersionInfoFeature +from thorlabs_xa.implementations.device_features.general_move_params_feature import GeneralMoveParamsFeature +from thorlabs_xa.implementations.device_features.hardware_info_feature import HardwareInfoFeature +from thorlabs_xa.implementations.device_features.home_feature import HomeFeature +from thorlabs_xa.implementations.device_features.home_params_feature import HomeParamsFeature +from thorlabs_xa.implementations.device_features.identify_feature import IdentifyFeature +from thorlabs_xa.implementations.device_features.jog_params_feature import JogParamsFeature +from thorlabs_xa.implementations.device_features.joystick_params_feature import JoystickParamsFeature +from thorlabs_xa.implementations.device_features.limit_switch_params_getter_feature import LimitSwitchParamsGetterFeature +from thorlabs_xa.implementations.device_features.limit_switch_params_setter_feature import LimitSwitchParamsSetterFeature +from thorlabs_xa.implementations.device_features.load_params_feature import LoadParamsFeature +from thorlabs_xa.implementations.device_features.move_feature import MoveFeature +from thorlabs_xa.implementations.device_features.move_absolute_params_feature import MoveAbsoluteParamsFeature +from thorlabs_xa.implementations.device_features.move_relative_params_feature import MoveRelativeParamsFeature +from thorlabs_xa.implementations.device_features.no_flash_programming_feature import NoFlashProgrammingFeature +from thorlabs_xa.implementations.device_features.persist_params_feature import PersistParamsFeature +from thorlabs_xa.implementations.device_features.position_counter_feature import PositionCounterFeature +from thorlabs_xa.implementations.device_features.power_params_feature import PowerParamsFeature +from thorlabs_xa.implementations.device_features.profile_mode_params_feature import ProfileModeParamsFeature +from thorlabs_xa.implementations.device_features.rich_response_feature import RichResponseFeature +from thorlabs_xa.implementations.device_features.set_actuator_type_feature import SetActuatorTypeFeature +from thorlabs_xa.implementations.device_features.settings_feature import SettingsFeature +from thorlabs_xa.implementations.device_features.status_items_feature import StatusItemsFeature +from thorlabs_xa.implementations.device_features.status_mode_feature import StatusModeFeature +from thorlabs_xa.implementations.device_features.status_request_feature import StatusRequestFeature +from thorlabs_xa.implementations.device_features.stepper_loop_params_feature import StepperLoopParamsFeature +from thorlabs_xa.implementations.device_features.stepper_status_feature import StepperStatusFeature +from thorlabs_xa.implementations.device_features.stop_feature import StopFeature +from thorlabs_xa.implementations.device_features.trigger_params_for_stepper_feature import TriggerParamsForStepperFeature +from thorlabs_xa.implementations.device_features.unit_converter_feature import UnitConverterFeature +from thorlabs_xa.implementations.device_features.universal_status_bits_feature import UniversalStatusBitsFeature +from thorlabs_xa.implementations.device_features.velocity_params_feature import VelocityParamsFeature +from thorlabs_xa.implementations.device_features.yes_flash_programming_feature import YesFlashProgrammingFeature + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +class Bsc20xv4LogicalChannelFeatureGroup(thorlabs_xa.interfaces.device_feature_groups.bsc20xv4_logical_channel_feature_group.Bsc20xv4LogicalChannelFeatureGroup): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self._adc_inputs_feature = AdcInputsFeature(device_handle, native_functions) + self._bow_index_feature = BowIndexFeature(device_handle, native_functions) + self._connected_product_feature = ConnectedProductFeature(device_handle, native_functions) + self._digital_output_states_feature = DigitalOutputStatesFeature(device_handle, native_functions) + self._disconnect_feature = DisconnectFeature(device_handle, native_functions) + self._enable_state_feature = EnableStateFeature(device_handle, native_functions) + self._encoder_counter_feature = EncoderCounterFeature(device_handle, native_functions) + self._firmware_version_info_feature = FirmwareVersionInfoFeature(device_handle, native_functions) + self._general_move_params_feature = GeneralMoveParamsFeature(device_handle, native_functions) + self._hardware_info_feature = HardwareInfoFeature(device_handle, native_functions) + self._home_feature = HomeFeature(device_handle, native_functions) + self._home_params_feature = HomeParamsFeature(device_handle, native_functions) + self._identify_feature = IdentifyFeature(device_handle, native_functions) + self._jog_params_feature = JogParamsFeature(device_handle, native_functions) + self._joystick_params_feature = JoystickParamsFeature(device_handle, native_functions) + self._limit_switch_params_getter_feature = LimitSwitchParamsGetterFeature(device_handle, native_functions) + self._limit_switch_params_setter_feature = LimitSwitchParamsSetterFeature(device_handle, native_functions) + self._load_params_feature = LoadParamsFeature(device_handle, native_functions) + self._move_feature = MoveFeature(device_handle, native_functions) + self._move_absolute_params_feature = MoveAbsoluteParamsFeature(device_handle, native_functions) + self._move_relative_params_feature = MoveRelativeParamsFeature(device_handle, native_functions) + self._no_flash_programming_feature = NoFlashProgrammingFeature(device_handle, native_functions) + self._persist_params_feature = PersistParamsFeature(device_handle, native_functions) + self._position_counter_feature = PositionCounterFeature(device_handle, native_functions) + self._power_params_feature = PowerParamsFeature(device_handle, native_functions) + self._profile_mode_params_feature = ProfileModeParamsFeature(device_handle, native_functions) + self._rich_response_feature = RichResponseFeature(device_handle, native_functions) + self._set_actuator_type_feature = SetActuatorTypeFeature(device_handle, native_functions) + self._settings_feature = SettingsFeature(device_handle, native_functions) + self._status_items_feature = StatusItemsFeature(device_handle, native_functions) + self._status_mode_feature = StatusModeFeature(device_handle, native_functions) + self._status_request_feature = StatusRequestFeature(device_handle, native_functions) + self._stepper_loop_params_feature = StepperLoopParamsFeature(device_handle, native_functions) + self._stepper_status_feature = StepperStatusFeature(device_handle, native_functions) + self._stop_feature = StopFeature(device_handle, native_functions) + self._trigger_params_for_stepper_feature = TriggerParamsForStepperFeature(device_handle, native_functions) + self._unit_converter_feature = UnitConverterFeature(device_handle, native_functions) + self._universal_status_bits_feature = UniversalStatusBitsFeature(device_handle, native_functions) + self._velocity_params_feature = VelocityParamsFeature(device_handle, native_functions) + self._yes_flash_programming_feature = YesFlashProgrammingFeature(device_handle, native_functions) + + @property + def adc_inputs_feature(self) -> AdcInputs: + return self._adc_inputs_feature + + @property + def bow_index_feature(self) -> BowIndex: + return self._bow_index_feature + + @property + def connected_product_feature(self) -> ConnectedProduct: + return self._connected_product_feature + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: + return self._digital_output_states_feature + + @property + def disconnect_feature(self) -> Disconnect: + return self._disconnect_feature + + @property + def enable_state_feature(self) -> EnableState: + return self._enable_state_feature + + @property + def encoder_counter_feature(self) -> EncoderCounter: + return self._encoder_counter_feature + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: + return self._firmware_version_info_feature + + @property + def general_move_params_feature(self) -> GeneralMoveParams: + return self._general_move_params_feature + + @property + def hardware_info_feature(self) -> HardwareInfo: + return self._hardware_info_feature + + @property + def home_feature(self) -> Home: + return self._home_feature + + @property + def home_params_feature(self) -> HomeParams: + return self._home_params_feature + + @property + def identify_feature(self) -> Identify: + return self._identify_feature + + @property + def jog_params_feature(self) -> JogParams: + return self._jog_params_feature + + @property + def joystick_params_feature(self) -> JoystickParams: + return self._joystick_params_feature + + @property + def limit_switch_params_getter_feature(self) -> LimitSwitchParamsGetter: + return self._limit_switch_params_getter_feature + + @property + def limit_switch_params_setter_feature(self) -> LimitSwitchParamsSetter: + return self._limit_switch_params_setter_feature + + @property + def load_params_feature(self) -> LoadParams: + return self._load_params_feature + + @property + def move_feature(self) -> Move: + return self._move_feature + + @property + def move_absolute_params_feature(self) -> MoveAbsoluteParams: + return self._move_absolute_params_feature + + @property + def move_relative_params_feature(self) -> MoveRelativeParams: + return self._move_relative_params_feature + + @property + def no_flash_programming_feature(self) -> NoFlashProgramming: + return self._no_flash_programming_feature + + @property + def persist_params_feature(self) -> PersistParams: + return self._persist_params_feature + + @property + def position_counter_feature(self) -> PositionCounter: + return self._position_counter_feature + + @property + def power_params_feature(self) -> PowerParams: + return self._power_params_feature + + @property + def profile_mode_params_feature(self) -> ProfileModeParams: + return self._profile_mode_params_feature + + @property + def rich_response_feature(self) -> RichResponse: + return self._rich_response_feature + + @property + def set_actuator_type_feature(self) -> SetActuatorType: + return self._set_actuator_type_feature + + @property + def settings_feature(self) -> Settings: + return self._settings_feature + + @property + def status_items_feature(self) -> StatusItems: + return self._status_items_feature + + @property + def status_mode_feature(self) -> StatusMode: + return self._status_mode_feature + + @property + def status_request_feature(self) -> StatusRequest: + return self._status_request_feature + + @property + def stepper_loop_params_feature(self) -> StepperLoopParams: + return self._stepper_loop_params_feature + + @property + def stepper_status_feature(self) -> StepperStatus: + return self._stepper_status_feature + + @property + def stop_feature(self) -> Stop: + return self._stop_feature + + @property + def trigger_params_for_stepper_feature(self) -> TriggerParamsForStepper: + return self._trigger_params_for_stepper_feature + + @property + def unit_converter_feature(self) -> UnitConverter: + return self._unit_converter_feature + + @property + def universal_status_bits_feature(self) -> UniversalStatusBits: + return self._universal_status_bits_feature + + @property + def velocity_params_feature(self) -> VelocityParams: + return self._velocity_params_feature + + @property + def yes_flash_programming_feature(self) -> YesFlashProgramming: + return self._yes_flash_programming_feature \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/kbd101_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/kbd101_feature_group.py new file mode 100644 index 0000000..b2fc324 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/kbd101_feature_group.py @@ -0,0 +1,276 @@ +import thorlabs_xa.interfaces.device_feature_groups.kbd101_feature_group + +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.current_loop_params import CurrentLoopParams +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.end_of_move_messages_mode import EndOfMoveMessagesMode +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.kcube_io_trigger_params import KcubeIoTriggerParams +from thorlabs_xa.interfaces.device_features.kcube_mmi_params import KcubeMmiParams +from thorlabs_xa.interfaces.device_features.kcube_position_trigger_params import KcubePositionTriggerParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.motor_output_params import MotorOutputParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.position_loop_params import PositionLoopParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.track_settle_params import TrackSettleParams +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status import UniversalStatus +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams + +from thorlabs_xa.implementations.device_features.connected_product_feature import ConnectedProductFeature +from thorlabs_xa.implementations.device_features.current_loop_params_feature import CurrentLoopParamsFeature +from thorlabs_xa.implementations.device_features.digital_output_states_feature import DigitalOutputStatesFeature +from thorlabs_xa.implementations.device_features.disconnect_feature import DisconnectFeature +from thorlabs_xa.implementations.device_features.enable_state_feature import EnableStateFeature +from thorlabs_xa.implementations.device_features.end_of_move_messages_mode_feature import EndOfMoveMessagesModeFeature +from thorlabs_xa.implementations.device_features.firmware_version_info_feature import FirmwareVersionInfoFeature +from thorlabs_xa.implementations.device_features.general_move_params_feature import GeneralMoveParamsFeature +from thorlabs_xa.implementations.device_features.hardware_info_feature import HardwareInfoFeature +from thorlabs_xa.implementations.device_features.home_feature import HomeFeature +from thorlabs_xa.implementations.device_features.home_params_feature import HomeParamsFeature +from thorlabs_xa.implementations.device_features.identify_feature import IdentifyFeature +from thorlabs_xa.implementations.device_features.jog_params_feature import JogParamsFeature +from thorlabs_xa.implementations.device_features.kcube_io_trigger_params_feature import KcubeIoTriggerParamsFeature +from thorlabs_xa.implementations.device_features.kcube_mmi_params_feature import KcubeMmiParamsFeature +from thorlabs_xa.implementations.device_features.kcube_position_trigger_params_feature import KcubePositionTriggerParamsFeature +from thorlabs_xa.implementations.device_features.limit_switch_params_getter_feature import LimitSwitchParamsGetterFeature +from thorlabs_xa.implementations.device_features.load_params_feature import LoadParamsFeature +from thorlabs_xa.implementations.device_features.motor_output_params_feature import MotorOutputParamsFeature +from thorlabs_xa.implementations.device_features.move_feature import MoveFeature +from thorlabs_xa.implementations.device_features.move_absolute_params_feature import MoveAbsoluteParamsFeature +from thorlabs_xa.implementations.device_features.move_relative_params_feature import MoveRelativeParamsFeature +from thorlabs_xa.implementations.device_features.persist_params_feature import PersistParamsFeature +from thorlabs_xa.implementations.device_features.position_counter_feature import PositionCounterFeature +from thorlabs_xa.implementations.device_features.position_loop_params_feature import PositionLoopParamsFeature +from thorlabs_xa.implementations.device_features.restore_factory_defaults_feature import RestoreFactoryDefaultsFeature +from thorlabs_xa.implementations.device_features.rich_response_feature import RichResponseFeature +from thorlabs_xa.implementations.device_features.settings_feature import SettingsFeature +from thorlabs_xa.implementations.device_features.stage_axis_params_feature import StageAxisParamsFeature +from thorlabs_xa.implementations.device_features.status_items_feature import StatusItemsFeature +from thorlabs_xa.implementations.device_features.status_mode_feature import StatusModeFeature +from thorlabs_xa.implementations.device_features.status_request_feature import StatusRequestFeature +from thorlabs_xa.implementations.device_features.stop_feature import StopFeature +from thorlabs_xa.implementations.device_features.track_settle_params_feature import TrackSettleParamsFeature +from thorlabs_xa.implementations.device_features.unit_converter_feature import UnitConverterFeature +from thorlabs_xa.implementations.device_features.universal_status_feature import UniversalStatusFeature +from thorlabs_xa.implementations.device_features.universal_status_bits_feature import UniversalStatusBitsFeature +from thorlabs_xa.implementations.device_features.velocity_params_feature import VelocityParamsFeature + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +class Kbd101FeatureGroup(thorlabs_xa.interfaces.device_feature_groups.kbd101_feature_group.Kbd101FeatureGroup): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self._connected_product_feature = ConnectedProductFeature(device_handle, native_functions) + self._current_loop_params_feature = CurrentLoopParamsFeature(device_handle, native_functions) + self._digital_output_states_feature = DigitalOutputStatesFeature(device_handle, native_functions) + self._disconnect_feature = DisconnectFeature(device_handle, native_functions) + self._enable_state_feature = EnableStateFeature(device_handle, native_functions) + self._end_of_move_messages_mode_feature = EndOfMoveMessagesModeFeature(device_handle, native_functions) + self._firmware_version_info_feature = FirmwareVersionInfoFeature(device_handle, native_functions) + self._general_move_params_feature = GeneralMoveParamsFeature(device_handle, native_functions) + self._hardware_info_feature = HardwareInfoFeature(device_handle, native_functions) + self._home_feature = HomeFeature(device_handle, native_functions) + self._home_params_feature = HomeParamsFeature(device_handle, native_functions) + self._identify_feature = IdentifyFeature(device_handle, native_functions) + self._jog_params_feature = JogParamsFeature(device_handle, native_functions) + self._kcube_io_trigger_params_feature = KcubeIoTriggerParamsFeature(device_handle, native_functions) + self._kcube_mmi_params_feature = KcubeMmiParamsFeature(device_handle, native_functions) + self._kcube_position_trigger_params_feature = KcubePositionTriggerParamsFeature(device_handle, native_functions) + self._limit_switch_params_getter_feature = LimitSwitchParamsGetterFeature(device_handle, native_functions) + self._load_params_feature = LoadParamsFeature(device_handle, native_functions) + self._motor_output_params_feature = MotorOutputParamsFeature(device_handle, native_functions) + self._move_feature = MoveFeature(device_handle, native_functions) + self._move_absolute_params_feature = MoveAbsoluteParamsFeature(device_handle, native_functions) + self._move_relative_params_feature = MoveRelativeParamsFeature(device_handle, native_functions) + self._persist_params_feature = PersistParamsFeature(device_handle, native_functions) + self._position_counter_feature = PositionCounterFeature(device_handle, native_functions) + self._position_loop_params_feature = PositionLoopParamsFeature(device_handle, native_functions) + self._restore_factory_defaults_feature = RestoreFactoryDefaultsFeature(device_handle, native_functions) + self._rich_response_feature = RichResponseFeature(device_handle, native_functions) + self._settings_feature = SettingsFeature(device_handle, native_functions) + self._stage_axis_params_feature = StageAxisParamsFeature(device_handle, native_functions) + self._status_items_feature = StatusItemsFeature(device_handle, native_functions) + self._status_mode_feature = StatusModeFeature(device_handle, native_functions) + self._status_request_feature = StatusRequestFeature(device_handle, native_functions) + self._stop_feature = StopFeature(device_handle, native_functions) + self._track_settle_params_feature = TrackSettleParamsFeature(device_handle, native_functions) + self._unit_converter_feature = UnitConverterFeature(device_handle, native_functions) + self._universal_status_feature = UniversalStatusFeature(device_handle, native_functions) + self._universal_status_bits_feature = UniversalStatusBitsFeature(device_handle, native_functions) + self._velocity_params_feature = VelocityParamsFeature(device_handle, native_functions) + + @property + def connected_product_feature(self) -> ConnectedProduct: + return self._connected_product_feature + + @property + def current_loop_params_feature(self) -> CurrentLoopParams: + return self._current_loop_params_feature + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: + return self._digital_output_states_feature + + @property + def disconnect_feature(self) -> Disconnect: + return self._disconnect_feature + + @property + def enable_state_feature(self) -> EnableState: + return self._enable_state_feature + + @property + def end_of_move_messages_mode_feature(self) -> EndOfMoveMessagesMode: + return self._end_of_move_messages_mode_feature + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: + return self._firmware_version_info_feature + + @property + def general_move_params_feature(self) -> GeneralMoveParams: + return self._general_move_params_feature + + @property + def hardware_info_feature(self) -> HardwareInfo: + return self._hardware_info_feature + + @property + def home_feature(self) -> Home: + return self._home_feature + + @property + def home_params_feature(self) -> HomeParams: + return self._home_params_feature + + @property + def identify_feature(self) -> Identify: + return self._identify_feature + + @property + def jog_params_feature(self) -> JogParams: + return self._jog_params_feature + + @property + def kcube_io_trigger_params_feature(self) -> KcubeIoTriggerParams: + return self._kcube_io_trigger_params_feature + + @property + def kcube_mmi_params_feature(self) -> KcubeMmiParams: + return self._kcube_mmi_params_feature + + @property + def kcube_position_trigger_params_feature(self) -> KcubePositionTriggerParams: + return self._kcube_position_trigger_params_feature + + @property + def limit_switch_params_getter_feature(self) -> LimitSwitchParamsGetter: + return self._limit_switch_params_getter_feature + + @property + def load_params_feature(self) -> LoadParams: + return self._load_params_feature + + @property + def motor_output_params_feature(self) -> MotorOutputParams: + return self._motor_output_params_feature + + @property + def move_feature(self) -> Move: + return self._move_feature + + @property + def move_absolute_params_feature(self) -> MoveAbsoluteParams: + return self._move_absolute_params_feature + + @property + def move_relative_params_feature(self) -> MoveRelativeParams: + return self._move_relative_params_feature + + @property + def persist_params_feature(self) -> PersistParams: + return self._persist_params_feature + + @property + def position_counter_feature(self) -> PositionCounter: + return self._position_counter_feature + + @property + def position_loop_params_feature(self) -> PositionLoopParams: + return self._position_loop_params_feature + + @property + def restore_factory_defaults_feature(self) -> RestoreFactoryDefaults: + return self._restore_factory_defaults_feature + + @property + def rich_response_feature(self) -> RichResponse: + return self._rich_response_feature + + @property + def settings_feature(self) -> Settings: + return self._settings_feature + + @property + def stage_axis_params_feature(self) -> StageAxisParams: + return self._stage_axis_params_feature + + @property + def status_items_feature(self) -> StatusItems: + return self._status_items_feature + + @property + def status_mode_feature(self) -> StatusMode: + return self._status_mode_feature + + @property + def status_request_feature(self) -> StatusRequest: + return self._status_request_feature + + @property + def stop_feature(self) -> Stop: + return self._stop_feature + + @property + def track_settle_params_feature(self) -> TrackSettleParams: + return self._track_settle_params_feature + + @property + def unit_converter_feature(self) -> UnitConverter: + return self._unit_converter_feature + + @property + def universal_status_feature(self) -> UniversalStatus: + return self._universal_status_feature + + @property + def universal_status_bits_feature(self) -> UniversalStatusBits: + return self._universal_status_bits_feature + + @property + def velocity_params_feature(self) -> VelocityParams: + return self._velocity_params_feature \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/kim001_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/kim001_feature_group.py new file mode 100644 index 0000000..e730d3c --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/kim001_feature_group.py @@ -0,0 +1,193 @@ +import thorlabs_xa.interfaces.device_feature_groups.kim001_feature_group + +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.conversion_factors import ConversionFactors +from thorlabs_xa.interfaces.device_features.dc_pid_params import DcPidParams +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.drive_operations_params import DriveOperationsParams +from thorlabs_xa.interfaces.device_features.end_of_move_messages_mode import EndOfMoveMessagesMode +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_channel_enable import KcubeChannelEnable +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_feedback_signal_params import KcubeFeedbackSignalParams +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_io_trigger_params import KcubeIoTriggerParams +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_jog_params import KcubeJogParams +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_mmi_params import KcubeMmiParams +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_trigger_params import KcubeTriggerParams +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.position_counts import PositionCounts +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.stage_select_params import StageSelectParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter + +from thorlabs_xa.implementations.device_features.piezo_inertial_motor.conversion_factors_feature import ConversionFactorsFeature +from thorlabs_xa.implementations.device_features.dc_pid_params_feature import DcPidParamsFeature +from thorlabs_xa.implementations.device_features.disconnect_feature import DisconnectFeature +from thorlabs_xa.implementations.device_features.piezo_inertial_motor.drive_operations_params_feature import DriveOperationsParamsFeature +from thorlabs_xa.implementations.device_features.end_of_move_messages_mode_feature import EndOfMoveMessagesModeFeature +from thorlabs_xa.implementations.device_features.firmware_version_info_feature import FirmwareVersionInfoFeature +from thorlabs_xa.implementations.device_features.hardware_info_feature import HardwareInfoFeature +from thorlabs_xa.implementations.device_features.identify_feature import IdentifyFeature +from thorlabs_xa.implementations.device_features.piezo_inertial_motor.kcube_channel_enable_feature import KcubeChannelEnableFeature +from thorlabs_xa.implementations.device_features.piezo_inertial_motor.kcube_feedback_signal_params_feature import KcubeFeedbackSignalParamsFeature +from thorlabs_xa.implementations.device_features.piezo_inertial_motor.kcube_io_trigger_params_feature import KcubeIoTriggerParamsFeature +from thorlabs_xa.implementations.device_features.piezo_inertial_motor.kcube_jog_params_feature import KcubeJogParamsFeature +from thorlabs_xa.implementations.device_features.piezo_inertial_motor.kcube_mmi_params_feature import KcubeMmiParamsFeature +from thorlabs_xa.implementations.device_features.piezo_inertial_motor.kcube_trigger_params_feature import KcubeTriggerParamsFeature +from thorlabs_xa.implementations.device_features.load_params_feature import LoadParamsFeature +from thorlabs_xa.implementations.device_features.move_feature import MoveFeature +from thorlabs_xa.implementations.device_features.persist_params_feature import PersistParamsFeature +from thorlabs_xa.implementations.device_features.piezo_inertial_motor.position_counts_feature import PositionCountsFeature +from thorlabs_xa.implementations.device_features.rich_response_feature import RichResponseFeature +from thorlabs_xa.implementations.device_features.settings_feature import SettingsFeature +from thorlabs_xa.implementations.device_features.piezo_inertial_motor.stage_select_params_feature import StageSelectParamsFeature +from thorlabs_xa.implementations.device_features.status_items_feature import StatusItemsFeature +from thorlabs_xa.implementations.device_features.status_mode_feature import StatusModeFeature +from thorlabs_xa.implementations.device_features.status_request_feature import StatusRequestFeature +from thorlabs_xa.implementations.device_features.stop_feature import StopFeature +from thorlabs_xa.implementations.device_features.unit_converter_feature import UnitConverterFeature + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +class Kim001FeatureGroup(thorlabs_xa.interfaces.device_feature_groups.kim001_feature_group.Kim001FeatureGroup): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self._conversion_factors_feature = ConversionFactorsFeature(device_handle, native_functions) + self._dc_pid_params_feature = DcPidParamsFeature(device_handle, native_functions) + self._disconnect_feature = DisconnectFeature(device_handle, native_functions) + self._drive_operations_params_feature = DriveOperationsParamsFeature(device_handle, native_functions) + self._end_of_move_messages_mode_feature = EndOfMoveMessagesModeFeature(device_handle, native_functions) + self._firmware_version_info_feature = FirmwareVersionInfoFeature(device_handle, native_functions) + self._hardware_info_feature = HardwareInfoFeature(device_handle, native_functions) + self._identify_feature = IdentifyFeature(device_handle, native_functions) + self._kcube_channel_enable_feature = KcubeChannelEnableFeature(device_handle, native_functions) + self._kcube_feedback_signal_params_feature = KcubeFeedbackSignalParamsFeature(device_handle, native_functions) + self._kcube_io_trigger_params_feature = KcubeIoTriggerParamsFeature(device_handle, native_functions) + self._kcube_jog_params_feature = KcubeJogParamsFeature(device_handle, native_functions) + self._kcube_mmi_params_feature = KcubeMmiParamsFeature(device_handle, native_functions) + self._kcube_trigger_params_feature = KcubeTriggerParamsFeature(device_handle, native_functions) + self._load_params_feature = LoadParamsFeature(device_handle, native_functions) + self._move_feature = MoveFeature(device_handle, native_functions) + self._persist_params_feature = PersistParamsFeature(device_handle, native_functions) + self._position_counts_feature = PositionCountsFeature(device_handle, native_functions) + self._rich_response_feature = RichResponseFeature(device_handle, native_functions) + self._settings_feature = SettingsFeature(device_handle, native_functions) + self._stage_select_params_feature = StageSelectParamsFeature(device_handle, native_functions) + self._status_items_feature = StatusItemsFeature(device_handle, native_functions) + self._status_mode_feature = StatusModeFeature(device_handle, native_functions) + self._status_request_feature = StatusRequestFeature(device_handle, native_functions) + self._stop_feature = StopFeature(device_handle, native_functions) + self._unit_converter_feature = UnitConverterFeature(device_handle, native_functions) + + + @property + def conversion_factors_feature(self) -> ConversionFactors: + return self._conversion_factors_feature + + @property + def dc_pid_params_feature(self) -> DcPidParams: + return self._dc_pid_params_feature + + @property + def disconnect_feature(self) -> Disconnect: + return self._disconnect_feature + + @property + def drive_operations_params_feature(self) -> DriveOperationsParams: + return self._drive_operations_params_feature + + @property + def end_of_move_messages_mode_feature(self) -> EndOfMoveMessagesMode: + return self._end_of_move_messages_mode_feature + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: + return self._firmware_version_info_feature + + @property + def hardware_info_feature(self) -> HardwareInfo: + return self._hardware_info_feature + + @property + def identify_feature(self) -> Identify: + return self._identify_feature + + @property + def kcube_channel_enable_feature(self) -> KcubeChannelEnable: + return self._kcube_channel_enable_feature + + @property + def kcube_feedback_signal_params_feature(self) -> KcubeFeedbackSignalParams: + return self._kcube_feedback_signal_params_feature + + @property + def kcube_io_trigger_params_feature(self) -> KcubeIoTriggerParams: + return self._kcube_io_trigger_params_feature + + @property + def kcube_jog_params_feature(self) -> KcubeJogParams: + return self._kcube_jog_params_feature + + @property + def kcube_mmi_params_feature(self) -> KcubeMmiParams: + return self._kcube_mmi_params_feature + + @property + def kcube_trigger_params_feature(self) -> KcubeTriggerParams: + return self._kcube_trigger_params_feature + + @property + def load_params_feature(self) -> LoadParams: + return self._load_params_feature + + @property + def move_feature(self) -> Move: + return self._move_feature + + @property + def persist_params_feature(self) -> PersistParams: + return self._persist_params_feature + + @property + def position_counts_feature(self) -> PositionCounts: + return self._position_counts_feature + + @property + def rich_response_feature(self) -> RichResponse: + return self._rich_response_feature + + @property + def settings_feature(self) -> Settings: + return self._settings_feature + + @property + def stage_select_params_feature(self) -> StageSelectParams: + return self._stage_select_params_feature + + @property + def status_items_feature(self) -> StatusItems: + return self._status_items_feature + + @property + def status_mode_feature(self) -> StatusMode: + return self._status_mode_feature + + @property + def status_request_feature(self) -> StatusRequest: + return self._status_request_feature + + @property + def stop_feature(self) -> Stop: + return self._stop_feature + + @property + def unit_converter_feature(self) -> UnitConverter: + return self._unit_converter_feature diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/linear_translation_stage_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/linear_translation_stage_feature_group.py index a1f67f0..985da1d 100644 --- a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/linear_translation_stage_feature_group.py +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/linear_translation_stage_feature_group.py @@ -27,7 +27,7 @@ from thorlabs_xa.implementations.device_features.stepper_status_feature import StepperStatusFeature from thorlabs_xa.implementations.device_features.stop_feature import StopFeature from thorlabs_xa.implementations.device_features.unit_converter_feature import UnitConverterFeature -from thorlabs_xa.implementations.device_features.universal_status_feature import UniversalStatusFeature +from thorlabs_xa.implementations.device_features.universal_status_bits_feature import UniversalStatusBitsFeature from thorlabs_xa.implementations.device_features.velocity_params_feature import VelocityParamsFeature from thorlabs_xa.interfaces.device_features.button_params import ButtonParams @@ -57,7 +57,7 @@ from thorlabs_xa.interfaces.device_features.stepper_status import StepperStatus from thorlabs_xa.interfaces.device_features.stop import Stop from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter -from thorlabs_xa.interfaces.device_features.universal_status import UniversalStatus +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams from thorlabs_xa.native_sdks.native_functions import NativeFunctions @@ -92,7 +92,7 @@ def __init__(self, device_handle: int, native_functions: NativeFunctions) -> Non self._stepper_status_feature = StepperStatusFeature(device_handle, native_functions) self._stop_feature = StopFeature(device_handle, native_functions) self._unit_converter_feature = UnitConverterFeature(device_handle, native_functions) - self._universal_status_feature = UniversalStatusFeature(device_handle, native_functions) + self._universal_status_bits_feature = UniversalStatusBitsFeature(device_handle, native_functions) self._velocity_params_feature = VelocityParamsFeature(device_handle, native_functions) @property @@ -117,7 +117,7 @@ def enable_state_feature(self) -> EnableState: @property def firmware_version_info_feature(self) -> FirmwareVersionInfo: - return self.firmware_version_info_feature + return self._firmware_version_info_feature @property def general_move_params_feature(self) -> GeneralMoveParams: @@ -204,8 +204,8 @@ def unit_converter_feature(self) -> UnitConverter: return self._unit_converter_feature @property - def universal_status_feature(self) -> UniversalStatus: - return self._universal_status_feature + def universal_status_bits_feature(self) -> UniversalStatusBits: + return self._universal_status_bits_feature @property def velocity_params_feature(self) -> VelocityParams: diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/pdxc2_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/pdxc2_feature_group.py new file mode 100644 index 0000000..f132276 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/pdxc2_feature_group.py @@ -0,0 +1,143 @@ +import thorlabs_xa.interfaces.device_feature_groups.pdxc2_feature_group + +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.piezo.position_control_mode import PositionControlMode +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter + +from thorlabs_xa.implementations.device_features.connected_product_feature import ConnectedProductFeature +from thorlabs_xa.implementations.device_features.disconnect_feature import DisconnectFeature +from thorlabs_xa.implementations.device_features.enable_state_feature import EnableStateFeature +from thorlabs_xa.implementations.device_features.firmware_version_info_feature import FirmwareVersionInfoFeature +from thorlabs_xa.implementations.device_features.hardware_info_feature import HardwareInfoFeature +from thorlabs_xa.implementations.device_features.home_feature import HomeFeature +from thorlabs_xa.implementations.device_features.identify_feature import IdentifyFeature +from thorlabs_xa.implementations.device_features.load_params_feature import LoadParamsFeature +from thorlabs_xa.implementations.device_features.move_feature import MoveFeature +from thorlabs_xa.implementations.device_features.persist_params_feature import PersistParamsFeature +from thorlabs_xa.implementations.device_features.piezo.position_control_mode_feature import PositionControlModeFeature +from thorlabs_xa.implementations.device_features.rich_response_feature import RichResponseFeature +from thorlabs_xa.implementations.device_features.settings_feature import SettingsFeature +from thorlabs_xa.implementations.device_features.stage_axis_params_feature import StageAxisParamsFeature +from thorlabs_xa.implementations.device_features.status_items_feature import StatusItemsFeature +from thorlabs_xa.implementations.device_features.status_mode_feature import StatusModeFeature +from thorlabs_xa.implementations.device_features.status_request_feature import StatusRequestFeature +from thorlabs_xa.implementations.device_features.stop_feature import StopFeature +from thorlabs_xa.implementations.device_features.unit_converter_feature import UnitConverterFeature + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +class Pdxc2FeatureGroup(thorlabs_xa.interfaces.device_feature_groups.pdxc2_feature_group.Pdxc2FeatureGroup): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self._connected_product_feature = ConnectedProductFeature(device_handle, native_functions) + self._disconnect_feature = DisconnectFeature(device_handle, native_functions) + self._enable_state_feature = EnableStateFeature(device_handle, native_functions) + self._firmware_version_info_feature = FirmwareVersionInfoFeature(device_handle, native_functions) + self._hardware_info_feature = HardwareInfoFeature(device_handle, native_functions) + self._home_feature = HomeFeature(device_handle, native_functions) + self._identify_feature = IdentifyFeature(device_handle, native_functions) + self._load_params_feature = LoadParamsFeature(device_handle, native_functions) + self._move_feature = MoveFeature(device_handle, native_functions) + self._persist_params_feature = PersistParamsFeature(device_handle, native_functions) + self._position_control_mode_feature = PositionControlModeFeature(device_handle, native_functions) + self._rich_response_feature = RichResponseFeature(device_handle, native_functions) + self._settings_feature = SettingsFeature(device_handle, native_functions) + self._stage_axis_params_feature = StageAxisParamsFeature(device_handle, native_functions) + self._status_items_feature = StatusItemsFeature(device_handle, native_functions) + self._status_mode_feature = StatusModeFeature(device_handle, native_functions) + self._status_request_feature = StatusRequestFeature(device_handle, native_functions) + self._stop_feature = StopFeature(device_handle, native_functions) + self._unit_converter_feature = UnitConverterFeature(device_handle, native_functions) + + @property + def connected_product_feature(self) -> ConnectedProduct: + return self._connected_product_feature + + @property + def disconnect_feature(self) -> Disconnect: + return self._disconnect_feature + + @property + def enable_state_feature(self) -> EnableState: + return self._enable_state_feature + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: + return self._firmware_version_info_feature + + @property + def hardware_info_feature(self) -> HardwareInfo: + return self._hardware_info_feature + + @property + def home_feature(self) -> Home: + return self._home_feature + + @property + def identify_feature(self) -> Identify: + return self._identify_feature + + @property + def load_params_feature(self) -> LoadParams: + return self._load_params_feature + + @property + def move_feature(self) -> Move: + return self._move_feature + + @property + def persist_params_feature(self) -> PersistParams: + return self._persist_params_feature + + @property + def position_control_mode_feature(self) -> PositionControlMode: + return self._position_control_mode_feature + + @property + def rich_response_feature(self) -> RichResponse: + return self._rich_response_feature + + @property + def settings_feature(self) -> Settings: + return self._settings_feature + + @property + def stage_axis_params_feature(self) -> StageAxisParams: + return self._stage_axis_params_feature + + @property + def status_items_feature(self) -> StatusItems: + return self._status_items_feature + + @property + def status_mode_feature(self) -> StatusMode: + return self._status_mode_feature + + @property + def status_request_feature(self) -> StatusRequest: + return self._status_request_feature + + @property + def stop_feature(self) -> Stop: + return self._stop_feature + + @property + def unit_converter_feature(self) -> UnitConverter: + return self._unit_converter_feature \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/pdxc3_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/pdxc3_feature_group.py new file mode 100644 index 0000000..647c8e4 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/pdxc3_feature_group.py @@ -0,0 +1,80 @@ +import thorlabs_xa.interfaces.device_feature_groups.pdxc3_feature_group + +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move_sync_array import MoveSyncArray +from thorlabs_xa.interfaces.device_features.move_sync_params import MoveSyncParams +from thorlabs_xa.interfaces.device_features.move_sync_start import MoveSyncStart +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode + +from thorlabs_xa.implementations.device_features.disconnect_feature import DisconnectFeature +from thorlabs_xa.implementations.device_features.firmware_version_info_feature import FirmwareVersionInfoFeature +from thorlabs_xa.implementations.device_features.hardware_info_feature import HardwareInfoFeature +from thorlabs_xa.implementations.device_features.identify_feature import IdentifyFeature +from thorlabs_xa.implementations.device_features.load_params_feature import LoadParamsFeature +from thorlabs_xa.implementations.device_features.move_sync_array_feature import MoveSyncArrayFeature +from thorlabs_xa.implementations.device_features.move_sync_params_feature import MoveSyncParamsFeature +from thorlabs_xa.implementations.device_features.move_sync_start_feature import MoveSyncStartFeature +from thorlabs_xa.implementations.device_features.settings_feature import SettingsFeature +from thorlabs_xa.implementations.device_features.status_mode_feature import StatusModeFeature + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +class Pdxc3FeatureGroup(thorlabs_xa.interfaces.device_feature_groups.pdxc3_feature_group.Pdxc3FeatureGroup): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self._disconnect_feature = DisconnectFeature(device_handle, native_functions) + self._firmware_version_info_feature = FirmwareVersionInfoFeature(device_handle, native_functions) + self._hardware_info_feature = HardwareInfoFeature(device_handle, native_functions) + self._identify_feature = IdentifyFeature(device_handle, native_functions) + self._load_params_feature = LoadParamsFeature(device_handle, native_functions) + self._move_sync_array_feature = MoveSyncArrayFeature(device_handle, native_functions) + self._move_sync_params_feature = MoveSyncParamsFeature(device_handle, native_functions) + self._move_sync_start_feature = MoveSyncStartFeature(device_handle, native_functions) + self._settings_feature = SettingsFeature(device_handle, native_functions) + self._status_mode_feature = StatusModeFeature(device_handle, native_functions) + + @property + def disconnect_feature(self) -> Disconnect: + return self._disconnect_feature + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: + return self._firmware_version_info_feature + + @property + def hardware_info_feature(self) -> HardwareInfo: + return self._hardware_info_feature + + @property + def identify_feature(self) -> Identify: + return self._identify_feature + + @property + def load_params_feature(self) -> LoadParams: + return self._load_params_feature + + @property + def move_sync_array_feature(self) -> MoveSyncArray: + return self._move_sync_array_feature + + @property + def move_sync_params_feature(self) -> MoveSyncParams: + return self._move_sync_params_feature + + @property + def move_sync_start_feature(self) -> MoveSyncStart: + return self._move_sync_start_feature + + @property + def settings_feature(self) -> Settings: + return self._settings_feature + + @property + def status_mode_feature(self) -> StatusMode: + return self._status_mode_feature \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/pdxc3_subchannel_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/pdxc3_subchannel_feature_group.py new file mode 100644 index 0000000..38646fe --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/pdxc3_subchannel_feature_group.py @@ -0,0 +1,115 @@ +import thorlabs_xa.interfaces.device_feature_groups.pdxc3_subchannel_feature_group + +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.piezo.position_control_mode import PositionControlMode +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter + +from thorlabs_xa.implementations.device_features.connected_product_feature import ConnectedProductFeature +from thorlabs_xa.implementations.device_features.enable_state_feature import EnableStateFeature +from thorlabs_xa.implementations.device_features.home_feature import HomeFeature +from thorlabs_xa.implementations.device_features.load_params_feature import LoadParamsFeature +from thorlabs_xa.implementations.device_features.move_feature import MoveFeature +from thorlabs_xa.implementations.device_features.persist_params_feature import PersistParamsFeature +from thorlabs_xa.implementations.device_features.piezo.position_control_mode_feature import PositionControlModeFeature +from thorlabs_xa.implementations.device_features.rich_response_feature import RichResponseFeature +from thorlabs_xa.implementations.device_features.settings_feature import SettingsFeature +from thorlabs_xa.implementations.device_features.stage_axis_params_feature import StageAxisParamsFeature +from thorlabs_xa.implementations.device_features.status_items_feature import StatusItemsFeature +from thorlabs_xa.implementations.device_features.status_mode_feature import StatusModeFeature +from thorlabs_xa.implementations.device_features.status_request_feature import StatusRequestFeature +from thorlabs_xa.implementations.device_features.stop_feature import StopFeature +from thorlabs_xa.implementations.device_features.unit_converter_feature import UnitConverterFeature + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +class Pdxc3SubchannelFeatureGroup(thorlabs_xa.interfaces.device_feature_groups.pdxc3_subchannel_feature_group.Pdxc3SubchannelFeatureGroup): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self._connected_product_feature = ConnectedProductFeature(device_handle, native_functions) + self._enable_state_feature = EnableStateFeature(device_handle, native_functions) + self._home_feature = HomeFeature(device_handle, native_functions) + self._load_params_feature = LoadParamsFeature(device_handle, native_functions) + self._move_feature = MoveFeature(device_handle, native_functions) + self._persist_params_feature = PersistParamsFeature(device_handle, native_functions) + self._position_control_mode_feature = PositionControlModeFeature(device_handle, native_functions) + self._rich_response_feature = RichResponseFeature(device_handle, native_functions) + self._settings_feature = SettingsFeature(device_handle, native_functions) + self._stage_axis_params_feature = StageAxisParamsFeature(device_handle, native_functions) + self._status_items_feature = StatusItemsFeature(device_handle, native_functions) + self._status_mode_feature = StatusModeFeature(device_handle, native_functions) + self._status_request_feature = StatusRequestFeature(device_handle, native_functions) + self._stop_feature = StopFeature(device_handle, native_functions) + self._unit_converter_feature = UnitConverterFeature(device_handle, native_functions) + + @property + def connected_product_feature(self) -> ConnectedProduct: + return self._connected_product_feature + + @property + def enable_state_feature(self) -> EnableState: + return self._enable_state_feature + + @property + def home_feature(self) -> Home: + return self._home_feature + + @property + def load_params_feature(self) -> LoadParams: + return self._load_params_feature + + @property + def move_feature(self) -> Move: + return self._move_feature + + @property + def persist_params_feature(self) -> PersistParams: + return self._persist_params_feature + + @property + def position_control_mode_feature(self) -> PositionControlMode: + return self._position_control_mode_feature + + @property + def rich_response_feature(self) -> RichResponse: + return self._rich_response_feature + + @property + def settings_feature(self) -> Settings: + return self._settings_feature + + @property + def stage_axis_params_feature(self) -> StageAxisParams: + return self._stage_axis_params_feature + + @property + def status_items_feature(self) -> StatusItems: + return self._status_items_feature + + @property + def status_mode_feature(self) -> StatusMode: + return self._status_mode_feature + + @property + def status_request_feature(self) -> StatusRequest: + return self._status_request_feature + + @property + def stop_feature(self) -> Stop: + return self._stop_feature + + @property + def unit_converter_feature(self) -> UnitConverter: + return self._unit_converter_feature \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/tbd001_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/tbd001_feature_group.py new file mode 100644 index 0000000..87c138b --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/tbd001_feature_group.py @@ -0,0 +1,262 @@ +import thorlabs_xa.interfaces.device_feature_groups.tbd001_feature_group + +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.current_loop_params import CurrentLoopParams +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.joystick_params import JoystickParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.motor_output_params import MotorOutputParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.position_loop_params import PositionLoopParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.track_settle_params import TrackSettleParams +from thorlabs_xa.interfaces.device_features.trigger_params_for_dc_brushless import TriggerParamsForDcBrushless +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status import UniversalStatus +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams + +from thorlabs_xa.implementations.device_features.connected_product_feature import ConnectedProductFeature +from thorlabs_xa.implementations.device_features.current_loop_params_feature import CurrentLoopParamsFeature +from thorlabs_xa.implementations.device_features.digital_output_states_feature import DigitalOutputStatesFeature +from thorlabs_xa.implementations.device_features.enable_state_feature import EnableStateFeature +from thorlabs_xa.implementations.device_features.firmware_version_info_feature import FirmwareVersionInfoFeature +from thorlabs_xa.implementations.device_features.general_move_params_feature import GeneralMoveParamsFeature +from thorlabs_xa.implementations.device_features.hardware_info_feature import HardwareInfoFeature +from thorlabs_xa.implementations.device_features.home_feature import HomeFeature +from thorlabs_xa.implementations.device_features.home_params_feature import HomeParamsFeature +from thorlabs_xa.implementations.device_features.identify_feature import IdentifyFeature +from thorlabs_xa.implementations.device_features.jog_params_feature import JogParamsFeature +from thorlabs_xa.implementations.device_features.joystick_params_feature import JoystickParamsFeature +from thorlabs_xa.implementations.device_features.limit_switch_params_getter_feature import LimitSwitchParamsGetterFeature +from thorlabs_xa.implementations.device_features.load_params_feature import LoadParamsFeature +from thorlabs_xa.implementations.device_features.motor_output_params_feature import MotorOutputParamsFeature +from thorlabs_xa.implementations.device_features.move_feature import MoveFeature +from thorlabs_xa.implementations.device_features.move_absolute_params_feature import MoveAbsoluteParamsFeature +from thorlabs_xa.implementations.device_features.move_relative_params_feature import MoveRelativeParamsFeature +from thorlabs_xa.implementations.device_features.persist_params_feature import PersistParamsFeature +from thorlabs_xa.implementations.device_features.position_counter_feature import PositionCounterFeature +from thorlabs_xa.implementations.device_features.position_loop_params_feature import PositionLoopParamsFeature +from thorlabs_xa.implementations.device_features.profile_mode_params_feature import ProfileModeParamsFeature +from thorlabs_xa.implementations.device_features.restore_factory_defaults_feature import RestoreFactoryDefaultsFeature +from thorlabs_xa.implementations.device_features.rich_response_feature import RichResponseFeature +from thorlabs_xa.implementations.device_features.settings_feature import SettingsFeature +from thorlabs_xa.implementations.device_features.stage_axis_params_feature import StageAxisParamsFeature +from thorlabs_xa.implementations.device_features.status_items_feature import StatusItemsFeature +from thorlabs_xa.implementations.device_features.status_mode_feature import StatusModeFeature +from thorlabs_xa.implementations.device_features.status_request_feature import StatusRequestFeature +from thorlabs_xa.implementations.device_features.stop_feature import StopFeature +from thorlabs_xa.implementations.device_features.track_settle_params_feature import TrackSettleParamsFeature +from thorlabs_xa.implementations.device_features.trigger_params_for_dc_brushless_feature import TriggerParamsForDcBrushlessFeature +from thorlabs_xa.implementations.device_features.unit_converter_feature import UnitConverterFeature +from thorlabs_xa.implementations.device_features.universal_status_feature import UniversalStatusFeature +from thorlabs_xa.implementations.device_features.universal_status_bits_feature import UniversalStatusBitsFeature +from thorlabs_xa.implementations.device_features.velocity_params_feature import VelocityParamsFeature + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +class Tbd001FeatureGroup(thorlabs_xa.interfaces.device_feature_groups.tbd001_feature_group.Tbd001FeatureGroup): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self._connected_product_feature = ConnectedProductFeature(device_handle, native_functions) + self._current_loop_params_feature = CurrentLoopParamsFeature(device_handle, native_functions) + self._digital_output_states_feature = DigitalOutputStatesFeature(device_handle, native_functions) + self._enable_state_feature = EnableStateFeature(device_handle, native_functions) + self._firmware_version_info_feature = FirmwareVersionInfoFeature(device_handle, native_functions) + self._general_move_params_feature = GeneralMoveParamsFeature(device_handle, native_functions) + self._hardware_info_feature = HardwareInfoFeature(device_handle, native_functions) + self._home_feature = HomeFeature(device_handle, native_functions) + self._home_params_feature = HomeParamsFeature(device_handle, native_functions) + self._identify_feature = IdentifyFeature(device_handle, native_functions) + self._jog_params_feature = JogParamsFeature(device_handle, native_functions) + self._joystick_params_feature = JoystickParamsFeature(device_handle, native_functions) + self._limit_switch_params_getter_feature = LimitSwitchParamsGetterFeature(device_handle, native_functions) + self._load_params_feature = LoadParamsFeature(device_handle, native_functions) + self._motor_output_params_feature = MotorOutputParamsFeature(device_handle, native_functions) + self._move_feature = MoveFeature(device_handle, native_functions) + self._move_absolute_params_feature = MoveAbsoluteParamsFeature(device_handle, native_functions) + self._move_relative_params_feature = MoveRelativeParamsFeature(device_handle, native_functions) + self._persist_params_feature = PersistParamsFeature(device_handle, native_functions) + self._position_counter_feature = PositionCounterFeature(device_handle, native_functions) + self._position_loop_params_feature = PositionLoopParamsFeature(device_handle, native_functions) + self._profile_mode_params_feature = ProfileModeParamsFeature(device_handle, native_functions) + self._restore_factory_defaults_feature = RestoreFactoryDefaultsFeature(device_handle, native_functions) + self._rich_response_feature = RichResponseFeature(device_handle, native_functions) + self._settings_feature = SettingsFeature(device_handle, native_functions) + self._stage_axis_params_feature = StageAxisParamsFeature(device_handle, native_functions) + self._status_items_feature = StatusItemsFeature(device_handle, native_functions) + self._status_mode_feature = StatusModeFeature(device_handle, native_functions) + self._status_request_feature = StatusRequestFeature(device_handle, native_functions) + self._stop_feature = StopFeature(device_handle, native_functions) + self._track_settle_params_feature = TrackSettleParamsFeature(device_handle, native_functions) + self._trigger_params_for_dc_brushless_feature = TriggerParamsForDcBrushlessFeature(device_handle, native_functions) + self._unit_converter_feature = UnitConverterFeature(device_handle, native_functions) + self._universal_status_feature = UniversalStatusFeature(device_handle, native_functions) + self._universal_status_bits_feature = UniversalStatusBitsFeature(device_handle, native_functions) + self._velocity_params_feature = VelocityParamsFeature(device_handle, native_functions) + + @property + def connected_product_feature(self) -> ConnectedProduct: + return self._connected_product_feature + + @property + def current_loop_params_feature(self) -> CurrentLoopParams: + return self._current_loop_params_feature + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: + return self._digital_output_states_feature + + @property + def enable_state_feature(self) -> EnableState: + return self._enable_state_feature + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: + return self._firmware_version_info_feature + + @property + def general_move_params_feature(self) -> GeneralMoveParams: + return self._general_move_params_feature + + @property + def hardware_info_feature(self) -> HardwareInfo: + return self._hardware_info_feature + + @property + def home_feature(self) -> Home: + return self._home_feature + + @property + def home_params_feature(self) -> HomeParams: + return self._home_params_feature + + @property + def identify_feature(self) -> Identify: + return self._identify_feature + + @property + def jog_params_feature(self) -> JogParams: + return self._jog_params_feature + + @property + def joystick_params_feature(self) -> JoystickParams: + return self._joystick_params_feature + + @property + def limit_switch_params_getter_feature(self) -> LimitSwitchParamsGetter: + return self._limit_switch_params_getter_feature + + @property + def load_params_feature(self) -> LoadParams: + return self._load_params_feature + + @property + def motor_output_params_feature(self) -> MotorOutputParams: + return self._motor_output_params_feature + + @property + def move_feature(self) -> Move: + return self._move_feature + + @property + def move_absolute_params_feature(self) -> MoveAbsoluteParams: + return self._move_absolute_params_feature + + @property + def move_relative_params_feature(self) -> MoveRelativeParams: + return self._move_relative_params_feature + + @property + def persist_params_feature(self) -> PersistParams: + return self._persist_params_feature + + @property + def position_counter_feature(self) -> PositionCounter: + return self._position_counter_feature + + @property + def position_loop_params_feature(self) -> PositionLoopParams: + return self._position_loop_params_feature + + @property + def profile_mode_params_feature(self) -> ProfileModeParams: + return self._profile_mode_params_feature + + @property + def restore_factory_defaults_feature(self) -> RestoreFactoryDefaults: + return self._restore_factory_defaults_feature + + @property + def rich_response_feature(self) -> RichResponse: + return self._rich_response_feature + + @property + def settings_feature(self) -> Settings: + return self._settings_feature + + @property + def stage_axis_params_feature(self) -> StageAxisParams: + return self._stage_axis_params_feature + + @property + def status_items_feature(self) -> StatusItems: + return self._status_items_feature + + @property + def status_mode_feature(self) -> StatusMode: + return self._status_mode_feature + + @property + def status_request_feature(self) -> StatusRequest: + return self._status_request_feature + + @property + def stop_feature(self) -> Stop: + return self._stop_feature + + @property + def track_settle_params_feature(self) -> TrackSettleParams: + return self._track_settle_params_feature + + @property + def trigger_params_for_dc_brushless_feature(self) -> TriggerParamsForDcBrushless: + return self._trigger_params_for_dc_brushless_feature + + @property + def unit_converter_feature(self) -> UnitConverter: + return self._unit_converter_feature + + @property + def universal_status_feature(self) -> UniversalStatus: + return self._universal_status_feature + + @property + def universal_status_bits_feature(self) -> UniversalStatusBits: + return self._universal_status_bits_feature + + @property + def velocity_params_feature(self) -> VelocityParams: + return self._velocity_params_feature \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/umcx_brushless_logical_channel_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/umcx_brushless_logical_channel_feature_group.py new file mode 100644 index 0000000..87e7250 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/umcx_brushless_logical_channel_feature_group.py @@ -0,0 +1,262 @@ +import thorlabs_xa.interfaces.device_feature_groups.umcx_brushless_logical_channel_feature_group + +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.current_loop_params import CurrentLoopParams +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.end_of_move_messages_mode import EndOfMoveMessagesMode +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.io_position_trigger_enable_state import IoPositionTriggerEnableState +from thorlabs_xa.interfaces.device_features.io_trigger_params import IoTriggerParams +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.joystick_params import JoystickParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.motor_output_params import MotorOutputParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_loop_params import PositionLoopParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.track_settle_params import TrackSettleParams +from thorlabs_xa.interfaces.device_features.umc_status import UmcStatus +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams + +from thorlabs_xa.implementations.device_features.connected_product_feature import ConnectedProductFeature +from thorlabs_xa.implementations.device_features.current_loop_params_feature import CurrentLoopParamsFeature +from thorlabs_xa.implementations.device_features.enable_state_feature import EnableStateFeature +from thorlabs_xa.implementations.device_features.end_of_move_messages_mode_feature import EndOfMoveMessagesModeFeature +from thorlabs_xa.implementations.device_features.firmware_version_info_feature import FirmwareVersionInfoFeature +from thorlabs_xa.implementations.device_features.general_move_params_feature import GeneralMoveParamsFeature +from thorlabs_xa.implementations.device_features.hardware_info_feature import HardwareInfoFeature +from thorlabs_xa.implementations.device_features.home_feature import HomeFeature +from thorlabs_xa.implementations.device_features.home_params_feature import HomeParamsFeature +from thorlabs_xa.implementations.device_features.identify_feature import IdentifyFeature +from thorlabs_xa.implementations.device_features.io_position_trigger_enable_state_feature import IoPositionTriggerEnableStateFeature +from thorlabs_xa.implementations.device_features.io_trigger_params_feature import IoTriggerParamsFeature +from thorlabs_xa.implementations.device_features.jog_params_feature import JogParamsFeature +from thorlabs_xa.implementations.device_features.joystick_params_feature import JoystickParamsFeature +from thorlabs_xa.implementations.device_features.limit_switch_params_getter_feature import LimitSwitchParamsGetterFeature +from thorlabs_xa.implementations.device_features.load_params_feature import LoadParamsFeature +from thorlabs_xa.implementations.device_features.motor_output_params_feature import MotorOutputParamsFeature +from thorlabs_xa.implementations.device_features.move_feature import MoveFeature +from thorlabs_xa.implementations.device_features.move_absolute_params_feature import MoveAbsoluteParamsFeature +from thorlabs_xa.implementations.device_features.move_relative_params_feature import MoveRelativeParamsFeature +from thorlabs_xa.implementations.device_features.persist_params_feature import PersistParamsFeature +from thorlabs_xa.implementations.device_features.position_loop_params_feature import PositionLoopParamsFeature +from thorlabs_xa.implementations.device_features.profile_mode_params_feature import ProfileModeParamsFeature +from thorlabs_xa.implementations.device_features.restore_factory_defaults_feature import RestoreFactoryDefaultsFeature +from thorlabs_xa.implementations.device_features.rich_response_feature import RichResponseFeature +from thorlabs_xa.implementations.device_features.settings_feature import SettingsFeature +from thorlabs_xa.implementations.device_features.stage_axis_params_feature import StageAxisParamsFeature +from thorlabs_xa.implementations.device_features.status_items_feature import StatusItemsFeature +from thorlabs_xa.implementations.device_features.status_mode_feature import StatusModeFeature +from thorlabs_xa.implementations.device_features.status_request_feature import StatusRequestFeature +from thorlabs_xa.implementations.device_features.stop_feature import StopFeature +from thorlabs_xa.implementations.device_features.track_settle_params_feature import TrackSettleParamsFeature +from thorlabs_xa.implementations.device_features.umc_status_feature import UmcStatusFeature +from thorlabs_xa.implementations.device_features.unit_converter_feature import UnitConverterFeature +from thorlabs_xa.implementations.device_features.universal_status_bits_feature import UniversalStatusBitsFeature +from thorlabs_xa.implementations.device_features.velocity_params_feature import VelocityParamsFeature + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +class UmcxBrushlessLogicalChannelFeatureGroup(thorlabs_xa.interfaces.device_feature_groups.umcx_brushless_logical_channel_feature_group.UmcxBrushlessLogicalChannelFeatureGroup): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self._connected_product_feature = ConnectedProductFeature(device_handle, native_functions) + self._current_loop_params_feature = CurrentLoopParamsFeature(device_handle, native_functions) + self._enable_state_feature = EnableStateFeature(device_handle, native_functions) + self._end_of_move_messages_mode_feature = EndOfMoveMessagesModeFeature(device_handle, native_functions) + self._firmware_version_info_feature = FirmwareVersionInfoFeature(device_handle, native_functions) + self._general_move_params_feature = GeneralMoveParamsFeature(device_handle, native_functions) + self._hardware_info_feature = HardwareInfoFeature(device_handle, native_functions) + self._home_feature = HomeFeature(device_handle, native_functions) + self._home_params_feature = HomeParamsFeature(device_handle, native_functions) + self._identify_feature = IdentifyFeature(device_handle, native_functions) + self._io_position_trigger_enable_state_feature = IoPositionTriggerEnableStateFeature(device_handle, native_functions) + self._io_trigger_params_feature = IoTriggerParamsFeature(device_handle, native_functions) + self._jog_params_feature = JogParamsFeature(device_handle, native_functions) + self._joystick_params_feature = JoystickParamsFeature(device_handle, native_functions) + self._limit_switch_params_getter_feature = LimitSwitchParamsGetterFeature(device_handle, native_functions) + self._load_params_feature = LoadParamsFeature(device_handle, native_functions) + self._motor_output_params_feature = MotorOutputParamsFeature(device_handle, native_functions) + self._move_feature = MoveFeature(device_handle, native_functions) + self._move_absolute_params_feature = MoveAbsoluteParamsFeature(device_handle, native_functions) + self._move_relative_params_feature = MoveRelativeParamsFeature(device_handle, native_functions) + self._persist_params_feature = PersistParamsFeature(device_handle, native_functions) + self._position_loop_params_feature = PositionLoopParamsFeature(device_handle, native_functions) + self._profile_mode_params_feature = ProfileModeParamsFeature(device_handle, native_functions) + self._restore_factory_defaults_feature = RestoreFactoryDefaultsFeature(device_handle, native_functions) + self._rich_response_feature = RichResponseFeature(device_handle, native_functions) + self._settings_feature = SettingsFeature(device_handle, native_functions) + self._stage_axis_params_feature = StageAxisParamsFeature(device_handle, native_functions) + self._status_items_feature = StatusItemsFeature(device_handle, native_functions) + self._status_mode_feature = StatusModeFeature(device_handle, native_functions) + self._status_request_feature = StatusRequestFeature(device_handle, native_functions) + self._stop_feature = StopFeature(device_handle, native_functions) + self._track_settle_params_feature = TrackSettleParamsFeature(device_handle, native_functions) + self._umc_status_feature = UmcStatusFeature(device_handle, native_functions) + self._unit_converter_feature = UnitConverterFeature(device_handle, native_functions) + self._universal_status_bits_feature = UniversalStatusBitsFeature(device_handle, native_functions) + self._velocity_params_feature = VelocityParamsFeature(device_handle, native_functions) + + @property + def connected_product_feature(self) -> ConnectedProduct: + return self._connected_product_feature + + @property + def current_loop_params_feature(self) -> CurrentLoopParams: + return self._current_loop_params_feature + + @property + def enable_state_feature(self) -> EnableState: + return self._enable_state_feature + + @property + def end_of_move_messages_mode_feature(self) -> EndOfMoveMessagesMode: + return self._end_of_move_messages_mode_feature + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: + return self._firmware_version_info_feature + + @property + def general_move_params_feature(self) -> GeneralMoveParams: + return self._general_move_params_feature + + @property + def hardware_info_feature(self) -> HardwareInfo: + return self._hardware_info_feature + + @property + def home_feature(self) -> Home: + return self._home_feature + + @property + def home_params_feature(self) -> HomeParams: + return self._home_params_feature + + @property + def identify_feature(self) -> Identify: + return self._identify_feature + + @property + def io_position_trigger_enable_state_feature(self) -> IoPositionTriggerEnableState: + return self._io_position_trigger_enable_state_feature + + @property + def io_trigger_params_feature(self) -> IoTriggerParams: + return self._io_trigger_params_feature + + @property + def jog_params_feature(self) -> JogParams: + return self._jog_params_feature + + @property + def joystick_params_feature(self) -> JoystickParams: + return self._joystick_params_feature + + @property + def limit_switch_params_getter_feature(self) -> LimitSwitchParamsGetter: + return self._limit_switch_params_getter_feature + + @property + def load_params_feature(self) -> LoadParams: + return self._load_params_feature + + @property + def motor_output_params_feature(self) -> MotorOutputParams: + return self._motor_output_params_feature + + @property + def move_feature(self) -> Move: + return self._move_feature + + @property + def move_absolute_params_feature(self) -> MoveAbsoluteParams: + return self._move_absolute_params_feature + + @property + def move_relative_params_feature(self) -> MoveRelativeParams: + return self._move_relative_params_feature + + @property + def persist_params_feature(self) -> PersistParams: + return self._persist_params_feature + + @property + def position_loop_params_feature(self) -> PositionLoopParams: + return self._position_loop_params_feature + + @property + def profile_mode_params_feature(self) -> ProfileModeParams: + return self._profile_mode_params_feature + + @property + def restore_factory_defaults_feature(self) -> RestoreFactoryDefaults: + return self._restore_factory_defaults_feature + + @property + def rich_response_feature(self) -> RichResponse: + return self._rich_response_feature + + @property + def settings_feature(self) -> Settings: + return self._settings_feature + + @property + def stage_axis_params_feature(self) -> StageAxisParams: + return self._stage_axis_params_feature + + @property + def status_items_feature(self) -> StatusItems: + return self._status_items_feature + + @property + def status_mode_feature(self) -> StatusMode: + return self._status_mode_feature + + @property + def status_request_feature(self) -> StatusRequest: + return self._status_request_feature + + @property + def stop_feature(self) -> Stop: + return self._stop_feature + + @property + def track_settle_params_feature(self) -> TrackSettleParams: + return self._track_settle_params_feature + + @property + def umc_status_feature(self) -> UmcStatus: + return self._umc_status_feature + + @property + def unit_converter_feature(self) -> UnitConverter: + return self._unit_converter_feature + + @property + def universal_status_bits_feature(self) -> UniversalStatusBits: + return self._universal_status_bits_feature + + @property + def velocity_params_feature(self) -> VelocityParams: + return self._velocity_params_feature \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/umcx_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/umcx_feature_group.py new file mode 100644 index 0000000..ecb8fcc --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/umcx_feature_group.py @@ -0,0 +1,87 @@ +import thorlabs_xa.interfaces.device_feature_groups.umcx_feature_group + +from thorlabs_xa.interfaces.device_features.aux_io_configuration_params import AuxIoConfigurationParams +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.io_configuration_params import IoConfigurationParams +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move_sync_array import MoveSyncArray +from thorlabs_xa.interfaces.device_features.move_sync_params import MoveSyncParams +from thorlabs_xa.interfaces.device_features.move_sync_start import MoveSyncStart +from thorlabs_xa.interfaces.device_features.rack_bay_occupied_state import RackBayOccupiedState +from thorlabs_xa.interfaces.device_features.settings import Settings + +from thorlabs_xa.implementations.device_features.aux_io_configuration_params_feature import AuxIoConfigurationParamsFeature +from thorlabs_xa.implementations.device_features.disconnect_feature import DisconnectFeature +from thorlabs_xa.implementations.device_features.firmware_version_info_feature import FirmwareVersionInfoFeature +from thorlabs_xa.implementations.device_features.hardware_info_feature import HardwareInfoFeature +from thorlabs_xa.implementations.device_features.io_configuration_params_feature import IoConfigurationParamsFeature +from thorlabs_xa.implementations.device_features.load_params_feature import LoadParamsFeature +from thorlabs_xa.implementations.device_features.move_sync_array_feature import MoveSyncArrayFeature +from thorlabs_xa.implementations.device_features.move_sync_params_feature import MoveSyncParamsFeature +from thorlabs_xa.implementations.device_features.move_sync_start_feature import MoveSyncStartFeature +from thorlabs_xa.implementations.device_features.rack_bay_occupied_state_feature import RackBayOccupiedStateFeature +from thorlabs_xa.implementations.device_features.settings_feature import SettingsFeature + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +class UmcxFeatureGroup(thorlabs_xa.interfaces.device_feature_groups.umcx_feature_group.UmcxFeatureGroup): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self._aux_io_configuration_params_feature = AuxIoConfigurationParamsFeature(device_handle, native_functions) + self._disconnect_feature = DisconnectFeature(device_handle, native_functions) + self._firmware_version_info_feature = FirmwareVersionInfoFeature(device_handle, native_functions) + self._hardware_info_feature = HardwareInfoFeature(device_handle, native_functions) + self._io_configuration_params_feature = IoConfigurationParamsFeature(device_handle, native_functions) + self._load_params_feature = LoadParamsFeature(device_handle, native_functions) + self._move_sync_array_feature = MoveSyncArrayFeature(device_handle, native_functions) + self._move_sync_params_feature = MoveSyncParamsFeature(device_handle, native_functions) + self._move_sync_start_feature = MoveSyncStartFeature(device_handle, native_functions) + self._rack_bay_occupied_state_feature = RackBayOccupiedStateFeature(device_handle, native_functions) + self._settings_feature = SettingsFeature(device_handle, native_functions) + + @property + def aux_io_configuration_params_feature(self) -> AuxIoConfigurationParams: + return self._aux_io_configuration_params_feature + + @property + def disconnect_feature(self) -> Disconnect: + return self._disconnect_feature + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: + return self._firmware_version_info_feature + + @property + def hardware_info_feature(self) -> HardwareInfo: + return self._hardware_info_feature + + @property + def io_configuration_params_feature(self) -> IoConfigurationParams: + return self._io_configuration_params_feature + + @property + def load_params_feature(self) -> LoadParams: + return self._load_params_feature + + @property + def move_sync_array_feature(self) -> MoveSyncArray: + return self._move_sync_array_feature + + @property + def move_sync_params_feature(self) -> MoveSyncParams: + return self._move_sync_params_feature + + @property + def move_sync_start_feature(self) -> MoveSyncStart: + return self._move_sync_start_feature + + @property + def rack_bay_occupied_state_feature(self) -> RackBayOccupiedState: + return self._rack_bay_occupied_state_feature + + @property + def settings_feature(self) -> Settings: + return self._settings_feature \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/umcx_stepper_logical_channel_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/umcx_stepper_logical_channel_feature_group.py new file mode 100644 index 0000000..185397b --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_feature_groups/umcx_stepper_logical_channel_feature_group.py @@ -0,0 +1,283 @@ +import thorlabs_xa.interfaces.device_feature_groups.umcx_stepper_logical_channel_feature_group + +from thorlabs_xa.interfaces.device_features.bow_index import BowIndex +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.current_loop_params import CurrentLoopParams +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.encoder_counter import EncoderCounter +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.io_position_trigger_enable_state import IoPositionTriggerEnableState +from thorlabs_xa.interfaces.device_features.io_trigger_params import IoTriggerParams +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.joystick_params import JoystickParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.limit_switch_params_setter import LimitSwitchParamsSetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.power_params import PowerParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.set_actuator_type import SetActuatorType +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stepper_loop_params import StepperLoopParams +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.umc_status import UmcStatus +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams + +from thorlabs_xa.implementations.device_features.bow_index_feature import BowIndexFeature +from thorlabs_xa.implementations.device_features.connected_product_feature import ConnectedProductFeature +from thorlabs_xa.implementations.device_features.current_loop_params_feature import CurrentLoopParamsFeature +from thorlabs_xa.implementations.device_features.digital_output_states_feature import DigitalOutputStatesFeature +from thorlabs_xa.implementations.device_features.enable_state_feature import EnableStateFeature +from thorlabs_xa.implementations.device_features.encoder_counter_feature import EncoderCounterFeature +from thorlabs_xa.implementations.device_features.firmware_version_info_feature import FirmwareVersionInfoFeature +from thorlabs_xa.implementations.device_features.general_move_params_feature import GeneralMoveParamsFeature +from thorlabs_xa.implementations.device_features.hardware_info_feature import HardwareInfoFeature +from thorlabs_xa.implementations.device_features.home_feature import HomeFeature +from thorlabs_xa.implementations.device_features.home_params_feature import HomeParamsFeature +from thorlabs_xa.implementations.device_features.identify_feature import IdentifyFeature +from thorlabs_xa.implementations.device_features.io_position_trigger_enable_state_feature import IoPositionTriggerEnableStateFeature +from thorlabs_xa.implementations.device_features.io_trigger_params_feature import IoTriggerParamsFeature +from thorlabs_xa.implementations.device_features.jog_params_feature import JogParamsFeature +from thorlabs_xa.implementations.device_features.joystick_params_feature import JoystickParamsFeature +from thorlabs_xa.implementations.device_features.limit_switch_params_getter_feature import LimitSwitchParamsGetterFeature +from thorlabs_xa.implementations.device_features.limit_switch_params_setter_feature import LimitSwitchParamsSetterFeature +from thorlabs_xa.implementations.device_features.load_params_feature import LoadParamsFeature +from thorlabs_xa.implementations.device_features.move_feature import MoveFeature +from thorlabs_xa.implementations.device_features.move_absolute_params_feature import MoveAbsoluteParamsFeature +from thorlabs_xa.implementations.device_features.move_relative_params_feature import MoveRelativeParamsFeature +from thorlabs_xa.implementations.device_features.persist_params_feature import PersistParamsFeature +from thorlabs_xa.implementations.device_features.power_params_feature import PowerParamsFeature +from thorlabs_xa.implementations.device_features.profile_mode_params_feature import ProfileModeParamsFeature +from thorlabs_xa.implementations.device_features.restore_factory_defaults_feature import RestoreFactoryDefaultsFeature +from thorlabs_xa.implementations.device_features.rich_response_feature import RichResponseFeature +from thorlabs_xa.implementations.device_features.set_actuator_type_feature import SetActuatorTypeFeature +from thorlabs_xa.implementations.device_features.settings_feature import SettingsFeature +from thorlabs_xa.implementations.device_features.stage_axis_params_feature import StageAxisParamsFeature +from thorlabs_xa.implementations.device_features.status_items_feature import StatusItemsFeature +from thorlabs_xa.implementations.device_features.status_mode_feature import StatusModeFeature +from thorlabs_xa.implementations.device_features.status_request_feature import StatusRequestFeature +from thorlabs_xa.implementations.device_features.stepper_loop_params_feature import StepperLoopParamsFeature +from thorlabs_xa.implementations.device_features.stop_feature import StopFeature +from thorlabs_xa.implementations.device_features.umc_status_feature import UmcStatusFeature +from thorlabs_xa.implementations.device_features.unit_converter_feature import UnitConverterFeature +from thorlabs_xa.implementations.device_features.universal_status_bits_feature import UniversalStatusBitsFeature +from thorlabs_xa.implementations.device_features.velocity_params_feature import VelocityParamsFeature + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +class UmcxStepperLogicalChannelFeatureGroup(thorlabs_xa.interfaces.device_feature_groups.umcx_stepper_logical_channel_feature_group.UmcxStepperLogicalChannelFeatureGroup): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self._bow_index_feature = BowIndexFeature(device_handle, native_functions) + self._connected_product_feature = ConnectedProductFeature(device_handle, native_functions) + self._current_loop_params_feature = CurrentLoopParamsFeature(device_handle, native_functions) + self._digital_output_states_feature = DigitalOutputStatesFeature(device_handle, native_functions) + self._enable_state_feature = EnableStateFeature(device_handle, native_functions) + self._encoder_counter_feature = EncoderCounterFeature(device_handle, native_functions) + self._firmware_version_info_feature = FirmwareVersionInfoFeature(device_handle, native_functions) + self._general_move_params_feature = GeneralMoveParamsFeature(device_handle, native_functions) + self._hardware_info_feature = HardwareInfoFeature(device_handle, native_functions) + self._home_feature = HomeFeature(device_handle, native_functions) + self._home_params_feature = HomeParamsFeature(device_handle, native_functions) + self._identify_feature = IdentifyFeature(device_handle, native_functions) + self._io_position_trigger_enable_state_feature = IoPositionTriggerEnableStateFeature(device_handle, native_functions) + self._io_trigger_params_feature = IoTriggerParamsFeature(device_handle, native_functions) + self._jog_params_feature = JogParamsFeature(device_handle, native_functions) + self._joystick_params_feature = JoystickParamsFeature(device_handle, native_functions) + self._limit_switch_params_getter_feature = LimitSwitchParamsGetterFeature(device_handle, native_functions) + self._limit_switch_params_setter_feature = LimitSwitchParamsSetterFeature(device_handle, native_functions) + self._load_params_feature = LoadParamsFeature(device_handle, native_functions) + self._move_feature = MoveFeature(device_handle, native_functions) + self._move_absolute_params_feature = MoveAbsoluteParamsFeature(device_handle, native_functions) + self._move_relative_params_feature = MoveRelativeParamsFeature(device_handle, native_functions) + self._persist_params_feature = PersistParamsFeature(device_handle, native_functions) + self._power_params_feature = PowerParamsFeature(device_handle, native_functions) + self._profile_mode_params_feature = ProfileModeParamsFeature(device_handle, native_functions) + self._restore_factory_defaults_feature = RestoreFactoryDefaultsFeature(device_handle, native_functions) + self._rich_response_feature = RichResponseFeature(device_handle, native_functions) + self._set_actuator_type_feature = SetActuatorTypeFeature(device_handle, native_functions) + self._settings_feature = SettingsFeature(device_handle, native_functions) + self._stage_axis_params_feature = StageAxisParamsFeature(device_handle, native_functions) + self._status_items_feature = StatusItemsFeature(device_handle, native_functions) + self._status_mode_feature = StatusModeFeature(device_handle, native_functions) + self._status_request_feature = StatusRequestFeature(device_handle, native_functions) + self._stepper_loop_params_feature = StepperLoopParamsFeature(device_handle, native_functions) + self._stop_feature = StopFeature(device_handle, native_functions) + self._umc_status_feature = UmcStatusFeature(device_handle, native_functions) + self._unit_converter_feature = UnitConverterFeature(device_handle, native_functions) + self._universal_status_bits_feature = UniversalStatusBitsFeature(device_handle, native_functions) + self._velocity_params_feature = VelocityParamsFeature(device_handle, native_functions) + + @property + def bow_index_feature(self) -> BowIndex: + return self._bow_index_feature + + @property + def connected_product_feature(self) -> ConnectedProduct: + return self._connected_product_feature + + @property + def current_loop_params_feature(self) -> CurrentLoopParams: + return self._current_loop_params_feature + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: + return self._digital_output_states_feature + + @property + def enable_state_feature(self) -> EnableState: + return self._enable_state_feature + + @property + def encoder_counter_feature(self) -> EncoderCounter: + return self._encoder_counter_feature + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: + return self._firmware_version_info_feature + + @property + def general_move_params_feature(self) -> GeneralMoveParams: + return self._general_move_params_feature + + @property + def hardware_info_feature(self) -> HardwareInfo: + return self._hardware_info_feature + + @property + def home_feature(self) -> Home: + return self._home_feature + + @property + def home_params_feature(self) -> HomeParams: + return self._home_params_feature + + @property + def identify_feature(self) -> Identify: + return self._identify_feature + + @property + def io_position_trigger_enable_state_feature(self) -> IoPositionTriggerEnableState: + return self._io_position_trigger_enable_state_feature + + @property + def io_trigger_params_feature(self) -> IoTriggerParams: + return self._io_trigger_params_feature + + @property + def jog_params_feature(self) -> JogParams: + return self._jog_params_feature + + @property + def joystick_params_feature(self) -> JoystickParams: + return self._joystick_params_feature + + @property + def limit_switch_params_getter_feature(self) -> LimitSwitchParamsGetter: + return self._limit_switch_params_getter_feature + + @property + def limit_switch_params_setter_feature(self) -> LimitSwitchParamsSetter: + return self._limit_switch_params_setter_feature + + @property + def load_params_feature(self) -> LoadParams: + return self._load_params_feature + + @property + def move_feature(self) -> Move: + return self._move_feature + + @property + def move_absolute_params_feature(self) -> MoveAbsoluteParams: + return self._move_absolute_params_feature + + @property + def move_relative_params_feature(self) -> MoveRelativeParams: + return self._move_relative_params_feature + + @property + def persist_params_feature(self) -> PersistParams: + return self._persist_params_feature + + @property + def power_params_feature(self) -> PowerParams: + return self._power_params_feature + + @property + def profile_mode_params_feature(self) -> ProfileModeParams: + return self._profile_mode_params_feature + + @property + def restore_factory_defaults_feature(self) -> RestoreFactoryDefaults: + return self._restore_factory_defaults_feature + + @property + def rich_response_feature(self) -> RichResponse: + return self._rich_response_feature + + @property + def set_actuator_type_feature(self) -> SetActuatorType: + return self._set_actuator_type_feature + + @property + def settings_feature(self) -> Settings: + return self._settings_feature + + @property + def stage_axis_params_feature(self) -> StageAxisParams: + return self._stage_axis_params_feature + + @property + def status_items_feature(self) -> StatusItems: + return self._status_items_feature + + @property + def status_mode_feature(self) -> StatusMode: + return self._status_mode_feature + + @property + def status_request_feature(self) -> StatusRequest: + return self._status_request_feature + + @property + def stepper_loop_params_feature(self) -> StepperLoopParams: + return self._stepper_loop_params_feature + + @property + def stop_feature(self) -> Stop: + return self._stop_feature + + @property + def umc_status_feature(self) -> UmcStatus: + return self._umc_status_feature + + @property + def unit_converter_feature(self) -> UnitConverter: + return self._unit_converter_feature + + @property + def universal_status_bits_feature(self) -> UniversalStatusBits: + return self._universal_status_bits_feature + + @property + def velocity_params_feature(self) -> VelocityParams: + return self._velocity_params_feature \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/move_sync_array_feature.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/move_sync_array_feature.py new file mode 100644 index 0000000..a053f31 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/move_sync_array_feature.py @@ -0,0 +1,16 @@ +from thorlabs_xa.interfaces.device_features.move_sync_array import MoveSyncArray + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +from thorlabs_xa.shared.params import TLMC_MoveSyncArray + +class MoveSyncArrayFeature(MoveSyncArray): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self.device_handle = device_handle + self.native_functions = native_functions + + def set_move_sync_array(self, parameters: TLMC_MoveSyncArray) -> None: + + self.native_functions.set_move_sync_array(self.device_handle, parameters) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/move_sync_params_feature.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/move_sync_params_feature.py new file mode 100644 index 0000000..082e738 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/move_sync_params_feature.py @@ -0,0 +1,16 @@ +from thorlabs_xa.interfaces.device_features.move_sync_params import MoveSyncParams + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +from thorlabs_xa.shared.params import TLMC_MoveSyncParams + +class MoveSyncParamsFeature(MoveSyncParams): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self.device_handle = device_handle + self.native_functions = native_functions + + def set_move_sync_params(self, parameters: TLMC_MoveSyncParams) -> None: + + self.native_functions.set_move_sync_params(self.device_handle, parameters) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/move_sync_start_feature.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/move_sync_start_feature.py new file mode 100644 index 0000000..796852e --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/move_sync_start_feature.py @@ -0,0 +1,16 @@ +from thorlabs_xa.interfaces.device_features.move_sync_start import MoveSyncStart + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +from thorlabs_xa.shared.params import TLMC_MoveSyncStartParams + +class MoveSyncStartFeature(MoveSyncStart): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self.device_handle = device_handle + self.native_functions = native_functions + + def move_sync_start(self, parameters: TLMC_MoveSyncStartParams) -> None: + + self.native_functions.move_sync_start(self.device_handle, parameters) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo/output_waveform_feature.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo/output_waveform_feature.py index 345a1bd..d7d2449 100644 --- a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo/output_waveform_feature.py +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo/output_waveform_feature.py @@ -1,6 +1,6 @@ from thorlabs_xa.interfaces.device_features.piezo.output_waveform import OutputWaveform from thorlabs_xa.native_sdks.native_functions import NativeFunctions -from thorlabs_xa.shared.params import TLMC_PZ_OutputWaveformLoopTableSample, TLMC_PZ_OutputWaveformParams +from thorlabs_xa.shared.params import TLMC_PZ_OutputWaveformLookupTableSample, TLMC_PZ_OutputWaveformParams class OutputWaveformFeature(OutputWaveform): @@ -9,7 +9,7 @@ def __init__(self, device_handle: int, native_functions: NativeFunctions) -> Non self.device_handle = device_handle self.native_functions = native_functions - def set_output_waveform_lookup_table_sample_params(self, params: TLMC_PZ_OutputWaveformLoopTableSample) -> None: + def set_output_waveform_lookup_table_sample_params(self, params: TLMC_PZ_OutputWaveformLookupTableSample) -> None: self.native_functions.pz_set_output_waveform_loop_table_sample(self.device_handle, params) diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo/slew_rate_params_feature.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo/slew_rate_params_feature.py new file mode 100644 index 0000000..c989d16 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo/slew_rate_params_feature.py @@ -0,0 +1,17 @@ +from thorlabs_xa.interfaces.device_features.piezo.slew_rate_params import SlewRateParams +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +from thorlabs_xa.shared.params import TLMC_PZ_SlewRateParams + +class SlewRateParamsFeature(SlewRateParams): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self.device_handle = device_handle + self.native_functions = native_functions + + def get_slew_rate_params(self, max_wait_in_milliseconds: int) -> TLMC_PZ_SlewRateParams: + return self.native_functions.pz_get_slew_rate_params(self.device_handle, max_wait_in_milliseconds) + + def set_slew_rate_params(self, parameters: TLMC_PZ_SlewRateParams) -> None: + self.native_functions.pz_set_slew_rate_params(self.device_handle, parameters) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/__init__.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/conversion_factors_feature.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/conversion_factors_feature.py new file mode 100644 index 0000000..405f054 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/conversion_factors_feature.py @@ -0,0 +1,12 @@ +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.conversion_factors import ConversionFactors +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +class ConversionFactorsFeature(ConversionFactors): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self.device_handle = device_handle + self.native_functions = native_functions + + def get_conversion_factors(self, max_wait_in_milliseconds: int) -> int: + return self.native_functions.pzim_get_conversion_factors(self.device_handle, max_wait_in_milliseconds) diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/drive_operations_params_feature.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/drive_operations_params_feature.py new file mode 100644 index 0000000..b7109b9 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/drive_operations_params_feature.py @@ -0,0 +1,18 @@ +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.drive_operations_params import DriveOperationsParams +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.shared.params import TLMC_PZIM_DriveOperationsParams + +class DriveOperationsParamsFeature(DriveOperationsParams): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self.device_handle = device_handle + self.native_functions = native_functions + + def get_drive_operations_params(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_DriveOperationsParams: + + return self.native_functions.pzim_get_drive_operations_params(self.device_handle, max_wait_in_milliseconds) + + def set_drive_operations_params(self, params: TLMC_PZIM_DriveOperationsParams) -> None: + + self.native_functions.pzim_set_drive_operations_params(self.device_handle, params) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/kcube_channel_enable_feature.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/kcube_channel_enable_feature.py new file mode 100644 index 0000000..acb8cf8 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/kcube_channel_enable_feature.py @@ -0,0 +1,17 @@ +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_channel_enable import KcubeChannelEnable +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +from thorlabs_xa.shared.enums import TLMC_PZIM_KcubeChannelEnableMode + +class KcubeChannelEnableFeature(KcubeChannelEnable): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self.device_handle = device_handle + self.native_functions = native_functions + + def get_kcube_channel_enable(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeChannelEnableMode: + return self.native_functions.pzim_get_kcube_channel_enable_mode(self.device_handle, max_wait_in_milliseconds) + + def set_kcube_channel_enable(self, channelMode : TLMC_PZIM_KcubeChannelEnableMode) -> None: + self.native_functions.pzim_set_kcube_channel_enable_mode(self.device_handle, channelMode) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/kcube_feedback_signal_params_feature.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/kcube_feedback_signal_params_feature.py new file mode 100644 index 0000000..a625674 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/kcube_feedback_signal_params_feature.py @@ -0,0 +1,19 @@ +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_feedback_signal_params import KcubeFeedbackSignalParams +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +from thorlabs_xa.shared.params import TLMC_PZIM_KcubeFeedbackSignalParams + +class KcubeFeedbackSignalParamsFeature(KcubeFeedbackSignalParams): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self.device_handle = device_handle + self.native_functions = native_functions + + def get_kcube_feedback_signal_params(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeFeedbackSignalParams: + + return self.native_functions.pzim_get_kcube_feedback_signal_params(self.device_handle, max_wait_in_milliseconds) + + def set_kcube_feedback_signal_params(self, params: TLMC_PZIM_KcubeFeedbackSignalParams) -> None: + + self.native_functions.pzim_set_kcube_feedback_signal_params(self.device_handle, params) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/kcube_io_trigger_params_feature.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/kcube_io_trigger_params_feature.py new file mode 100644 index 0000000..3b2ecda --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/kcube_io_trigger_params_feature.py @@ -0,0 +1,19 @@ +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_io_trigger_params import KcubeIoTriggerParams +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +from thorlabs_xa.shared.params import TLMC_PZIM_KcubeIoTriggerParams + +class KcubeIoTriggerParamsFeature(KcubeIoTriggerParams): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self.device_handle = device_handle + self.native_functions = native_functions + + def get_kcube_io_trigger_params(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeIoTriggerParams: + + return self.native_functions.pzim_get_kcube_io_trigger_params(self.device_handle, max_wait_in_milliseconds) + + def set_kcube_io_trigger_params(self, params: TLMC_PZIM_KcubeIoTriggerParams) -> None: + + self.native_functions.pzim_set_kcube_io_trigger_params(self.device_handle, params) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/kcube_jog_params_feature.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/kcube_jog_params_feature.py new file mode 100644 index 0000000..51c3508 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/kcube_jog_params_feature.py @@ -0,0 +1,19 @@ +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_jog_params import KcubeJogParams +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +from thorlabs_xa.shared.params import TLMC_PZIM_KcubeJogParams + +class KcubeJogParamsFeature(KcubeJogParams): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self.device_handle = device_handle + self.native_functions = native_functions + + def get_kcube_jog_params(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeJogParams: + + return self.native_functions.pzim_get_kcube_jog_params(self.device_handle, max_wait_in_milliseconds) + + def set_kcube_jog_params(self, params: TLMC_PZIM_KcubeJogParams) -> None: + + self.native_functions.pzim_set_kcube_jog_params(self.device_handle, params) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/kcube_mmi_params_feature.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/kcube_mmi_params_feature.py new file mode 100644 index 0000000..a6142da --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/kcube_mmi_params_feature.py @@ -0,0 +1,19 @@ +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_mmi_params import KcubeMmiParams +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +from thorlabs_xa.shared.params import TLMC_PZIM_KcubeMmiParams + +class KcubeMmiParamsFeature(KcubeMmiParams): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self.device_handle = device_handle + self.native_functions = native_functions + + def get_kcube_mmi_params(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeMmiParams: + + return self.native_functions.pzim_get_kcube_mmi_params(self.device_handle, max_wait_in_milliseconds) + + def set_kcube_mmi_params(self, params: TLMC_PZIM_KcubeMmiParams) -> None: + + self.native_functions.pzim_set_kcube_mmi_params(self.device_handle, params) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/kcube_trigger_params_feature.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/kcube_trigger_params_feature.py new file mode 100644 index 0000000..72c3951 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/kcube_trigger_params_feature.py @@ -0,0 +1,19 @@ +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_trigger_params import KcubeTriggerParams +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +from thorlabs_xa.shared.params import TLMC_PZIM_KcubeTriggerParams + +class KcubeTriggerParamsFeature(KcubeTriggerParams): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self.device_handle = device_handle + self.native_functions = native_functions + + def get_kcube_trigger_params(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeTriggerParams: + + return self.native_functions.pzim_get_kcube_trigger_params(self.device_handle, max_wait_in_milliseconds) + + def set_kcube_trigger_params(self, params: TLMC_PZIM_KcubeTriggerParams) -> None: + + self.native_functions.pzim_set_kcube_trigger_params(self.device_handle, params) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/limit_switch_params_feature.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/limit_switch_params_feature.py new file mode 100644 index 0000000..2bdc24a --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/limit_switch_params_feature.py @@ -0,0 +1,19 @@ +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.limit_switch_params import LimitSwitchParams +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +from thorlabs_xa.shared.params import TLMC_PZIM_LimitSwitchParams + +class LimitSwitchParamsFeature(LimitSwitchParams): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self.device_handle = device_handle + self.native_functions = native_functions + + def get_limit_switch_params(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_LimitSwitchParams: + + return self.native_functions.pzim_get_limit_switch_params(self.device_handle, max_wait_in_milliseconds) + + def set_limit_switch_params(self, params: TLMC_PZIM_LimitSwitchParams) -> None: + + self.native_functions.pzim_set_limit_switch_params(self.device_handle, params) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/position_counts_feature.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/position_counts_feature.py new file mode 100644 index 0000000..2ed647c --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/position_counts_feature.py @@ -0,0 +1,19 @@ +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.position_counts import PositionCounts +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +from thorlabs_xa.shared.params import TLMC_PZIM_PositionCounts + +class PositionCountsFeature(PositionCounts): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self.device_handle = device_handle + self.native_functions = native_functions + + def get_position_counts(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_PositionCounts: + + return self.native_functions.pzim_get_position_counts(self.device_handle, max_wait_in_milliseconds) + + def set_position_counts(self, params: TLMC_PZIM_PositionCounts) -> None: + + self.native_functions.pzim_set_position_counts(self.device_handle, params) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/stage_select_params_feature.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/stage_select_params_feature.py new file mode 100644 index 0000000..9596323 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/piezo_inertial_motor/stage_select_params_feature.py @@ -0,0 +1,15 @@ +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.stage_select_params import StageSelectParams +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +from thorlabs_xa.shared.params import TLMC_PZIM_StageSelectParams + +class StageSelectParamsFeature(StageSelectParams): + + def __init__(self, device_handle: int, native_functions: NativeFunctions) -> None: + + self.device_handle = device_handle + self.native_functions = native_functions + + def set_stage_select_params(self, params: TLMC_PZIM_StageSelectParams) -> None: + + self.native_functions.pzim_set_stage_select_params(self.device_handle, params) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/rack_identify_feature.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/rack_identify_feature.py index 4ef646b..b2cf9a1 100644 --- a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/rack_identify_feature.py +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/rack_identify_feature.py @@ -1,4 +1,4 @@ -from thorlabs_xa.interfaces.device_features.rank_identify import RackIdentify +from thorlabs_xa.interfaces.device_features.rack_identify import RackIdentify from thorlabs_xa.native_sdks.native_functions import NativeFunctions class RackIdentifyFeature(RackIdentify): diff --git a/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/umc_status_feature.py b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/umc_status_feature.py new file mode 100644 index 0000000..cce12b8 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/implementations/device_features/umc_status_feature.py @@ -0,0 +1,14 @@ +from thorlabs_xa.interfaces.device_features.umc_status import UmcStatus +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.shared.params import TLMC_UmcStatus + +class UmcStatusFeature(UmcStatus): + + def __init__(self, device_handle: int, native_functions: NativeFunctions): + + self.device_handle = device_handle + self.native_functions = native_functions + + def get_umc_status(self, max_wait_in_milliseconds: int) -> TLMC_UmcStatus: + + return self.native_functions.get_umc_status(self.device_handle, max_wait_in_milliseconds) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bbd30x_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bbd30x_feature_group.py new file mode 100644 index 0000000..c58fad8 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bbd30x_feature_group.py @@ -0,0 +1,73 @@ +from typing import Protocol + +from thorlabs_xa.interfaces.device_features.analog_monitor_configuration_params import AnalogMonitorConfigurationParams +from thorlabs_xa.interfaces.device_features.aux_io_configuration_params import AuxIoConfigurationParams +from thorlabs_xa.interfaces.device_features.digital_input_states import DigitalInputStates +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.io_configuration_params import IoConfigurationParams +from thorlabs_xa.interfaces.device_features.lcd_display_params import LcdDisplayParams +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move_sync_array import MoveSyncArray +from thorlabs_xa.interfaces.device_features.move_sync_params import MoveSyncParams +from thorlabs_xa.interfaces.device_features.move_sync_start import MoveSyncStart +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.rack_identify import RackIdentify +from thorlabs_xa.interfaces.device_features.rack_bay_occupied_state import RackBayOccupiedState +from thorlabs_xa.interfaces.device_features.rack_identify import RackIdentify +from thorlabs_xa.interfaces.device_features.settings import Settings + +class Bbd30xFeatureGroup(Protocol): + + @property + def analog_monitor_configuration_params_feature(self) -> AnalogMonitorConfigurationParams: ... + + @property + def aux_io_configuration_params_feature(self) -> AuxIoConfigurationParams: ... + + @property + def digital_input_states_feature(self) -> DigitalInputStates: ... + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: ... + + @property + def disconnect_feature(self) -> Disconnect: ... + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: ... + + @property + def hardware_info_feature(self) -> HardwareInfo: ... + + @property + def io_configuration_params_feature(self) -> IoConfigurationParams: ... + + @property + def lcd_display_params_feature(self) -> LcdDisplayParams: ... + + @property + def load_params_feature(self) -> LoadParams: ... + + @property + def move_sync_array_feature(self) -> MoveSyncArray: ... + + @property + def move_sync_params_feature(self) -> MoveSyncParams: ... + + @property + def move_sync_start_feature(self) -> MoveSyncStart: ... + + @property + def persist_params_feature(self) -> PersistParams: ... + + @property + def rack_bay_occupied_state_feature(self) -> RackBayOccupiedState: ... + + @property + def rack_identify_feature(self) -> RackIdentify: ... + + @property + def settings_feature(self) -> Settings: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bbd30x_logical_channel_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bbd30x_logical_channel_feature_group.py new file mode 100644 index 0000000..2389aae --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bbd30x_logical_channel_feature_group.py @@ -0,0 +1,156 @@ +from typing import Protocol + +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.current_loop_params import CurrentLoopParams +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.end_of_move_messages_mode import EndOfMoveMessagesMode +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.io_position_trigger_enable_state import IoPositionTriggerEnableState +from thorlabs_xa.interfaces.device_features.io_trigger_params import IoTriggerParams +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.joystick_params import JoystickParams +from thorlabs_xa.interfaces.device_features.lcd_move_params import LcdMoveParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.motor_output_params import MotorOutputParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.position_loop_params import PositionLoopParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.track_settle_params import TrackSettleParams +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status import UniversalStatus +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams + +class Bbd30xLogicalChannelFeatureGroup(Protocol): + + @property + def connected_product_feature(self) -> ConnectedProduct: ... + + @property + def current_loop_params_feature(self) -> CurrentLoopParams: ... + + @property + def enable_state_feature(self) -> EnableState: ... + + @property + def end_of_move_messages_mode_feature(self) -> EndOfMoveMessagesMode: ... + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: ... + + @property + def general_move_params_feature(self) -> GeneralMoveParams: ... + + @property + def hardware_info_feature(self) -> HardwareInfo: ... + + @property + def home_feature(self) -> Home: ... + + @property + def home_params_feature(self) -> HomeParams: ... + + @property + def identify_feature(self) -> Identify: ... + + @property + def io_position_trigger_enable_state_feature(self) -> IoPositionTriggerEnableState: ... + + @property + def io_trigger_params_feature(self) -> IoTriggerParams: ... + + @property + def jog_params_feature(self) -> JogParams: ... + + @property + def joystick_params_feature(self) -> JoystickParams: ... + + @property + def lcd_move_params_feature(self) -> LcdMoveParams: ... + + @property + def limit_switch_params_getter_feature(self) -> LimitSwitchParamsGetter: ... + + @property + def load_params_feature(self) -> LoadParams: ... + + @property + def motor_output_params_feature(self) -> MotorOutputParams: ... + + @property + def move_feature(self) -> Move: ... + + @property + def move_absolute_params_feature(self) -> MoveAbsoluteParams: ... + + @property + def move_relative_params_feature(self) -> MoveRelativeParams: ... + + @property + def persist_params_feature(self) -> PersistParams: ... + + @property + def position_counter_feature(self) -> PositionCounter: ... + + @property + def position_loop_params_feature(self) -> PositionLoopParams: ... + + @property + def profile_mode_params_feature(self) -> ProfileModeParams: ... + + @property + def restore_factory_defaults_feature(self) -> RestoreFactoryDefaults: ... + + @property + def rich_response_feature(self) -> RichResponse: ... + + @property + def settings_feature(self) -> Settings: ... + + @property + def stage_axis_params_feature(self) -> StageAxisParams: ... + + @property + def status_items_feature(self) -> StatusItems: ... + + @property + def status_mode_feature(self) -> StatusMode: ... + + @property + def status_request_feature(self) -> StatusRequest: ... + + @property + def stop_feature(self) -> Stop: ... + + @property + def track_settle_params_feature(self) -> TrackSettleParams: ... + + @property + def unit_converter_feature(self) -> UnitConverter: ... + + @property + def universal_status_feature(self) -> UniversalStatus: ... + + @property + def universal_status_bits_feature(self) -> UniversalStatusBits: ... + + @property + def velocity_params_feature(self) -> VelocityParams: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bpc301_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bpc301_feature_group.py new file mode 100644 index 0000000..555fa96 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bpc301_feature_group.py @@ -0,0 +1,100 @@ +from typing import Protocol + +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.piezo.max_output_voltage_params import MaxOutputVoltageParams +from thorlabs_xa.interfaces.device_features.piezo.max_travel import MaxTravel +from thorlabs_xa.interfaces.device_features.piezo.output_voltage import OutputVoltage +from thorlabs_xa.interfaces.device_features.piezo.output_voltage_control_source_params import OutputVoltageControlSourceParams +from thorlabs_xa.interfaces.device_features.piezo.output_waveform import OutputWaveform +from thorlabs_xa.interfaces.device_features.piezo.piezo_status import PiezoStatus +from thorlabs_xa.interfaces.device_features.piezo.piezo_status_bits import PiezoStatusBits +from thorlabs_xa.interfaces.device_features.piezo.position import Position +from thorlabs_xa.interfaces.device_features.piezo.position_control_mode import PositionControlMode +from thorlabs_xa.interfaces.device_features.piezo.position_loop_params import PositionLoopParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.piezo.slew_rate_params import SlewRateParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.piezo.zero import Zero + +class Bpc301FeatureGroup(Protocol): + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: ... + + @property + def disconnect_feature(self) -> Disconnect: ... + + @property + def enable_state_feature(self) -> EnableState: ... + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: ... + + @property + def hardware_info_feature(self) -> HardwareInfo: ... + + @property + def identify_feature(self) -> Identify: ... + + @property + def load_params_feature(self) -> LoadParams: ... + + @property + def max_output_voltage_params_feature(self) -> MaxOutputVoltageParams: ... + + @property + def max_travel_feature(self) -> MaxTravel: ... + + @property + def output_voltage_feature(self) -> OutputVoltage: ... + + @property + def output_voltage_control_source_params_feature(self) -> OutputVoltageControlSourceParams: ... + + @property + def output_waveform_feature(self) -> OutputWaveform: ... + + @property + def piezo_status_feature(self) -> PiezoStatus: ... + + @property + def piezo_status_bits_feature(self) -> PiezoStatusBits: ... + + @property + def position_feature(self) -> Position: ... + + @property + def position_control_mode_feature(self) -> PositionControlMode: ... + + @property + def position_loop_params_feature(self) -> PositionLoopParams: ... + + @property + def restore_factory_defaults_feature(self) -> RestoreFactoryDefaults: ... + + @property + def settings_feature(self) -> Settings: ... + + @property + def slew_rate_params_feature(self) -> SlewRateParams: ... + + @property + def status_items_feature(self) -> StatusItems: ... + + @property + def status_mode_feature(self) -> StatusMode: ... + + @property + def unit_converter_feature(self) -> UnitConverter: ... + + @property + def zero_feature(self) -> Zero: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bpc30x_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bpc30x_feature_group.py new file mode 100644 index 0000000..de9b6aa --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bpc30x_feature_group.py @@ -0,0 +1,36 @@ +from typing import Protocol + +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.rack_identify import RackIdentify +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.rack_bay_occupied_state import RackBayOccupiedState +from thorlabs_xa.interfaces.device_features.settings import Settings + +class Bpc30xFeatureGroup(Protocol): + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: ... + + @property + def disconnect_feature(self) -> Disconnect: ... + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: ... + + @property + def hardware_info_feature(self) -> HardwareInfo: ... + + @property + def load_params_feature(self) -> LoadParams: ... + + @property + def rack_identify_feature(self) -> RackIdentify: ... + + @property + def rack_bay_occupied_state_feature(self) -> RackBayOccupiedState: ... + + @property + def settings_feature(self) -> Settings: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bpc30x_logical_channel_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bpc30x_logical_channel_feature_group.py new file mode 100644 index 0000000..3763789 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bpc30x_logical_channel_feature_group.py @@ -0,0 +1,92 @@ +from typing import Protocol + +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.piezo.max_output_voltage_params import MaxOutputVoltageParams +from thorlabs_xa.interfaces.device_features.piezo.max_travel import MaxTravel +from thorlabs_xa.interfaces.device_features.piezo.output_voltage import OutputVoltage +from thorlabs_xa.interfaces.device_features.piezo.output_voltage_control_source_params import OutputVoltageControlSourceParams +from thorlabs_xa.interfaces.device_features.piezo.output_waveform import OutputWaveform +from thorlabs_xa.interfaces.device_features.piezo.piezo_status import PiezoStatus +from thorlabs_xa.interfaces.device_features.piezo.piezo_status_bits import PiezoStatusBits +from thorlabs_xa.interfaces.device_features.piezo.position import Position +from thorlabs_xa.interfaces.device_features.piezo.position_control_mode import PositionControlMode +from thorlabs_xa.interfaces.device_features.piezo.position_loop_params import PositionLoopParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.piezo.slew_rate_params import SlewRateParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.piezo.zero import Zero + +class Bpc30xLogicalChannelFeatureGroup(Protocol): + + @property + def enable_state_feature(self) -> EnableState: ... + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: ... + + @property + def hardware_info_feature(self) -> HardwareInfo: ... + + @property + def identify_feature(self) -> Identify: ... + + @property + def load_params_feature(self) -> LoadParams: ... + + @property + def max_output_voltage_params_feature(self) -> MaxOutputVoltageParams: ... + + @property + def max_travel_feature(self) -> MaxTravel: ... + + @property + def output_voltage_feature(self) -> OutputVoltage: ... + + @property + def output_voltage_control_source_params_feature(self) -> OutputVoltageControlSourceParams: ... + + @property + def output_waveform_feature(self) -> OutputWaveform: ... + + @property + def piezo_status_feature(self) -> PiezoStatus: ... + + @property + def piezo_status_bits_feature(self) -> PiezoStatusBits: ... + + @property + def position_feature(self) -> Position: ... + + @property + def position_control_mode_feature(self) -> PositionControlMode: ... + + @property + def position_loop_params_feature(self) -> PositionLoopParams: ... + + @property + def restore_factory_defaults_feature(self) -> RestoreFactoryDefaults: ... + + @property + def settings_feature(self) -> Settings: ... + + @property + def slew_rate_params_feature(self) -> SlewRateParams: ... + + @property + def status_items_feature(self) -> StatusItems: ... + + @property + def status_mode_feature(self) -> StatusMode: ... + + @property + def unit_converter_feature(self) -> UnitConverter: ... + + @property + def zero_feature(self) -> Zero: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bsc201_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bsc201_feature_group.py new file mode 100644 index 0000000..fdc5363 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bsc201_feature_group.py @@ -0,0 +1,156 @@ +from typing import Protocol + +from thorlabs_xa.interfaces.device_features.adc_inputs import AdcInputs +from thorlabs_xa.interfaces.device_features.bow_index import BowIndex +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.encoder_counter import EncoderCounter +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.limit_switch_params_setter import LimitSwitchParamsSetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.no_flash_programming import NoFlashProgramming +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.power_params import PowerParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stepper_loop_params import StepperLoopParams +from thorlabs_xa.interfaces.device_features.stepper_status import StepperStatus +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.trigger_params_for_stepper import TriggerParamsForStepper +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams +from thorlabs_xa.interfaces.device_features.yes_flash_programming import YesFlashProgramming + +class Bsc201FeatureGroup(Protocol): + + @property + def adc_inputs_feature(self) -> AdcInputs: ... + + @property + def bow_index_feature(self) -> BowIndex: ... + + @property + def connected_product_feature(self) -> ConnectedProduct: ... + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: ... + + @property + def disconnect_feature(self) -> Disconnect: ... + + @property + def enable_state_feature(self) -> EnableState: ... + + @property + def encoder_counter_feature(self) -> EncoderCounter: ... + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: ... + + @property + def general_move_params_feature(self) -> GeneralMoveParams: ... + + @property + def hardware_info_feature(self) -> HardwareInfo: ... + + @property + def home_feature(self) -> Home: ... + + @property + def home_params_feature(self) -> HomeParams: ... + + @property + def identify_feature(self) -> Identify: ... + + @property + def jog_params_feature(self) -> JogParams: ... + + @property + def limit_switch_params_getter_feature(self) -> LimitSwitchParamsGetter: ... + + @property + def limit_switch_params_setter_feature(self) -> LimitSwitchParamsSetter: ... + + @property + def load_params_feature(self) -> LoadParams: ... + + @property + def move_feature(self) -> Move: ... + + @property + def move_absolute_params_feature(self) -> MoveAbsoluteParams: ... + + @property + def move_relative_params_feature(self) -> MoveRelativeParams: ... + + @property + def no_flash_programming_feature(self) -> NoFlashProgramming: ... + + @property + def persist_params_feature(self) -> PersistParams: ... + + @property + def position_counter_feature(self) -> PositionCounter: ... + + @property + def power_params_feature(self) -> PowerParams: ... + + @property + def profile_mode_params_feature(self) -> ProfileModeParams: ... + + @property + def rich_response_feature(self) -> RichResponse: ... + + @property + def settings_feature(self) -> Settings: ... + + @property + def status_items_feature(self) -> StatusItems: ... + + @property + def status_mode_feature(self) -> StatusMode: ... + + @property + def status_request_feature(self) -> StatusRequest: ... + + @property + def stepper_loop_params_feature(self) -> StepperLoopParams: ... + + @property + def stepper_status_feature(self) -> StepperStatus: ... + + @property + def stop_feature(self) -> Stop: ... + + @property + def trigger_params_for_stepper_feature(self) -> TriggerParamsForStepper: ... + + @property + def unit_converter_feature(self) -> UnitConverter: ... + + @property + def universal_status_bits_feature(self) -> UniversalStatusBits: ... + + @property + def velocity_params_feature(self) -> VelocityParams: ... + + @property + def yes_flash_programming_feature(self) -> YesFlashProgramming: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bsc201v4_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bsc201v4_feature_group.py new file mode 100644 index 0000000..ac2dee3 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bsc201v4_feature_group.py @@ -0,0 +1,160 @@ +from typing import Protocol + +from thorlabs_xa.interfaces.device_features.adc_inputs import AdcInputs +from thorlabs_xa.interfaces.device_features.bow_index import BowIndex +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.encoder_counter import EncoderCounter +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.limit_switch_params_setter import LimitSwitchParamsSetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.no_flash_programming import NoFlashProgramming +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.power_params import PowerParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.set_actuator_type import SetActuatorType +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stepper_loop_params import StepperLoopParams +from thorlabs_xa.interfaces.device_features.stepper_status import StepperStatus +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.trigger_params_for_stepper import TriggerParamsForStepper +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams +from thorlabs_xa.interfaces.device_features.yes_flash_programming import YesFlashProgramming + +class Bsc201v4FeatureGroup(Protocol): + + @property + def adc_inputs_feature(self) -> AdcInputs: ... + + @property + def bow_index_feature(self) -> BowIndex: ... + + @property + def connected_product_feature(self) -> ConnectedProduct: ... + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: ... + + @property + def disconnect_feature(self) -> Disconnect: ... + + @property + def enable_state_feature(self) -> EnableState: ... + + @property + def encoder_counter_feature(self) -> EncoderCounter: ... + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: ... + + @property + def general_move_params_feature(self) -> GeneralMoveParams: ... + + @property + def hardware_info_feature(self) -> HardwareInfo: ... + + @property + def home_feature(self) -> Home: ... + + @property + def home_params_feature(self) -> HomeParams: ... + + @property + def identify_feature(self) -> Identify: ... + + @property + def jog_params_feature(self) -> JogParams: ... + + @property + def limit_switch_params_getter_feature(self) -> LimitSwitchParamsGetter: ... + + @property + def limit_switch_params_setter_feature(self) -> LimitSwitchParamsSetter: ... + + @property + def load_params_feature(self) -> LoadParams: ... + + @property + def move_feature(self) -> Move: ... + + @property + def move_absolute_params_feature(self) -> MoveAbsoluteParams: ... + + @property + def move_relative_params_feature(self) -> MoveRelativeParams: ... + + @property + def no_flash_programming_feature(self) -> NoFlashProgramming: ... + + @property + def persist_params_feature(self) -> PersistParams: ... + + @property + def position_counter_feature(self) -> PositionCounter: ... + + @property + def power_params_feature(self) -> PowerParams: ... + + @property + def profile_mode_params_feature(self) -> ProfileModeParams: ... + + @property + def rich_response_feature(self) -> RichResponse: ... + + @property + def set_actuator_type_feature(self) -> SetActuatorType: ... + + @property + def settings_feature(self) -> Settings: ... + + @property + def status_items_feature(self) -> StatusItems: ... + + @property + def status_mode_feature(self) -> StatusMode: ... + + @property + def status_request_feature(self) -> StatusRequest: ... + + @property + def stepper_loop_params_feature(self) -> StepperLoopParams: ... + + @property + def stepper_status_feature(self) -> StepperStatus: ... + + @property + def stop_feature(self) -> Stop: ... + + @property + def trigger_params_for_stepper_feature(self) -> TriggerParamsForStepper: ... + + @property + def unit_converter_feature(self) -> UnitConverter: ... + + @property + def universal_status_bits_feature(self) -> UniversalStatusBits: ... + + @property + def velocity_params_feature(self) -> VelocityParams: ... + + @property + def yes_flash_programming_feature(self) -> YesFlashProgramming: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bsc20x_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bsc20x_feature_group.py new file mode 100644 index 0000000..f5855bc --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bsc20x_feature_group.py @@ -0,0 +1,36 @@ +from typing import Protocol + +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.rack_identify import RackIdentify +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.rack_bay_occupied_state import RackBayOccupiedState +from thorlabs_xa.interfaces.device_features.settings import Settings + +class Bsc20xFeatureGroup(Protocol): + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: ... + + @property + def disconnect_feature(self) -> Disconnect: ... + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: ... + + @property + def hardware_info_feature(self) -> HardwareInfo: ... + + @property + def rack_identify_feature(self) -> RackIdentify: ... + + @property + def load_params_feature(self) -> LoadParams: ... + + @property + def rack_bay_occupied_state_feature(self) -> RackBayOccupiedState: ... + + @property + def settings_feature(self) -> Settings: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bsc20x_logical_channel_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bsc20x_logical_channel_feature_group.py new file mode 100644 index 0000000..ecd0d8f --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bsc20x_logical_channel_feature_group.py @@ -0,0 +1,160 @@ +from typing import Protocol + +from thorlabs_xa.interfaces.device_features.adc_inputs import AdcInputs +from thorlabs_xa.interfaces.device_features.bow_index import BowIndex +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.encoder_counter import EncoderCounter +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.joystick_params import JoystickParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.limit_switch_params_setter import LimitSwitchParamsSetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.no_flash_programming import NoFlashProgramming +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.power_params import PowerParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stepper_loop_params import StepperLoopParams +from thorlabs_xa.interfaces.device_features.stepper_status import StepperStatus +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.trigger_params_for_stepper import TriggerParamsForStepper +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams +from thorlabs_xa.interfaces.device_features.yes_flash_programming import YesFlashProgramming + +class Bsc20xLogicalChannelFeatureGroup(Protocol): + + @property + def adc_inputs_feature(self) -> AdcInputs: ... + + @property + def bow_index_feature(self) -> BowIndex: ... + + @property + def connected_product_feature(self) -> ConnectedProduct: ... + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: ... + + @property + def disconnect_feature(self) -> Disconnect: ... + + @property + def enable_state_feature(self) -> EnableState: ... + + @property + def encoder_counter_feature(self) -> EncoderCounter: ... + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: ... + + @property + def general_move_params_feature(self) -> GeneralMoveParams: ... + + @property + def hardware_info_feature(self) -> HardwareInfo: ... + + @property + def home_feature(self) -> Home: ... + + @property + def home_params_feature(self) -> HomeParams: ... + + @property + def identify_feature(self) -> Identify: ... + + @property + def jog_params_feature(self) -> JogParams: ... + + @property + def joystick_params_feature(self) -> JoystickParams: ... + + @property + def limit_switch_params_getter_feature(self) -> LimitSwitchParamsGetter: ... + + @property + def limit_switch_params_setter_feature(self) -> LimitSwitchParamsSetter: ... + + @property + def load_params_feature(self) -> LoadParams: ... + + @property + def move_feature(self) -> Move: ... + + @property + def move_absolute_params_feature(self) -> MoveAbsoluteParams: ... + + @property + def move_relative_params_feature(self) -> MoveRelativeParams: ... + + @property + def no_flash_programming_feature(self) -> NoFlashProgramming: ... + + @property + def persist_params_feature(self) -> PersistParams: ... + + @property + def position_counter_feature(self) -> PositionCounter: ... + + @property + def power_params_feature(self) -> PowerParams: ... + + @property + def profile_mode_params_feature(self) -> ProfileModeParams: ... + + @property + def rich_response_feature(self) -> RichResponse: ... + + @property + def settings_feature(self) -> Settings: ... + + @property + def status_items_feature(self) -> StatusItems: ... + + @property + def status_mode_feature(self) -> StatusMode: ... + + @property + def status_request_feature(self) -> StatusRequest: ... + + @property + def stepper_loop_params_feature(self) -> StepperLoopParams: ... + + @property + def stepper_status_feature(self) -> StepperStatus: ... + + @property + def stop_feature(self) -> Stop: ... + + @property + def trigger_params_for_stepper_feature(self) -> TriggerParamsForStepper: ... + + @property + def unit_converter_feature(self) -> UnitConverter: ... + + @property + def universal_status_bits_feature(self) -> UniversalStatusBits: ... + + @property + def velocity_params_feature(self) -> VelocityParams: ... + + @property + def yes_flash_programming_feature(self) -> YesFlashProgramming: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bsc20xv4_logical_channel_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bsc20xv4_logical_channel_feature_group.py new file mode 100644 index 0000000..b7fbda1 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/bsc20xv4_logical_channel_feature_group.py @@ -0,0 +1,164 @@ +from typing import Protocol + +from thorlabs_xa.interfaces.device_features.adc_inputs import AdcInputs +from thorlabs_xa.interfaces.device_features.bow_index import BowIndex +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.encoder_counter import EncoderCounter +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.joystick_params import JoystickParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.limit_switch_params_setter import LimitSwitchParamsSetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.no_flash_programming import NoFlashProgramming +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.power_params import PowerParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.set_actuator_type import SetActuatorType +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stepper_loop_params import StepperLoopParams +from thorlabs_xa.interfaces.device_features.stepper_status import StepperStatus +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.trigger_params_for_stepper import TriggerParamsForStepper +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams +from thorlabs_xa.interfaces.device_features.yes_flash_programming import YesFlashProgramming + +class Bsc20xv4LogicalChannelFeatureGroup(Protocol): + + @property + def adc_inputs_feature(self) -> AdcInputs: ... + + @property + def bow_index_feature(self) -> BowIndex: ... + + @property + def connected_product_feature(self) -> ConnectedProduct: ... + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: ... + + @property + def disconnect_feature(self) -> Disconnect: ... + + @property + def enable_state_feature(self) -> EnableState: ... + + @property + def encoder_counter_feature(self) -> EncoderCounter: ... + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: ... + + @property + def general_move_params_feature(self) -> GeneralMoveParams: ... + + @property + def hardware_info_feature(self) -> HardwareInfo: ... + + @property + def home_feature(self) -> Home: ... + + @property + def home_params_feature(self) -> HomeParams: ... + + @property + def identify_feature(self) -> Identify: ... + + @property + def jog_params_feature(self) -> JogParams: ... + + @property + def joystick_params_feature(self) -> JoystickParams: ... + + @property + def limit_switch_params_getter_feature(self) -> LimitSwitchParamsGetter: ... + + @property + def limit_switch_params_setter_feature(self) -> LimitSwitchParamsSetter: ... + + @property + def load_params_feature(self) -> LoadParams: ... + + @property + def move_feature(self) -> Move: ... + + @property + def move_absolute_params_feature(self) -> MoveAbsoluteParams: ... + + @property + def move_relative_params_feature(self) -> MoveRelativeParams: ... + + @property + def no_flash_programming_feature(self) -> NoFlashProgramming: ... + + @property + def persist_params_feature(self) -> PersistParams: ... + + @property + def position_counter_feature(self) -> PositionCounter: ... + + @property + def power_params_feature(self) -> PowerParams: ... + + @property + def profile_mode_params_feature(self) -> ProfileModeParams: ... + + @property + def rich_response_feature(self) -> RichResponse: ... + + @property + def set_actuator_type_feature(self) -> SetActuatorType: ... + + @property + def settings_feature(self) -> Settings: ... + + @property + def status_items_feature(self) -> StatusItems: ... + + @property + def status_mode_feature(self) -> StatusMode: ... + + @property + def status_request_feature(self) -> StatusRequest: ... + + @property + def stepper_loop_params_feature(self) -> StepperLoopParams: ... + + @property + def stepper_status_feature(self) -> StepperStatus: ... + + @property + def stop_feature(self) -> Stop: ... + + @property + def trigger_params_for_stepper_feature(self) -> TriggerParamsForStepper: ... + + @property + def unit_converter_feature(self) -> UnitConverter: ... + + @property + def universal_status_bits_feature(self) -> UniversalStatusBits: ... + + @property + def velocity_params_feature(self) -> VelocityParams: ... + + @property + def yes_flash_programming_feature(self) -> YesFlashProgramming: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/kbd101_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/kbd101_feature_group.py new file mode 100644 index 0000000..3751676 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/kbd101_feature_group.py @@ -0,0 +1,156 @@ +from typing import Protocol + +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.current_loop_params import CurrentLoopParams +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.end_of_move_messages_mode import EndOfMoveMessagesMode +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.kcube_io_trigger_params import KcubeIoTriggerParams +from thorlabs_xa.interfaces.device_features.kcube_mmi_params import KcubeMmiParams +from thorlabs_xa.interfaces.device_features.kcube_position_trigger_params import KcubePositionTriggerParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.motor_output_params import MotorOutputParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.position_loop_params import PositionLoopParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.track_settle_params import TrackSettleParams +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status import UniversalStatus +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams + +class Kbd101FeatureGroup(Protocol): + + @property + def connected_product_feature(self) -> ConnectedProduct: ... + + @property + def current_loop_params_feature(self) -> CurrentLoopParams: ... + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: ... + + @property + def disconnect_feature(self) -> Disconnect: ... + + @property + def enable_state_feature(self) -> EnableState: ... + + @property + def end_of_move_messages_mode_feature(self) -> EndOfMoveMessagesMode: ... + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: ... + + @property + def general_move_params_feature(self) -> GeneralMoveParams: ... + + @property + def hardware_info_feature(self) -> HardwareInfo: ... + + @property + def home_feature(self) -> Home: ... + + @property + def home_params_feature(self) -> HomeParams: ... + + @property + def identify_feature(self) -> Identify: ... + + @property + def jog_params_feature(self) -> JogParams: ... + + @property + def kcube_io_trigger_params_feature(self) -> KcubeIoTriggerParams: ... + + @property + def kcube_mmi_params_feature(self) -> KcubeMmiParams: ... + + @property + def kcube_position_trigger_params_feature(self) -> KcubePositionTriggerParams: ... + + @property + def limit_switch_params_getter_feature(self) -> LimitSwitchParamsGetter: ... + + @property + def load_params_feature(self) -> LoadParams: ... + + @property + def motor_output_params_feature(self) -> MotorOutputParams: ... + + @property + def move_feature(self) -> Move: ... + + @property + def move_absolute_params_feature(self) -> MoveAbsoluteParams: ... + + @property + def move_relative_params_feature(self) -> MoveRelativeParams: ... + + @property + def persist_params_feature(self) -> PersistParams: ... + + @property + def position_counter_feature(self) -> PositionCounter: ... + + @property + def position_loop_params_feature(self) -> PositionLoopParams: ... + + @property + def restore_factory_defaults_feature(self) -> RestoreFactoryDefaults: ... + + @property + def rich_response_feature(self) -> RichResponse: ... + + @property + def settings_feature(self) -> Settings: ... + + @property + def stage_axis_params_feature(self) -> StageAxisParams: ... + + @property + def status_items_feature(self) -> StatusItems: ... + + @property + def status_mode_feature(self) -> StatusMode: ... + + @property + def status_request_feature(self) -> StatusRequest: ... + + @property + def stop_feature(self) -> Stop: ... + + @property + def track_settle_params_feature(self) -> TrackSettleParams: ... + + @property + def unit_converter_feature(self) -> UnitConverter: ... + + @property + def universal_status_feature(self) -> UniversalStatus: ... + + @property + def universal_status_bits_feature(self) -> UniversalStatusBits: ... + + @property + def velocity_params_feature(self) -> VelocityParams: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/kim001_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/kim001_feature_group.py new file mode 100644 index 0000000..ac2028b --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/kim001_feature_group.py @@ -0,0 +1,108 @@ +from typing import Protocol + +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.conversion_factors import ConversionFactors +from thorlabs_xa.interfaces.device_features.dc_pid_params import DcPidParams +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.drive_operations_params import DriveOperationsParams +from thorlabs_xa.interfaces.device_features.end_of_move_messages_mode import EndOfMoveMessagesMode +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_channel_enable import KcubeChannelEnable +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_feedback_signal_params import KcubeFeedbackSignalParams +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_io_trigger_params import KcubeIoTriggerParams +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_jog_params import KcubeJogParams +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_mmi_params import KcubeMmiParams +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_trigger_params import KcubeTriggerParams +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.position_counts import PositionCounts +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.stage_select_params import StageSelectParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter + +class Kim001FeatureGroup(Protocol): + + @property + def conversion_factors_feature(self) -> ConversionFactors: ... + + @property + def dc_pid_params_feature(self) -> DcPidParams: ... + + @property + def disconnect_feature(self) -> Disconnect: ... + + @property + def end_of_move_messages_mode_feature(self) -> EndOfMoveMessagesMode: ... + + @property + def drive_operations_params_feature(self) -> DriveOperationsParams: ... + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: ... + + @property + def hardware_info_feature(self) -> HardwareInfo: ... + + @property + def identify_feature(self) -> Identify: ... + + @property + def kcube_channel_enable_feature(self) -> KcubeChannelEnable: ... + + @property + def kcube_feedback_signal_params_feature(self) -> KcubeFeedbackSignalParams: ... + + @property + def kcube_jog_params_feature(self) -> KcubeJogParams: ... + + @property + def kcube_mmi_params_feature(self) -> KcubeMmiParams: ... + + @property + def kcube_io_trigger_params_feature(self) -> KcubeIoTriggerParams: ... + + @property + def kcube_trigger_params_feature(self) -> KcubeTriggerParams: ... + + @property + def load_params_feature(self) -> LoadParams: ... + + @property + def move_feature(self) -> Move: ... + + @property + def persist_params_feature(self) -> PersistParams: ... + + @property + def position_counts_feature(self) -> PositionCounts: ... + + @property + def rich_response_feature(self) -> RichResponse: ... + + @property + def settings_feature(self) -> Settings: ... + + @property + def stage_select_params_feature(self) -> StageSelectParams: ... + + @property + def status_items_feature(self) -> StatusItems: ... + + @property + def status_mode_feature(self) -> StatusMode: ... + + @property + def status_request_feature(self) -> StatusRequest: ... + + @property + def stop_feature(self) -> Stop: ... + + @property + def unit_converter_feature(self) -> UnitConverter: ... diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/linear_translation_stage_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/linear_translation_stage_feature_group.py index a6a244b..604e7ab 100644 --- a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/linear_translation_stage_feature_group.py +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/linear_translation_stage_feature_group.py @@ -27,7 +27,7 @@ from thorlabs_xa.interfaces.device_features.stop import Stop from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter from thorlabs_xa.interfaces.device_features.stepper_status import StepperStatus -from thorlabs_xa.interfaces.device_features.universal_status import UniversalStatus +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams class LinearTranslationStageFeatureGroup(Protocol): @@ -114,7 +114,7 @@ def unit_converter_feature(self) -> UnitConverter: ... def stepper_status_feature(self) -> StepperStatus: ... @property - def universal_status_feature(self) -> UniversalStatus: ... + def universal_status_bits_feature(self) -> UniversalStatusBits: ... @property def velocity_params_feature(self) -> VelocityParams: ... diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/pdxc2_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/pdxc2_feature_group.py new file mode 100644 index 0000000..2a3492d --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/pdxc2_feature_group.py @@ -0,0 +1,80 @@ +from typing import Protocol + +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.piezo.position_control_mode import PositionControlMode +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter + +class Pdxc2FeatureGroup(Protocol): + + @property + def connected_product_feature(self) -> ConnectedProduct: ... + + @property + def disconnect_feature(self) -> Disconnect: ... + + @property + def enable_state_feature(self) -> EnableState: ... + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: ... + + @property + def hardware_info_feature(self) -> HardwareInfo: ... + + @property + def home_feature(self) -> Home: ... + + @property + def identify_feature(self) -> Identify: ... + + @property + def load_params_feature(self) -> LoadParams: ... + + @property + def move_feature(self) -> Move: ... + + @property + def persist_params_feature(self) -> PersistParams: ... + + @property + def position_control_mode_feature(self) -> PositionControlMode: ... + + @property + def rich_response_feature(self) -> RichResponse: ... + + @property + def settings_feature(self) -> Settings: ... + + @property + def stage_axis_params_feature(self) -> StageAxisParams: ... + + @property + def status_items_feature(self) -> StatusItems: ... + + @property + def status_mode_feature(self) -> StatusMode: ... + + @property + def status_request_feature(self) -> StatusRequest: ... + + @property + def stop_feature(self) -> Stop: ... + + @property + def unit_converter_feature(self) -> UnitConverter: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/pdxc3_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/pdxc3_feature_group.py new file mode 100644 index 0000000..bf312e0 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/pdxc3_feature_group.py @@ -0,0 +1,44 @@ +from typing import Protocol + +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move_sync_array import MoveSyncArray +from thorlabs_xa.interfaces.device_features.move_sync_params import MoveSyncParams +from thorlabs_xa.interfaces.device_features.move_sync_start import MoveSyncStart +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode + +class Pdxc3FeatureGroup(Protocol): + + @property + def disconnect_feature(self) -> Disconnect: ... + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: ... + + @property + def hardware_info_feature(self) -> HardwareInfo: ... + + @property + def identify_feature(self) -> Identify: ... + + @property + def load_params_feature(self) -> LoadParams: ... + + @property + def move_sync_array_feature(self) -> MoveSyncArray: ... + + @property + def move_sync_params_feature(self) -> MoveSyncParams: ... + + @property + def move_sync_start_feature(self) -> MoveSyncStart: ... + + @property + def settings_feature(self) -> Settings: ... + + @property + def status_mode_feature(self) -> StatusMode: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/pdxc3_subchannel_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/pdxc3_subchannel_feature_group.py new file mode 100644 index 0000000..3386e66 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/pdxc3_subchannel_feature_group.py @@ -0,0 +1,64 @@ +from typing import Protocol + +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.piezo.position_control_mode import PositionControlMode +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter + +class Pdxc3SubchannelFeatureGroup(Protocol): + + @property + def connected_product_feature(self) -> ConnectedProduct: ... + + @property + def enable_state_feature(self) -> EnableState: ... + + @property + def home_feature(self) -> Home: ... + + @property + def load_params_feature(self) -> LoadParams: ... + + @property + def move_feature(self) -> Move: ... + + @property + def persist_params_feature(self) -> PersistParams: ... + + @property + def position_control_mode_feature(self) -> PositionControlMode: ... + + @property + def rich_response_feature(self) -> RichResponse: ... + + @property + def settings_feature(self) -> Settings: ... + + @property + def stage_axis_params_feature(self) -> StageAxisParams: ... + + @property + def status_items_feature(self) -> StatusItems: ... + + @property + def status_mode_feature(self) -> StatusMode: ... + + @property + def status_request_feature(self) -> StatusRequest: ... + + @property + def stop_feature(self) -> Stop: ... + + @property + def unit_converter_feature(self) -> UnitConverter: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/tbd001_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/tbd001_feature_group.py new file mode 100644 index 0000000..d7e7f4a --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/tbd001_feature_group.py @@ -0,0 +1,148 @@ +from typing import Protocol + +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.current_loop_params import CurrentLoopParams +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.joystick_params import JoystickParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.motor_output_params import MotorOutputParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.position_loop_params import PositionLoopParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.track_settle_params import TrackSettleParams +from thorlabs_xa.interfaces.device_features.trigger_params_for_dc_brushless import TriggerParamsForDcBrushless +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status import UniversalStatus +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams + +class Tbd001FeatureGroup(Protocol): + + @property + def connected_product_feature(self) -> ConnectedProduct: ... + + @property + def current_loop_params_feature(self) -> CurrentLoopParams: ... + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: ... + + @property + def enable_state_feature(self) -> EnableState: ... + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: ... + + @property + def general_move_params_feature(self) -> GeneralMoveParams: ... + + @property + def hardware_info_feature(self) -> HardwareInfo: ... + + @property + def home_feature(self) -> Home: ... + + @property + def home_params_feature(self) -> HomeParams: ... + + @property + def identify_feature(self) -> Identify: ... + + @property + def jog_params_feature(self) -> JogParams: ... + + @property + def joystick_params_feature(self) -> JoystickParams: ... + + @property + def limit_switch_params_getter_feature(self) -> LimitSwitchParamsGetter: ... + + @property + def load_params_feature(self) -> LoadParams: ... + + @property + def motor_output_params_feature(self) -> MotorOutputParams: ... + + @property + def move_feature(self) -> Move: ... + + @property + def move_absolute_params_feature(self) -> MoveAbsoluteParams: ... + + @property + def move_relative_params_feature(self) -> MoveRelativeParams: ... + + @property + def persist_params_feature(self) -> PersistParams: ... + + @property + def position_counter_feature(self) -> PositionCounter: ... + + @property + def position_loop_params_feature(self) -> PositionLoopParams: ... + + @property + def profile_mode_params_feature(self) -> ProfileModeParams: ... + + @property + def restore_factory_defaults_feature(self) -> RestoreFactoryDefaults: ... + + @property + def rich_response_feature(self) -> RichResponse: ... + + @property + def settings_feature(self) -> Settings: ... + + @property + def stage_axis_params_feature(self) -> StageAxisParams: ... + + @property + def status_items_feature(self) -> StatusItems: ... + + @property + def status_mode_feature(self) -> StatusMode: ... + + @property + def status_request_feature(self) -> StatusRequest: ... + + @property + def stop_feature(self) -> Stop: ... + + @property + def track_settle_params_feature(self) -> TrackSettleParams: ... + + @property + def trigger_params_for_dc_brushless_feature(self) -> TriggerParamsForDcBrushless: ... + + @property + def unit_converter_feature(self) -> UnitConverter: ... + + @property + def universal_status_feature(self) -> UniversalStatus: ... + + @property + def universal_status_bits_feature(self) -> UniversalStatusBits: ... + + @property + def velocity_params_feature(self) -> VelocityParams: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/umcx_brushless_logical_channel_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/umcx_brushless_logical_channel_feature_group.py new file mode 100644 index 0000000..a9b14ac --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/umcx_brushless_logical_channel_feature_group.py @@ -0,0 +1,148 @@ +from typing import Protocol + +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.current_loop_params import CurrentLoopParams +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.end_of_move_messages_mode import EndOfMoveMessagesMode +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.io_position_trigger_enable_state import IoPositionTriggerEnableState +from thorlabs_xa.interfaces.device_features.io_trigger_params import IoTriggerParams +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.joystick_params import JoystickParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.motor_output_params import MotorOutputParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_loop_params import PositionLoopParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.track_settle_params import TrackSettleParams +from thorlabs_xa.interfaces.device_features.umc_status import UmcStatus +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams + +class UmcxBrushlessLogicalChannelFeatureGroup(Protocol): + + @property + def connected_product_feature(self) -> ConnectedProduct: ... + + @property + def current_loop_params_feature(self) -> CurrentLoopParams: ... + + @property + def enable_state_feature(self) -> EnableState: ... + + @property + def end_of_move_messages_mode_feature(self) -> EndOfMoveMessagesMode: ... + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: ... + + @property + def general_move_params_feature(self) -> GeneralMoveParams: ... + + @property + def hardware_info_feature(self) -> HardwareInfo: ... + + @property + def home_feature(self) -> Home: ... + + @property + def home_params_feature(self) -> HomeParams: ... + + @property + def identify_feature(self) -> Identify: ... + + @property + def io_position_trigger_enable_state_feature(self) -> IoPositionTriggerEnableState: ... + + @property + def io_trigger_params_feature(self) -> IoTriggerParams: ... + + @property + def jog_params_feature(self) -> JogParams: ... + + @property + def joystick_params_feature(self) -> JoystickParams: ... + + @property + def limit_switch_params_getter_feature(self) -> LimitSwitchParamsGetter: ... + + @property + def load_params_feature(self) -> LoadParams: ... + + @property + def motor_output_params_feature(self) -> MotorOutputParams: ... + + @property + def move_feature(self) -> Move: ... + + @property + def move_absolute_params_feature(self) -> MoveAbsoluteParams: ... + + @property + def move_relative_params_feature(self) -> MoveRelativeParams: ... + + @property + def persist_params_feature(self) -> PersistParams: ... + + @property + def position_loop_params_feature(self) -> PositionLoopParams: ... + + @property + def profile_mode_params_feature(self) -> ProfileModeParams: ... + + @property + def restore_factory_defaults_feature(self) -> RestoreFactoryDefaults: ... + + @property + def rich_response_feature(self) -> RichResponse: ... + + @property + def settings_feature(self) -> Settings: ... + + @property + def stage_axis_params_feature(self) -> StageAxisParams: ... + + @property + def status_items_feature(self) -> StatusItems: ... + + @property + def status_mode_feature(self) -> StatusMode: ... + + @property + def status_request_feature(self) -> StatusRequest: ... + + @property + def stop_feature(self) -> Stop: ... + + @property + def track_settle_params_feature(self) -> TrackSettleParams: ... + + @property + def umc_status_feature(self) -> UmcStatus: ... + + @property + def unit_converter_feature(self) -> UnitConverter: ... + + @property + def universal_status_bits_feature(self) -> UniversalStatusBits: ... + + @property + def velocity_params_feature(self) -> VelocityParams: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/umcx_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/umcx_feature_group.py new file mode 100644 index 0000000..581f7c7 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/umcx_feature_group.py @@ -0,0 +1,48 @@ +from typing import Protocol + +from thorlabs_xa.interfaces.device_features.aux_io_configuration_params import AuxIoConfigurationParams +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.io_configuration_params import IoConfigurationParams +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move_sync_array import MoveSyncArray +from thorlabs_xa.interfaces.device_features.move_sync_params import MoveSyncParams +from thorlabs_xa.interfaces.device_features.move_sync_start import MoveSyncStart +from thorlabs_xa.interfaces.device_features.rack_bay_occupied_state import RackBayOccupiedState +from thorlabs_xa.interfaces.device_features.settings import Settings + +class UmcxFeatureGroup(Protocol): + + @property + def aux_io_configuration_params_feature(self) -> AuxIoConfigurationParams: ... + + @property + def disconnect_feature(self) -> Disconnect: ... + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: ... + + @property + def hardware_info_feature(self) -> HardwareInfo: ... + + @property + def io_configuration_params_feature(self) -> IoConfigurationParams: ... + + @property + def load_params_feature(self) -> LoadParams: ... + + @property + def move_sync_array_feature(self) -> MoveSyncArray: ... + + @property + def move_sync_params_feature(self) -> MoveSyncParams: ... + + @property + def move_sync_start_feature(self) -> MoveSyncStart: ... + + @property + def rack_bay_occupied_state_feature(self) -> RackBayOccupiedState: ... + + @property + def settings_feature(self) -> Settings: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/umcx_stepper_logical_channel_feature_group.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/umcx_stepper_logical_channel_feature_group.py new file mode 100644 index 0000000..43ddfcd --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_feature_groups/umcx_stepper_logical_channel_feature_group.py @@ -0,0 +1,160 @@ +from typing import Protocol + +from thorlabs_xa.interfaces.device_features.bow_index import BowIndex +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.current_loop_params import CurrentLoopParams +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.encoder_counter import EncoderCounter +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.io_position_trigger_enable_state import IoPositionTriggerEnableState +from thorlabs_xa.interfaces.device_features.io_trigger_params import IoTriggerParams +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.joystick_params import JoystickParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.limit_switch_params_setter import LimitSwitchParamsSetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.power_params import PowerParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.set_actuator_type import SetActuatorType +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stepper_loop_params import StepperLoopParams +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.umc_status import UmcStatus +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams + +class UmcxStepperLogicalChannelFeatureGroup(Protocol): + + @property + def bow_index_feature(self) -> BowIndex: ... + + @property + def connected_product_feature(self) -> ConnectedProduct: ... + + @property + def current_loop_params_feature(self) -> CurrentLoopParams: ... + + @property + def digital_output_states_feature(self) -> DigitalOutputStates: ... + + @property + def enable_state_feature(self) -> EnableState: ... + + @property + def encoder_counter_feature(self) -> EncoderCounter: ... + + @property + def firmware_version_info_feature(self) -> FirmwareVersionInfo: ... + + @property + def general_move_params_feature(self) -> GeneralMoveParams: ... + + @property + def hardware_info_feature(self) -> HardwareInfo: ... + + @property + def home_feature(self) -> Home: ... + + @property + def home_params_feature(self) -> HomeParams: ... + + @property + def identify_feature(self) -> Identify: ... + + @property + def io_position_trigger_enable_state_feature(self) -> IoPositionTriggerEnableState: ... + + @property + def io_trigger_params_feature(self) -> IoTriggerParams: ... + + @property + def jog_params_feature(self) -> JogParams: ... + + @property + def joystick_params_feature(self) -> JoystickParams: ... + + @property + def limit_switch_params_getter_feature(self) -> LimitSwitchParamsGetter: ... + + @property + def limit_switch_params_setter_feature(self) -> LimitSwitchParamsSetter: ... + + @property + def load_params_feature(self) -> LoadParams: ... + + @property + def move_feature(self) -> Move: ... + + @property + def move_absolute_params_feature(self) -> MoveAbsoluteParams: ... + + @property + def move_relative_params_feature(self) -> MoveRelativeParams: ... + + @property + def persist_params_feature(self) -> PersistParams: ... + + @property + def power_params_feature(self) -> PowerParams: ... + + @property + def profile_mode_params_feature(self) -> ProfileModeParams: ... + + @property + def restore_factory_defaults_feature(self) -> RestoreFactoryDefaults: ... + + @property + def rich_response_feature(self) -> RichResponse: ... + + @property + def set_actuator_type_feature(self) -> SetActuatorType: ... + + @property + def settings_feature(self) -> Settings: ... + + @property + def stage_axis_params_feature(self) -> StageAxisParams: ... + + @property + def status_items_feature(self) -> StatusItems: ... + + @property + def status_mode_feature(self) -> StatusMode: ... + + @property + def status_request_feature(self) -> StatusRequest: ... + + @property + def stepper_loop_params_feature(self) -> StepperLoopParams: ... + + @property + def stop_feature(self) -> Stop: ... + + @property + def umc_status_feature(self) -> UmcStatus: ... + + @property + def unit_converter_feature(self) -> UnitConverter: ... + + @property + def universal_status_bits_feature(self) -> UniversalStatusBits: ... + + @property + def velocity_params_feature(self) -> VelocityParams: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/move_sync_array.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/move_sync_array.py new file mode 100644 index 0000000..6ee54fb --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/move_sync_array.py @@ -0,0 +1,8 @@ +from typing import Protocol, runtime_checkable + +from thorlabs_xa.shared.params import TLMC_MoveSyncArray + +@runtime_checkable +class MoveSyncArray(Protocol): + + def set_move_sync_array(self, parameters: TLMC_MoveSyncArray) -> None: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/move_sync_params.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/move_sync_params.py new file mode 100644 index 0000000..2414ef2 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/move_sync_params.py @@ -0,0 +1,8 @@ +from typing import Protocol, runtime_checkable + +from thorlabs_xa.shared.params import TLMC_MoveSyncParams + +@runtime_checkable +class MoveSyncParams(Protocol): + + def set_move_sync_params(self, parameters: TLMC_MoveSyncParams) -> None: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/move_sync_start.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/move_sync_start.py new file mode 100644 index 0000000..e0bcd3a --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/move_sync_start.py @@ -0,0 +1,8 @@ +from typing import Protocol, runtime_checkable + +from thorlabs_xa.shared.params import TLMC_MoveSyncStartParams + +@runtime_checkable +class MoveSyncStart(Protocol): + + def move_sync_start(self, parameters: TLMC_MoveSyncStartParams) -> None: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo/kpc_io_settings_params.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo/kpc_io_settings_params.py index 7872c84..ac49e1b 100644 --- a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo/kpc_io_settings_params.py +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo/kpc_io_settings_params.py @@ -1,7 +1,8 @@ -from typing import Protocol +from typing import Protocol, runtime_checkable from thorlabs_xa.shared.params import TLMC_PZ_KpcIoSettingsParams +@runtime_checkable class KpcIoSettingsParams(Protocol): def get_io_settings_params(self, max_wait_in_milliseconds: int) -> TLMC_PZ_KpcIoSettingsParams: ... diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo/kpc_io_trigger_params.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo/kpc_io_trigger_params.py index 70facd8..1bcdeef 100644 --- a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo/kpc_io_trigger_params.py +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo/kpc_io_trigger_params.py @@ -1,7 +1,8 @@ -from typing import Protocol +from typing import Protocol, runtime_checkable from thorlabs_xa.shared.params import TLMC_PZ_KpcIoTriggerParams +@runtime_checkable class KpcIoTriggerParams(Protocol): def get_io_trigger_params(self, max_wait_in_milliseconds: int) -> TLMC_PZ_KpcIoTriggerParams: ... diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo/kpc_mmi_params.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo/kpc_mmi_params.py index d7b400a..d52ead1 100644 --- a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo/kpc_mmi_params.py +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo/kpc_mmi_params.py @@ -1,7 +1,8 @@ -from typing import Protocol +from typing import Protocol, runtime_checkable from thorlabs_xa.shared.params import TLMC_PZ_KpcMmiParams +@runtime_checkable class KpcMmiParams(Protocol): def get_kpc_mmi_params(self, max_wait_in_milliseconds: int) -> TLMC_PZ_KpcMmiParams: ... diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo/output_waveform.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo/output_waveform.py index 4ff11bf..1ae16a9 100644 --- a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo/output_waveform.py +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo/output_waveform.py @@ -1,11 +1,11 @@ from typing import Protocol, runtime_checkable -from thorlabs_xa.shared.params import TLMC_PZ_OutputWaveformLoopTableSample, TLMC_PZ_OutputWaveformParams +from thorlabs_xa.shared.params import TLMC_PZ_OutputWaveformLookupTableSample, TLMC_PZ_OutputWaveformParams @runtime_checkable class OutputWaveform(Protocol): - def set_output_waveform_lookup_table_sample_params(self, params: TLMC_PZ_OutputWaveformLoopTableSample) -> None: ... + def set_output_waveform_lookup_table_sample_params(self, params: TLMC_PZ_OutputWaveformLookupTableSample) -> None: ... def set_output_waveform_params(self, params: TLMC_PZ_OutputWaveformParams) -> None: ... diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo/slew_rate_params.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo/slew_rate_params.py new file mode 100644 index 0000000..5c2da18 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo/slew_rate_params.py @@ -0,0 +1,10 @@ +from typing import Protocol, runtime_checkable + +from thorlabs_xa.shared.params import TLMC_PZ_SlewRateParams + +@runtime_checkable +class SlewRateParams(Protocol): + + def get_slew_rate_params(self, max_wait_in_milliseconds: int) -> TLMC_PZ_SlewRateParams:... + + def set_slew_rate_params(self, parameters: TLMC_PZ_SlewRateParams) -> None:... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/__init__.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/conversion_factors.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/conversion_factors.py new file mode 100644 index 0000000..a2f076b --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/conversion_factors.py @@ -0,0 +1,6 @@ +from typing import Protocol, runtime_checkable + +@runtime_checkable +class ConversionFactors(Protocol): + + def get_conversion_factors(self, max_wait_in_milliseconds: int) -> int:... diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/drive_operations_params.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/drive_operations_params.py new file mode 100644 index 0000000..25011cb --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/drive_operations_params.py @@ -0,0 +1,10 @@ +from typing import Protocol, runtime_checkable + +from thorlabs_xa.shared.params import TLMC_PZIM_DriveOperationsParams + +@runtime_checkable +class DriveOperationsParams(Protocol): + + def get_drive_operations_params(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_DriveOperationsParams:... + + def set_drive_operations_params(self, params: TLMC_PZIM_DriveOperationsParams) -> None:... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/kcube_channel_enable.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/kcube_channel_enable.py new file mode 100644 index 0000000..8fbb3e7 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/kcube_channel_enable.py @@ -0,0 +1,10 @@ +from typing import Protocol, runtime_checkable + +from thorlabs_xa.shared.enums import TLMC_PZIM_KcubeChannelEnableMode + +@runtime_checkable +class KcubeChannelEnable(Protocol): + + def get_kcube_channel_enable(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeChannelEnableMode:... + + def set_kcube_channel_enable(self, channelMode : TLMC_PZIM_KcubeChannelEnableMode) -> None:... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/kcube_feedback_signal_params.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/kcube_feedback_signal_params.py new file mode 100644 index 0000000..e7d4b1f --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/kcube_feedback_signal_params.py @@ -0,0 +1,10 @@ +from typing import Protocol, runtime_checkable + +from thorlabs_xa.shared.params import TLMC_PZIM_KcubeFeedbackSignalParams + +@runtime_checkable +class KcubeFeedbackSignalParams(Protocol): + + def get_kcube_feedback_signal_params(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeFeedbackSignalParams:... + + def set_kcube_feedback_signal_params(self, params: TLMC_PZIM_KcubeFeedbackSignalParams) -> None:... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/kcube_io_trigger_params.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/kcube_io_trigger_params.py new file mode 100644 index 0000000..95da988 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/kcube_io_trigger_params.py @@ -0,0 +1,10 @@ +from typing import Protocol, runtime_checkable + +from thorlabs_xa.shared.params import TLMC_PZIM_KcubeIoTriggerParams + +@runtime_checkable +class KcubeIoTriggerParams(Protocol): + + def get_kcube_io_trigger_params(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeIoTriggerParams:... + + def set_kcube_io_trigger_params(self, params: TLMC_PZIM_KcubeIoTriggerParams) -> None:... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/kcube_jog_params.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/kcube_jog_params.py new file mode 100644 index 0000000..0204046 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/kcube_jog_params.py @@ -0,0 +1,10 @@ +from typing import Protocol, runtime_checkable + +from thorlabs_xa.shared.params import TLMC_PZIM_KcubeJogParams + +@runtime_checkable +class KcubeJogParams(Protocol): + + def get_kcube_jog_params(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeJogParams:... + + def set_kcube_jog_params(self, params: TLMC_PZIM_KcubeJogParams) -> None:... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/kcube_mmi_params.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/kcube_mmi_params.py new file mode 100644 index 0000000..04bf695 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/kcube_mmi_params.py @@ -0,0 +1,10 @@ +from typing import Protocol, runtime_checkable + +from thorlabs_xa.shared.params import TLMC_PZIM_KcubeMmiParams + +@runtime_checkable +class KcubeMmiParams(Protocol): + + def get_kcube_mmi_params(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeMmiParams:... + + def set_kcube_mmi_params(self, params: TLMC_PZIM_KcubeMmiParams) -> None:... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/kcube_trigger_params.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/kcube_trigger_params.py new file mode 100644 index 0000000..667fc5a --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/kcube_trigger_params.py @@ -0,0 +1,10 @@ +from typing import Protocol, runtime_checkable + +from thorlabs_xa.shared.params import TLMC_PZIM_KcubeTriggerParams + +@runtime_checkable +class KcubeTriggerParams(Protocol): + + def get_kcube_trigger_params(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeTriggerParams:... + + def set_kcube_trigger_params(self, params: TLMC_PZIM_KcubeTriggerParams) -> None:... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/limit_switch_params.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/limit_switch_params.py new file mode 100644 index 0000000..368f085 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/limit_switch_params.py @@ -0,0 +1,10 @@ +from typing import Protocol, runtime_checkable + +from thorlabs_xa.shared.params import TLMC_PZIM_LimitSwitchParams + +@runtime_checkable +class LimitSwitchParams(Protocol): + + def get_limit_switch_params(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_LimitSwitchParams:... + + def set_limit_switch_params(self, params: TLMC_PZIM_LimitSwitchParams) -> None:... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/position_counts.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/position_counts.py new file mode 100644 index 0000000..df7ba82 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/position_counts.py @@ -0,0 +1,10 @@ +from typing import Protocol, runtime_checkable + +from thorlabs_xa.shared.params import TLMC_PZIM_PositionCounts + +@runtime_checkable +class PositionCounts(Protocol): + + def get_position_counts(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_PositionCounts:... + + def set_position_counts(self, params: TLMC_PZIM_PositionCounts) -> None:... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/stage_select_params.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/stage_select_params.py new file mode 100644 index 0000000..6bdcc69 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/piezo_inertial_motor/stage_select_params.py @@ -0,0 +1,8 @@ +from typing import Protocol, runtime_checkable + +from thorlabs_xa.shared.params import TLMC_PZIM_StageSelectParams + +@runtime_checkable +class StageSelectParams(Protocol): + + def set_stage_select_params(self, params: TLMC_PZIM_StageSelectParams) -> None:... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/rack_identify.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/rack_identify.py new file mode 100644 index 0000000..05f861d --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/rack_identify.py @@ -0,0 +1,6 @@ +from typing import Protocol, runtime_checkable + +@runtime_checkable +class RackIdentify(Protocol): + + def rack_identify(self, channel: int) -> None: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/umc_status.py b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/umc_status.py new file mode 100644 index 0000000..d41ca4e --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/interfaces/device_features/umc_status.py @@ -0,0 +1,8 @@ +from typing import Protocol, runtime_checkable + +from thorlabs_xa.shared.params import TLMC_UmcStatus + +@runtime_checkable +class UmcStatus(Protocol): + + def get_umc_status(self, max_wait_in_milliseconds: int) -> TLMC_UmcStatus: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/native_sdks/c_native_functions.py b/Python/XA/xa_source/src/thorlabs_xa/native_sdks/c_native_functions.py index b3a530b..361f1df 100644 --- a/Python/XA/xa_source/src/thorlabs_xa/native_sdks/c_native_functions.py +++ b/Python/XA/xa_source/src/thorlabs_xa/native_sdks/c_native_functions.py @@ -11,9 +11,9 @@ from thorlabs_xa.native_sdks.native_functions import NativeFunctions -from thorlabs_xa.shared.enums import TLMC_AnalogMonitorNumber, TLMC_AuxIoPortMode, TLMC_AuxIoPortNumber, TLMC_BowIndex, TLMC_CalibrationState, TLMC_CurrentLoopScenario, TLMC_DigitalInput, TLMC_DigitalOutput, TLMC_EnableState, TLMC_EndOfMoveMessagesMode, TLMC_IoPortNumber, TLMC_IoPositionTriggerEnableState, TLMC_KcubeMmiLockState, TLMC_MoveDirection, TLMC_MoveMode, TLMC_OperatingMode, TLMC_PZ_PositionControlMode, TLMC_PZ_SetNanoTrakModeType, TLMC_PZ_StatusBit, TLMC_ParameterGroupId, TLMC_PositionLoopScenario, TLMC_RackBayNumber, TLMC_RackBayOccupiedState, TLMC_ResultCode, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_StatusItemId, TLMC_StopMode, TLMC_Unit, TLMC_UniversalStatusBit, TLMC_Wait -from thorlabs_xa.shared.c_params import C_TLMC_AdcInputs, C_TLMC_AnalogMonitorConfigurationParams, C_TLMC_ApiVersion, C_TLMC_ButtonParams, C_TLMC_ConnectedProductInfo, C_TLMC_CurrentLoopParams, C_TLMC_DcPidParams, C_TLMC_DeviceInfo, C_TLMC_FirmwareVersion, C_TLMC_GeneralMoveParams, C_TLMC_HardwareInfo, C_TLMC_HomeParams, C_TLMC_IoConfigurationParams, C_TLMC_IoTriggerParams, C_TLMC_JogParams, C_TLMC_JoystickParams, C_TLMC_JoystickSettingsParams, C_TLMC_KcubeIoTriggerParams, C_TLMC_KcubeMmiParams, C_TLMC_KcubePositionTriggerParams, C_TLMC_LcdDisplayParams, C_TLMC_LcdMoveParams, C_TLMC_LimitSwitchParams, C_TLMC_MonitorOutputParams, C_TLMC_MotorOutputParams, C_TLMC_MoveAbsoluteParams, C_TLMC_MoveRelativeParams, C_TLMC_PZ_KpcIoSettingsParams, C_TLMC_PZ_KpcIoTriggerParams, C_TLMC_PZ_KpcMmiParams, C_TLMC_PZ_LnnxControlLoopParams, C_TLMC_PZ_LnnxNotchFilterParams, C_TLMC_PZ_MaxOutputVoltageParams, C_TLMC_PZ_NanoTrakCircleDiameterLookupTableData, C_TLMC_PZ_NanoTrakCircleHomePositionParams, C_TLMC_PZ_NanoTrakCircleParams, C_TLMC_PZ_NanoTrakGainParams, C_TLMC_PZ_NanoTrakMode, C_TLMC_PZ_NanoTrakPhaseCompensationParams, C_TLMC_PZ_NanoTrakRangeParams, C_TLMC_PZ_NanoTrakStatus, C_TLMC_PZ_NanoTrakTnaIoSettings, C_TLMC_PZ_NanoTrakTrackThresholdParams, C_TLMC_PZ_OutputVoltageControlSourceParams, C_TLMC_PZ_OutputWaveformParams, C_TLMC_PZ_PositionLoopParams, C_TLMC_PZ_SlewRateParams, C_TLMC_PZ_StageInfoParams, C_TLMC_PZ_Status, C_TLMC_PositionLoopParams, C_TLMC_PotentiometerParams, C_TLMC_PowerParams, C_TLMC_ProfileModeParams, C_TLMC_RichResponse, C_TLMC_Setting, C_TLMC_StageAxisParams, C_TLMC_StatusItem, C_TLMC_StepperLoopParams, C_TLMC_StepperStatus, C_TLMC_TrackSettleParams, C_TLMC_TriggerParamsForDcBrushless, C_TLMC_TriggerParamsForStepper, C_TLMC_UniversalStatus, C_TLMC_VelocityParams -from thorlabs_xa.shared.params import TLMC_AdcInputs, TLMC_AnalogMonitorConfigurationParams, TLMC_ApiVersion, TLMC_ButtonParams, TLMC_ConnectedProductInfo, TLMC_CurrentLoopParams, TLMC_DeviceInfo, TLMC_FirmwareVersion, TLMC_GeneralMoveParams, TLMC_HardwareInfo, TLMC_HomeParams, TLMC_DcPidParams, TLMC_IoConfigurationParams, TLMC_IoTriggerParams, TLMC_JogParams, TLMC_JoystickParams, TLMC_JoystickSettingsParams, TLMC_KcubeIoTriggerParams, TLMC_KcubeMmiParams, TLMC_KcubePositionTriggerParams, TLMC_LcdDisplayParams, TLMC_LcdMoveParams, TLMC_LimitSwitchParams, TLMC_MonitorOutputParams, TLMC_MotorOutputParams, TLMC_MoveAbsoluteParams, TLMC_MoveRelativeParams, TLMC_PZ_KpcIoSettingsParams, TLMC_PZ_KpcIoTriggerParams, TLMC_PZ_KpcMmiParams, TLMC_PZ_LnnxControlLoopParams, TLMC_PZ_LnnxNotchFilterParams, TLMC_PZ_MaxOutputVoltageParams, TLMC_PZ_NanoTrakCircleDiameterLookupTableData, TLMC_PZ_NanoTrakCircleHomePositionParams, TLMC_PZ_NanoTrakEEPROMParams, TLMC_PZ_NanoTrakGainParams, TLMC_PZ_NanoTrakMode, TLMC_PZ_NanoTrakPhaseCompensationParams, TLMC_PZ_NanoTrakRangeParams, TLMC_PZ_NanoTrakStatus, TLMC_PZ_NanoTrakTnaIoSettings, TLMC_PZ_NanoTrakTrackThresholdParams, TLMC_PZ_OutputVoltageControlSourceParams, TLMC_PZ_OutputWaveformParams, TLMC_PZ_PositionLoopParams, TLMC_PZ_SlewRateParams, TLMC_PZ_StageInfoParams, TLMC_PZ_Status, TLMC_PositionLoopParams, TLMC_PotentiometerParams, TLMC_PowerParams, TLMC_ProfileModeParams, TLMC_RichResponse, TLMC_Setting, TLMC_StageAxisParams, TLMC_StatusItem, TLMC_StepperLoopParams, TLMC_StepperStatus, TLMC_TrackSettleParams, TLMC_TriggerParamsForDcBrushless, TLMC_TriggerParamsForStepper, TLMC_UniversalStatus, TLMC_Value, TLMC_VelocityParams, TLMC_PZ_NanoTrakCircleParams, TLMC_PZ_OutputWaveformLoopTableSample +from thorlabs_xa.shared.enums import TLMC_AnalogMonitorNumber, TLMC_AuxIoPortMode, TLMC_AuxIoPortNumber, TLMC_BowIndex, TLMC_CalibrationState, TLMC_CurrentLoopScenario, TLMC_DigitalInput, TLMC_DigitalOutput, TLMC_EnableState, TLMC_EndOfMoveMessagesMode, TLMC_IoPortNumber, TLMC_IoPositionTriggerEnableState, TLMC_KcubeMmiLockState, TLMC_MoveDirection, TLMC_MoveMode, TLMC_OperatingMode, TLMC_PZ_PositionControlMode, TLMC_PZ_SetNanoTrakModeType, TLMC_PZ_StatusBit, TLMC_PZIM_KcubeChannelEnableMode, TLMC_ParameterGroupId, TLMC_PositionLoopScenario, TLMC_RackBayNumber, TLMC_RackBayOccupiedState, TLMC_ResultCode, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_StatusItemId, TLMC_StopMode, TLMC_Unit, TLMC_UniversalStatusBit, TLMC_Wait +from thorlabs_xa.shared.c_params import C_TLMC_AdcInputs, C_TLMC_AnalogMonitorConfigurationParams, C_TLMC_ApiVersion, C_TLMC_ButtonParams, C_TLMC_ConnectedProductInfo, C_TLMC_CurrentLoopParams, C_TLMC_DcPidParams, C_TLMC_DeviceInfo, C_TLMC_FirmwareVersion, C_TLMC_GeneralMoveParams, C_TLMC_HardwareInfo, C_TLMC_HomeParams, C_TLMC_IoConfigurationParams, C_TLMC_IoTriggerParams, C_TLMC_JogParams, C_TLMC_JoystickParams, C_TLMC_JoystickSettingsParams, C_TLMC_KcubeIoTriggerParams, C_TLMC_KcubeMmiParams, C_TLMC_KcubePositionTriggerParams, C_TLMC_LcdDisplayParams, C_TLMC_LcdMoveParams, C_TLMC_LimitSwitchParams, C_TLMC_MonitorOutputParams, C_TLMC_MotorOutputParams, C_TLMC_MoveAbsoluteParams, C_TLMC_MoveRelativeParams, C_TLMC_PZ_KpcIoSettingsParams, C_TLMC_PZ_KpcIoTriggerParams, C_TLMC_PZ_KpcMmiParams, C_TLMC_PZ_LnnxControlLoopParams, C_TLMC_PZ_LnnxNotchFilterParams, C_TLMC_PZ_MaxOutputVoltageParams, C_TLMC_PZ_NanoTrakCircleDiameterLookupTableData, C_TLMC_PZ_NanoTrakCircleHomePositionParams, C_TLMC_PZ_NanoTrakCircleParams, C_TLMC_PZ_NanoTrakGainParams, C_TLMC_PZ_NanoTrakMode, C_TLMC_PZ_NanoTrakPhaseCompensationParams, C_TLMC_PZ_NanoTrakRangeParams, C_TLMC_PZ_NanoTrakStatus, C_TLMC_PZ_NanoTrakTnaIoSettings, C_TLMC_PZ_NanoTrakTrackThresholdParams, C_TLMC_PZ_OutputVoltageControlSourceParams, C_TLMC_PZ_OutputWaveformParams, C_TLMC_PZ_PositionLoopParams, C_TLMC_PZ_SlewRateParams, C_TLMC_PZ_StageInfoParams, C_TLMC_PZ_Status, C_TLMC_PZIM_DriveOperationsParams, C_TLMC_PZIM_KcubeFeedbackSignalParams, C_TLMC_PZIM_KcubeIoTriggerParams, C_TLMC_PZIM_KcubeJogParams, C_TLMC_PZIM_KcubeMmiParams, C_TLMC_PZIM_KcubeTriggerParams, C_TLMC_PZIM_LimitSwitchParams, C_TLMC_PZIM_PositionCounts, C_TLMC_PositionLoopParams, C_TLMC_PotentiometerParams, C_TLMC_PowerParams, C_TLMC_ProfileModeParams, C_TLMC_RichResponse, C_TLMC_Setting, C_TLMC_StageAxisParams, C_TLMC_StatusItem, C_TLMC_StepperLoopParams, C_TLMC_StepperStatus, C_TLMC_TrackSettleParams, C_TLMC_TriggerParamsForDcBrushless, C_TLMC_TriggerParamsForStepper, C_TLMC_UmcStatus, C_TLMC_UniversalStatus, C_TLMC_VelocityParams +from thorlabs_xa.shared.params import TLMC_AdcInputs, TLMC_AnalogMonitorConfigurationParams, TLMC_ApiVersion, TLMC_ButtonParams, TLMC_ConnectedProductInfo, TLMC_CurrentLoopParams, TLMC_DeviceInfo, TLMC_FirmwareVersion, TLMC_GeneralMoveParams, TLMC_HardwareInfo, TLMC_HomeParams, TLMC_DcPidParams, TLMC_IoConfigurationParams, TLMC_IoTriggerParams, TLMC_JogParams, TLMC_JoystickParams, TLMC_JoystickSettingsParams, TLMC_KcubeIoTriggerParams, TLMC_KcubeMmiParams, TLMC_KcubePositionTriggerParams, TLMC_LcdDisplayParams, TLMC_LcdMoveParams, TLMC_LimitSwitchParams, TLMC_MonitorOutputParams, TLMC_MotorOutputParams, TLMC_MoveAbsoluteParams, TLMC_MoveRelativeParams, TLMC_MoveSyncArray, TLMC_MoveSyncParams, TLMC_MoveSyncStartParams, TLMC_PZ_KpcIoSettingsParams, TLMC_PZ_KpcIoTriggerParams, TLMC_PZ_KpcMmiParams, TLMC_PZ_LnnxControlLoopParams, TLMC_PZ_LnnxNotchFilterParams, TLMC_PZ_MaxOutputVoltageParams, TLMC_PZ_NanoTrakCircleDiameterLookupTableData, TLMC_PZ_NanoTrakCircleHomePositionParams, TLMC_PZ_NanoTrakEEPROMParams, TLMC_PZ_NanoTrakGainParams, TLMC_PZ_NanoTrakMode, TLMC_PZ_NanoTrakPhaseCompensationParams, TLMC_PZ_NanoTrakRangeParams, TLMC_PZ_NanoTrakStatus, TLMC_PZ_NanoTrakTnaIoSettings, TLMC_PZ_NanoTrakTrackThresholdParams, TLMC_PZ_OutputVoltageControlSourceParams, TLMC_PZ_OutputWaveformLookupTableSample, TLMC_PZ_OutputWaveformParams, TLMC_PZ_PositionLoopParams, TLMC_PZ_SlewRateParams, TLMC_PZ_StageInfoParams, TLMC_PZ_Status, TLMC_PZIM_DriveOperationsParams, TLMC_PZIM_KcubeFeedbackSignalParams, TLMC_PZIM_KcubeIoTriggerParams, TLMC_PZIM_KcubeJogParams, TLMC_PZIM_KcubeMmiParams, TLMC_PZIM_KcubeTriggerParams, TLMC_PZIM_LimitSwitchParams, TLMC_PZIM_PositionCounts, TLMC_PZIM_StageSelectParams, TLMC_PositionLoopParams, TLMC_PotentiometerParams, TLMC_PowerParams, TLMC_ProfileModeParams, TLMC_RichResponse, TLMC_Setting, TLMC_StageAxisParams, TLMC_StatusItem, TLMC_StepperLoopParams, TLMC_StepperStatus, TLMC_TrackSettleParams, TLMC_TriggerParamsForDcBrushless, TLMC_TriggerParamsForStepper, TLMC_UmcStatus, TLMC_UniversalStatus, TLMC_Value, TLMC_VelocityParams, TLMC_PZ_NanoTrakCircleParams from thorlabs_xa.shared.xa_error_factory import XAErrorFactory @@ -25,7 +25,7 @@ class CNativeFunctions(NativeFunctions): NATIVELIBRARYFILENAME_WINDOWS = "tlmc_xa_native.dll" NATIVELIBRARYFILENAME_LINUX = "libtlmc_xa_native.so" - xa_lib: ctypes.CDLL | None = None + xa_lib: ctypes.CDLL def __init__(self) -> None: lib_name = self.pick_lib_name() @@ -139,16 +139,21 @@ def get_button_params(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_ return MapNativeToPython.button_params(c_button_params) + def get_bow_index(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_BowIndex: + c_bow_index = c_uint16(0) + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_GetBowIndex(handle, byref(c_bow_index), c_int64(max_wait_in_milliseconds))) + return TLMC_BowIndex(c_bow_index.value) + def get_calibration_state(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_CalibrationState: c_calibration_state = c_uint8(0) CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_GetCalibrationState(c_ulong(handle), byref(c_calibration_state), c_int64(max_wait_in_milliseconds))) - return TLMC_CalibrationState(c_calibration_state) + return TLMC_CalibrationState(c_calibration_state.value) - def get_bow_index(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_BowIndex: - c_bow_index = c_uint16(0) - CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_GetBowIndex(handle, byref(c_bow_index), c_int64(max_wait_in_milliseconds))) - return TLMC_BowIndex(c_bow_index.value) + def get_channel(self, handle: int, channel_number: int) -> int: + channel_handle = c_ulong() + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_GetChannel(c_ulong(handle), c_uint8(channel_number), byref(channel_handle))) + return channel_handle.value def get_connected_product(self, handle: int, max_length: int) -> str: c_buffer = ctypes.create_string_buffer(max_length) @@ -581,6 +586,11 @@ def get_trigger_params_for_stepper(self, handle: int, max_wait_in_milliseconds: CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_GetTriggerParamsForStepper(c_ulong(handle), byref(c_params), c_int64(max_wait_in_milliseconds))) return MapNativeToPython.trigger_params_for_stepper(c_params) + def get_umc_status(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_UmcStatus: + c_params = C_TLMC_UmcStatus() + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_GetUmcStatus(c_ulong(handle), byref(c_params), c_int64(max_wait_in_milliseconds))) + return MapNativeToPython.umc_status(c_params) + def get_universal_status(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_UniversalStatus: c_params = C_TLMC_UniversalStatus() CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_GetUniversalStatus(c_ulong(handle), byref(c_params), c_int64(max_wait_in_milliseconds))) @@ -621,6 +631,10 @@ def move_absolute(self, handle: int, move_mode: TLMC_MoveMode, position: int, ma self.move(handle, move_mode, position_val, max_wait_in_milliseconds) + def move_sync_start(self, handle: int, move_sync_start_params: TLMC_MoveSyncStartParams) -> None: + c_params = MapPythonToNative.move_sync_start_params(move_sync_start_params) + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_MoveSyncStart(c_ulong(handle), byref(c_params))) + def move_continuous(self, handle: int, direction: TLMC_MoveDirection, max_wait_in_milliseconds: int) -> None: if direction == TLMC_MoveDirection.Move_Direction_Reverse: move_mode = TLMC_MoveMode.TLMC_MoveMode_ContinuousReverse @@ -677,7 +691,7 @@ def pz_get_kpc_mmi_params(self, handle: int, max_wait_in_milliseconds: int) -> T CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZ_GetKpcMmiParams(c_ulong(handle), byref(c_params), c_int64(max_wait_in_milliseconds))) return MapNativeToPython.pz_kpc_mmi_params(c_params) - def pz_get_lnnx_control_loop_params(self, max_wait_in_milliseconds: int) -> TLMC_PZ_LnnxControlLoopParams: + def pz_get_lnnx_control_loop_params(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZ_LnnxControlLoopParams: c_params = C_TLMC_PZ_LnnxControlLoopParams() CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZ_GetLnnxControlLoopParams(c_ulong(handle), byref(c_params), c_int64(max_wait_in_milliseconds))) return MapNativeToPython.pz_lnnx_control_loop_params(c_params) @@ -797,6 +811,56 @@ def pz_get_status_bits(self, handle: int, max_wait_in_milliseconds: int) -> TLMC CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZ_GetStatusBits(c_ulong(handle), byref(c_status_bits), c_int64(max_wait_in_milliseconds))) return TLMC_PZ_StatusBit(c_status_bits.value) + def pzim_get_conversion_factors(self, handle: int, max_wait_in_milliseconds: int) -> int: + c_conversion_factors = c_uint32(0) + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZIM_GetConversionFactors(c_ulong(handle), byref(c_conversion_factors), c_int64(max_wait_in_milliseconds))) + return int(c_conversion_factors.value) + + def pzim_get_drive_operations_params(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZIM_DriveOperationsParams: + c_params = C_TLMC_PZIM_DriveOperationsParams() + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZIM_GetDriveOperationsParams(c_ulong(handle), byref(c_params), c_int64(max_wait_in_milliseconds))) + return MapNativeToPython.pzim_drive_operations_params(c_params) + + def pzim_get_kcube_channel_enable_mode(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeChannelEnableMode: + c_channel_mode = c_uint16(0) + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZIM_GetKcubeChannelEnableMode(c_ulong(handle), byref(c_channel_mode), c_int64(max_wait_in_milliseconds))) + return TLMC_PZIM_KcubeChannelEnableMode(c_channel_mode.value) + + def pzim_get_kcube_feedback_signal_params(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeFeedbackSignalParams: + c_params = C_TLMC_PZIM_KcubeFeedbackSignalParams() + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZIM_GetKcubeFeedbackSignalParams(c_ulong(handle), byref(c_params), c_int64(max_wait_in_milliseconds))) + return MapNativeToPython.pzim_kcube_feedback_signal_params(c_params) + + def pzim_get_kcube_io_trigger_params(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeIoTriggerParams: + c_params = C_TLMC_PZIM_KcubeIoTriggerParams() + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZIM_GetKcubeIoTriggerParams(c_ulong(handle), byref(c_params), c_int64(max_wait_in_milliseconds))) + return MapNativeToPython.pzim_kcube_io_trigger_params(c_params) + + def pzim_get_kcube_jog_params(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeJogParams: + c_params = C_TLMC_PZIM_KcubeJogParams() + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZIM_GetKcubeJogParams(c_ulong(handle), byref(c_params), c_int64(max_wait_in_milliseconds))) + return MapNativeToPython.pzim_kcube_jog_params(c_params) + + def pzim_get_kcube_mmi_params(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeMmiParams: + c_params = C_TLMC_PZIM_KcubeMmiParams() + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZIM_GetKcubeMmiParams(c_ulong(handle), byref(c_params), c_int64(max_wait_in_milliseconds))) + return MapNativeToPython.pzim_kcube_mmi_params(c_params) + + def pzim_get_kcube_trigger_params(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeTriggerParams: + c_params = C_TLMC_PZIM_KcubeTriggerParams() + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZIM_GetKcubeTriggerParams(c_ulong(handle), byref(c_params), c_int64(max_wait_in_milliseconds))) + return MapNativeToPython.pzim_kcube_trigger_params(c_params) + + def pzim_get_limit_switch_params(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZIM_LimitSwitchParams: + c_params = C_TLMC_PZIM_LimitSwitchParams() + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZIM_GetLimitSwitchParams(c_ulong(handle), byref(c_params), c_int64(max_wait_in_milliseconds))) + return MapNativeToPython.pzim_limit_switch_params(c_params) + + def pzim_get_position_counts(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZIM_PositionCounts: + c_params = C_TLMC_PZIM_PositionCounts() + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZIM_GetPositionCounts(c_ulong(handle), byref(c_params), c_int64(max_wait_in_milliseconds))) + return MapNativeToPython.pzim_position_counts(c_params) + def pz_nano_trak_circle_to_home_position(self, handle: int) -> None: CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZ_NanoTrakMoveToCircleHomePosition(c_ulong(handle))) @@ -882,7 +946,7 @@ def pz_set_output_voltage_control_source_params(self, handle: int, params: TLMC_ c_params = MapPythonToNative.pz_output_voltage_control_source_params(params) CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZ_SetOutputVoltageControlSourceParams(c_ulong(handle), byref(c_params))) - def pz_set_output_waveform_loop_table_sample(self, handle: int, params: TLMC_PZ_OutputWaveformLoopTableSample) -> None: + def pz_set_output_waveform_loop_table_sample(self, handle: int, params: TLMC_PZ_OutputWaveformLookupTableSample) -> None: c_params = MapPythonToNative.pz_output_waveform_lookup_table_sample(params) CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZ_SetOutputWaveformLookupTableSample(c_ulong(handle), byref(c_params))) @@ -909,6 +973,46 @@ def pz_set_slew_rate_params(self, handle: int, params: TLMC_PZ_SlewRateParams) - def pz_set_zero(self, handle: int, max_wait_in_milliseconds: int) -> None: CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZ_SetZero(c_ulong(handle), c_int64(max_wait_in_milliseconds))) + def pzim_set_drive_operations_params(self, handle: int, params: TLMC_PZIM_DriveOperationsParams) -> None: + c_params = MapPythonToNative.pzim_drive_operations_params(params) + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZIM_SetDriveOperationsParams(c_ulong(handle), byref(c_params))) + + def pzim_set_kcube_channel_enable_mode(self, handle: int, channelMode: TLMC_PZIM_KcubeChannelEnableMode) -> None: + c_channelMode = c_uint16(channelMode) + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZIM_SetKcubeChannelEnableMode(c_ulong(handle), byref(c_channelMode))) + + def pzim_set_kcube_feedback_signal_params(self, handle: int, params: TLMC_PZIM_KcubeFeedbackSignalParams) -> None: + c_params = MapPythonToNative.pzim_kcube_feedback_signal_params(params) + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZIM_SetKcubeFeedbackSignalParams(c_ulong(handle), byref(c_params))) + + def pzim_set_kcube_io_trigger_params(self, handle: int, params: TLMC_PZIM_KcubeIoTriggerParams) -> None: + c_params = MapPythonToNative.pzim_kcube_io_trigger_params(params) + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZIM_SetKcubeIoTriggerParams(c_ulong(handle), byref(c_params))) + + def pzim_set_kcube_jog_params(self, handle: int, params: TLMC_PZIM_KcubeJogParams) -> None: + c_params = MapPythonToNative.pzim_kcube_jog_params(params) + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZIM_SetKcubeJogParams(c_ulong(handle), byref(c_params))) + + def pzim_set_kcube_mmi_params(self, handle: int, params: TLMC_PZIM_KcubeMmiParams) -> None: + c_params = MapPythonToNative.pzim_kcube_mmi_params(params) + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZIM_SetKcubeMmiParams(c_ulong(handle), byref(c_params))) + + def pzim_set_kcube_trigger_params(self, handle: int, params: TLMC_PZIM_KcubeTriggerParams) -> None: + c_params = MapPythonToNative.pzim_kcube_trigger_params(params) + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZIM_SetKcubeTriggerParams(c_ulong(handle), byref(c_params))) + + def pzim_set_limit_switch_params(self, handle: int, params: TLMC_PZIM_LimitSwitchParams) -> None: + c_params = MapPythonToNative.pzim_limit_switch_params(params) + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZIM_SetLimitSwitchParams(c_ulong(handle), byref(c_params))) + + def pzim_set_position_counts(self, handle: int, params: TLMC_PZIM_PositionCounts) -> None: + c_params = MapPythonToNative.pzim_position_counts(params) + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZIM_SetPositionCounts(c_ulong(handle), byref(c_params))) + + def pzim_set_stage_select_params(self, handle: int, params: TLMC_PZIM_StageSelectParams) -> None: + c_params = MapPythonToNative.pzim_stage_select_params(params) + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZIM_SetStageSelectParams(c_ulong(handle), byref(c_params))) + def pz_start_output_waveform(self, handle: int) -> None: CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_PZ_StartOutputWaveform(c_ulong(handle))) @@ -943,7 +1047,7 @@ def set_analog_monitor_configuration_params(self, handle: int, monitor_number: T c_ulong(handle), c_uint16(int(monitor_number)), byref(c_params))) def set_aux_io_port_mode(self, handle: int, port_number: TLMC_AuxIoPortNumber, port_mode: TLMC_AuxIoPortMode) -> None: - CNativeFunctions.wrap_error_code(self.xa_lib.SetAuxIoPortMode(c_ulong(handle), c_uint16(int(port_number)), c_uint16(int(port_mode)))) + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_SetAuxIoPortMode(c_ulong(handle), c_uint16(int(port_number)), c_uint16(int(port_mode)))) def set_aux_io_software_states(self, handle: int, software_states: int) -> None: CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_SetAuxIoSoftwareStates(c_ulong(handle), c_uint16(software_states))) @@ -1064,6 +1168,14 @@ def set_move_relative_params(self, handle: int, params: TLMC_MoveRelativeParams) c_params = MapPythonToNative.move_relative_params(params) CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_SetMoveRelativeParams(c_ulong(handle), byref(c_params))) + def set_move_sync_array(self, handle: int, params: TLMC_MoveSyncArray) -> None: + c_params = MapPythonToNative.move_sync_array(params) + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_SetMoveSyncArray(c_ulong(handle), byref(c_params))) + + def set_move_sync_params(self, handle: int, params: TLMC_MoveSyncParams) -> None: + c_params = MapPythonToNative.move_sync_params(params) + CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_SetMoveSyncParams(c_ulong(handle), byref(c_params))) + def set_position_counter(self, handle: int, position_counter: int) -> None: c_position_counter = c_int32(position_counter) CNativeFunctions.wrap_error_code(self.xa_lib.TLMC_SetPositionCounter(c_ulong(handle), c_position_counter)) diff --git a/Python/XA/xa_source/src/thorlabs_xa/native_sdks/native_functions.py b/Python/XA/xa_source/src/thorlabs_xa/native_sdks/native_functions.py index 1d979bc..3928af6 100644 --- a/Python/XA/xa_source/src/thorlabs_xa/native_sdks/native_functions.py +++ b/Python/XA/xa_source/src/thorlabs_xa/native_sdks/native_functions.py @@ -1,7 +1,7 @@ from typing import Any, List, Mapping, Optional, Protocol, runtime_checkable -from thorlabs_xa.shared.enums import TLMC_AnalogMonitorNumber, TLMC_AuxIoPortMode, TLMC_AuxIoPortNumber, TLMC_BowIndex, TLMC_CalibrationState, TLMC_CurrentLoopScenario, TLMC_DigitalInput, TLMC_DigitalOutput, TLMC_EnableState, TLMC_EndOfMoveMessagesMode, TLMC_IoPortNumber, TLMC_IoPositionTriggerEnableState, TLMC_KcubeMmiLockState, TLMC_MoveDirection, TLMC_MoveMode, TLMC_OperatingMode, TLMC_PZ_PositionControlMode, TLMC_PZ_SetNanoTrakModeType, TLMC_PZ_StatusBit, TLMC_ParameterGroupId, TLMC_PositionLoopScenario, TLMC_RackBayNumber, TLMC_RackBayOccupiedState, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_StatusItemId, TLMC_StopMode, TLMC_Unit, TLMC_UniversalStatusBit -from thorlabs_xa.shared.params import TLMC_AdcInputs, TLMC_AnalogMonitorConfigurationParams, TLMC_ApiVersion, TLMC_ButtonParams, TLMC_ConnectedProductInfo, TLMC_CurrentLoopParams, TLMC_DcPidParams, TLMC_DeviceInfo, TLMC_FirmwareVersion, TLMC_GeneralMoveParams, TLMC_HardwareInfo, TLMC_HomeParams, TLMC_IoConfigurationParams, TLMC_IoTriggerParams, TLMC_JogParams, TLMC_JoystickParams, TLMC_JoystickSettingsParams, TLMC_KcubeIoTriggerParams, TLMC_KcubeMmiParams, TLMC_KcubePositionTriggerParams, TLMC_LcdDisplayParams, TLMC_LcdMoveParams, TLMC_LimitSwitchParams, TLMC_MonitorOutputParams, TLMC_MotorOutputParams, TLMC_MoveAbsoluteParams, TLMC_MoveRelativeParams, TLMC_PZ_KpcIoSettingsParams, TLMC_PZ_KpcIoTriggerParams, TLMC_PZ_KpcMmiParams, TLMC_PZ_LnnxControlLoopParams, TLMC_PZ_LnnxNotchFilterParams, TLMC_PZ_MaxOutputVoltageParams, TLMC_PZ_NanoTrakCircleDiameterLookupTableData, TLMC_PZ_NanoTrakCircleHomePositionParams, TLMC_PZ_NanoTrakCircleParams, TLMC_PZ_NanoTrakEEPROMParams, TLMC_PZ_NanoTrakGainParams, TLMC_PZ_NanoTrakMode, TLMC_PZ_NanoTrakPhaseCompensationParams, TLMC_PZ_NanoTrakRangeParams, TLMC_PZ_NanoTrakStatus, TLMC_PZ_NanoTrakTnaIoSettings, TLMC_PZ_NanoTrakTrackThresholdParams, TLMC_PZ_OutputVoltageControlSourceParams, TLMC_PZ_OutputWaveformLoopTableSample, TLMC_PZ_OutputWaveformParams, TLMC_PZ_PositionLoopParams, TLMC_PZ_SlewRateParams, TLMC_PZ_StageInfoParams, TLMC_PZ_Status, TLMC_PositionLoopParams, TLMC_PotentiometerParams, TLMC_PowerParams, TLMC_ProfileModeParams, TLMC_RichResponse, TLMC_Setting, TLMC_StageAxisParams, TLMC_StatusItem, TLMC_StepperLoopParams, TLMC_StepperStatus, TLMC_TrackSettleParams, TLMC_TriggerParamsForDcBrushless, TLMC_TriggerParamsForStepper, TLMC_UniversalStatus, TLMC_Value, TLMC_VelocityParams +from thorlabs_xa.shared.enums import TLMC_AnalogMonitorNumber, TLMC_AuxIoPortMode, TLMC_AuxIoPortNumber, TLMC_BowIndex, TLMC_CalibrationState, TLMC_CurrentLoopScenario, TLMC_DigitalInput, TLMC_DigitalOutput, TLMC_EnableState, TLMC_EndOfMoveMessagesMode, TLMC_IoPortNumber, TLMC_IoPositionTriggerEnableState, TLMC_KcubeMmiLockState, TLMC_MoveDirection, TLMC_MoveMode, TLMC_OperatingMode, TLMC_PZ_PositionControlMode, TLMC_PZ_SetNanoTrakModeType, TLMC_PZ_StatusBit, TLMC_PZIM_KcubeChannelEnableMode, TLMC_ParameterGroupId, TLMC_PositionLoopScenario, TLMC_RackBayNumber, TLMC_RackBayOccupiedState, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_StatusItemId, TLMC_StopMode, TLMC_Unit, TLMC_UniversalStatusBit +from thorlabs_xa.shared.params import TLMC_AdcInputs, TLMC_AnalogMonitorConfigurationParams, TLMC_ApiVersion, TLMC_ButtonParams, TLMC_ConnectedProductInfo, TLMC_CurrentLoopParams, TLMC_DcPidParams, TLMC_DeviceInfo, TLMC_FirmwareVersion, TLMC_GeneralMoveParams, TLMC_HardwareInfo, TLMC_HomeParams, TLMC_IoConfigurationParams, TLMC_IoTriggerParams, TLMC_JogParams, TLMC_JoystickParams, TLMC_JoystickSettingsParams, TLMC_KcubeIoTriggerParams, TLMC_KcubeMmiParams, TLMC_KcubePositionTriggerParams, TLMC_LcdDisplayParams, TLMC_LcdMoveParams, TLMC_LimitSwitchParams, TLMC_MonitorOutputParams, TLMC_MotorOutputParams, TLMC_MoveAbsoluteParams, TLMC_MoveRelativeParams, TLMC_MoveSyncArray, TLMC_MoveSyncParams, TLMC_MoveSyncStartParams, TLMC_PZ_KpcIoSettingsParams, TLMC_PZ_KpcIoTriggerParams, TLMC_PZ_KpcMmiParams, TLMC_PZ_LnnxControlLoopParams, TLMC_PZ_LnnxNotchFilterParams, TLMC_PZ_MaxOutputVoltageParams, TLMC_PZ_NanoTrakCircleDiameterLookupTableData, TLMC_PZ_NanoTrakCircleHomePositionParams, TLMC_PZ_NanoTrakCircleParams, TLMC_PZ_NanoTrakEEPROMParams, TLMC_PZ_NanoTrakGainParams, TLMC_PZ_NanoTrakMode, TLMC_PZ_NanoTrakPhaseCompensationParams, TLMC_PZ_NanoTrakRangeParams, TLMC_PZ_NanoTrakStatus, TLMC_PZ_NanoTrakTnaIoSettings, TLMC_PZ_NanoTrakTrackThresholdParams, TLMC_PZ_OutputVoltageControlSourceParams, TLMC_PZ_OutputWaveformLookupTableSample, TLMC_PZ_OutputWaveformParams, TLMC_PZ_PositionLoopParams, TLMC_PZ_SlewRateParams, TLMC_PZ_StageInfoParams, TLMC_PZ_Status, TLMC_PZIM_DriveOperationsParams, TLMC_PZIM_KcubeFeedbackSignalParams, TLMC_PZIM_KcubeIoTriggerParams, TLMC_PZIM_KcubeJogParams, TLMC_PZIM_KcubeMmiParams, TLMC_PZIM_KcubeTriggerParams, TLMC_PZIM_LimitSwitchParams, TLMC_PZIM_PositionCounts, TLMC_PZIM_StageSelectParams, TLMC_PositionLoopParams, TLMC_PotentiometerParams, TLMC_PowerParams, TLMC_ProfileModeParams, TLMC_RichResponse, TLMC_Setting, TLMC_StageAxisParams, TLMC_StatusItem, TLMC_StepperLoopParams, TLMC_StepperStatus, TLMC_TrackSettleParams, TLMC_TriggerParamsForDcBrushless, TLMC_TriggerParamsForStepper, TLMC_UmcStatus, TLMC_UniversalStatus, TLMC_Value, TLMC_VelocityParams @runtime_checkable class NativeFunctions(Protocol): @@ -40,6 +40,8 @@ def get_calibration_state(self, handle: int, max_wait_in_milliseconds: int) -> T def get_bow_index(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_BowIndex: ... + def get_channel(self, handle: int, channel_number: int) -> int: ... + def get_connected_product(self, handle: int, max_length: int) -> str: ... def get_connected_product_info(self, handle: int) -> TLMC_ConnectedProductInfo: ... @@ -152,6 +154,8 @@ def get_trigger_params_for_dc_brushless(self, handle: int, max_wait_in_milliseco def get_trigger_params_for_stepper(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_TriggerParamsForStepper: ... + def get_umc_status(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_UmcStatus: ... + def get_universal_status(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_UniversalStatus: ... def get_universal_status_bits(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_UniversalStatusBit: ... @@ -174,6 +178,8 @@ def move_jog(self, handle: int, direction: TLMC_MoveDirection, max_wait_in_milli def move_relative(self, handle: int, move_mode: TLMC_MoveMode, step_size: int, max_wait_in_milliseconds: int) -> None: ... + def move_sync_start(self, handle: int, move_sync_start_params: TLMC_MoveSyncStartParams) -> None: ... + def open(self, device: str, transport_type: str, operating_mode: TLMC_OperatingMode) -> int: ... def persist_params(self, handle: int, parameter_group_id: TLMC_ParameterGroupId) -> None: ... @@ -184,7 +190,7 @@ def pz_get_kpc_io_trigger_params(self, handle: int, max_wait_in_milliseconds: in def pz_get_kpc_mmi_params(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZ_KpcMmiParams: ... - def pz_get_lnnx_control_loop_params(self, max_wait_in_milliseconds: int) -> TLMC_PZ_LnnxControlLoopParams: ... + def pz_get_lnnx_control_loop_params(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZ_LnnxControlLoopParams: ... def pz_get_lnnx_notch_filter_params(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZ_LnnxNotchFilterParams: ... @@ -232,10 +238,32 @@ def pz_get_status(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZ_S def pz_get_status_bits(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZ_StatusBit: ... + def pzim_get_conversion_factors(self, handle: int, max_wait_in_milliseconds: int) -> int: ... + + def pzim_get_drive_operations_params(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZIM_DriveOperationsParams: ... + + def pzim_get_kcube_channel_enable_mode(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeChannelEnableMode: ... + + def pzim_get_kcube_feedback_signal_params(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeFeedbackSignalParams: ... + + def pzim_get_kcube_io_trigger_params(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeIoTriggerParams: ... + + def pzim_get_kcube_jog_params(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeJogParams: ... + + def pzim_get_kcube_mmi_params(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeMmiParams: ... + + def pzim_get_kcube_trigger_params(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeTriggerParams: ... + + def pzim_get_limit_switch_params(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZIM_LimitSwitchParams: ... + + def pzim_get_position_counts(self, handle: int, max_wait_in_milliseconds: int) -> TLMC_PZIM_PositionCounts: ... + def pz_nano_trak_circle_to_home_position(self, handle: int) -> None: ... def pz_nano_trak_tia_self_calibrate(self, handle: int) -> None: ... + + def pz_set_kpc_io_settings_params(self, handle: int, params: TLMC_PZ_KpcIoSettingsParams) -> None: ... def pz_set_kpc_io_trigger_params(self, handle: int, params: TLMC_PZ_KpcIoTriggerParams) -> None: ... @@ -276,7 +304,7 @@ def pz_set_output_voltage(self, handle: int, new_output_voltage: int) -> None: . def pz_set_output_voltage_control_source_params(self, handle: int, params: TLMC_PZ_OutputVoltageControlSourceParams) -> None: ... - def pz_set_output_waveform_loop_table_sample(self, handle: int, params: TLMC_PZ_OutputWaveformLoopTableSample) -> None: ... + def pz_set_output_waveform_loop_table_sample(self, handle: int, params: TLMC_PZ_OutputWaveformLookupTableSample) -> None: ... def pz_set_output_waveform_params(self, handle: int, params: TLMC_PZ_OutputWaveformParams) -> None: ... @@ -289,6 +317,26 @@ def pz_set_position_loop_params(self, handle: int, params: TLMC_PZ_PositionLoopP def pz_set_slew_rate_params(self, handle: int, params: TLMC_PZ_SlewRateParams) -> None: ... def pz_set_zero(self, handle: int, max_wait_in_milliseconds: int) -> None: ... + + def pzim_set_drive_operations_params(self, handle: int, params: TLMC_PZIM_DriveOperationsParams) -> None: ... + + def pzim_set_kcube_channel_enable_mode(self, handle: int, channelMode: TLMC_PZIM_KcubeChannelEnableMode) -> None: ... + + def pzim_set_kcube_feedback_signal_params(self, handle: int, params: TLMC_PZIM_KcubeFeedbackSignalParams) -> None: ... + + def pzim_set_kcube_io_trigger_params(self, handle: int, params: TLMC_PZIM_KcubeIoTriggerParams) -> None: ... + + def pzim_set_kcube_jog_params(self, handle: int, params: TLMC_PZIM_KcubeJogParams) -> None: ... + + def pzim_set_kcube_mmi_params(self, handle: int, params: TLMC_PZIM_KcubeMmiParams) -> None: ... + + def pzim_set_kcube_trigger_params(self, handle: int, params: TLMC_PZIM_KcubeTriggerParams) -> None: ... + + def pzim_set_limit_switch_params(self, handle: int, params: TLMC_PZIM_LimitSwitchParams) -> None: ... + + def pzim_set_position_counts(self, handle: int, params: TLMC_PZIM_PositionCounts) -> None: ... + + def pzim_set_stage_select_params(self, handle: int, params: TLMC_PZIM_StageSelectParams) -> None: ... def pz_start_output_waveform(self, handle: int) -> None: ... @@ -368,6 +416,10 @@ def set_jog_params(self, handle: int, params: TLMC_JogParams) -> None: ... def set_monitor_output_params(self, handle: int, params: TLMC_MonitorOutputParams) -> None: ... + def set_move_sync_array(self, handle: int, params: TLMC_MoveSyncArray) -> None: ... + + def set_move_sync_params(self, handle: int, params: TLMC_MoveSyncParams) -> None: ... + def set_move_relative_params(self, handle: int, params: TLMC_MoveRelativeParams) -> None: ... def set_position_counter(self, handle: int, position_counter: int) -> None: ... diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/bbd30x.py b/Python/XA/xa_source/src/thorlabs_xa/products/bbd30x.py new file mode 100644 index 0000000..bdfd2e0 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/products/bbd30x.py @@ -0,0 +1,169 @@ +from typing import List + +from thorlabs_xa.interfaces.device_feature_groups.bbd30x_feature_group import Bbd30xFeatureGroup + +from thorlabs_xa.interfaces.device_features.analog_monitor_configuration_params import AnalogMonitorConfigurationParams +from thorlabs_xa.interfaces.device_features.aux_io_configuration_params import AuxIoConfigurationParams +from thorlabs_xa.interfaces.device_features.digital_input_states import DigitalInputStates +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.io_configuration_params import IoConfigurationParams +from thorlabs_xa.interfaces.device_features.lcd_display_params import LcdDisplayParams +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move_sync_array import MoveSyncArray +from thorlabs_xa.interfaces.device_features.move_sync_params import MoveSyncParams +from thorlabs_xa.interfaces.device_features.move_sync_start import MoveSyncStart +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.rack_identify import RackIdentify +from thorlabs_xa.interfaces.device_features.rack_bay_occupied_state import RackBayOccupiedState +from thorlabs_xa.interfaces.device_features.settings import Settings + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.shared.params import TLMC_DeviceInfo + +from thorlabs_xa.shared.enums import TLMC_AnalogMonitorNumber, TLMC_AuxIoPortMode, TLMC_AuxIoPortNumber, TLMC_DigitalInput, TLMC_DigitalOutput, TLMC_IoPortNumber, TLMC_ParameterGroupId, TLMC_RackBayNumber, TLMC_RackBayOccupiedState, TLMC_SettingStringFormat +from thorlabs_xa.shared.params import TLMC_AnalogMonitorConfigurationParams, TLMC_FirmwareVersion, TLMC_HardwareInfo, TLMC_IoConfigurationParams, TLMC_LcdDisplayParams, TLMC_MoveSyncArray, TLMC_MoveSyncParams, TLMC_MoveSyncStartParams, TLMC_Setting +from thorlabs_xa.shared.device import Device + +class Bbd30x(Device, + AnalogMonitorConfigurationParams, + AuxIoConfigurationParams, + DigitalInputStates, + DigitalOutputStates, + Disconnect, + FirmwareVersionInfo, + HardwareInfo, + IoConfigurationParams, + LcdDisplayParams, + LoadParams, + MoveSyncArray, + MoveSyncParams, + MoveSyncStart, + PersistParams, + RackIdentify, + RackBayOccupiedState, + Settings): + + def __init__(self, device_handle: int, device_info: TLMC_DeviceInfo, feature_group: Bbd30xFeatureGroup, native_functions: NativeFunctions) -> None: + + super().__init__(device_handle, device_info, native_functions) + + self.feature_group = feature_group + + def get_analog_monitor_configuration_params(self, monitor_number: TLMC_AnalogMonitorNumber, max_wait_in_milliseconds: int) -> TLMC_AnalogMonitorConfigurationParams: + + return self.feature_group.analog_monitor_configuration_params_feature.get_analog_monitor_configuration_params(monitor_number, max_wait_in_milliseconds) + + def set_analog_monitor_configuration_params(self, monitor_number: TLMC_AnalogMonitorNumber, params: TLMC_AnalogMonitorConfigurationParams) -> None: + + self.feature_group.analog_monitor_configuration_params_feature.set_analog_monitor_configuration_params(monitor_number, params) + + def get_aux_io_port_mode(self, port_number: TLMC_AuxIoPortNumber, max_wait_in_milliseconds: int) -> TLMC_AuxIoPortMode: + + return self.feature_group.aux_io_configuration_params_feature.get_aux_io_port_mode(port_number, max_wait_in_milliseconds) + + def get_aux_io_software_states(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.aux_io_configuration_params_feature.get_aux_io_software_states(max_wait_in_milliseconds) + + def set_aux_io_port_mode(self, port_number: TLMC_AuxIoPortNumber, port_mode: TLMC_AuxIoPortMode) -> None: + + self.feature_group.aux_io_configuration_params_feature.set_aux_io_port_mode(port_number, port_mode) + + def set_aux_io_software_states(self, software_states: int) -> None: + + self.feature_group.aux_io_configuration_params_feature.set_aux_io_software_states(software_states) + + def get_digital_input_states(self, max_wait_in_milliseconds: int) -> TLMC_DigitalInput: + + return self.feature_group.digital_input_states_feature.get_digital_input_states(max_wait_in_milliseconds) + + def get_digital_output_states(self, max_wait_in_milliseconds: int) -> TLMC_DigitalOutput: + + return self.feature_group.digital_output_states_feature.get_digital_output_states(max_wait_in_milliseconds) + + def set_digital_output_states(self, params: TLMC_DigitalOutput) -> None: + + self.feature_group.digital_output_states_feature.set_digital_output_states(params) + + def disconnect(self) -> None: + + self.feature_group.disconnect_feature.disconnect() + + def get_firmware_version_info(self, max_wait_in_milliseconds: int) -> tuple[TLMC_FirmwareVersion, TLMC_FirmwareVersion]: + + return self.feature_group.firmware_version_info_feature.get_firmware_version_info(max_wait_in_milliseconds) + + def get_hardware_info(self, max_wait_in_milliseconds: int) -> TLMC_HardwareInfo: + + return self.feature_group.hardware_info_feature.get_hardware_info(max_wait_in_milliseconds) + + def get_io_configuration_number_of_ports_supported(self) -> int: + + return self.feature_group.io_configuration_params_feature.get_io_configuration_number_of_ports_supported() + + def get_io_configuration_params(self, port_number: TLMC_IoPortNumber, max_wait_in_milliseconds: int) -> TLMC_IoConfigurationParams: + + return self.feature_group.io_configuration_params_feature.get_io_configuration_params(port_number, max_wait_in_milliseconds) + + def set_io_configuration_params(self, handle: int, port_number: TLMC_IoPortNumber, params: TLMC_IoConfigurationParams) -> None: + + self.feature_group.io_configuration_params_feature.set_io_configuration_params(handle, port_number, params) + + def get_lcd_display_params(self, max_wait_in_milliseconds: int) -> TLMC_LcdDisplayParams: + + return self.feature_group.lcd_display_params_feature.get_lcd_display_params(max_wait_in_milliseconds) + + def set_lcd_display_params(self, params: TLMC_LcdDisplayParams) -> None: + + self.feature_group.lcd_display_params_feature.set_lcd_display_params(params) + + def load_params(self) -> None: + + self.feature_group.load_params_feature.load_params() + + def set_move_sync_array(self, parameters: TLMC_MoveSyncArray) -> None: + + self.feature_group.move_sync_array_feature.set_move_sync_array(parameters) + + def set_move_sync_params(self, parameters: TLMC_MoveSyncParams) -> None: + + self.feature_group.move_sync_params_feature.set_move_sync_params(parameters) + + def move_sync_start(self, parameters: TLMC_MoveSyncStartParams) -> None: + + self.feature_group.move_sync_start_feature.move_sync_start(parameters) + + def persist_params(self, parameter_group_id: TLMC_ParameterGroupId) -> None: + + self.feature_group.persist_params_feature.persist_params(parameter_group_id) + + def rack_identify(self, channel: int) -> None: + + self.feature_group.rack_identify_feature.rack_identify(channel) + + def get_rack_bay_occupied_state(self, bay_number: TLMC_RackBayNumber, max_wait_in_milliseconds: int) -> TLMC_RackBayOccupiedState: + + return self.feature_group.rack_bay_occupied_state_feature.get_rack_bay_occupied_state(bay_number, max_wait_in_milliseconds) + + def get_setting(self, settings_name: str, max_wait_in_milliseconds: int) -> TLMC_Setting: + + return self.feature_group.settings_feature.get_setting(settings_name, max_wait_in_milliseconds) + + def get_setting_discrete_values(self, settings_name: str) -> str: + + return self.feature_group.settings_feature.get_setting_discrete_values(settings_name) + + def get_settings(self, setting_string_format: TLMC_SettingStringFormat, include_read_only_items: bool) -> str: + + return self.feature_group.settings_feature.get_settings(setting_string_format, include_read_only_items) + + def get_settings_items(self) -> List[TLMC_Setting]: + + return self.feature_group.settings_feature.get_settings_items() + + def set_settings(self, settings: str) -> None: + + self.feature_group.settings_feature.set_settings(settings) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/bbd30x_logical_channel.py b/Python/XA/xa_source/src/thorlabs_xa/products/bbd30x_logical_channel.py new file mode 100644 index 0000000..9e4ca5a --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/products/bbd30x_logical_channel.py @@ -0,0 +1,363 @@ +from typing import List + +from thorlabs_xa.interfaces.device_feature_groups.bbd30x_logical_channel_feature_group import Bbd30xLogicalChannelFeatureGroup + +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.current_loop_params import CurrentLoopParams +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.end_of_move_messages_mode import EndOfMoveMessagesMode +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.io_position_trigger_enable_state import IoPositionTriggerEnableState +from thorlabs_xa.interfaces.device_features.io_trigger_params import IoTriggerParams +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.joystick_params import JoystickParams +from thorlabs_xa.interfaces.device_features.lcd_move_params import LcdMoveParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.motor_output_params import MotorOutputParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.position_loop_params import PositionLoopParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.track_settle_params import TrackSettleParams +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status import UniversalStatus +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.shared.params import TLMC_DeviceInfo, TLMC_PositionLoopParams + +from thorlabs_xa.shared.enums import TLMC_CurrentLoopScenario, TLMC_EnableState, TLMC_EndOfMoveMessagesMode, TLMC_IoPositionTriggerEnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_ParameterGroupId, TLMC_PositionLoopScenario, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_StatusItemId, TLMC_StopMode, TLMC_Unit, TLMC_UniversalStatusBit +from thorlabs_xa.shared.params import TLMC_ConnectedProductInfo, TLMC_CurrentLoopParams, TLMC_FirmwareVersion, TLMC_GeneralMoveParams, TLMC_HardwareInfo, TLMC_HomeParams, TLMC_IoTriggerParams, TLMC_JogParams, TLMC_JoystickParams, TLMC_LcdMoveParams, TLMC_LimitSwitchParams, TLMC_MotorOutputParams, TLMC_MoveAbsoluteParams, TLMC_MoveRelativeParams, TLMC_ProfileModeParams, TLMC_RichResponse, TLMC_Setting, TLMC_StageAxisParams, TLMC_StatusItem, TLMC_TrackSettleParams, TLMC_UniversalStatus, TLMC_VelocityParams +from thorlabs_xa.shared.device import Device + +class Bbd30xLogicalChannel(Device, + ConnectedProduct, + CurrentLoopParams, + EnableState, + EndOfMoveMessagesMode, + FirmwareVersionInfo, + GeneralMoveParams, + HardwareInfo, + Home, + HomeParams, + Identify, + IoPositionTriggerEnableState, + IoTriggerParams, + JogParams, + JoystickParams, + LcdMoveParams, + LimitSwitchParamsGetter, + LoadParams, + MotorOutputParams, + Move, + MoveAbsoluteParams, + MoveRelativeParams, + PersistParams, + PositionCounter, + PositionLoopParams, + ProfileModeParams, + RestoreFactoryDefaults, + RichResponse, + Settings, + StageAxisParams, + StatusItems, + StatusMode, + StatusRequest, + Stop, + TrackSettleParams, + UnitConverter, + UniversalStatus, + UniversalStatusBits, + VelocityParams): + + def __init__(self, device_handle: int, device_info: TLMC_DeviceInfo, feature_group: Bbd30xLogicalChannelFeatureGroup, native_functions: NativeFunctions) -> None: + + super().__init__(device_handle, device_info, native_functions) + + self.feature_group = feature_group + + def get_connected_product_info(self) -> TLMC_ConnectedProductInfo: + + return self.feature_group.connected_product_feature.get_connected_product_info() + + def get_supported_connected_products(self) -> List[str]: + + return self.feature_group.connected_product_feature.get_supported_connected_products() + + def set_connected_product(self, product_name: str) -> None: + + self.feature_group.connected_product_feature.set_connected_product(product_name) + + def set_connected_product_info(self, product_info: TLMC_ConnectedProductInfo) -> None: + + self.feature_group.connected_product_feature.set_connected_product_info(product_info) + + def get_current_loop_params(self, scenario: TLMC_CurrentLoopScenario, max_wait_in_milliseconds: int) -> TLMC_CurrentLoopParams: + + return self.feature_group.current_loop_params_feature.get_current_loop_params(scenario, max_wait_in_milliseconds) + + def set_current_loop_params(self, scenario: TLMC_CurrentLoopScenario, parameters: TLMC_CurrentLoopParams) -> None: + + self.feature_group.current_loop_params_feature.set_current_loop_params(scenario, parameters) + + def get_enable_state(self, max_wait_in_milliseconds: int) -> TLMC_EnableState: + + return self.feature_group.enable_state_feature.get_enable_state(max_wait_in_milliseconds) + + def set_enable_state(self, enable_state: TLMC_EnableState) -> None: + + self.feature_group.enable_state_feature.set_enable_state(enable_state) + + def set_end_of_move_messages_mode(self, messages_mode: TLMC_EndOfMoveMessagesMode) -> None: + + self.feature_group.end_of_move_messages_mode_feature.set_end_of_move_messages_mode(messages_mode) + + def get_firmware_version_info(self, max_wait_in_milliseconds: int) -> tuple[TLMC_FirmwareVersion, TLMC_FirmwareVersion]: + + return self.feature_group.firmware_version_info_feature.get_firmware_version_info(max_wait_in_milliseconds) + + def get_general_move_params(self, max_wait_in_milliseconds: int) -> TLMC_GeneralMoveParams: + + return self.feature_group.general_move_params_feature.get_general_move_params(max_wait_in_milliseconds) + + def set_general_move_params(self, params: TLMC_GeneralMoveParams) -> None: + + self.feature_group.general_move_params_feature.set_general_move_params(params) + + def get_hardware_info(self, max_wait_in_milliseconds: int) -> TLMC_HardwareInfo: + + return self.feature_group.hardware_info_feature.get_hardware_info(max_wait_in_milliseconds) + + def home(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.home_feature.home(max_wait_in_milliseconds) + + def get_home_params(self, max_wait_in_milliseconds: int) -> TLMC_HomeParams: + + return self.feature_group.home_params_feature.get_home_params(max_wait_in_milliseconds) + + def set_home_params(self, params: TLMC_HomeParams) -> None: + + self.feature_group.home_params_feature.set_home_params(params) + + def identify(self) -> None: + + self.feature_group.identify_feature.identify() + + def get_io_position_trigger_enable_state(self, max_wait_in_milliseconds: int) -> TLMC_IoPositionTriggerEnableState: + + return self.feature_group.io_position_trigger_enable_state_feature.get_io_position_trigger_enable_state(max_wait_in_milliseconds) + + def set_io_position_trigger_enable_state(self, enable_state: TLMC_IoPositionTriggerEnableState, max_wait_in_milliseconds: int) -> None: + + self.feature_group.io_position_trigger_enable_state_feature.set_io_position_trigger_enable_state(enable_state, max_wait_in_milliseconds) + + def get_io_trigger_params(self, max_wait_in_milliseconds: int) -> TLMC_IoTriggerParams: + + return self.feature_group.io_trigger_params_feature.get_io_trigger_params(max_wait_in_milliseconds) + + def set_io_trigger_params(self, params: TLMC_IoTriggerParams) -> None: + + self.feature_group.io_trigger_params_feature.set_io_trigger_params(params) + + def get_jog_params(self, max_wait_in_milliseconds: int) -> TLMC_JogParams: + + return self.feature_group.jog_params_feature.get_jog_params(max_wait_in_milliseconds) + + def set_jog_params(self, params: TLMC_JogParams) -> None: + + self.feature_group.jog_params_feature.set_jog_params(params) + + def get_joystick_params(self, max_wait_in_milliseconds: int) -> TLMC_JoystickParams: + + return self.feature_group.joystick_params_feature.get_joystick_params(max_wait_in_milliseconds) + + def set_joystick_params(self, params: TLMC_JoystickParams) -> None: + + self.feature_group.joystick_params_feature.set_joystick_params(params) + + def get_lcd_move_params(self, max_wait_in_milliseconds: int) -> TLMC_LcdMoveParams: + + return self.feature_group.lcd_move_params_feature.get_lcd_move_params(max_wait_in_milliseconds) + + def set_lcd_move_params(self, params: TLMC_LcdMoveParams) -> None: + + self.feature_group.lcd_move_params_feature.set_lcd_move_params(params) + + def get_limit_switch_params(self, max_wait_in_milliseconds: int) -> TLMC_LimitSwitchParams: + + return self.feature_group.limit_switch_params_getter_feature.get_limit_switch_params(max_wait_in_milliseconds) + + def load_params(self) -> None: + + self.feature_group.load_params_feature.load_params() + + def get_motor_output_params(self, max_wait_in_milliseconds: int) -> TLMC_MotorOutputParams: + + return self.feature_group.motor_output_params_feature.get_motor_output_params(max_wait_in_milliseconds) + + def set_motor_output_params(self, params: TLMC_MotorOutputParams) -> None: + + self.feature_group.motor_output_params_feature.set_motor_output_params(params) + + def move(self, move_mode: TLMC_MoveMode, params: int, max_wait_in_milliseconds: int) -> None: + + self.feature_group.move_feature.move(move_mode, params, max_wait_in_milliseconds) + + def get_move_absolute_params(self, max_wait_in_milliseconds: int) -> TLMC_MoveAbsoluteParams: + + return self.feature_group.move_absolute_params_feature.get_move_absolute_params(max_wait_in_milliseconds) + + def set_move_absolute_params(self, params: TLMC_MoveAbsoluteParams) -> None: + + self.feature_group.move_absolute_params_feature.set_move_absolute_params(params) + + def get_move_relative_params(self, max_wait_in_milliseconds: int) -> TLMC_MoveRelativeParams: + + return self.feature_group.move_relative_params_feature.get_move_relative_params(max_wait_in_milliseconds) + + def set_move_relative_params(self, params: TLMC_MoveRelativeParams) -> None: + + self.feature_group.move_relative_params_feature.set_move_relative_params(params) + + def persist_params(self, parameter_group_id: TLMC_ParameterGroupId) -> None: + + self.feature_group.persist_params_feature.persist_params(parameter_group_id) + + def get_position_counter(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.position_counter_feature.get_position_counter(max_wait_in_milliseconds) + + def set_position_counter(self, new_position_counter: int) -> None: + + self.feature_group.position_counter_feature.set_position_counter(new_position_counter) + + def get_position_loop_params(self, scenario: TLMC_PositionLoopScenario, max_wait_in_milliseconds: int) -> TLMC_PositionLoopParams: + + return self.feature_group.position_loop_params_feature.get_position_loop_params(scenario, max_wait_in_milliseconds) + + def set_position_loop_params(self, scenario: TLMC_PositionLoopScenario, params: TLMC_PositionLoopParams) -> None: + + self.feature_group.position_loop_params_feature.set_position_loop_params(scenario, params) + + def get_profile_mode_params(self, max_wait_in_milliseconds: int) -> TLMC_ProfileModeParams: + + return self.feature_group.profile_mode_params_feature.get_profile_mode_params(max_wait_in_milliseconds) + + def set_profile_mode_params(self, params: TLMC_ProfileModeParams) -> None: + + self.feature_group.profile_mode_params_feature.set_profile_mode_params(params) + + def restore_factory_defaults(self) -> None: + + self.feature_group.restore_factory_defaults_feature.restore_factory_defaults() + + def get_rich_response(self) -> TLMC_RichResponse: + + return self.feature_group.rich_response_feature.get_rich_response() + + def get_setting(self, settings_name: str, max_wait_in_milliseconds: int) -> TLMC_Setting: + + return self.feature_group.settings_feature.get_setting(settings_name, max_wait_in_milliseconds) + + def get_setting_discrete_values(self, settings_name: str) -> str: + + return self.feature_group.settings_feature.get_setting_discrete_values(settings_name) + + def get_settings(self, setting_string_format: TLMC_SettingStringFormat, include_read_only_items: bool) -> str: + + return self.feature_group.settings_feature.get_settings(setting_string_format, include_read_only_items) + + def get_settings_items(self) -> List[TLMC_Setting]: + + return self.feature_group.settings_feature.get_settings_items() + + def set_settings(self, settings: str) -> None: + + self.feature_group.settings_feature.set_settings(settings) + + def get_stage_axis_params(self, max_wait_in_milliseconds: int) -> TLMC_StageAxisParams: + + return self.feature_group.stage_axis_params_feature.get_stage_axis_params(max_wait_in_milliseconds) + + def set_stage_axis_params(self, params: TLMC_StageAxisParams) -> None: + + self.feature_group.stage_axis_params_feature.set_stage_axis_params(params) + + def get_status_item(self, status_item_id: TLMC_StatusItemId) -> TLMC_StatusItem: + + return self.feature_group.status_items_feature.get_status_item(status_item_id) + + def get_status_item_count(self) -> int: + + return self.feature_group.status_items_feature.get_status_item_count() + + def get_status_items(self, start_index: int, number_of_items: int) -> List[TLMC_StatusItem]: + + return self.feature_group.status_items_feature.get_status_items(start_index, number_of_items) + + def set_status_mode(self, operating_mode: TLMC_OperatingMode) -> None: + + self.feature_group.status_mode_feature.set_status_mode(operating_mode) + + def request_status(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.status_request_feature.request_status(max_wait_in_milliseconds) + + def stop(self, stop_mode: TLMC_StopMode, max_wait_in_milliseconds: int) -> None: + + self.feature_group.stop_feature.stop(stop_mode, max_wait_in_milliseconds) + + def get_track_settle_params(self, max_wait_in_milliseconds: int) -> TLMC_TrackSettleParams: + + return self.feature_group.track_settle_params_feature.get_track_settle_params(max_wait_in_milliseconds) + + def set_track_settle_params(self, params: TLMC_TrackSettleParams) -> None: + + self.feature_group.track_settle_params_feature.set_track_settle_params(params) + + def convert_from_device_units_to_physical(self, scale_type: TLMC_ScaleType, device_value: int) -> tuple[float, TLMC_Unit]: + + return self.feature_group.unit_converter_feature.convert_from_device_units_to_physical(scale_type, device_value) + + def convert_from_physical_to_device(self, scale_type: TLMC_ScaleType, unit: TLMC_Unit, physical_value: int) -> int: + + return self.feature_group.unit_converter_feature.convert_from_physical_to_device(scale_type, unit, physical_value) + + def get_preferred_physical_unit(self, scale_type: TLMC_ScaleType) -> TLMC_Unit: + + return self.feature_group.unit_converter_feature.get_preferred_physical_unit(scale_type) + + def get_universal_status(self, max_wait_in_milliseconds: int) -> TLMC_UniversalStatus: + + return self.feature_group.universal_status_feature.get_universal_status(max_wait_in_milliseconds) + + def get_universal_status_bits(self, max_wait_in_milliseconds: int) -> TLMC_UniversalStatusBit: + + return self.feature_group.universal_status_bits_feature.get_universal_status_bits(max_wait_in_milliseconds) + + def get_velocity_params(self, max_wait_in_milliseconds: int) -> TLMC_VelocityParams: + + return self.feature_group.velocity_params_feature.get_velocity_params(max_wait_in_milliseconds) + + def set_velocity_params(self, params: TLMC_VelocityParams) -> None: + + self.feature_group.velocity_params_feature.set_velocity_params(params) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/bpc301.py b/Python/XA/xa_source/src/thorlabs_xa/products/bpc301.py new file mode 100644 index 0000000..ca1a573 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/products/bpc301.py @@ -0,0 +1,247 @@ +from typing import List + +from thorlabs_xa.interfaces.device_feature_groups.bpc301_feature_group import Bpc301FeatureGroup + +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.piezo.max_output_voltage_params import MaxOutputVoltageParams +from thorlabs_xa.interfaces.device_features.piezo.max_travel import MaxTravel +from thorlabs_xa.interfaces.device_features.piezo.output_voltage import OutputVoltage +from thorlabs_xa.interfaces.device_features.piezo.output_voltage_control_source_params import OutputVoltageControlSourceParams +from thorlabs_xa.interfaces.device_features.piezo.output_waveform import OutputWaveform +from thorlabs_xa.interfaces.device_features.piezo.piezo_status import PiezoStatus +from thorlabs_xa.interfaces.device_features.piezo.piezo_status_bits import PiezoStatusBits +from thorlabs_xa.interfaces.device_features.piezo.position import Position +from thorlabs_xa.interfaces.device_features.piezo.position_control_mode import PositionControlMode +from thorlabs_xa.interfaces.device_features.piezo.position_loop_params import PositionLoopParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.piezo.slew_rate_params import SlewRateParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.piezo.zero import Zero + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.shared.params import TLMC_DeviceInfo, TLMC_PZ_OutputWaveformLookupTableSample + +from thorlabs_xa.shared.enums import TLMC_DigitalOutput, TLMC_EnableState, TLMC_OperatingMode, TLMC_PZ_PositionControlMode, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_PZ_StatusBit, TLMC_StatusItemId, TLMC_Unit +from thorlabs_xa.shared.params import TLMC_FirmwareVersion, TLMC_HardwareInfo, TLMC_PZ_MaxOutputVoltageParams, TLMC_PZ_OutputVoltageControlSourceParams, TLMC_PZ_OutputWaveformParams, TLMC_PZ_PositionLoopParams, TLMC_Setting, TLMC_PZ_SlewRateParams, TLMC_PZ_Status, TLMC_StatusItem +from thorlabs_xa.shared.device import Device + +class Bpc301(Device, + DigitalOutputStates, + Disconnect, + EnableState, + FirmwareVersionInfo, + HardwareInfo, + Identify, + LoadParams, + MaxOutputVoltageParams, + MaxTravel, + OutputVoltage, + OutputVoltageControlSourceParams, + OutputWaveform, + PiezoStatus, + PiezoStatusBits, + Position, + PositionControlMode, + PositionLoopParams, + RestoreFactoryDefaults, + Settings, + SlewRateParams, + StatusItems, + StatusMode, + UnitConverter, + Zero): + + def __init__(self, device_handle: int, device_info: TLMC_DeviceInfo, feature_group: Bpc301FeatureGroup, native_functions: NativeFunctions) -> None: + + super().__init__(device_handle, device_info, native_functions) + + self.feature_group = feature_group + + def get_digital_output_states(self, max_wait_in_milliseconds: int) -> TLMC_DigitalOutput: + + return self.feature_group.digital_output_states_feature.get_digital_output_states(max_wait_in_milliseconds) + + def set_digital_output_states(self, params: TLMC_DigitalOutput) -> None: + + self.feature_group.digital_output_states_feature.set_digital_output_states(params) + + def disconnect(self) -> None: + + self.feature_group.disconnect_feature.disconnect() + + def get_enable_state(self, max_wait_in_milliseconds: int) -> TLMC_EnableState: + + return self.feature_group.enable_state_feature.get_enable_state(max_wait_in_milliseconds) + + def set_enable_state(self, enable_state: TLMC_EnableState) -> None: + + self.feature_group.enable_state_feature.set_enable_state(enable_state) + + def get_firmware_version_info(self, max_wait_in_milliseconds: int) -> tuple[TLMC_FirmwareVersion, TLMC_FirmwareVersion]: + + return self.feature_group.firmware_version_info_feature.get_firmware_version_info(max_wait_in_milliseconds) + + def get_hardware_info(self, max_wait_in_milliseconds: int) -> TLMC_HardwareInfo: + + return self.feature_group.hardware_info_feature.get_hardware_info(max_wait_in_milliseconds) + + def identify(self) -> None: + + self.feature_group.identify_feature.identify() + + def load_params(self) -> None: + + self.feature_group.load_params_feature.load_params() + + def get_max_output_voltage_params(self, max_wait_in_milliseconds: int) -> TLMC_PZ_MaxOutputVoltageParams: + + return self.feature_group.max_output_voltage_params_feature.get_max_output_voltage_params(max_wait_in_milliseconds) + + def set_max_output_voltage(self, max_output_voltage: int) -> None: + + self.feature_group.max_output_voltage_params_feature.set_max_output_voltage(max_output_voltage) + + def get_max_travel(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.max_travel_feature.get_max_travel(max_wait_in_milliseconds) + + def set_max_travel(self, max_travel: int) -> None: + + self.feature_group.max_travel_feature.set_max_travel(max_travel) + + def get_output_voltage(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.output_voltage_feature.get_output_voltage(max_wait_in_milliseconds) + + def set_output_voltage(self, output_voltage: int) -> None: + + self.feature_group.output_voltage_feature.set_output_voltage(output_voltage) + + def get_output_voltage_control_source_params(self, max_wait_in_milliseconds: int) -> TLMC_PZ_OutputVoltageControlSourceParams: + + return self.feature_group.output_voltage_control_source_params_feature.get_output_voltage_control_source_params(max_wait_in_milliseconds) + + def set_output_voltage_control_source_params(self, params: TLMC_PZ_OutputVoltageControlSourceParams) -> None: + + self.feature_group.output_voltage_control_source_params_feature.set_output_voltage_control_source_params(params) + + def set_output_waveform_lookup_table_sample_params(self, params: TLMC_PZ_OutputWaveformLookupTableSample) -> None: + + self.feature_group.output_waveform_feature.set_output_waveform_lookup_table_sample_params(params) + + def set_output_waveform_params(self, params: TLMC_PZ_OutputWaveformParams) -> None: + + self.feature_group.output_waveform_feature.set_output_waveform_params(params) + + def start_output_waveform(self) -> None: + + self.feature_group.output_waveform_feature.start_output_waveform() + + def stop_output_waveform(self) -> None: + + self.feature_group.output_waveform_feature.stop_output_waveform() + + def get_piezo_status(self, max_wait_in_milliseconds: int) -> TLMC_PZ_Status: + + return self.feature_group.piezo_status_feature.get_piezo_status(max_wait_in_milliseconds) + + def get_piezo_status_bits(self, max_wait_in_milliseconds: int) -> TLMC_PZ_StatusBit: + + return self.feature_group.piezo_status_bits_feature.get_piezo_status_bits(max_wait_in_milliseconds) + + def get_position(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.position_feature.get_position(max_wait_in_milliseconds) + + def set_position(self, position: int) -> None: + + self.feature_group.position_feature.set_position(position) + + def get_position_control_mode(self, max_wait_in_milliseconds: int) -> TLMC_PZ_PositionControlMode: + + return self.feature_group.position_control_mode_feature.get_position_control_mode(max_wait_in_milliseconds) + + def set_position_control_mode(self, control_mode: TLMC_PZ_PositionControlMode, max_wait_in_milliseconds: int) -> None: + + self.feature_group.position_control_mode_feature.set_position_control_mode(control_mode, max_wait_in_milliseconds) + + def get_position_loop_params(self, max_wait_in_milliseconds: int) -> TLMC_PZ_PositionLoopParams: + + return self.feature_group.position_loop_params_feature.get_position_loop_params(max_wait_in_milliseconds) + + def set_position_loop_params(self, params: TLMC_PZ_PositionLoopParams) -> None: + + self.feature_group.position_loop_params_feature.set_position_loop_params(params) + + def restore_factory_defaults(self) -> None: + + self.feature_group.restore_factory_defaults_feature.restore_factory_defaults() + + def get_setting(self, settings_name: str, max_wait_in_milliseconds: int) -> TLMC_Setting: + + return self.feature_group.settings_feature.get_setting(settings_name, max_wait_in_milliseconds) + + def get_setting_discrete_values(self, settings_name: str) -> str: + + return self.feature_group.settings_feature.get_setting_discrete_values(settings_name) + + def get_settings(self, setting_string_format: TLMC_SettingStringFormat, include_read_only_items: bool) -> str: + + return self.feature_group.settings_feature.get_settings(setting_string_format, include_read_only_items) + + def get_settings_items(self) -> List[TLMC_Setting]: + + return self.feature_group.settings_feature.get_settings_items() + + def set_settings(self, settings: str) -> None: + + self.feature_group.settings_feature.set_settings(settings) + + def get_slew_rate_params(self, max_wait_in_milliseconds: int) -> TLMC_PZ_SlewRateParams: + + return self.feature_group.slew_rate_params_feature.get_slew_rate_params(max_wait_in_milliseconds) + + def set_slew_rate_params(self, parameters: TLMC_PZ_SlewRateParams) -> None: + + self.feature_group.slew_rate_params_feature.set_slew_rate_params(parameters) + + def get_status_item(self, status_item_id: TLMC_StatusItemId) -> TLMC_StatusItem: + + return self.feature_group.status_items_feature.get_status_item(status_item_id) + + def get_status_item_count(self) -> int: + + return self.feature_group.status_items_feature.get_status_item_count() + + def get_status_items(self, start_index: int, number_of_items: int) -> List[TLMC_StatusItem]: + + return self.feature_group.status_items_feature.get_status_items(start_index, number_of_items) + + def set_status_mode(self, operating_mode: TLMC_OperatingMode) -> None: + + self.feature_group.status_mode_feature.set_status_mode(operating_mode) + + def convert_from_device_units_to_physical(self, scale_type: TLMC_ScaleType, device_value: int) -> tuple[float, TLMC_Unit]: + + return self.feature_group.unit_converter_feature.convert_from_device_units_to_physical(scale_type, device_value) + + def convert_from_physical_to_device(self, scale_type: TLMC_ScaleType, unit: TLMC_Unit, physical_value: int) -> int: + + return self.feature_group.unit_converter_feature.convert_from_physical_to_device(scale_type, unit, physical_value) + + def get_preferred_physical_unit(self, scale_type: TLMC_ScaleType) -> TLMC_Unit: + + return self.feature_group.unit_converter_feature.get_preferred_physical_unit(scale_type) + + def set_zero(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.zero_feature.set_zero(max_wait_in_milliseconds) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/bpc30x.py b/Python/XA/xa_source/src/thorlabs_xa/products/bpc30x.py new file mode 100644 index 0000000..c8721ea --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/products/bpc30x.py @@ -0,0 +1,87 @@ +from typing import List + +from thorlabs_xa.interfaces.device_feature_groups.bpc30x_feature_group import Bpc30xFeatureGroup + +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.rack_identify import RackIdentify +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.rack_bay_occupied_state import RackBayOccupiedState +from thorlabs_xa.interfaces.device_features.settings import Settings + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.shared.params import TLMC_DeviceInfo + +from thorlabs_xa.shared.enums import TLMC_DigitalOutput, TLMC_RackBayNumber, TLMC_RackBayOccupiedState, TLMC_SettingStringFormat +from thorlabs_xa.shared.params import TLMC_FirmwareVersion, TLMC_HardwareInfo, TLMC_Setting +from thorlabs_xa.shared.device import Device + +class Bpc30x(Device, + DigitalOutputStates, + Disconnect, + FirmwareVersionInfo, + HardwareInfo, + LoadParams, + RackBayOccupiedState, + RackIdentify, + Settings): + + def __init__(self, device_handle: int, device_info: TLMC_DeviceInfo, feature_group: Bpc30xFeatureGroup, native_functions: NativeFunctions) -> None: + + super().__init__(device_handle, device_info, native_functions) + + self.feature_group = feature_group + + def get_digital_output_states(self, max_wait_in_milliseconds: int) -> TLMC_DigitalOutput: + + return self.feature_group.digital_output_states_feature.get_digital_output_states(max_wait_in_milliseconds) + + def set_digital_output_states(self, params: TLMC_DigitalOutput) -> None: + + self.feature_group.digital_output_states_feature.set_digital_output_states(params) + + def disconnect(self) -> None: + + self.feature_group.disconnect_feature.disconnect() + + def get_firmware_version_info(self, max_wait_in_milliseconds: int) -> tuple[TLMC_FirmwareVersion, TLMC_FirmwareVersion]: + + return self.feature_group.firmware_version_info_feature.get_firmware_version_info(max_wait_in_milliseconds) + + def get_hardware_info(self, max_wait_in_milliseconds: int) -> TLMC_HardwareInfo: + + return self.feature_group.hardware_info_feature.get_hardware_info(max_wait_in_milliseconds) + + def load_params(self) -> None: + + self.feature_group.load_params_feature.load_params() + + def rack_identify(self, channel: int) -> None: + + self.feature_group.rack_identify_feature.rack_identify(channel) + + def get_rack_bay_occupied_state(self, bay_number: TLMC_RackBayNumber, max_wait_in_milliseconds: int) -> TLMC_RackBayOccupiedState: + + return self.feature_group.rack_bay_occupied_state_feature.get_rack_bay_occupied_state(bay_number, max_wait_in_milliseconds) + + def get_setting(self, settings_name: str, max_wait_in_milliseconds: int) -> TLMC_Setting: + + return self.feature_group.settings_feature.get_setting(settings_name, max_wait_in_milliseconds) + + def get_setting_discrete_values(self, settings_name: str) -> str: + + return self.feature_group.settings_feature.get_setting_discrete_values(settings_name) + + def get_settings(self, setting_string_format: TLMC_SettingStringFormat, include_read_only_items: bool) -> str: + + return self.feature_group.settings_feature.get_settings(setting_string_format, include_read_only_items) + + def get_settings_items(self) -> List[TLMC_Setting]: + + return self.feature_group.settings_feature.get_settings_items() + + def set_settings(self, settings: str) -> None: + + self.feature_group.settings_feature.set_settings(settings) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/bpc30x_logical_channel.py b/Python/XA/xa_source/src/thorlabs_xa/products/bpc30x_logical_channel.py new file mode 100644 index 0000000..3173a3c --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/products/bpc30x_logical_channel.py @@ -0,0 +1,231 @@ +from typing import List + +from thorlabs_xa.interfaces.device_feature_groups.bpc30x_logical_channel_feature_group import Bpc30xLogicalChannelFeatureGroup + +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.piezo.max_output_voltage_params import MaxOutputVoltageParams +from thorlabs_xa.interfaces.device_features.piezo.max_travel import MaxTravel +from thorlabs_xa.interfaces.device_features.piezo.output_voltage import OutputVoltage +from thorlabs_xa.interfaces.device_features.piezo.output_voltage_control_source_params import OutputVoltageControlSourceParams +from thorlabs_xa.interfaces.device_features.piezo.output_waveform import OutputWaveform +from thorlabs_xa.interfaces.device_features.piezo.piezo_status import PiezoStatus +from thorlabs_xa.interfaces.device_features.piezo.piezo_status_bits import PiezoStatusBits +from thorlabs_xa.interfaces.device_features.piezo.position import Position +from thorlabs_xa.interfaces.device_features.piezo.position_control_mode import PositionControlMode +from thorlabs_xa.interfaces.device_features.piezo.position_loop_params import PositionLoopParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.piezo.slew_rate_params import SlewRateParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.piezo.zero import Zero + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.shared.params import TLMC_DeviceInfo + +from thorlabs_xa.shared.enums import TLMC_EnableState, TLMC_OperatingMode, TLMC_PZ_PositionControlMode, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_PZ_StatusBit, TLMC_StatusItemId, TLMC_Unit +from thorlabs_xa.shared.params import TLMC_FirmwareVersion, TLMC_HardwareInfo, TLMC_PZ_MaxOutputVoltageParams, TLMC_PZ_OutputVoltageControlSourceParams, TLMC_PZ_OutputWaveformParams, TLMC_PZ_OutputWaveformLookupTableSample, TLMC_PZ_PositionLoopParams, TLMC_Setting, TLMC_PZ_SlewRateParams, TLMC_PZ_Status, TLMC_StatusItem +from thorlabs_xa.shared.device import Device + +class Bpc30xLogicalChannel(Device, + EnableState, + FirmwareVersionInfo, + HardwareInfo, + Identify, + LoadParams, + MaxOutputVoltageParams, + MaxTravel, + OutputVoltage, + OutputVoltageControlSourceParams, + OutputWaveform, + PiezoStatus, + PiezoStatusBits, + Position, + PositionControlMode, + PositionLoopParams, + RestoreFactoryDefaults, + Settings, + SlewRateParams, + StatusItems, + StatusMode, + UnitConverter, + Zero): + + def __init__(self, device_handle: int, device_info: TLMC_DeviceInfo, feature_group: Bpc30xLogicalChannelFeatureGroup, native_functions: NativeFunctions) -> None: + + super().__init__(device_handle, device_info, native_functions) + + self.feature_group = feature_group + + def get_enable_state(self, max_wait_in_milliseconds: int) -> TLMC_EnableState: + + return self.feature_group.enable_state_feature.get_enable_state(max_wait_in_milliseconds) + + def set_enable_state(self, enable_state: TLMC_EnableState) -> None: + + self.feature_group.enable_state_feature.set_enable_state(enable_state) + + def get_firmware_version_info(self, max_wait_in_milliseconds: int) -> tuple[TLMC_FirmwareVersion, TLMC_FirmwareVersion]: + + return self.feature_group.firmware_version_info_feature.get_firmware_version_info(max_wait_in_milliseconds) + + def get_hardware_info(self, max_wait_in_milliseconds: int) -> TLMC_HardwareInfo: + + return self.feature_group.hardware_info_feature.get_hardware_info(max_wait_in_milliseconds) + + def identify(self) -> None: + + self.feature_group.identify_feature.identify() + + def load_params(self) -> None: + + self.feature_group.load_params_feature.load_params() + + def get_max_output_voltage_params(self, max_wait_in_milliseconds: int) -> TLMC_PZ_MaxOutputVoltageParams: + + return self.feature_group.max_output_voltage_params_feature.get_max_output_voltage_params(max_wait_in_milliseconds) + + def set_max_output_voltage(self, max_output_voltage: int) -> None: + + self.feature_group.max_output_voltage_params_feature.set_max_output_voltage(max_output_voltage) + + def get_max_travel(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.max_travel_feature.get_max_travel(max_wait_in_milliseconds) + + def set_max_travel(self, max_travel: int) -> None: + + self.feature_group.max_travel_feature.set_max_travel(max_travel) + + def get_output_voltage(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.output_voltage_feature.get_output_voltage(max_wait_in_milliseconds) + + def set_output_voltage(self, output_voltage: int) -> None: + + self.feature_group.output_voltage_feature.set_output_voltage(output_voltage) + + def get_output_voltage_control_source_params(self, max_wait_in_milliseconds: int) -> TLMC_PZ_OutputVoltageControlSourceParams: + + return self.feature_group.output_voltage_control_source_params_feature.get_output_voltage_control_source_params(max_wait_in_milliseconds) + + def set_output_voltage_control_source_params(self, params: TLMC_PZ_OutputVoltageControlSourceParams) -> None: + + self.feature_group.output_voltage_control_source_params_feature.set_output_voltage_control_source_params(params) + + def set_output_waveform_lookup_table_sample_params(self, params: TLMC_PZ_OutputWaveformLookupTableSample) -> None: + + self.feature_group.output_waveform_feature.set_output_waveform_lookup_table_sample_params(params) + + def set_output_waveform_params(self, params: TLMC_PZ_OutputWaveformParams) -> None: + + self.feature_group.output_waveform_feature.set_output_waveform_params(params) + + def start_output_waveform(self) -> None: + + self.feature_group.output_waveform_feature.start_output_waveform() + + def stop_output_waveform(self) -> None: + + self.feature_group.output_waveform_feature.stop_output_waveform() + + def get_piezo_status(self, max_wait_in_milliseconds: int) -> TLMC_PZ_Status: + + return self.feature_group.piezo_status_feature.get_piezo_status(max_wait_in_milliseconds) + + def get_piezo_status_bits(self, max_wait_in_milliseconds: int) -> TLMC_PZ_StatusBit: + + return self.feature_group.piezo_status_bits_feature.get_piezo_status_bits(max_wait_in_milliseconds) + + def get_position(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.position_feature.get_position(max_wait_in_milliseconds) + + def set_position(self, position: int) -> None: + + self.feature_group.position_feature.set_position(position) + + def get_position_control_mode(self, max_wait_in_milliseconds: int) -> TLMC_PZ_PositionControlMode: + + return self.feature_group.position_control_mode_feature.get_position_control_mode(max_wait_in_milliseconds) + + def set_position_control_mode(self, control_mode: TLMC_PZ_PositionControlMode, max_wait_in_milliseconds: int) -> None: + + self.feature_group.position_control_mode_feature.set_position_control_mode(control_mode, max_wait_in_milliseconds) + + def get_position_loop_params(self, max_wait_in_milliseconds: int) -> TLMC_PZ_PositionLoopParams: + + return self.feature_group.position_loop_params_feature.get_position_loop_params(max_wait_in_milliseconds) + + def set_position_loop_params(self, params: TLMC_PZ_PositionLoopParams) -> None: + + self.feature_group.position_loop_params_feature.set_position_loop_params(params) + + def restore_factory_defaults(self) -> None: + + self.feature_group.restore_factory_defaults_feature.restore_factory_defaults() + + def get_setting(self, settings_name: str, max_wait_in_milliseconds: int) -> TLMC_Setting: + + return self.feature_group.settings_feature.get_setting(settings_name, max_wait_in_milliseconds) + + def get_setting_discrete_values(self, settings_name: str) -> str: + + return self.feature_group.settings_feature.get_setting_discrete_values(settings_name) + + def get_settings(self, setting_string_format: TLMC_SettingStringFormat, include_read_only_items: bool) -> str: + + return self.feature_group.settings_feature.get_settings(setting_string_format, include_read_only_items) + + def get_settings_items(self) -> List[TLMC_Setting]: + + return self.feature_group.settings_feature.get_settings_items() + + def set_settings(self, settings: str) -> None: + + self.feature_group.settings_feature.set_settings(settings) + + def get_slew_rate_params(self, max_wait_in_milliseconds: int) -> TLMC_PZ_SlewRateParams: + + return self.feature_group.slew_rate_params_feature.get_slew_rate_params(max_wait_in_milliseconds) + + def set_slew_rate_params(self, parameters: TLMC_PZ_SlewRateParams) -> None: + + self.feature_group.slew_rate_params_feature.set_slew_rate_params(parameters) + + def get_status_item(self, status_item_id: TLMC_StatusItemId) -> TLMC_StatusItem: + + return self.feature_group.status_items_feature.get_status_item(status_item_id) + + def get_status_item_count(self) -> int: + + return self.feature_group.status_items_feature.get_status_item_count() + + def get_status_items(self, start_index: int, number_of_items: int) -> List[TLMC_StatusItem]: + + return self.feature_group.status_items_feature.get_status_items(start_index, number_of_items) + + def set_status_mode(self, operating_mode: TLMC_OperatingMode) -> None: + + self.feature_group.status_mode_feature.set_status_mode(operating_mode) + + def convert_from_device_units_to_physical(self, scale_type: TLMC_ScaleType, device_value: int) -> tuple[float, TLMC_Unit]: + + return self.feature_group.unit_converter_feature.convert_from_device_units_to_physical(scale_type, device_value) + + def convert_from_physical_to_device(self, scale_type: TLMC_ScaleType, unit: TLMC_Unit, physical_value: int) -> int: + + return self.feature_group.unit_converter_feature.convert_from_physical_to_device(scale_type, unit, physical_value) + + def get_preferred_physical_unit(self, scale_type: TLMC_ScaleType) -> TLMC_Unit: + + return self.feature_group.unit_converter_feature.get_preferred_physical_unit(scale_type) + + def set_zero(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.zero_feature.set_zero(max_wait_in_milliseconds) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/bsc201.py b/Python/XA/xa_source/src/thorlabs_xa/products/bsc201.py new file mode 100644 index 0000000..3d3d9e8 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/products/bsc201.py @@ -0,0 +1,351 @@ +from typing import List + +from thorlabs_xa.interfaces.device_feature_groups.bsc201_feature_group import Bsc201FeatureGroup + +from thorlabs_xa.interfaces.device_features.adc_inputs import AdcInputs +from thorlabs_xa.interfaces.device_features.bow_index import BowIndex +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.encoder_counter import EncoderCounter +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.limit_switch_params_setter import LimitSwitchParamsSetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.no_flash_programming import NoFlashProgramming +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.power_params import PowerParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stepper_loop_params import StepperLoopParams +from thorlabs_xa.interfaces.device_features.stepper_status import StepperStatus +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.trigger_params_for_stepper import TriggerParamsForStepper +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams +from thorlabs_xa.interfaces.device_features.yes_flash_programming import YesFlashProgramming + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.shared.params import TLMC_DeviceInfo + +from thorlabs_xa.shared.enums import TLMC_BowIndex, TLMC_DigitalOutput, TLMC_EnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_ParameterGroupId, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_StatusItemId, TLMC_StopMode, TLMC_Unit, TLMC_UniversalStatusBit +from thorlabs_xa.shared.params import TLMC_AdcInputs, TLMC_ConnectedProductInfo, TLMC_FirmwareVersion, TLMC_GeneralMoveParams, TLMC_HardwareInfo, TLMC_HomeParams, TLMC_JogParams, TLMC_LimitSwitchParams, TLMC_MoveAbsoluteParams, TLMC_MoveRelativeParams, TLMC_PowerParams, TLMC_ProfileModeParams, TLMC_RichResponse, TLMC_Setting, TLMC_StatusItem, TLMC_StepperLoopParams, TLMC_StepperStatus, TLMC_TriggerParamsForStepper, TLMC_VelocityParams +from thorlabs_xa.shared.device import Device + +class Bsc201(Device, + AdcInputs, + BowIndex, + ConnectedProduct, + DigitalOutputStates, + Disconnect, + EnableState, + EncoderCounter, + FirmwareVersionInfo, + GeneralMoveParams, + HardwareInfo, + Home, + HomeParams, + Identify, + JogParams, + LimitSwitchParamsGetter, + LimitSwitchParamsSetter, + LoadParams, + Move, + MoveAbsoluteParams, + MoveRelativeParams, + NoFlashProgramming, + PersistParams, + PositionCounter, + PowerParams, + ProfileModeParams, + RichResponse, + Settings, + StatusItems, + StatusMode, + StatusRequest, + StepperLoopParams, + StepperStatus, + Stop, + TriggerParamsForStepper, + UnitConverter, + UniversalStatusBits, + VelocityParams, + YesFlashProgramming): + + def __init__(self, device_handle: int, device_info: TLMC_DeviceInfo, feature_group: Bsc201FeatureGroup, native_functions: NativeFunctions) -> None: + + super().__init__(device_handle, device_info, native_functions) + + self.feature_group = feature_group + + def get_adc_inputs(self, max_wait_in_milliseconds: int) -> TLMC_AdcInputs: + + return self.feature_group.adc_inputs_feature.get_adc_inputs(max_wait_in_milliseconds) + + def get_bow_index(self, max_wait_in_milliseconds: int) -> TLMC_BowIndex: + + return self.feature_group.bow_index_feature.get_bow_index(max_wait_in_milliseconds) + + def set_bow_index(self, bow_index: TLMC_BowIndex) -> None: + + self.feature_group.bow_index_feature.set_bow_index(bow_index) + + def get_connected_product_info(self) -> TLMC_ConnectedProductInfo: + + return self.feature_group.connected_product_feature.get_connected_product_info() + + def get_supported_connected_products(self) -> List[str]: + + return self.feature_group.connected_product_feature.get_supported_connected_products() + + def set_connected_product(self, product_name: str) -> None: + + self.feature_group.connected_product_feature.set_connected_product(product_name) + + def set_connected_product_info(self, product_info: TLMC_ConnectedProductInfo) -> None: + + self.feature_group.connected_product_feature.set_connected_product_info(product_info) + + def get_digital_output_states(self, max_wait_in_milliseconds: int) -> TLMC_DigitalOutput: + + return self.feature_group.digital_output_states_feature.get_digital_output_states(max_wait_in_milliseconds) + + def set_digital_output_states(self, params: TLMC_DigitalOutput) -> None: + + self.feature_group.digital_output_states_feature.set_digital_output_states(params) + + def disconnect(self) -> None: + + self.feature_group.disconnect_feature.disconnect() + + def get_enable_state(self, max_wait_in_milliseconds: int) -> TLMC_EnableState: + + return self.feature_group.enable_state_feature.get_enable_state(max_wait_in_milliseconds) + + def set_enable_state(self, enable_state: TLMC_EnableState) -> None: + + self.feature_group.enable_state_feature.set_enable_state(enable_state) + + def get_encoder_counter(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.encoder_counter_feature.get_encoder_counter(max_wait_in_milliseconds) + + def set_encoder_counter(self, new_encoder_counter: int) -> None: + + self.feature_group.encoder_counter_feature.set_encoder_counter(new_encoder_counter) + + def get_firmware_version_info(self, max_wait_in_milliseconds: int) -> tuple[TLMC_FirmwareVersion, TLMC_FirmwareVersion]: + + return self.feature_group.firmware_version_info_feature.get_firmware_version_info(max_wait_in_milliseconds) + + def get_general_move_params(self, max_wait_in_milliseconds: int) -> TLMC_GeneralMoveParams: + + return self.feature_group.general_move_params_feature.get_general_move_params(max_wait_in_milliseconds) + + def set_general_move_params(self, params: TLMC_GeneralMoveParams) -> None: + + self.feature_group.general_move_params_feature.set_general_move_params(params) + + def get_hardware_info(self, max_wait_in_milliseconds: int) -> TLMC_HardwareInfo: + + return self.feature_group.hardware_info_feature.get_hardware_info(max_wait_in_milliseconds) + + def home(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.home_feature.home(max_wait_in_milliseconds) + + def get_home_params(self, max_wait_in_milliseconds: int) -> TLMC_HomeParams: + + return self.feature_group.home_params_feature.get_home_params(max_wait_in_milliseconds) + + def set_home_params(self, params: TLMC_HomeParams) -> None: + + self.feature_group.home_params_feature.set_home_params(params) + + def identify(self) -> None: + + self.feature_group.identify_feature.identify() + + def get_jog_params(self, max_wait_in_milliseconds: int) -> TLMC_JogParams: + + return self.feature_group.jog_params_feature.get_jog_params(max_wait_in_milliseconds) + + def set_jog_params(self, params: TLMC_JogParams) -> None: + + self.feature_group.jog_params_feature.set_jog_params(params) + + def get_limit_switch_params(self, max_wait_in_milliseconds: int) -> TLMC_LimitSwitchParams: + + return self.feature_group.limit_switch_params_getter_feature.get_limit_switch_params(max_wait_in_milliseconds) + + def set_limit_switch_params(self, params: TLMC_LimitSwitchParams) -> None: + + self.feature_group.limit_switch_params_setter_feature.set_limit_switch_params(params) + + def load_params(self) -> None: + + self.feature_group.load_params_feature.load_params() + + def move(self, move_mode: TLMC_MoveMode, params: int, max_wait_in_milliseconds: int) -> None: + + self.feature_group.move_feature.move(move_mode, params, max_wait_in_milliseconds) + + def get_move_absolute_params(self, max_wait_in_milliseconds: int) -> TLMC_MoveAbsoluteParams: + + return self.feature_group.move_absolute_params_feature.get_move_absolute_params(max_wait_in_milliseconds) + + def set_move_absolute_params(self, params: TLMC_MoveAbsoluteParams) -> None: + + self.feature_group.move_absolute_params_feature.set_move_absolute_params(params) + + def get_move_relative_params(self, max_wait_in_milliseconds: int) -> TLMC_MoveRelativeParams: + + return self.feature_group.move_relative_params_feature.get_move_relative_params(max_wait_in_milliseconds) + + def set_move_relative_params(self, params: TLMC_MoveRelativeParams) -> None: + + self.feature_group.move_relative_params_feature.set_move_relative_params(params) + + def send_no_flash_programming(self) -> None: + + self.feature_group.no_flash_programming_feature.send_no_flash_programming() + + def persist_params(self, parameter_group_id: TLMC_ParameterGroupId) -> None: + + self.feature_group.persist_params_feature.persist_params(parameter_group_id) + + def get_position_counter(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.position_counter_feature.get_position_counter(max_wait_in_milliseconds) + + def set_position_counter(self, new_position_counter: int) -> None: + + self.feature_group.position_counter_feature.set_position_counter(new_position_counter) + + def get_power_params(self, max_wait_in_milliseconds: int) -> TLMC_PowerParams: + + return self.feature_group.power_params_feature.get_power_params(max_wait_in_milliseconds) + + def set_power_params(self, params: TLMC_PowerParams) -> None: + + self.feature_group.power_params_feature.set_power_params(params) + + def get_profile_mode_params(self, max_wait_in_milliseconds: int) -> TLMC_ProfileModeParams: + + return self.feature_group.profile_mode_params_feature.get_profile_mode_params(max_wait_in_milliseconds) + + def set_profile_mode_params(self, params: TLMC_ProfileModeParams) -> None: + + self.feature_group.profile_mode_params_feature.set_profile_mode_params(params) + + def get_rich_response(self) -> TLMC_RichResponse: + + return self.feature_group.rich_response_feature.get_rich_response() + + def get_setting(self, settings_name: str, max_wait_in_milliseconds: int) -> TLMC_Setting: + + return self.feature_group.settings_feature.get_setting(settings_name, max_wait_in_milliseconds) + + def get_setting_discrete_values(self, settings_name: str) -> str: + + return self.feature_group.settings_feature.get_setting_discrete_values(settings_name) + + def get_settings(self, setting_string_format: TLMC_SettingStringFormat, include_read_only_items: bool) -> str: + + return self.feature_group.settings_feature.get_settings(setting_string_format, include_read_only_items) + + def get_settings_items(self) -> List[TLMC_Setting]: + + return self.feature_group.settings_feature.get_settings_items() + + def set_settings(self, settings: str) -> None: + + self.feature_group.settings_feature.set_settings(settings) + + def get_status_item(self, status_item_id: TLMC_StatusItemId) -> TLMC_StatusItem: + + return self.feature_group.status_items_feature.get_status_item(status_item_id) + + def get_status_item_count(self) -> int: + + return self.feature_group.status_items_feature.get_status_item_count() + + def get_status_items(self, start_index: int, number_of_items: int) -> List[TLMC_StatusItem]: + + return self.feature_group.status_items_feature.get_status_items(start_index, number_of_items) + + def set_status_mode(self, operating_mode: TLMC_OperatingMode) -> None: + + self.feature_group.status_mode_feature.set_status_mode(operating_mode) + + def request_status(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.status_request_feature.request_status(max_wait_in_milliseconds) + + def get_stepper_loop_params(self, max_wait_in_milliseconds: int) -> TLMC_StepperLoopParams: + + return self.feature_group.stepper_loop_params_feature.get_stepper_loop_params(max_wait_in_milliseconds) + + def set_stepper_loop_params(self, params: TLMC_StepperLoopParams) -> None: + + self.feature_group.stepper_loop_params_feature.set_stepper_loop_params(params) + + def get_stepper_status(self, max_wait_in_milliseconds: int) -> TLMC_StepperStatus: + + return self.feature_group.stepper_status_feature.get_stepper_status(max_wait_in_milliseconds) + + def stop(self, stop_mode: TLMC_StopMode, max_wait_in_milliseconds: int) -> None: + + self.feature_group.stop_feature.stop(stop_mode, max_wait_in_milliseconds) + + def get_trigger_params_for_stepper(self, max_wai_in_milliseconds: int) -> TLMC_TriggerParamsForStepper: + + return self.feature_group.trigger_params_for_stepper_feature.get_trigger_params_for_stepper(max_wai_in_milliseconds) + + def set_trigger_params_for_stepper(self, params: TLMC_TriggerParamsForStepper) -> None: + + self.feature_group.trigger_params_for_stepper_feature.set_trigger_params_for_stepper(params) + + def convert_from_device_units_to_physical(self, scale_type: TLMC_ScaleType, device_value: int) -> tuple[float, TLMC_Unit]: + + return self.feature_group.unit_converter_feature.convert_from_device_units_to_physical(scale_type, device_value) + + def convert_from_physical_to_device(self, scale_type: TLMC_ScaleType, unit: TLMC_Unit, physical_value: int) -> int: + + return self.feature_group.unit_converter_feature.convert_from_physical_to_device(scale_type, unit, physical_value) + + def get_preferred_physical_unit(self, scale_type: TLMC_ScaleType) -> TLMC_Unit: + + return self.feature_group.unit_converter_feature.get_preferred_physical_unit(scale_type) + + def get_universal_status_bits(self, max_wait_in_milliseconds: int) -> TLMC_UniversalStatusBit: + + return self.feature_group.universal_status_bits_feature.get_universal_status_bits(max_wait_in_milliseconds) + + def get_velocity_params(self, max_wait_in_milliseconds: int) -> TLMC_VelocityParams: + + return self.feature_group.velocity_params_feature.get_velocity_params(max_wait_in_milliseconds) + + def set_velocity_params(self, params: TLMC_VelocityParams) -> None: + + self.feature_group.velocity_params_feature.set_velocity_params(params) + + def send_yes_flash_programming(self) -> None: + + self.feature_group.yes_flash_programming_feature.send_yes_flash_programming() \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/bsc201v4.py b/Python/XA/xa_source/src/thorlabs_xa/products/bsc201v4.py new file mode 100644 index 0000000..465f6e6 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/products/bsc201v4.py @@ -0,0 +1,357 @@ +from typing import List + +from thorlabs_xa.interfaces.device_feature_groups.bsc201v4_feature_group import Bsc201v4FeatureGroup + +from thorlabs_xa.interfaces.device_features.adc_inputs import AdcInputs +from thorlabs_xa.interfaces.device_features.bow_index import BowIndex +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.encoder_counter import EncoderCounter +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.limit_switch_params_setter import LimitSwitchParamsSetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.no_flash_programming import NoFlashProgramming +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.power_params import PowerParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.set_actuator_type import SetActuatorType +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stepper_loop_params import StepperLoopParams +from thorlabs_xa.interfaces.device_features.stepper_status import StepperStatus +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.trigger_params_for_stepper import TriggerParamsForStepper +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams +from thorlabs_xa.interfaces.device_features.yes_flash_programming import YesFlashProgramming + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.shared.params import TLMC_DeviceInfo + +from thorlabs_xa.shared.enums import TLMC_BowIndex, TLMC_DigitalOutput, TLMC_EnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_ParameterGroupId, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_StatusItemId, TLMC_StopMode, TLMC_Unit, TLMC_UniversalStatusBit +from thorlabs_xa.shared.params import TLMC_AdcInputs, TLMC_ConnectedProductInfo, TLMC_FirmwareVersion, TLMC_GeneralMoveParams, TLMC_HardwareInfo, TLMC_HomeParams, TLMC_JogParams, TLMC_LimitSwitchParams, TLMC_MoveAbsoluteParams, TLMC_MoveRelativeParams, TLMC_PowerParams, TLMC_ProfileModeParams, TLMC_RichResponse, TLMC_Setting, TLMC_StatusItem, TLMC_StepperLoopParams, TLMC_StepperStatus, TLMC_TriggerParamsForStepper, TLMC_VelocityParams +from thorlabs_xa.shared.device import Device + +class Bsc201v4(Device, + AdcInputs, + BowIndex, + ConnectedProduct, + DigitalOutputStates, + Disconnect, + EnableState, + EncoderCounter, + FirmwareVersionInfo, + GeneralMoveParams, + HardwareInfo, + Home, + HomeParams, + Identify, + JogParams, + LimitSwitchParamsGetter, + LimitSwitchParamsSetter, + LoadParams, + Move, + MoveAbsoluteParams, + MoveRelativeParams, + NoFlashProgramming, + PersistParams, + PositionCounter, + PowerParams, + ProfileModeParams, + RichResponse, + SetActuatorType, + Settings, + StatusItems, + StatusMode, + StatusRequest, + StepperLoopParams, + StepperStatus, + Stop, + TriggerParamsForStepper, + UnitConverter, + UniversalStatusBits, + VelocityParams, + YesFlashProgramming): + + def __init__(self, device_handle: int, device_info: TLMC_DeviceInfo, feature_group: Bsc201v4FeatureGroup, native_functions: NativeFunctions) -> None: + + super().__init__(device_handle, device_info, native_functions) + + self.feature_group = feature_group + + def get_adc_inputs(self, max_wait_in_milliseconds: int) -> TLMC_AdcInputs: + + return self.feature_group.adc_inputs_feature.get_adc_inputs(max_wait_in_milliseconds) + + def get_bow_index(self, max_wait_in_milliseconds: int) -> TLMC_BowIndex: + + return self.feature_group.bow_index_feature.get_bow_index(max_wait_in_milliseconds) + + def set_bow_index(self, bow_index: TLMC_BowIndex) -> None: + + self.feature_group.bow_index_feature.set_bow_index(bow_index) + + def get_connected_product_info(self) -> TLMC_ConnectedProductInfo: + + return self.feature_group.connected_product_feature.get_connected_product_info() + + def get_supported_connected_products(self) -> List[str]: + + return self.feature_group.connected_product_feature.get_supported_connected_products() + + def set_connected_product(self, product_name: str) -> None: + + self.feature_group.connected_product_feature.set_connected_product(product_name) + + def set_connected_product_info(self, product_info: TLMC_ConnectedProductInfo) -> None: + + self.feature_group.connected_product_feature.set_connected_product_info(product_info) + + def get_digital_output_states(self, max_wait_in_milliseconds: int) -> TLMC_DigitalOutput: + + return self.feature_group.digital_output_states_feature.get_digital_output_states(max_wait_in_milliseconds) + + def set_digital_output_states(self, params: TLMC_DigitalOutput) -> None: + + self.feature_group.digital_output_states_feature.set_digital_output_states(params) + + def disconnect(self) -> None: + + self.feature_group.disconnect_feature.disconnect() + + def get_enable_state(self, max_wait_in_milliseconds: int) -> TLMC_EnableState: + + return self.feature_group.enable_state_feature.get_enable_state(max_wait_in_milliseconds) + + def set_enable_state(self, enable_state: TLMC_EnableState) -> None: + + self.feature_group.enable_state_feature.set_enable_state(enable_state) + + def get_encoder_counter(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.encoder_counter_feature.get_encoder_counter(max_wait_in_milliseconds) + + def set_encoder_counter(self, new_encoder_counter: int) -> None: + + self.feature_group.encoder_counter_feature.set_encoder_counter(new_encoder_counter) + + def get_firmware_version_info(self, max_wait_in_milliseconds: int) -> tuple[TLMC_FirmwareVersion, TLMC_FirmwareVersion]: + + return self.feature_group.firmware_version_info_feature.get_firmware_version_info(max_wait_in_milliseconds) + + def get_general_move_params(self, max_wait_in_milliseconds: int) -> TLMC_GeneralMoveParams: + + return self.feature_group.general_move_params_feature.get_general_move_params(max_wait_in_milliseconds) + + def set_general_move_params(self, params: TLMC_GeneralMoveParams) -> None: + + self.feature_group.general_move_params_feature.set_general_move_params(params) + + def get_hardware_info(self, max_wait_in_milliseconds: int) -> TLMC_HardwareInfo: + + return self.feature_group.hardware_info_feature.get_hardware_info(max_wait_in_milliseconds) + + def home(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.home_feature.home(max_wait_in_milliseconds) + + def get_home_params(self, max_wait_in_milliseconds: int) -> TLMC_HomeParams: + + return self.feature_group.home_params_feature.get_home_params(max_wait_in_milliseconds) + + def set_home_params(self, params: TLMC_HomeParams) -> None: + + self.feature_group.home_params_feature.set_home_params(params) + + def identify(self) -> None: + + self.feature_group.identify_feature.identify() + + def get_jog_params(self, max_wait_in_milliseconds: int) -> TLMC_JogParams: + + return self.feature_group.jog_params_feature.get_jog_params(max_wait_in_milliseconds) + + def set_jog_params(self, params: TLMC_JogParams) -> None: + + self.feature_group.jog_params_feature.set_jog_params(params) + + def get_limit_switch_params(self, max_wait_in_milliseconds: int) -> TLMC_LimitSwitchParams: + + return self.feature_group.limit_switch_params_getter_feature.get_limit_switch_params(max_wait_in_milliseconds) + + def set_limit_switch_params(self, params: TLMC_LimitSwitchParams) -> None: + + self.feature_group.limit_switch_params_setter_feature.set_limit_switch_params(params) + + def load_params(self) -> None: + + self.feature_group.load_params_feature.load_params() + + def move(self, move_mode: TLMC_MoveMode, params: int, max_wait_in_milliseconds: int) -> None: + + self.feature_group.move_feature.move(move_mode, params, max_wait_in_milliseconds) + + def get_move_absolute_params(self, max_wait_in_milliseconds: int) -> TLMC_MoveAbsoluteParams: + + return self.feature_group.move_absolute_params_feature.get_move_absolute_params(max_wait_in_milliseconds) + + def set_move_absolute_params(self, params: TLMC_MoveAbsoluteParams) -> None: + + self.feature_group.move_absolute_params_feature.set_move_absolute_params(params) + + def get_move_relative_params(self, max_wait_in_milliseconds: int) -> TLMC_MoveRelativeParams: + + return self.feature_group.move_relative_params_feature.get_move_relative_params(max_wait_in_milliseconds) + + def set_move_relative_params(self, params: TLMC_MoveRelativeParams) -> None: + + self.feature_group.move_relative_params_feature.set_move_relative_params(params) + + def send_no_flash_programming(self) -> None: + + self.feature_group.no_flash_programming_feature.send_no_flash_programming() + + def persist_params(self, parameter_group_id: TLMC_ParameterGroupId) -> None: + + self.feature_group.persist_params_feature.persist_params(parameter_group_id) + + def get_position_counter(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.position_counter_feature.get_position_counter(max_wait_in_milliseconds) + + def set_position_counter(self, new_position_counter: int) -> None: + + self.feature_group.position_counter_feature.set_position_counter(new_position_counter) + + def get_power_params(self, max_wait_in_milliseconds: int) -> TLMC_PowerParams: + + return self.feature_group.power_params_feature.get_power_params(max_wait_in_milliseconds) + + def set_power_params(self, params: TLMC_PowerParams) -> None: + + self.feature_group.power_params_feature.set_power_params(params) + + def get_profile_mode_params(self, max_wait_in_milliseconds: int) -> TLMC_ProfileModeParams: + + return self.feature_group.profile_mode_params_feature.get_profile_mode_params(max_wait_in_milliseconds) + + def set_profile_mode_params(self, params: TLMC_ProfileModeParams) -> None: + + self.feature_group.profile_mode_params_feature.set_profile_mode_params(params) + + def get_rich_response(self) -> TLMC_RichResponse: + + return self.feature_group.rich_response_feature.get_rich_response() + + def set_actuator_type(self, actuator_type: int) -> None: + + self.feature_group.set_actuator_type_feature.set_actuator_type(actuator_type) + + def get_setting(self, settings_name: str, max_wait_in_milliseconds: int) -> TLMC_Setting: + + return self.feature_group.settings_feature.get_setting(settings_name, max_wait_in_milliseconds) + + def get_setting_discrete_values(self, settings_name: str) -> str: + + return self.feature_group.settings_feature.get_setting_discrete_values(settings_name) + + def get_settings(self, setting_string_format: TLMC_SettingStringFormat, include_read_only_items: bool) -> str: + + return self.feature_group.settings_feature.get_settings(setting_string_format, include_read_only_items) + + def get_settings_items(self) -> List[TLMC_Setting]: + + return self.feature_group.settings_feature.get_settings_items() + + def set_settings(self, settings: str) -> None: + + self.feature_group.settings_feature.set_settings(settings) + + def get_status_item(self, status_item_id: TLMC_StatusItemId) -> TLMC_StatusItem: + + return self.feature_group.status_items_feature.get_status_item(status_item_id) + + def get_status_item_count(self) -> int: + + return self.feature_group.status_items_feature.get_status_item_count() + + def get_status_items(self, start_index: int, number_of_items: int) -> List[TLMC_StatusItem]: + + return self.feature_group.status_items_feature.get_status_items(start_index, number_of_items) + + def set_status_mode(self, operating_mode: TLMC_OperatingMode) -> None: + + self.feature_group.status_mode_feature.set_status_mode(operating_mode) + + def request_status(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.status_request_feature.request_status(max_wait_in_milliseconds) + + def get_stepper_loop_params(self, max_wait_in_milliseconds: int) -> TLMC_StepperLoopParams: + + return self.feature_group.stepper_loop_params_feature.get_stepper_loop_params(max_wait_in_milliseconds) + + def set_stepper_loop_params(self, params: TLMC_StepperLoopParams) -> None: + + self.feature_group.stepper_loop_params_feature.set_stepper_loop_params(params) + + def get_stepper_status(self, max_wait_in_milliseconds: int) -> TLMC_StepperStatus: + + return self.feature_group.stepper_status_feature.get_stepper_status(max_wait_in_milliseconds) + + def stop(self, stop_mode: TLMC_StopMode, max_wait_in_milliseconds: int) -> None: + + self.feature_group.stop_feature.stop(stop_mode, max_wait_in_milliseconds) + + def get_trigger_params_for_stepper(self, max_wai_in_milliseconds: int) -> TLMC_TriggerParamsForStepper: + + return self.feature_group.trigger_params_for_stepper_feature.get_trigger_params_for_stepper(max_wai_in_milliseconds) + + def set_trigger_params_for_stepper(self, params: TLMC_TriggerParamsForStepper) -> None: + + self.feature_group.trigger_params_for_stepper_feature.set_trigger_params_for_stepper(params) + + def convert_from_device_units_to_physical(self, scale_type: TLMC_ScaleType, device_value: int) -> tuple[float, TLMC_Unit]: + + return self.feature_group.unit_converter_feature.convert_from_device_units_to_physical(scale_type, device_value) + + def convert_from_physical_to_device(self, scale_type: TLMC_ScaleType, unit: TLMC_Unit, physical_value: int) -> int: + + return self.feature_group.unit_converter_feature.convert_from_physical_to_device(scale_type, unit, physical_value) + + def get_preferred_physical_unit(self, scale_type: TLMC_ScaleType) -> TLMC_Unit: + + return self.feature_group.unit_converter_feature.get_preferred_physical_unit(scale_type) + + def get_universal_status_bits(self, max_wait_in_milliseconds: int) -> TLMC_UniversalStatusBit: + + return self.feature_group.universal_status_bits_feature.get_universal_status_bits(max_wait_in_milliseconds) + + def get_velocity_params(self, max_wait_in_milliseconds: int) -> TLMC_VelocityParams: + + return self.feature_group.velocity_params_feature.get_velocity_params(max_wait_in_milliseconds) + + def set_velocity_params(self, params: TLMC_VelocityParams) -> None: + + self.feature_group.velocity_params_feature.set_velocity_params(params) + + def send_yes_flash_programming(self) -> None: + + self.feature_group.yes_flash_programming_feature.send_yes_flash_programming() \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/bsc20x.py b/Python/XA/xa_source/src/thorlabs_xa/products/bsc20x.py new file mode 100644 index 0000000..2b7fd69 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/products/bsc20x.py @@ -0,0 +1,87 @@ +from typing import List + +from thorlabs_xa.interfaces.device_feature_groups.bsc20x_feature_group import Bsc20xFeatureGroup + +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.rack_identify import RackIdentify +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.rack_bay_occupied_state import RackBayOccupiedState +from thorlabs_xa.interfaces.device_features.settings import Settings + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.shared.params import TLMC_DeviceInfo + +from thorlabs_xa.shared.enums import TLMC_DigitalOutput, TLMC_RackBayNumber, TLMC_RackBayOccupiedState, TLMC_SettingStringFormat +from thorlabs_xa.shared.params import TLMC_FirmwareVersion, TLMC_HardwareInfo, TLMC_Setting +from thorlabs_xa.shared.device import Device + +class Bsc20x(Device, + DigitalOutputStates, + Disconnect, + FirmwareVersionInfo, + HardwareInfo, + RackIdentify, + LoadParams, + RackBayOccupiedState, + Settings): + + def __init__(self, device_handle: int, device_info: TLMC_DeviceInfo, feature_group: Bsc20xFeatureGroup, native_functions: NativeFunctions) -> None: + + super().__init__(device_handle, device_info, native_functions) + + self.feature_group = feature_group + + def get_digital_output_states(self, max_wait_in_milliseconds: int) -> TLMC_DigitalOutput: + + return self.feature_group.digital_output_states_feature.get_digital_output_states(max_wait_in_milliseconds) + + def set_digital_output_states(self, params: TLMC_DigitalOutput) -> None: + + self.feature_group.digital_output_states_feature.set_digital_output_states(params) + + def disconnect(self) -> None: + + self.feature_group.disconnect_feature.disconnect() + + def get_firmware_version_info(self, max_wait_in_milliseconds: int) -> tuple[TLMC_FirmwareVersion, TLMC_FirmwareVersion]: + + return self.feature_group.firmware_version_info_feature.get_firmware_version_info(max_wait_in_milliseconds) + + def get_hardware_info(self, max_wait_in_milliseconds: int) -> TLMC_HardwareInfo: + + return self.feature_group.hardware_info_feature.get_hardware_info(max_wait_in_milliseconds) + + def load_params(self) -> None: + + self.feature_group.load_params_feature.load_params() + + def get_rack_bay_occupied_state(self, bay_number: TLMC_RackBayNumber, max_wait_in_milliseconds: int) -> TLMC_RackBayOccupiedState: + + return self.feature_group.rack_bay_occupied_state_feature.get_rack_bay_occupied_state(bay_number, max_wait_in_milliseconds) + + def rack_identify(self, channel: int) -> None: + + self.feature_group.rack_identify_feature.rack_identify(channel) + + def get_setting(self, settings_name: str, max_wait_in_milliseconds: int) -> TLMC_Setting: + + return self.feature_group.settings_feature.get_setting(settings_name, max_wait_in_milliseconds) + + def get_setting_discrete_values(self, settings_name: str) -> str: + + return self.feature_group.settings_feature.get_setting_discrete_values(settings_name) + + def get_settings(self, setting_string_format: TLMC_SettingStringFormat, include_read_only_items: bool) -> str: + + return self.feature_group.settings_feature.get_settings(setting_string_format, include_read_only_items) + + def get_settings_items(self) -> List[TLMC_Setting]: + + return self.feature_group.settings_feature.get_settings_items() + + def set_settings(self, settings: str) -> None: + + self.feature_group.settings_feature.set_settings(settings) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/bsc20x_logical_channel.py b/Python/XA/xa_source/src/thorlabs_xa/products/bsc20x_logical_channel.py new file mode 100644 index 0000000..03b65eb --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/products/bsc20x_logical_channel.py @@ -0,0 +1,361 @@ +from typing import List + +from thorlabs_xa.interfaces.device_feature_groups.bsc20x_logical_channel_feature_group import Bsc20xLogicalChannelFeatureGroup + +from thorlabs_xa.interfaces.device_features.adc_inputs import AdcInputs +from thorlabs_xa.interfaces.device_features.bow_index import BowIndex +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.encoder_counter import EncoderCounter +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.joystick_params import JoystickParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.limit_switch_params_setter import LimitSwitchParamsSetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.no_flash_programming import NoFlashProgramming +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.power_params import PowerParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stepper_loop_params import StepperLoopParams +from thorlabs_xa.interfaces.device_features.stepper_status import StepperStatus +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.trigger_params_for_stepper import TriggerParamsForStepper +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams +from thorlabs_xa.interfaces.device_features.yes_flash_programming import YesFlashProgramming + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.shared.params import TLMC_DeviceInfo + +from thorlabs_xa.shared.enums import TLMC_BowIndex, TLMC_DigitalOutput, TLMC_EnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_ParameterGroupId, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_StatusItemId, TLMC_StopMode, TLMC_Unit, TLMC_UniversalStatusBit +from thorlabs_xa.shared.params import TLMC_AdcInputs, TLMC_ConnectedProductInfo, TLMC_FirmwareVersion, TLMC_GeneralMoveParams, TLMC_HardwareInfo, TLMC_HomeParams, TLMC_JogParams, TLMC_JoystickParams, TLMC_LimitSwitchParams, TLMC_MoveAbsoluteParams, TLMC_MoveRelativeParams, TLMC_PowerParams, TLMC_ProfileModeParams, TLMC_RichResponse, TLMC_Setting, TLMC_StatusItem, TLMC_StepperLoopParams, TLMC_StepperStatus, TLMC_TriggerParamsForStepper, TLMC_VelocityParams +from thorlabs_xa.shared.device import Device + +class Bsc20xLogicalChannel(Device, + AdcInputs, + BowIndex, + ConnectedProduct, + DigitalOutputStates, + Disconnect, + EnableState, + EncoderCounter, + FirmwareVersionInfo, + GeneralMoveParams, + HardwareInfo, + Home, + HomeParams, + Identify, + JogParams, + JoystickParams, + LimitSwitchParamsGetter, + LimitSwitchParamsSetter, + LoadParams, + Move, + MoveAbsoluteParams, + MoveRelativeParams, + NoFlashProgramming, + PersistParams, + PositionCounter, + PowerParams, + ProfileModeParams, + RichResponse, + Settings, + StatusItems, + StatusMode, + StatusRequest, + StepperLoopParams, + StepperStatus, + Stop, + TriggerParamsForStepper, + UnitConverter, + UniversalStatusBits, + VelocityParams, + YesFlashProgramming): + + def __init__(self, device_handle: int, device_info: TLMC_DeviceInfo, feature_group: Bsc20xLogicalChannelFeatureGroup, native_functions: NativeFunctions) -> None: + + super().__init__(device_handle, device_info, native_functions) + + self.feature_group = feature_group + + def get_adc_inputs(self, max_wait_in_milliseconds: int) -> TLMC_AdcInputs: + + return self.feature_group.adc_inputs_feature.get_adc_inputs(max_wait_in_milliseconds) + + def get_bow_index(self, max_wait_in_milliseconds: int) -> TLMC_BowIndex: + + return self.feature_group.bow_index_feature.get_bow_index(max_wait_in_milliseconds) + + def set_bow_index(self, bow_index: TLMC_BowIndex) -> None: + + self.feature_group.bow_index_feature.set_bow_index(bow_index) + + def get_connected_product_info(self) -> TLMC_ConnectedProductInfo: + + return self.feature_group.connected_product_feature.get_connected_product_info() + + def get_supported_connected_products(self) -> List[str]: + + return self.feature_group.connected_product_feature.get_supported_connected_products() + + def set_connected_product(self, product_name: str) -> None: + + self.feature_group.connected_product_feature.set_connected_product(product_name) + + def set_connected_product_info(self, product_info: TLMC_ConnectedProductInfo) -> None: + + self.feature_group.connected_product_feature.set_connected_product_info(product_info) + + def get_digital_output_states(self, max_wait_in_milliseconds: int) -> TLMC_DigitalOutput: + + return self.feature_group.digital_output_states_feature.get_digital_output_states(max_wait_in_milliseconds) + + def set_digital_output_states(self, params: TLMC_DigitalOutput) -> None: + + self.feature_group.digital_output_states_feature.set_digital_output_states(params) + + def disconnect(self) -> None: + + self.feature_group.disconnect_feature.disconnect() + + def get_enable_state(self, max_wait_in_milliseconds: int) -> TLMC_EnableState: + + return self.feature_group.enable_state_feature.get_enable_state(max_wait_in_milliseconds) + + def set_enable_state(self, enable_state: TLMC_EnableState) -> None: + + self.feature_group.enable_state_feature.set_enable_state(enable_state) + + def get_encoder_counter(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.encoder_counter_feature.get_encoder_counter(max_wait_in_milliseconds) + + def set_encoder_counter(self, new_encoder_counter: int) -> None: + + self.feature_group.encoder_counter_feature.set_encoder_counter(new_encoder_counter) + + def get_firmware_version_info(self, max_wait_in_milliseconds: int) -> tuple[TLMC_FirmwareVersion, TLMC_FirmwareVersion]: + + return self.feature_group.firmware_version_info_feature.get_firmware_version_info(max_wait_in_milliseconds) + + def get_general_move_params(self, max_wait_in_milliseconds: int) -> TLMC_GeneralMoveParams: + + return self.feature_group.general_move_params_feature.get_general_move_params(max_wait_in_milliseconds) + + def set_general_move_params(self, params: TLMC_GeneralMoveParams) -> None: + + self.feature_group.general_move_params_feature.set_general_move_params(params) + + def get_hardware_info(self, max_wait_in_milliseconds: int) -> TLMC_HardwareInfo: + + return self.feature_group.hardware_info_feature.get_hardware_info(max_wait_in_milliseconds) + + def home(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.home_feature.home(max_wait_in_milliseconds) + + def get_home_params(self, max_wait_in_milliseconds: int) -> TLMC_HomeParams: + + return self.feature_group.home_params_feature.get_home_params(max_wait_in_milliseconds) + + def set_home_params(self, params: TLMC_HomeParams) -> None: + + self.feature_group.home_params_feature.set_home_params(params) + + def identify(self) -> None: + + self.feature_group.identify_feature.identify() + + def get_jog_params(self, max_wait_in_milliseconds: int) -> TLMC_JogParams: + + return self.feature_group.jog_params_feature.get_jog_params(max_wait_in_milliseconds) + + def set_jog_params(self, params: TLMC_JogParams) -> None: + + self.feature_group.jog_params_feature.set_jog_params(params) + + def get_joystick_params(self, max_wait_in_milliseconds: int) -> TLMC_JoystickParams: + + return self.feature_group.joystick_params_feature.get_joystick_params(max_wait_in_milliseconds) + + def set_joystick_params(self, params: TLMC_JoystickParams) -> None: + + self.feature_group.joystick_params_feature.set_joystick_params(params) + + def get_limit_switch_params(self, max_wait_in_milliseconds: int) -> TLMC_LimitSwitchParams: + + return self.feature_group.limit_switch_params_getter_feature.get_limit_switch_params(max_wait_in_milliseconds) + + def set_limit_switch_params(self, params: TLMC_LimitSwitchParams) -> None: + + self.feature_group.limit_switch_params_setter_feature.set_limit_switch_params(params) + + def load_params(self) -> None: + + self.feature_group.load_params_feature.load_params() + + def move(self, move_mode: TLMC_MoveMode, params: int, max_wait_in_milliseconds: int) -> None: + + self.feature_group.move_feature.move(move_mode, params, max_wait_in_milliseconds) + + def get_move_absolute_params(self, max_wait_in_milliseconds: int) -> TLMC_MoveAbsoluteParams: + + return self.feature_group.move_absolute_params_feature.get_move_absolute_params(max_wait_in_milliseconds) + + def set_move_absolute_params(self, params: TLMC_MoveAbsoluteParams) -> None: + + self.feature_group.move_absolute_params_feature.set_move_absolute_params(params) + + def get_move_relative_params(self, max_wait_in_milliseconds: int) -> TLMC_MoveRelativeParams: + + return self.feature_group.move_relative_params_feature.get_move_relative_params(max_wait_in_milliseconds) + + def set_move_relative_params(self, params: TLMC_MoveRelativeParams) -> None: + + self.feature_group.move_relative_params_feature.set_move_relative_params(params) + + def send_no_flash_programming(self) -> None: + + self.feature_group.no_flash_programming_feature.send_no_flash_programming() + + def persist_params(self, parameter_group_id: TLMC_ParameterGroupId) -> None: + + self.feature_group.persist_params_feature.persist_params(parameter_group_id) + + def get_position_counter(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.position_counter_feature.get_position_counter(max_wait_in_milliseconds) + + def set_position_counter(self, new_position_counter: int) -> None: + + self.feature_group.position_counter_feature.set_position_counter(new_position_counter) + + def get_power_params(self, max_wait_in_milliseconds: int) -> TLMC_PowerParams: + + return self.feature_group.power_params_feature.get_power_params(max_wait_in_milliseconds) + + def set_power_params(self, params: TLMC_PowerParams) -> None: + + self.feature_group.power_params_feature.set_power_params(params) + + def get_profile_mode_params(self, max_wait_in_milliseconds: int) -> TLMC_ProfileModeParams: + + return self.feature_group.profile_mode_params_feature.get_profile_mode_params(max_wait_in_milliseconds) + + def set_profile_mode_params(self, params: TLMC_ProfileModeParams) -> None: + + self.feature_group.profile_mode_params_feature.set_profile_mode_params(params) + + def get_rich_response(self) -> TLMC_RichResponse: + + return self.feature_group.rich_response_feature.get_rich_response() + + def get_setting(self, settings_name: str, max_wait_in_milliseconds: int) -> TLMC_Setting: + + return self.feature_group.settings_feature.get_setting(settings_name, max_wait_in_milliseconds) + + def get_setting_discrete_values(self, settings_name: str) -> str: + + return self.feature_group.settings_feature.get_setting_discrete_values(settings_name) + + def get_settings(self, setting_string_format: TLMC_SettingStringFormat, include_read_only_items: bool) -> str: + + return self.feature_group.settings_feature.get_settings(setting_string_format, include_read_only_items) + + def get_settings_items(self) -> List[TLMC_Setting]: + + return self.feature_group.settings_feature.get_settings_items() + + def set_settings(self, settings: str) -> None: + + self.feature_group.settings_feature.set_settings(settings) + + def get_status_item(self, status_item_id: TLMC_StatusItemId) -> TLMC_StatusItem: + + return self.feature_group.status_items_feature.get_status_item(status_item_id) + + def get_status_item_count(self) -> int: + + return self.feature_group.status_items_feature.get_status_item_count() + + def get_status_items(self, start_index: int, number_of_items: int) -> List[TLMC_StatusItem]: + + return self.feature_group.status_items_feature.get_status_items(start_index, number_of_items) + + def set_status_mode(self, operating_mode: TLMC_OperatingMode) -> None: + + self.feature_group.status_mode_feature.set_status_mode(operating_mode) + + def request_status(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.status_request_feature.request_status(max_wait_in_milliseconds) + + def get_stepper_loop_params(self, max_wait_in_milliseconds: int) -> TLMC_StepperLoopParams: + + return self.feature_group.stepper_loop_params_feature.get_stepper_loop_params(max_wait_in_milliseconds) + + def set_stepper_loop_params(self, params: TLMC_StepperLoopParams) -> None: + + self.feature_group.stepper_loop_params_feature.set_stepper_loop_params(params) + + def get_stepper_status(self, max_wait_in_milliseconds: int) -> TLMC_StepperStatus: + + return self.feature_group.stepper_status_feature.get_stepper_status(max_wait_in_milliseconds) + + def stop(self, stop_mode: TLMC_StopMode, max_wait_in_milliseconds: int) -> None: + + self.feature_group.stop_feature.stop(stop_mode, max_wait_in_milliseconds) + + def get_trigger_params_for_stepper(self, max_wai_in_milliseconds: int) -> TLMC_TriggerParamsForStepper: + + return self.feature_group.trigger_params_for_stepper_feature.get_trigger_params_for_stepper(max_wai_in_milliseconds) + + def set_trigger_params_for_stepper(self, params: TLMC_TriggerParamsForStepper) -> None: + + self.feature_group.trigger_params_for_stepper_feature.set_trigger_params_for_stepper(params) + + def convert_from_device_units_to_physical(self, scale_type: TLMC_ScaleType, device_value: int) -> tuple[float, TLMC_Unit]: + + return self.feature_group.unit_converter_feature.convert_from_device_units_to_physical(scale_type, device_value) + + def convert_from_physical_to_device(self, scale_type: TLMC_ScaleType, unit: TLMC_Unit, physical_value: int) -> int: + + return self.feature_group.unit_converter_feature.convert_from_physical_to_device(scale_type, unit, physical_value) + + def get_preferred_physical_unit(self, scale_type: TLMC_ScaleType) -> TLMC_Unit: + + return self.feature_group.unit_converter_feature.get_preferred_physical_unit(scale_type) + + def get_universal_status_bits(self, max_wait_in_milliseconds: int) -> TLMC_UniversalStatusBit: + + return self.feature_group.universal_status_bits_feature.get_universal_status_bits(max_wait_in_milliseconds) + + def get_velocity_params(self, max_wait_in_milliseconds: int) -> TLMC_VelocityParams: + + return self.feature_group.velocity_params_feature.get_velocity_params(max_wait_in_milliseconds) + + def set_velocity_params(self, params: TLMC_VelocityParams) -> None: + + self.feature_group.velocity_params_feature.set_velocity_params(params) + + def send_yes_flash_programming(self) -> None: + + self.feature_group.yes_flash_programming_feature.send_yes_flash_programming() \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/bsc20xv4_logical_channel.py b/Python/XA/xa_source/src/thorlabs_xa/products/bsc20xv4_logical_channel.py new file mode 100644 index 0000000..2b50ea9 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/products/bsc20xv4_logical_channel.py @@ -0,0 +1,367 @@ +from typing import List + +from thorlabs_xa.interfaces.device_feature_groups.bsc20xv4_logical_channel_feature_group import Bsc20xv4LogicalChannelFeatureGroup + +from thorlabs_xa.interfaces.device_features.adc_inputs import AdcInputs +from thorlabs_xa.interfaces.device_features.bow_index import BowIndex +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.encoder_counter import EncoderCounter +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.joystick_params import JoystickParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.limit_switch_params_setter import LimitSwitchParamsSetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.no_flash_programming import NoFlashProgramming +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.power_params import PowerParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.set_actuator_type import SetActuatorType +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stepper_loop_params import StepperLoopParams +from thorlabs_xa.interfaces.device_features.stepper_status import StepperStatus +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.trigger_params_for_stepper import TriggerParamsForStepper +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams +from thorlabs_xa.interfaces.device_features.yes_flash_programming import YesFlashProgramming + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.shared.params import TLMC_DeviceInfo + +from thorlabs_xa.shared.enums import TLMC_BowIndex, TLMC_DigitalOutput, TLMC_EnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_ParameterGroupId, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_StatusItemId, TLMC_StopMode, TLMC_Unit, TLMC_UniversalStatusBit +from thorlabs_xa.shared.params import TLMC_AdcInputs, TLMC_ConnectedProductInfo, TLMC_FirmwareVersion, TLMC_GeneralMoveParams, TLMC_HardwareInfo, TLMC_HomeParams, TLMC_JogParams, TLMC_JoystickParams, TLMC_LimitSwitchParams, TLMC_MoveAbsoluteParams, TLMC_MoveRelativeParams, TLMC_PowerParams, TLMC_ProfileModeParams, TLMC_RichResponse, TLMC_Setting, TLMC_StatusItem, TLMC_StepperLoopParams, TLMC_StepperStatus, TLMC_TriggerParamsForStepper, TLMC_VelocityParams +from thorlabs_xa.shared.device import Device + +class Bsc20xv4LogicalChannel(Device, + AdcInputs, + BowIndex, + ConnectedProduct, + DigitalOutputStates, + Disconnect, + EnableState, + EncoderCounter, + FirmwareVersionInfo, + GeneralMoveParams, + HardwareInfo, + Home, + HomeParams, + Identify, + JogParams, + JoystickParams, + LimitSwitchParamsGetter, + LimitSwitchParamsSetter, + LoadParams, + Move, + MoveAbsoluteParams, + MoveRelativeParams, + NoFlashProgramming, + PersistParams, + PositionCounter, + PowerParams, + ProfileModeParams, + RichResponse, + SetActuatorType, + Settings, + StatusItems, + StatusMode, + StatusRequest, + StepperLoopParams, + StepperStatus, + Stop, + TriggerParamsForStepper, + UnitConverter, + UniversalStatusBits, + VelocityParams, + YesFlashProgramming): + + def __init__(self, device_handle: int, device_info: TLMC_DeviceInfo, feature_group: Bsc20xv4LogicalChannelFeatureGroup, native_functions: NativeFunctions) -> None: + + super().__init__(device_handle, device_info, native_functions) + + self.feature_group = feature_group + + def get_adc_inputs(self, max_wait_in_milliseconds: int) -> TLMC_AdcInputs: + + return self.feature_group.adc_inputs_feature.get_adc_inputs(max_wait_in_milliseconds) + + def get_bow_index(self, max_wait_in_milliseconds: int) -> TLMC_BowIndex: + + return self.feature_group.bow_index_feature.get_bow_index(max_wait_in_milliseconds) + + def set_bow_index(self, bow_index: TLMC_BowIndex) -> None: + + self.feature_group.bow_index_feature.set_bow_index(bow_index) + + def get_connected_product_info(self) -> TLMC_ConnectedProductInfo: + + return self.feature_group.connected_product_feature.get_connected_product_info() + + def get_supported_connected_products(self) -> List[str]: + + return self.feature_group.connected_product_feature.get_supported_connected_products() + + def set_connected_product(self, product_name: str) -> None: + + self.feature_group.connected_product_feature.set_connected_product(product_name) + + def set_connected_product_info(self, product_info: TLMC_ConnectedProductInfo) -> None: + + self.feature_group.connected_product_feature.set_connected_product_info(product_info) + + def get_digital_output_states(self, max_wait_in_milliseconds: int) -> TLMC_DigitalOutput: + + return self.feature_group.digital_output_states_feature.get_digital_output_states(max_wait_in_milliseconds) + + def set_digital_output_states(self, params: TLMC_DigitalOutput) -> None: + + self.feature_group.digital_output_states_feature.set_digital_output_states(params) + + def disconnect(self) -> None: + + self.feature_group.disconnect_feature.disconnect() + + def get_enable_state(self, max_wait_in_milliseconds: int) -> TLMC_EnableState: + + return self.feature_group.enable_state_feature.get_enable_state(max_wait_in_milliseconds) + + def set_enable_state(self, enable_state: TLMC_EnableState) -> None: + + self.feature_group.enable_state_feature.set_enable_state(enable_state) + + def get_encoder_counter(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.encoder_counter_feature.get_encoder_counter(max_wait_in_milliseconds) + + def set_encoder_counter(self, new_encoder_counter: int) -> None: + + self.feature_group.encoder_counter_feature.set_encoder_counter(new_encoder_counter) + + def get_firmware_version_info(self, max_wait_in_milliseconds: int) -> tuple[TLMC_FirmwareVersion, TLMC_FirmwareVersion]: + + return self.feature_group.firmware_version_info_feature.get_firmware_version_info(max_wait_in_milliseconds) + + def get_general_move_params(self, max_wait_in_milliseconds: int) -> TLMC_GeneralMoveParams: + + return self.feature_group.general_move_params_feature.get_general_move_params(max_wait_in_milliseconds) + + def set_general_move_params(self, params: TLMC_GeneralMoveParams) -> None: + + self.feature_group.general_move_params_feature.set_general_move_params(params) + + def get_hardware_info(self, max_wait_in_milliseconds: int) -> TLMC_HardwareInfo: + + return self.feature_group.hardware_info_feature.get_hardware_info(max_wait_in_milliseconds) + + def home(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.home_feature.home(max_wait_in_milliseconds) + + def get_home_params(self, max_wait_in_milliseconds: int) -> TLMC_HomeParams: + + return self.feature_group.home_params_feature.get_home_params(max_wait_in_milliseconds) + + def set_home_params(self, params: TLMC_HomeParams) -> None: + + self.feature_group.home_params_feature.set_home_params(params) + + def identify(self) -> None: + + self.feature_group.identify_feature.identify() + + def get_jog_params(self, max_wait_in_milliseconds: int) -> TLMC_JogParams: + + return self.feature_group.jog_params_feature.get_jog_params(max_wait_in_milliseconds) + + def set_jog_params(self, params: TLMC_JogParams) -> None: + + self.feature_group.jog_params_feature.set_jog_params(params) + + def get_joystick_params(self, max_wait_in_milliseconds: int) -> TLMC_JoystickParams: + + return self.feature_group.joystick_params_feature.get_joystick_params(max_wait_in_milliseconds) + + def set_joystick_params(self, params: TLMC_JoystickParams) -> None: + + self.feature_group.joystick_params_feature.set_joystick_params(params) + + def get_limit_switch_params(self, max_wait_in_milliseconds: int) -> TLMC_LimitSwitchParams: + + return self.feature_group.limit_switch_params_getter_feature.get_limit_switch_params(max_wait_in_milliseconds) + + def set_limit_switch_params(self, params: TLMC_LimitSwitchParams) -> None: + + self.feature_group.limit_switch_params_setter_feature.set_limit_switch_params(params) + + def load_params(self) -> None: + + self.feature_group.load_params_feature.load_params() + + def move(self, move_mode: TLMC_MoveMode, params: int, max_wait_in_milliseconds: int) -> None: + + self.feature_group.move_feature.move(move_mode, params, max_wait_in_milliseconds) + + def get_move_absolute_params(self, max_wait_in_milliseconds: int) -> TLMC_MoveAbsoluteParams: + + return self.feature_group.move_absolute_params_feature.get_move_absolute_params(max_wait_in_milliseconds) + + def set_move_absolute_params(self, params: TLMC_MoveAbsoluteParams) -> None: + + self.feature_group.move_absolute_params_feature.set_move_absolute_params(params) + + def get_move_relative_params(self, max_wait_in_milliseconds: int) -> TLMC_MoveRelativeParams: + + return self.feature_group.move_relative_params_feature.get_move_relative_params(max_wait_in_milliseconds) + + def set_move_relative_params(self, params: TLMC_MoveRelativeParams) -> None: + + self.feature_group.move_relative_params_feature.set_move_relative_params(params) + + def send_no_flash_programming(self) -> None: + + self.feature_group.no_flash_programming_feature.send_no_flash_programming() + + def persist_params(self, parameter_group_id: TLMC_ParameterGroupId) -> None: + + self.feature_group.persist_params_feature.persist_params(parameter_group_id) + + def get_position_counter(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.position_counter_feature.get_position_counter(max_wait_in_milliseconds) + + def set_position_counter(self, new_position_counter: int) -> None: + + self.feature_group.position_counter_feature.set_position_counter(new_position_counter) + + def get_power_params(self, max_wait_in_milliseconds: int) -> TLMC_PowerParams: + + return self.feature_group.power_params_feature.get_power_params(max_wait_in_milliseconds) + + def set_power_params(self, params: TLMC_PowerParams) -> None: + + self.feature_group.power_params_feature.set_power_params(params) + + def get_profile_mode_params(self, max_wait_in_milliseconds: int) -> TLMC_ProfileModeParams: + + return self.feature_group.profile_mode_params_feature.get_profile_mode_params(max_wait_in_milliseconds) + + def set_profile_mode_params(self, params: TLMC_ProfileModeParams) -> None: + + self.feature_group.profile_mode_params_feature.set_profile_mode_params(params) + + def get_rich_response(self) -> TLMC_RichResponse: + + return self.feature_group.rich_response_feature.get_rich_response() + + def set_actuator_type(self, actuator_type: int) -> None: + + self.feature_group.set_actuator_type_feature.set_actuator_type(actuator_type) + + def get_setting(self, settings_name: str, max_wait_in_milliseconds: int) -> TLMC_Setting: + + return self.feature_group.settings_feature.get_setting(settings_name, max_wait_in_milliseconds) + + def get_setting_discrete_values(self, settings_name: str) -> str: + + return self.feature_group.settings_feature.get_setting_discrete_values(settings_name) + + def get_settings(self, setting_string_format: TLMC_SettingStringFormat, include_read_only_items: bool) -> str: + + return self.feature_group.settings_feature.get_settings(setting_string_format, include_read_only_items) + + def get_settings_items(self) -> List[TLMC_Setting]: + + return self.feature_group.settings_feature.get_settings_items() + + def set_settings(self, settings: str) -> None: + + self.feature_group.settings_feature.set_settings(settings) + + def get_status_item(self, status_item_id: TLMC_StatusItemId) -> TLMC_StatusItem: + + return self.feature_group.status_items_feature.get_status_item(status_item_id) + + def get_status_item_count(self) -> int: + + return self.feature_group.status_items_feature.get_status_item_count() + + def get_status_items(self, start_index: int, number_of_items: int) -> List[TLMC_StatusItem]: + + return self.feature_group.status_items_feature.get_status_items(start_index, number_of_items) + + def set_status_mode(self, operating_mode: TLMC_OperatingMode) -> None: + + self.feature_group.status_mode_feature.set_status_mode(operating_mode) + + def request_status(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.status_request_feature.request_status(max_wait_in_milliseconds) + + def get_stepper_loop_params(self, max_wait_in_milliseconds: int) -> TLMC_StepperLoopParams: + + return self.feature_group.stepper_loop_params_feature.get_stepper_loop_params(max_wait_in_milliseconds) + + def set_stepper_loop_params(self, params: TLMC_StepperLoopParams) -> None: + + self.feature_group.stepper_loop_params_feature.set_stepper_loop_params(params) + + def get_stepper_status(self, max_wait_in_milliseconds: int) -> TLMC_StepperStatus: + + return self.feature_group.stepper_status_feature.get_stepper_status(max_wait_in_milliseconds) + + def stop(self, stop_mode: TLMC_StopMode, max_wait_in_milliseconds: int) -> None: + + self.feature_group.stop_feature.stop(stop_mode, max_wait_in_milliseconds) + + def get_trigger_params_for_stepper(self, max_wai_in_milliseconds: int) -> TLMC_TriggerParamsForStepper: + + return self.feature_group.trigger_params_for_stepper_feature.get_trigger_params_for_stepper(max_wai_in_milliseconds) + + def set_trigger_params_for_stepper(self, params: TLMC_TriggerParamsForStepper) -> None: + + self.feature_group.trigger_params_for_stepper_feature.set_trigger_params_for_stepper(params) + + def convert_from_device_units_to_physical(self, scale_type: TLMC_ScaleType, device_value: int) -> tuple[float, TLMC_Unit]: + + return self.feature_group.unit_converter_feature.convert_from_device_units_to_physical(scale_type, device_value) + + def convert_from_physical_to_device(self, scale_type: TLMC_ScaleType, unit: TLMC_Unit, physical_value: int) -> int: + + return self.feature_group.unit_converter_feature.convert_from_physical_to_device(scale_type, unit, physical_value) + + def get_preferred_physical_unit(self, scale_type: TLMC_ScaleType) -> TLMC_Unit: + + return self.feature_group.unit_converter_feature.get_preferred_physical_unit(scale_type) + + def get_universal_status_bits(self, max_wait_in_milliseconds: int) -> TLMC_UniversalStatusBit: + + return self.feature_group.universal_status_bits_feature.get_universal_status_bits(max_wait_in_milliseconds) + + def get_velocity_params(self, max_wait_in_milliseconds: int) -> TLMC_VelocityParams: + + return self.feature_group.velocity_params_feature.get_velocity_params(max_wait_in_milliseconds) + + def set_velocity_params(self, params: TLMC_VelocityParams) -> None: + + self.feature_group.velocity_params_feature.set_velocity_params(params) + + def send_yes_flash_programming(self) -> None: + + self.feature_group.yes_flash_programming_feature.send_yes_flash_programming() \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/kbd101.py b/Python/XA/xa_source/src/thorlabs_xa/products/kbd101.py new file mode 100644 index 0000000..94bfe85 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/products/kbd101.py @@ -0,0 +1,359 @@ +from typing import List + +from thorlabs_xa.interfaces.device_feature_groups.kbd101_feature_group import Kbd101FeatureGroup + +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.current_loop_params import CurrentLoopParams +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.end_of_move_messages_mode import EndOfMoveMessagesMode +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.kcube_io_trigger_params import KcubeIoTriggerParams +from thorlabs_xa.interfaces.device_features.kcube_mmi_params import KcubeMmiParams +from thorlabs_xa.interfaces.device_features.kcube_position_trigger_params import KcubePositionTriggerParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.motor_output_params import MotorOutputParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.position_loop_params import PositionLoopParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.track_settle_params import TrackSettleParams +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status import UniversalStatus +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.shared.params import TLMC_DeviceInfo + +from thorlabs_xa.shared.enums import TLMC_CurrentLoopScenario, TLMC_DigitalOutput, TLMC_EnableState, TLMC_EndOfMoveMessagesMode, TLMC_MoveMode, TLMC_OperatingMode, TLMC_ParameterGroupId, TLMC_PositionLoopScenario, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_StatusItemId, TLMC_StopMode, TLMC_Unit, TLMC_UniversalStatusBit +from thorlabs_xa.shared.params import TLMC_ConnectedProductInfo, TLMC_CurrentLoopParams, TLMC_FirmwareVersion, TLMC_GeneralMoveParams, TLMC_HardwareInfo, TLMC_HomeParams, TLMC_JogParams, TLMC_KcubeIoTriggerParams, TLMC_KcubeMmiParams, TLMC_KcubePositionTriggerParams, TLMC_LimitSwitchParams, TLMC_MotorOutputParams, TLMC_MoveAbsoluteParams, TLMC_MoveRelativeParams, TLMC_PositionLoopParams, TLMC_RichResponse, TLMC_Setting, TLMC_StageAxisParams, TLMC_StatusItem, TLMC_TrackSettleParams, TLMC_UniversalStatus, TLMC_VelocityParams +from thorlabs_xa.shared.device import Device + +class Kbd101(Device, + ConnectedProduct, + CurrentLoopParams, + DigitalOutputStates, + Disconnect, + EnableState, + EndOfMoveMessagesMode, + FirmwareVersionInfo, + GeneralMoveParams, + HardwareInfo, + Home, + HomeParams, + Identify, + JogParams, + KcubeIoTriggerParams, + KcubeMmiParams, + KcubePositionTriggerParams, + LimitSwitchParamsGetter, + LoadParams, + MotorOutputParams, + Move, + MoveAbsoluteParams, + MoveRelativeParams, + PersistParams, + PositionCounter, + PositionLoopParams, + RestoreFactoryDefaults, + RichResponse, + Settings, + StageAxisParams, + StatusItems, + StatusMode, + StatusRequest, + Stop, + TrackSettleParams, + UnitConverter, + UniversalStatus, + UniversalStatusBits, + VelocityParams): + + def __init__(self, device_handle: int, device_info: TLMC_DeviceInfo, feature_group: Kbd101FeatureGroup, native_functions: NativeFunctions) -> None: + + super().__init__(device_handle, device_info, native_functions) + + self.feature_group = feature_group + + def get_connected_product_info(self) -> TLMC_ConnectedProductInfo: + + return self.feature_group.connected_product_feature.get_connected_product_info() + + def get_supported_connected_products(self) -> List[str]: + + return self.feature_group.connected_product_feature.get_supported_connected_products() + + def set_connected_product(self, product_name: str) -> None: + + self.feature_group.connected_product_feature.set_connected_product(product_name) + + def set_connected_product_info(self, product_info: TLMC_ConnectedProductInfo) -> None: + + self.feature_group.connected_product_feature.set_connected_product_info(product_info) + + def get_current_loop_params(self, scenario: TLMC_CurrentLoopScenario, max_wait_in_milliseconds: int) -> TLMC_CurrentLoopParams: + + return self.feature_group.current_loop_params_feature.get_current_loop_params(scenario, max_wait_in_milliseconds) + + def set_current_loop_params(self, scenario: TLMC_CurrentLoopScenario, parameters: TLMC_CurrentLoopParams) -> None: + + self.feature_group.current_loop_params_feature.set_current_loop_params(scenario, parameters) + + def get_digital_output_states(self, max_wait_in_milliseconds: int) -> TLMC_DigitalOutput: + + return self.feature_group.digital_output_states_feature.get_digital_output_states(max_wait_in_milliseconds) + + def set_digital_output_states(self, params: TLMC_DigitalOutput) -> None: + + self.feature_group.digital_output_states_feature.set_digital_output_states(params) + + def disconnect(self) -> None: + + self.feature_group.disconnect_feature.disconnect() + + def get_enable_state(self, max_wait_in_milliseconds: int) -> TLMC_EnableState: + + return self.feature_group.enable_state_feature.get_enable_state(max_wait_in_milliseconds) + + def set_enable_state(self, enable_state: TLMC_EnableState) -> None: + + self.feature_group.enable_state_feature.set_enable_state(enable_state) + + def set_end_of_move_messages_mode(self, messages_mode: TLMC_EndOfMoveMessagesMode) -> None: + + self.feature_group.end_of_move_messages_mode_feature.set_end_of_move_messages_mode(messages_mode) + + def get_firmware_version_info(self, max_wait_in_milliseconds: int) -> tuple[TLMC_FirmwareVersion, TLMC_FirmwareVersion]: + + return self.feature_group.firmware_version_info_feature.get_firmware_version_info(max_wait_in_milliseconds) + + def get_general_move_params(self, max_wait_in_milliseconds: int) -> TLMC_GeneralMoveParams: + + return self.feature_group.general_move_params_feature.get_general_move_params(max_wait_in_milliseconds) + + def set_general_move_params(self, params: TLMC_GeneralMoveParams) -> None: + + self.feature_group.general_move_params_feature.set_general_move_params(params) + + def get_hardware_info(self, max_wait_in_milliseconds: int) -> TLMC_HardwareInfo: + + return self.feature_group.hardware_info_feature.get_hardware_info(max_wait_in_milliseconds) + + def home(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.home_feature.home(max_wait_in_milliseconds) + + def get_home_params(self, max_wait_in_milliseconds: int) -> TLMC_HomeParams: + + return self.feature_group.home_params_feature.get_home_params(max_wait_in_milliseconds) + + def set_home_params(self, params: TLMC_HomeParams) -> None: + + self.feature_group.home_params_feature.set_home_params(params) + + def identify(self) -> None: + + self.feature_group.identify_feature.identify() + + def get_jog_params(self, max_wait_in_milliseconds: int) -> TLMC_JogParams: + + return self.feature_group.jog_params_feature.get_jog_params(max_wait_in_milliseconds) + + def set_jog_params(self, params: TLMC_JogParams) -> None: + + self.feature_group.jog_params_feature.set_jog_params(params) + + def get_kcube_io_trigger_params(self, max_wait_in_milliseconds: int) -> TLMC_KcubeIoTriggerParams: + + return self.feature_group.kcube_io_trigger_params_feature.get_kcube_io_trigger_params(max_wait_in_milliseconds) + + def set_kcube_io_trigger_params(self, params: TLMC_KcubeIoTriggerParams) -> None: + + self.feature_group.kcube_io_trigger_params_feature.set_kcube_io_trigger_params(params) + + def get_kcube_mmi_params(self, max_wait_in_milliseconds: int) -> TLMC_KcubeMmiParams: + + return self.feature_group.kcube_mmi_params_feature.get_kcube_mmi_params(max_wait_in_milliseconds) + + def set_kcube_mmi_params(self, params: TLMC_KcubeMmiParams) -> None: + + self.feature_group.kcube_mmi_params_feature.set_kcube_mmi_params(params) + + def get_kcube_position_trigger_params(self, max_wait_in_milliseconds: int) -> TLMC_KcubePositionTriggerParams: + + return self.feature_group.kcube_position_trigger_params_feature.get_kcube_position_trigger_params(max_wait_in_milliseconds) + + def set_kcube_position_trigger_params(self, params: TLMC_KcubePositionTriggerParams) -> None: + + self.feature_group.kcube_position_trigger_params_feature.set_kcube_position_trigger_params(params) + + def get_limit_switch_params(self, max_wait_in_milliseconds: int) -> TLMC_LimitSwitchParams: + + return self.feature_group.limit_switch_params_getter_feature.get_limit_switch_params(max_wait_in_milliseconds) + + def load_params(self) -> None: + + self.feature_group.load_params_feature.load_params() + + def get_motor_output_params(self, max_wait_in_milliseconds: int) -> TLMC_MotorOutputParams: + + return self.feature_group.motor_output_params_feature.get_motor_output_params(max_wait_in_milliseconds) + + def set_motor_output_params(self, params: TLMC_MotorOutputParams) -> None: + + self.feature_group.motor_output_params_feature.set_motor_output_params(params) + + def move(self, move_mode: TLMC_MoveMode, params: int, max_wait_in_milliseconds: int) -> None: + + self.feature_group.move_feature.move(move_mode, params, max_wait_in_milliseconds) + + def get_move_absolute_params(self, max_wait_in_milliseconds: int) -> TLMC_MoveAbsoluteParams: + + return self.feature_group.move_absolute_params_feature.get_move_absolute_params(max_wait_in_milliseconds) + + def set_move_absolute_params(self, params: TLMC_MoveAbsoluteParams) -> None: + + self.feature_group.move_absolute_params_feature.set_move_absolute_params(params) + + def get_move_relative_params(self, max_wait_in_milliseconds: int) -> TLMC_MoveRelativeParams: + + return self.feature_group.move_relative_params_feature.get_move_relative_params(max_wait_in_milliseconds) + + def set_move_relative_params(self, params: TLMC_MoveRelativeParams) -> None: + + self.feature_group.move_relative_params_feature.set_move_relative_params(params) + + def persist_params(self, parameter_group_id: TLMC_ParameterGroupId) -> None: + + self.feature_group.persist_params_feature.persist_params(parameter_group_id) + + def get_position_counter(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.position_counter_feature.get_position_counter(max_wait_in_milliseconds) + + def set_position_counter(self, new_position_counter: int) -> None: + + self.feature_group.position_counter_feature.set_position_counter(new_position_counter) + + def get_position_loop_params(self, scenario: TLMC_PositionLoopScenario, max_wait_in_milliseconds: int) -> TLMC_PositionLoopParams: + + return self.feature_group.position_loop_params_feature.get_position_loop_params(scenario, max_wait_in_milliseconds) + + def set_position_loop_params(self, scenario: TLMC_PositionLoopScenario, params: TLMC_PositionLoopParams) -> None: + + self.feature_group.position_loop_params_feature.set_position_loop_params(scenario, params) + + def restore_factory_defaults(self) -> None: + + self.feature_group.restore_factory_defaults_feature.restore_factory_defaults() + + def get_rich_response(self) -> TLMC_RichResponse: + + return self.feature_group.rich_response_feature.get_rich_response() + + def get_setting(self, settings_name: str, max_wait_in_milliseconds: int) -> TLMC_Setting: + + return self.feature_group.settings_feature.get_setting(settings_name, max_wait_in_milliseconds) + + def get_setting_discrete_values(self, settings_name: str) -> str: + + return self.feature_group.settings_feature.get_setting_discrete_values(settings_name) + + def get_settings(self, setting_string_format: TLMC_SettingStringFormat, include_read_only_items: bool) -> str: + + return self.feature_group.settings_feature.get_settings(setting_string_format, include_read_only_items) + + def get_settings_items(self) -> List[TLMC_Setting]: + + return self.feature_group.settings_feature.get_settings_items() + + def set_settings(self, settings: str) -> None: + + self.feature_group.settings_feature.set_settings(settings) + + def get_stage_axis_params(self, max_wait_in_milliseconds: int) -> TLMC_StageAxisParams: + + return self.feature_group.stage_axis_params_feature.get_stage_axis_params(max_wait_in_milliseconds) + + def set_stage_axis_params(self, params: TLMC_StageAxisParams) -> None: + + self.feature_group.stage_axis_params_feature.set_stage_axis_params(params) + + def get_status_item(self, status_item_id: TLMC_StatusItemId) -> TLMC_StatusItem: + + return self.feature_group.status_items_feature.get_status_item(status_item_id) + + def get_status_item_count(self) -> int: + + return self.feature_group.status_items_feature.get_status_item_count() + + def get_status_items(self, start_index: int, number_of_items: int) -> List[TLMC_StatusItem]: + + return self.feature_group.status_items_feature.get_status_items(start_index, number_of_items) + + def set_status_mode(self, operating_mode: TLMC_OperatingMode) -> None: + + self.feature_group.status_mode_feature.set_status_mode(operating_mode) + + def request_status(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.status_request_feature.request_status(max_wait_in_milliseconds) + + def stop(self, stop_mode: TLMC_StopMode, max_wait_in_milliseconds: int) -> None: + + self.feature_group.stop_feature.stop(stop_mode, max_wait_in_milliseconds) + + def get_track_settle_params(self, max_wait_in_milliseconds: int) -> TLMC_TrackSettleParams: + + return self.feature_group.track_settle_params_feature.get_track_settle_params(max_wait_in_milliseconds) + + def set_track_settle_params(self, params: TLMC_TrackSettleParams) -> None: + + self.feature_group.track_settle_params_feature.set_track_settle_params(params) + + def convert_from_device_units_to_physical(self, scale_type: TLMC_ScaleType, device_value: int) -> tuple[float, TLMC_Unit]: + + return self.feature_group.unit_converter_feature.convert_from_device_units_to_physical(scale_type, device_value) + + def convert_from_physical_to_device(self, scale_type: TLMC_ScaleType, unit: TLMC_Unit, physical_value: int) -> int: + + return self.feature_group.unit_converter_feature.convert_from_physical_to_device(scale_type, unit, physical_value) + + def get_preferred_physical_unit(self, scale_type: TLMC_ScaleType) -> TLMC_Unit: + + return self.feature_group.unit_converter_feature.get_preferred_physical_unit(scale_type) + + def get_universal_status(self, max_wait_in_milliseconds: int) -> TLMC_UniversalStatus: + + return self.feature_group.universal_status_feature.get_universal_status(max_wait_in_milliseconds) + + def get_universal_status_bits(self, max_wait_in_milliseconds: int) -> TLMC_UniversalStatusBit: + + return self.feature_group.universal_status_bits_feature.get_universal_status_bits(max_wait_in_milliseconds) + + def get_velocity_params(self, max_wait_in_milliseconds: int) -> TLMC_VelocityParams: + + return self.feature_group.velocity_params_feature.get_velocity_params(max_wait_in_milliseconds) + + def set_velocity_params(self, params: TLMC_VelocityParams) -> None: + + self.feature_group.velocity_params_feature.set_velocity_params(params) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/kim001.py b/Python/XA/xa_source/src/thorlabs_xa/products/kim001.py new file mode 100644 index 0000000..b116e69 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/products/kim001.py @@ -0,0 +1,244 @@ +from typing import List + +from thorlabs_xa.interfaces.device_feature_groups.kim001_feature_group import Kim001FeatureGroup + +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.conversion_factors import ConversionFactors +from thorlabs_xa.interfaces.device_features.dc_pid_params import DcPidParams +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.drive_operations_params import DriveOperationsParams +from thorlabs_xa.interfaces.device_features.end_of_move_messages_mode import EndOfMoveMessagesMode +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_channel_enable import KcubeChannelEnable +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_feedback_signal_params import KcubeFeedbackSignalParams +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_io_trigger_params import KcubeIoTriggerParams +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_jog_params import KcubeJogParams +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_mmi_params import KcubeMmiParams +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.kcube_trigger_params import KcubeTriggerParams +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.position_counts import PositionCounts +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.piezo_inertial_motor.stage_select_params import StageSelectParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.shared.params import TLMC_DeviceInfo + +from thorlabs_xa.shared.enums import TLMC_EndOfMoveMessagesMode, TLMC_PZIM_KcubeChannelEnableMode, TLMC_MoveMode, TLMC_OperatingMode, TLMC_ParameterGroupId, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_StatusItemId, TLMC_StopMode, TLMC_Unit +from thorlabs_xa.shared.params import TLMC_DcPidParams, TLMC_PZIM_DriveOperationsParams, TLMC_FirmwareVersion, TLMC_HardwareInfo, TLMC_PZIM_KcubeFeedbackSignalParams, TLMC_PZIM_KcubeIoTriggerParams, TLMC_PZIM_KcubeJogParams, TLMC_PZIM_KcubeMmiParams, TLMC_PZIM_KcubeTriggerParams, TLMC_PZIM_PositionCounts, TLMC_RichResponse, TLMC_Setting, TLMC_PZIM_StageSelectParams, TLMC_StatusItem +from thorlabs_xa.shared.device import Device + +class Kim001(Device, + ConversionFactors, + DcPidParams, + Disconnect, + DriveOperationsParams, + EndOfMoveMessagesMode, + FirmwareVersionInfo, + HardwareInfo, + Identify, + KcubeChannelEnable, + KcubeFeedbackSignalParams, + KcubeIoTriggerParams, + KcubeJogParams, + KcubeMmiParams, + KcubeTriggerParams, + LoadParams, + Move, + PersistParams, + PositionCounts, + RichResponse, + Settings, + StageSelectParams, + StatusItems, + StatusMode, + StatusRequest, + Stop, + UnitConverter): + + def __init__(self, device_handle: int, device_info: TLMC_DeviceInfo, feature_group: Kim001FeatureGroup, native_functions: NativeFunctions) -> None: + + super().__init__(device_handle, device_info, native_functions) + + self.feature_group = feature_group + + + def get_conversion_factors(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.conversion_factors_feature.get_conversion_factors(max_wait_in_milliseconds) + + def get_dc_pid_params(self, max_wait_in_milliseconds: int) -> TLMC_DcPidParams: + + return self.feature_group.dc_pid_params_feature.get_dc_pid_params(max_wait_in_milliseconds) + + def set_dc_pid_params(self, parameters: TLMC_DcPidParams) -> None: + + self.feature_group.dc_pid_params_feature.set_dc_pid_params(parameters) + + def disconnect(self) -> None: + + self.feature_group.disconnect_feature.disconnect() + + def get_drive_operations_params(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_DriveOperationsParams: + + return self.feature_group.drive_operations_params_feature.get_drive_operations_params(max_wait_in_milliseconds) + + def set_drive_operations_params(self, params: TLMC_PZIM_DriveOperationsParams) -> None: + + self.feature_group.drive_operations_params_feature.set_drive_operations_params(params) + + def set_end_of_move_messages_mode(self, messages_mode: TLMC_EndOfMoveMessagesMode) -> None: + + self.feature_group.end_of_move_messages_mode_feature.set_end_of_move_messages_mode(messages_mode) + + def get_firmware_version_info(self, max_wait_in_milliseconds: int) -> tuple[TLMC_FirmwareVersion, TLMC_FirmwareVersion]: + + return self.feature_group.firmware_version_info_feature.get_firmware_version_info(max_wait_in_milliseconds) + + def get_hardware_info(self, max_wait_in_milliseconds: int) -> TLMC_HardwareInfo: + + return self.feature_group.hardware_info_feature.get_hardware_info(max_wait_in_milliseconds) + + def identify(self) -> None: + + self.feature_group.identify_feature.identify() + + def get_kcube_channel_enable(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeChannelEnableMode: + + return self.feature_group.kcube_channel_enable_feature.get_kcube_channel_enable(max_wait_in_milliseconds) + + def set_kcube_channel_enable(self, channelMode: TLMC_PZIM_KcubeChannelEnableMode) -> None: + + self.feature_group.kcube_channel_enable_feature.set_kcube_channel_enable(channelMode) + + def get_kcube_feedback_signal_params(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeFeedbackSignalParams: + + return self.feature_group.kcube_feedback_signal_params_feature.get_kcube_feedback_signal_params(max_wait_in_milliseconds) + + def set_kcube_feedback_signal_params(self, params: TLMC_PZIM_KcubeFeedbackSignalParams) -> None: + + self.feature_group.kcube_feedback_signal_params_feature.set_kcube_feedback_signal_params(params) + + def get_kcube_io_trigger_params(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeIoTriggerParams: + + return self.feature_group.kcube_io_trigger_params_feature.get_kcube_io_trigger_params(max_wait_in_milliseconds) + + def set_kcube_io_trigger_params(self, params: TLMC_PZIM_KcubeIoTriggerParams) -> None: + + self.feature_group.kcube_io_trigger_params_feature.set_kcube_io_trigger_params(params) + + def get_kcube_jog_params(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeJogParams: + + return self.feature_group.kcube_jog_params_feature.get_kcube_jog_params(max_wait_in_milliseconds) + + def set_kcube_jog_params(self, params: TLMC_PZIM_KcubeJogParams) -> None: + + self.feature_group.kcube_jog_params_feature.set_kcube_jog_params(params) + + def get_kcube_mmi_params(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeMmiParams: + + return self.feature_group.kcube_mmi_params_feature.get_kcube_mmi_params(max_wait_in_milliseconds) + + def set_kcube_mmi_params(self, params: TLMC_PZIM_KcubeMmiParams) -> None: + + self.feature_group.kcube_mmi_params_feature.set_kcube_mmi_params(params) + + def get_kcube_trigger_params(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_KcubeTriggerParams: + + return self.feature_group.kcube_trigger_params_feature.get_kcube_trigger_params(max_wait_in_milliseconds) + + def set_kcube_trigger_params(self, params: TLMC_PZIM_KcubeTriggerParams) -> None: + + self.feature_group.kcube_trigger_params_feature.set_kcube_trigger_params(params) + + def load_params(self) -> None: + + self.feature_group.load_params_feature.load_params() + + def move(self, move_mode: TLMC_MoveMode, params: int, max_wait_in_milliseconds: int) -> None: + + self.feature_group.move_feature.move(move_mode, params, max_wait_in_milliseconds) + + def persist_params(self, parameter_group_id: TLMC_ParameterGroupId) -> None: + + self.feature_group.persist_params_feature.persist_params(parameter_group_id) + + def get_position_counts(self, max_wait_in_milliseconds: int) -> TLMC_PZIM_PositionCounts: + + return self.feature_group.position_counts_feature.get_position_counts(max_wait_in_milliseconds) + + def set_position_counts(self, params: TLMC_PZIM_PositionCounts) -> None: + + self.feature_group.position_counts_feature.set_position_counts(params) + + def get_rich_response(self) -> TLMC_RichResponse: + + return self.feature_group.rich_response_feature.get_rich_response() + + def get_setting(self, settings_name: str, max_wait_in_milliseconds: int) -> TLMC_Setting: + + return self.feature_group.settings_feature.get_setting(settings_name, max_wait_in_milliseconds) + + def get_setting_discrete_values(self, settings_name: str) -> str: + + return self.feature_group.settings_feature.get_setting_discrete_values(settings_name) + + def get_settings(self, setting_string_format: TLMC_SettingStringFormat, include_read_only_items: bool) -> str: + + return self.feature_group.settings_feature.get_settings(setting_string_format, include_read_only_items) + + def get_settings_items(self) -> List[TLMC_Setting]: + + return self.feature_group.settings_feature.get_settings_items() + + def set_settings(self, settings: str) -> None: + + self.feature_group.settings_feature.set_settings(settings) + + def set_stage_select_params(self, params: TLMC_PZIM_StageSelectParams) -> None: + + self.feature_group.stage_select_params_feature.set_stage_select_params(params) + + def get_status_item(self, status_item_id: TLMC_StatusItemId) -> TLMC_StatusItem: + + return self.feature_group.status_items_feature.get_status_item(status_item_id) + + def get_status_item_count(self) -> int: + + return self.feature_group.status_items_feature.get_status_item_count() + + def get_status_items(self, start_index: int, number_of_items: int) -> List[TLMC_StatusItem]: + + return self.feature_group.status_items_feature.get_status_items(start_index, number_of_items) + + def set_status_mode(self, operating_mode: TLMC_OperatingMode) -> None: + + self.feature_group.status_mode_feature.set_status_mode(operating_mode) + + def request_status(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.status_request_feature.request_status(max_wait_in_milliseconds) + + def stop(self, stop_mode: TLMC_StopMode, max_wait_in_milliseconds: int) -> None: + + self.feature_group.stop_feature.stop(stop_mode, max_wait_in_milliseconds) + + def convert_from_device_units_to_physical(self, scale_type: TLMC_ScaleType, device_value: int) -> tuple[float, TLMC_Unit]: + + return self.feature_group.unit_converter_feature.convert_from_device_units_to_physical(scale_type, device_value) + + def convert_from_physical_to_device(self, scale_type: TLMC_ScaleType, unit: TLMC_Unit, physical_value: int) -> int: + + return self.feature_group.unit_converter_feature.convert_from_physical_to_device(scale_type, unit, physical_value) + + def get_preferred_physical_unit(self, scale_type: TLMC_ScaleType) -> TLMC_Unit: + + return self.feature_group.unit_converter_feature.get_preferred_physical_unit(scale_type) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/kpc101.py b/Python/XA/xa_source/src/thorlabs_xa/products/kpc101.py index ad82630..f020e2c 100644 --- a/Python/XA/xa_source/src/thorlabs_xa/products/kpc101.py +++ b/Python/XA/xa_source/src/thorlabs_xa/products/kpc101.py @@ -37,7 +37,7 @@ from thorlabs_xa.shared.device import Device from thorlabs_xa.shared.enums import TLMC_DigitalOutput, TLMC_EnableState, TLMC_KcubeMmiLockState, TLMC_OperatingMode, TLMC_PZ_PositionControlMode, TLMC_PZ_StatusBit, TLMC_ParameterGroupId, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_StatusItemId, TLMC_Unit -from thorlabs_xa.shared.params import TLMC_ConnectedProductInfo, TLMC_DeviceInfo, TLMC_FirmwareVersion, TLMC_HardwareInfo, TLMC_PZ_KpcIoSettingsParams, TLMC_PZ_KpcIoTriggerParams, TLMC_PZ_KpcMmiParams, TLMC_PZ_OutputVoltageControlSourceParams, TLMC_PZ_OutputWaveformLoopTableSample, TLMC_PZ_OutputWaveformParams, TLMC_PZ_PositionLoopParams, TLMC_PZ_Status, TLMC_RichResponse, TLMC_Setting, TLMC_StatusItem +from thorlabs_xa.shared.params import TLMC_ConnectedProductInfo, TLMC_DeviceInfo, TLMC_FirmwareVersion, TLMC_HardwareInfo, TLMC_PZ_KpcIoSettingsParams, TLMC_PZ_KpcIoTriggerParams, TLMC_PZ_KpcMmiParams, TLMC_PZ_OutputVoltageControlSourceParams, TLMC_PZ_OutputWaveformLookupTableSample, TLMC_PZ_OutputWaveformParams, TLMC_PZ_PositionLoopParams, TLMC_PZ_Status, TLMC_RichResponse, TLMC_Setting, TLMC_StatusItem class Kpc101(Device, @@ -165,7 +165,7 @@ def set_output_voltage_control_source_params(self, params: TLMC_PZ_OutputVoltage def set_output_waveform_params(self, params: TLMC_PZ_OutputWaveformParams) -> None: self.feature_group.output_waveform_feature.set_output_waveform_params(params) - def set_output_waveform_lookup_table_sample_params(self, params: TLMC_PZ_OutputWaveformLoopTableSample) -> None: + def set_output_waveform_lookup_table_sample_params(self, params: TLMC_PZ_OutputWaveformLookupTableSample) -> None: self.feature_group.output_waveform_feature.set_output_waveform_lookup_table_sample_params(params) def start_output_waveform(self) -> None: diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/linear_translation_stage.py b/Python/XA/xa_source/src/thorlabs_xa/products/linear_translation_stage.py index 1999f0b..e11c6c2 100644 --- a/Python/XA/xa_source/src/thorlabs_xa/products/linear_translation_stage.py +++ b/Python/XA/xa_source/src/thorlabs_xa/products/linear_translation_stage.py @@ -28,13 +28,13 @@ from thorlabs_xa.interfaces.device_features.stepper_status import StepperStatus from thorlabs_xa.interfaces.device_features.stop import Stop from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter -from thorlabs_xa.interfaces.device_features.universal_status import UniversalStatus +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams from thorlabs_xa.native_sdks.native_functions import NativeFunctions from thorlabs_xa.shared.device import Device -from thorlabs_xa.shared.enums import TLMC_CalibrationState, TLMC_EnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_ParameterGroupId, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_StatusItemId, TLMC_StopMode, TLMC_Unit -from thorlabs_xa.shared.params import TLMC_ButtonParams, TLMC_ConnectedProductInfo, TLMC_DeviceInfo, TLMC_FirmwareVersion, TLMC_GeneralMoveParams, TLMC_HardwareInfo, TLMC_HomeParams,TLMC_JogParams,TLMC_LimitSwitchParams,TLMC_MoveAbsoluteParams, TLMC_MoveRelativeParams, TLMC_PotentiometerParams,TLMC_StepperStatus, TLMC_Setting, TLMC_StatusItem, TLMC_UniversalStatus, TLMC_VelocityParams +from thorlabs_xa.shared.enums import TLMC_CalibrationState, TLMC_EnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_ParameterGroupId, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_StatusItemId, TLMC_StopMode, TLMC_Unit, TLMC_UniversalStatusBit +from thorlabs_xa.shared.params import TLMC_ButtonParams, TLMC_ConnectedProductInfo, TLMC_DeviceInfo, TLMC_FirmwareVersion, TLMC_GeneralMoveParams, TLMC_HardwareInfo, TLMC_HomeParams,TLMC_JogParams,TLMC_LimitSwitchParams,TLMC_MoveAbsoluteParams, TLMC_MoveRelativeParams, TLMC_PotentiometerParams,TLMC_StepperStatus, TLMC_Setting, TLMC_StatusItem, TLMC_VelocityParams class LinearTranslationStage(Device, ButtonParams, @@ -64,7 +64,7 @@ class LinearTranslationStage(Device, StepperStatus, Stop, UnitConverter, - UniversalStatus, + UniversalStatusBits, VelocityParams): """ Thorlabs Long travel stage control. @@ -185,7 +185,7 @@ def get_settings_items(self) -> List[TLMC_Setting]: def get_settings(self, setting_string_format: TLMC_SettingStringFormat, include_read_only_items: bool) -> str: return self.feature_group.settings_feature.get_settings(setting_string_format, include_read_only_items) - + def set_settings(self, settings: str) -> None: self.feature_group.settings_feature.set_settings(settings) @@ -194,37 +194,37 @@ def get_setting_discrete_values(self, settings_name: str) -> str: def get_status_item(self, status_item_id: TLMC_StatusItemId) -> TLMC_StatusItem: return self.feature_group.status_items_feature.get_status_item(status_item_id) - + def get_status_item_count(self) -> int: return self.feature_group.status_items_feature.get_status_item_count() - + def get_status_items(self, start_index: int, number_of_items: int) -> List[TLMC_StatusItem]: return self.feature_group.status_items_feature.get_status_items(start_index, number_of_items) - + def set_status_mode(self, operating_mode: TLMC_OperatingMode) -> None: return self.feature_group.set_status_mode_feature.set_status_mode(operating_mode) - + def get_stepper_status(self, max_wait_in_milliseconds: int) -> TLMC_StepperStatus: return self.feature_group.stepper_status_feature.get_stepper_status(max_wait_in_milliseconds) - + def stop(self, stop_mode: TLMC_StopMode, max_wait_in_milliseconds : int) -> None: return self.feature_group.stop_feature.stop(stop_mode, max_wait_in_milliseconds) - + def request_status(self, max_wait_in_milliseconds: int) -> None: return self.feature_group.status_request_feature.request_status(max_wait_in_milliseconds) - + def convert_from_device_units_to_physical(self, scale_type: TLMC_ScaleType, device_value: int) -> tuple [float, TLMC_Unit]: return self.feature_group.unit_converter_feature.convert_from_device_units_to_physical(scale_type, device_value) - + def convert_from_physical_to_device(self, scale_type: TLMC_ScaleType, unit: TLMC_Unit, physical_value: int) -> int: return self.feature_group.unit_converter_feature.convert_from_physical_to_device(scale_type, unit, physical_value) def get_preferred_physical_unit(self, scale_type: TLMC_ScaleType) -> TLMC_Unit: return self.feature_group.unit_converter_feature.get_preferred_physical_unit(scale_type) - - def get_universal_status(self, max_wait_in_milliseconds: int) -> TLMC_UniversalStatus: - return self.feature_group.universal_status_feature.get_universal_status(max_wait_in_milliseconds) - + + def get_universal_status_bits(self, max_wait_in_milliseconds: int) -> TLMC_UniversalStatusBit: + return self.feature_group.universal_status_bits_feature.get_universal_status_bits(max_wait_in_milliseconds) + def get_velocity_params(self, max_wait_in_milliseconds: int) -> TLMC_VelocityParams: return self.feature_group.velocity_params_feature.get_velocity_params(max_wait_in_milliseconds) diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/pdxc2.py b/Python/XA/xa_source/src/thorlabs_xa/products/pdxc2.py new file mode 100644 index 0000000..47e9b35 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/products/pdxc2.py @@ -0,0 +1,189 @@ +from typing import List + +from thorlabs_xa.interfaces.device_feature_groups.pdxc2_feature_group import Pdxc2FeatureGroup + +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.piezo.position_control_mode import PositionControlMode +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.shared.params import TLMC_DeviceInfo + +from thorlabs_xa.shared.enums import TLMC_EnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_ParameterGroupId, TLMC_PZ_PositionControlMode, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_StatusItemId, TLMC_StopMode, TLMC_Unit +from thorlabs_xa.shared.params import TLMC_ConnectedProductInfo, TLMC_FirmwareVersion, TLMC_HardwareInfo, TLMC_RichResponse, TLMC_Setting, TLMC_StageAxisParams, TLMC_StatusItem +from thorlabs_xa.shared.device import Device + +class Pdxc2(Device, + ConnectedProduct, + Disconnect, + EnableState, + FirmwareVersionInfo, + HardwareInfo, + Home, + Identify, + LoadParams, + Move, + PersistParams, + PositionControlMode, + RichResponse, + Settings, + StageAxisParams, + StatusItems, + StatusMode, + StatusRequest, + Stop, + UnitConverter): + + def __init__(self, device_handle: int, device_info: TLMC_DeviceInfo, feature_group: Pdxc2FeatureGroup, native_functions: NativeFunctions) -> None: + + super().__init__(device_handle, device_info, native_functions) + + self.feature_group = feature_group + + def get_connected_product_info(self) -> TLMC_ConnectedProductInfo: + + return self.feature_group.connected_product_feature.get_connected_product_info() + + def get_supported_connected_products(self) -> List[str]: + + return self.feature_group.connected_product_feature.get_supported_connected_products() + + def set_connected_product(self, product_name: str) -> None: + + self.feature_group.connected_product_feature.set_connected_product(product_name) + + def set_connected_product_info(self, product_info: TLMC_ConnectedProductInfo) -> None: + + self.feature_group.connected_product_feature.set_connected_product_info(product_info) + + def disconnect(self) -> None: + + self.feature_group.disconnect_feature.disconnect() + + def get_enable_state(self, max_wait_in_milliseconds: int) -> TLMC_EnableState: + + return self.feature_group.enable_state_feature.get_enable_state(max_wait_in_milliseconds) + + def set_enable_state(self, enable_state: TLMC_EnableState) -> None: + + self.feature_group.enable_state_feature.set_enable_state(enable_state) + + def get_firmware_version_info(self, max_wait_in_milliseconds: int) -> tuple[TLMC_FirmwareVersion, TLMC_FirmwareVersion]: + + return self.feature_group.firmware_version_info_feature.get_firmware_version_info(max_wait_in_milliseconds) + + def get_hardware_info(self, max_wait_in_milliseconds: int) -> TLMC_HardwareInfo: + + return self.feature_group.hardware_info_feature.get_hardware_info(max_wait_in_milliseconds) + + def home(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.home_feature.home(max_wait_in_milliseconds) + + def identify(self) -> None: + + self.feature_group.identify_feature.identify() + + def load_params(self) -> None: + + self.feature_group.load_params_feature.load_params() + + def move(self, move_mode: TLMC_MoveMode, params: int, max_wait_in_milliseconds: int) -> None: + + self.feature_group.move_feature.move(move_mode, params, max_wait_in_milliseconds) + + def persist_params(self, parameter_group_id: TLMC_ParameterGroupId) -> None: + + self.feature_group.persist_params_feature.persist_params(parameter_group_id) + + def get_position_control_mode(self, max_wait_in_milliseconds: int) -> TLMC_PZ_PositionControlMode: + + return self.feature_group.position_control_mode_feature.get_position_control_mode(max_wait_in_milliseconds) + + def set_position_control_mode(self, control_mode: TLMC_PZ_PositionControlMode, max_wait_in_milliseconds: int) -> None: + + self.feature_group.position_control_mode_feature.set_position_control_mode(control_mode, max_wait_in_milliseconds) + + def get_rich_response(self) -> TLMC_RichResponse: + + return self.feature_group.rich_response_feature.get_rich_response() + + def get_setting(self, settings_name: str, max_wait_in_milliseconds: int) -> TLMC_Setting: + + return self.feature_group.settings_feature.get_setting(settings_name, max_wait_in_milliseconds) + + def get_setting_discrete_values(self, settings_name: str) -> str: + + return self.feature_group.settings_feature.get_setting_discrete_values(settings_name) + + def get_settings(self, setting_string_format: TLMC_SettingStringFormat, include_read_only_items: bool) -> str: + + return self.feature_group.settings_feature.get_settings(setting_string_format, include_read_only_items) + + def get_settings_items(self) -> List[TLMC_Setting]: + + return self.feature_group.settings_feature.get_settings_items() + + def set_settings(self, settings: str) -> None: + + self.feature_group.settings_feature.set_settings(settings) + + def get_stage_axis_params(self, max_wait_in_milliseconds: int) -> TLMC_StageAxisParams: + + return self.feature_group.stage_axis_params_feature.get_stage_axis_params(max_wait_in_milliseconds) + + def set_stage_axis_params(self, params: TLMC_StageAxisParams) -> None: + + self.feature_group.stage_axis_params_feature.set_stage_axis_params(params) + + def get_status_item(self, status_item_id: TLMC_StatusItemId) -> TLMC_StatusItem: + + return self.feature_group.status_items_feature.get_status_item(status_item_id) + + def get_status_item_count(self) -> int: + + return self.feature_group.status_items_feature.get_status_item_count() + + def get_status_items(self, start_index: int, number_of_items: int) -> List[TLMC_StatusItem]: + + return self.feature_group.status_items_feature.get_status_items(start_index, number_of_items) + + def set_status_mode(self, operating_mode: TLMC_OperatingMode) -> None: + + self.feature_group.status_mode_feature.set_status_mode(operating_mode) + + def request_status(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.status_request_feature.request_status(max_wait_in_milliseconds) + + def stop(self, stop_mode: TLMC_StopMode, max_wait_in_milliseconds: int) -> None: + + self.feature_group.stop_feature.stop(stop_mode, max_wait_in_milliseconds) + + def convert_from_device_units_to_physical(self, scale_type: TLMC_ScaleType, device_value: int) -> tuple[float, TLMC_Unit]: + + return self.feature_group.unit_converter_feature.convert_from_device_units_to_physical(scale_type, device_value) + + def convert_from_physical_to_device(self, scale_type: TLMC_ScaleType, unit: TLMC_Unit, physical_value: int) -> int: + + return self.feature_group.unit_converter_feature.convert_from_physical_to_device(scale_type, unit, physical_value) + + def get_preferred_physical_unit(self, scale_type: TLMC_ScaleType) -> TLMC_Unit: + + return self.feature_group.unit_converter_feature.get_preferred_physical_unit(scale_type) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/pdxc3.py b/Python/XA/xa_source/src/thorlabs_xa/products/pdxc3.py new file mode 100644 index 0000000..adab3f8 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/products/pdxc3.py @@ -0,0 +1,126 @@ +from typing import List + +from thorlabs_xa.implementations.device_feature_groups.pdxc3_subchannel_feature_group import Pdxc3SubchannelFeatureGroup +from thorlabs_xa.interfaces.device_feature_groups.pdxc3_feature_group import Pdxc3FeatureGroup + +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move_sync_array import MoveSyncArray +from thorlabs_xa.interfaces.device_features.move_sync_params import MoveSyncParams +from thorlabs_xa.interfaces.device_features.move_sync_start import MoveSyncStart +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.products.pdxc3_subchannel import Pdxc3Subchannel +from thorlabs_xa.shared.get_subchannel import GetSubchannel +from thorlabs_xa.shared.params import TLMC_DeviceInfo + +from thorlabs_xa.shared.enums import TLMC_OperatingMode, TLMC_SettingStringFormat +from thorlabs_xa.shared.params import TLMC_FirmwareVersion, TLMC_HardwareInfo, TLMC_MoveSyncArray, TLMC_MoveSyncParams, TLMC_MoveSyncStartParams, TLMC_Setting +from thorlabs_xa.shared.device import Device +from thorlabs_xa.shared.subchannel import Subchannel + +class Pdxc3(Device, + GetSubchannel, + Disconnect, + FirmwareVersionInfo, + HardwareInfo, + Identify, + LoadParams, + MoveSyncArray, + MoveSyncParams, + MoveSyncStart, + Settings, + StatusMode): + + _SUBCHANNEL_COUNT = 3 + + def __init__(self, device_handle: int, device_info: TLMC_DeviceInfo, feature_group: Pdxc3FeatureGroup, native_functions: NativeFunctions) -> None: + + super().__init__(device_handle, device_info, native_functions) + + self.feature_group = feature_group + self._subchannels: dict[int, Pdxc3Subchannel] = {} + self._init_subchannels(native_functions) + + def _init_subchannels(self, native_functions: NativeFunctions) -> None: + for channel_number in range(1, self._SUBCHANNEL_COUNT + 1): + subchannel_handle = native_functions.get_channel(self._device_handle, channel_number) + feature_group = Pdxc3SubchannelFeatureGroup(subchannel_handle, native_functions) + subchannel = Pdxc3Subchannel( + subchannel_handle, channel_number, feature_group, native_functions + ) + subchannel.set_parent_device_identity( + self.device_id, + self.device_type, + ) + self._subchannels[channel_number] = subchannel + + def get_subchannel(self, subchannel_number: int) -> Subchannel: + subchannel = self._subchannels.get(subchannel_number) + if subchannel is None: + raise ValueError(f"Subchannel number {subchannel_number} is not available on this device.") + return subchannel + + def get_all_subchannels(self) -> List[Subchannel]: + return list(self._subchannels.values()) + + def disconnect(self) -> None: + + self.feature_group.disconnect_feature.disconnect() + + def get_firmware_version_info(self, max_wait_in_milliseconds: int) -> tuple[TLMC_FirmwareVersion, TLMC_FirmwareVersion]: + + return self.feature_group.firmware_version_info_feature.get_firmware_version_info(max_wait_in_milliseconds) + + def get_hardware_info(self, max_wait_in_milliseconds: int) -> TLMC_HardwareInfo: + + return self.feature_group.hardware_info_feature.get_hardware_info(max_wait_in_milliseconds) + + def identify(self) -> None: + + self.feature_group.identify_feature.identify() + + def load_params(self) -> None: + + self.feature_group.load_params_feature.load_params() + + def set_move_sync_array(self, parameters: TLMC_MoveSyncArray) -> None: + + self.feature_group.move_sync_array_feature.set_move_sync_array(parameters) + + def set_move_sync_params(self, parameters: TLMC_MoveSyncParams) -> None: + + self.feature_group.move_sync_params_feature.set_move_sync_params(parameters) + + def move_sync_start(self, parameters: TLMC_MoveSyncStartParams) -> None: + + self.feature_group.move_sync_start_feature.move_sync_start(parameters) + + def get_setting(self, settings_name: str, max_wait_in_milliseconds: int) -> TLMC_Setting: + + return self.feature_group.settings_feature.get_setting(settings_name, max_wait_in_milliseconds) + + def get_setting_discrete_values(self, settings_name: str) -> str: + + return self.feature_group.settings_feature.get_setting_discrete_values(settings_name) + + def get_settings(self, setting_string_format: TLMC_SettingStringFormat, include_read_only_items: bool) -> str: + + return self.feature_group.settings_feature.get_settings(setting_string_format, include_read_only_items) + + def get_settings_items(self) -> List[TLMC_Setting]: + + return self.feature_group.settings_feature.get_settings_items() + + def set_settings(self, settings: str) -> None: + + self.feature_group.settings_feature.set_settings(settings) + + def set_status_mode(self, operating_mode: TLMC_OperatingMode) -> None: + + self.feature_group.status_mode_feature.set_status_mode(operating_mode) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/pdxc3_subchannel.py b/Python/XA/xa_source/src/thorlabs_xa/products/pdxc3_subchannel.py new file mode 100644 index 0000000..2a83ec8 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/products/pdxc3_subchannel.py @@ -0,0 +1,164 @@ +from typing import List + +from thorlabs_xa.interfaces.device_feature_groups.pdxc3_subchannel_feature_group import Pdxc3SubchannelFeatureGroup + +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.piezo.position_control_mode import PositionControlMode +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions + +from thorlabs_xa.shared.enums import TLMC_EnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_ParameterGroupId, TLMC_PZ_PositionControlMode, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_StatusItemId, TLMC_StopMode, TLMC_Unit +from thorlabs_xa.shared.params import TLMC_ConnectedProductInfo, TLMC_RichResponse, TLMC_Setting, TLMC_StageAxisParams, TLMC_StatusItem +from thorlabs_xa.shared.subchannel import Subchannel + +class Pdxc3Subchannel(Subchannel, + ConnectedProduct, + EnableState, + Home, + LoadParams, + Move, + PersistParams, + PositionControlMode, + RichResponse, + Settings, + StageAxisParams, + StatusItems, + StatusMode, + StatusRequest, + Stop, + UnitConverter): + + def __init__(self, subchannel_handle: int, subchannel_number: int, feature_group: Pdxc3SubchannelFeatureGroup, native_functions: NativeFunctions) -> None: + + super().__init__(subchannel_handle, subchannel_number, native_functions) + + self.feature_group = feature_group + + def get_connected_product_info(self) -> TLMC_ConnectedProductInfo: + + return self.feature_group.connected_product_feature.get_connected_product_info() + + def get_supported_connected_products(self) -> List[str]: + + return self.feature_group.connected_product_feature.get_supported_connected_products() + + def set_connected_product(self, product_name: str) -> None: + + self.feature_group.connected_product_feature.set_connected_product(product_name) + + def set_connected_product_info(self, product_info: TLMC_ConnectedProductInfo) -> None: + + self.feature_group.connected_product_feature.set_connected_product_info(product_info) + + def get_enable_state(self, max_wait_in_milliseconds: int) -> TLMC_EnableState: + + return self.feature_group.enable_state_feature.get_enable_state(max_wait_in_milliseconds) + + def set_enable_state(self, enable_state: TLMC_EnableState) -> None: + + self.feature_group.enable_state_feature.set_enable_state(enable_state) + + def home(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.home_feature.home(max_wait_in_milliseconds) + + def load_params(self) -> None: + + self.feature_group.load_params_feature.load_params() + + def move(self, move_mode: TLMC_MoveMode, params: int, max_wait_in_milliseconds: int) -> None: + + self.feature_group.move_feature.move(move_mode, params, max_wait_in_milliseconds) + + def persist_params(self, parameter_group_id: TLMC_ParameterGroupId) -> None: + + self.feature_group.persist_params_feature.persist_params(parameter_group_id) + + def get_position_control_mode(self, max_wait_in_milliseconds: int) -> TLMC_PZ_PositionControlMode: + + return self.feature_group.position_control_mode_feature.get_position_control_mode(max_wait_in_milliseconds) + + def set_position_control_mode(self, control_mode: TLMC_PZ_PositionControlMode, max_wait_in_milliseconds: int) -> None: + + self.feature_group.position_control_mode_feature.set_position_control_mode(control_mode, max_wait_in_milliseconds) + + def get_rich_response(self) -> TLMC_RichResponse: + + return self.feature_group.rich_response_feature.get_rich_response() + + def get_setting(self, settings_name: str, max_wait_in_milliseconds: int) -> TLMC_Setting: + + return self.feature_group.settings_feature.get_setting(settings_name, max_wait_in_milliseconds) + + def get_setting_discrete_values(self, settings_name: str) -> str: + + return self.feature_group.settings_feature.get_setting_discrete_values(settings_name) + + def get_settings(self, setting_string_format: TLMC_SettingStringFormat, include_read_only_items: bool) -> str: + + return self.feature_group.settings_feature.get_settings(setting_string_format, include_read_only_items) + + def get_settings_items(self) -> List[TLMC_Setting]: + + return self.feature_group.settings_feature.get_settings_items() + + def set_settings(self, settings: str) -> None: + + self.feature_group.settings_feature.set_settings(settings) + + def get_stage_axis_params(self, max_wait_in_milliseconds: int) -> TLMC_StageAxisParams: + + return self.feature_group.stage_axis_params_feature.get_stage_axis_params(max_wait_in_milliseconds) + + def set_stage_axis_params(self, params: TLMC_StageAxisParams) -> None: + + self.feature_group.stage_axis_params_feature.set_stage_axis_params(params) + + def get_status_item(self, status_item_id: TLMC_StatusItemId) -> TLMC_StatusItem: + + return self.feature_group.status_items_feature.get_status_item(status_item_id) + + def get_status_item_count(self) -> int: + + return self.feature_group.status_items_feature.get_status_item_count() + + def get_status_items(self, start_index: int, number_of_items: int) -> List[TLMC_StatusItem]: + + return self.feature_group.status_items_feature.get_status_items(start_index, number_of_items) + + def set_status_mode(self, operating_mode: TLMC_OperatingMode) -> None: + + self.feature_group.status_mode_feature.set_status_mode(operating_mode) + + def request_status(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.status_request_feature.request_status(max_wait_in_milliseconds) + + def stop(self, stop_mode: TLMC_StopMode, max_wait_in_milliseconds: int) -> None: + + self.feature_group.stop_feature.stop(stop_mode, max_wait_in_milliseconds) + + def convert_from_device_units_to_physical(self, scale_type: TLMC_ScaleType, device_value: int) -> tuple[float, TLMC_Unit]: + + return self.feature_group.unit_converter_feature.convert_from_device_units_to_physical(scale_type, device_value) + + def convert_from_physical_to_device(self, scale_type: TLMC_ScaleType, unit: TLMC_Unit, physical_value: int) -> int: + + return self.feature_group.unit_converter_feature.convert_from_physical_to_device(scale_type, unit, physical_value) + + def get_preferred_physical_unit(self, scale_type: TLMC_ScaleType) -> TLMC_Unit: + + return self.feature_group.unit_converter_feature.get_preferred_physical_unit(scale_type) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/tbd001.py b/Python/XA/xa_source/src/thorlabs_xa/products/tbd001.py new file mode 100644 index 0000000..8690d06 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/products/tbd001.py @@ -0,0 +1,347 @@ +from typing import List + +from thorlabs_xa.interfaces.device_feature_groups.tbd001_feature_group import Tbd001FeatureGroup + +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.current_loop_params import CurrentLoopParams +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.joystick_params import JoystickParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.motor_output_params import MotorOutputParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_counter import PositionCounter +from thorlabs_xa.interfaces.device_features.position_loop_params import PositionLoopParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.track_settle_params import TrackSettleParams +from thorlabs_xa.interfaces.device_features.trigger_params_for_dc_brushless import TriggerParamsForDcBrushless +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status import UniversalStatus +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.shared.params import TLMC_DeviceInfo + +from thorlabs_xa.shared.enums import TLMC_CurrentLoopScenario, TLMC_DigitalOutput, TLMC_EnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_ParameterGroupId, TLMC_PositionLoopScenario, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_StatusItemId, TLMC_StopMode, TLMC_Unit, TLMC_UniversalStatusBit +from thorlabs_xa.shared.params import TLMC_ConnectedProductInfo, TLMC_CurrentLoopParams, TLMC_FirmwareVersion, TLMC_GeneralMoveParams, TLMC_HardwareInfo, TLMC_HomeParams, TLMC_JogParams, TLMC_JoystickParams, TLMC_LimitSwitchParams, TLMC_MotorOutputParams, TLMC_MoveAbsoluteParams, TLMC_MoveRelativeParams, TLMC_PositionLoopParams, TLMC_ProfileModeParams, TLMC_RichResponse, TLMC_Setting, TLMC_StageAxisParams, TLMC_StatusItem, TLMC_TrackSettleParams, TLMC_TriggerParamsForDcBrushless, TLMC_UniversalStatus, TLMC_VelocityParams +from thorlabs_xa.shared.device import Device + +class Tbd001(Device, + ConnectedProduct, + CurrentLoopParams, + DigitalOutputStates, + EnableState, + FirmwareVersionInfo, + GeneralMoveParams, + HardwareInfo, + Home, + HomeParams, + Identify, + JogParams, + JoystickParams, + LimitSwitchParamsGetter, + LoadParams, + MotorOutputParams, + Move, + MoveAbsoluteParams, + MoveRelativeParams, + PersistParams, + PositionCounter, + PositionLoopParams, + ProfileModeParams, + RestoreFactoryDefaults, + RichResponse, + Settings, + StageAxisParams, + StatusItems, + StatusMode, + StatusRequest, + Stop, + TrackSettleParams, + TriggerParamsForDcBrushless, + UnitConverter, + UniversalStatus, + UniversalStatusBits, + VelocityParams): + + def __init__(self, device_handle: int, device_info: TLMC_DeviceInfo, feature_group: Tbd001FeatureGroup, native_functions: NativeFunctions) -> None: + + super().__init__(device_handle, device_info, native_functions) + + self.feature_group = feature_group + + def get_connected_product_info(self) -> TLMC_ConnectedProductInfo: + + return self.feature_group.connected_product_feature.get_connected_product_info() + + def get_supported_connected_products(self) -> List[str]: + + return self.feature_group.connected_product_feature.get_supported_connected_products() + + def set_connected_product(self, product_name: str) -> None: + + self.feature_group.connected_product_feature.set_connected_product(product_name) + + def set_connected_product_info(self, product_info: TLMC_ConnectedProductInfo) -> None: + + self.feature_group.connected_product_feature.set_connected_product_info(product_info) + + def get_current_loop_params(self, scenario: TLMC_CurrentLoopScenario, max_wait_in_milliseconds: int) -> TLMC_CurrentLoopParams: + + return self.feature_group.current_loop_params_feature.get_current_loop_params(scenario, max_wait_in_milliseconds) + + def set_current_loop_params(self, scenario: TLMC_CurrentLoopScenario, parameters: TLMC_CurrentLoopParams) -> None: + + self.feature_group.current_loop_params_feature.set_current_loop_params(scenario, parameters) + + def get_digital_output_states(self, max_wait_in_milliseconds: int) -> TLMC_DigitalOutput: + + return self.feature_group.digital_output_states_feature.get_digital_output_states(max_wait_in_milliseconds) + + def set_digital_output_states(self, params: TLMC_DigitalOutput) -> None: + + self.feature_group.digital_output_states_feature.set_digital_output_states(params) + + def get_enable_state(self, max_wait_in_milliseconds: int) -> TLMC_EnableState: + + return self.feature_group.enable_state_feature.get_enable_state(max_wait_in_milliseconds) + + def set_enable_state(self, enable_state: TLMC_EnableState) -> None: + + self.feature_group.enable_state_feature.set_enable_state(enable_state) + + def get_firmware_version_info(self, max_wait_in_milliseconds: int) -> tuple[TLMC_FirmwareVersion, TLMC_FirmwareVersion]: + + return self.feature_group.firmware_version_info_feature.get_firmware_version_info(max_wait_in_milliseconds) + + def get_general_move_params(self, max_wait_in_milliseconds: int) -> TLMC_GeneralMoveParams: + + return self.feature_group.general_move_params_feature.get_general_move_params(max_wait_in_milliseconds) + + def set_general_move_params(self, params: TLMC_GeneralMoveParams) -> None: + + self.feature_group.general_move_params_feature.set_general_move_params(params) + + def get_hardware_info(self, max_wait_in_milliseconds: int) -> TLMC_HardwareInfo: + + return self.feature_group.hardware_info_feature.get_hardware_info(max_wait_in_milliseconds) + + def home(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.home_feature.home(max_wait_in_milliseconds) + + def get_home_params(self, max_wait_in_milliseconds: int) -> TLMC_HomeParams: + + return self.feature_group.home_params_feature.get_home_params(max_wait_in_milliseconds) + + def set_home_params(self, params: TLMC_HomeParams) -> None: + + self.feature_group.home_params_feature.set_home_params(params) + + def identify(self) -> None: + + self.feature_group.identify_feature.identify() + + def get_jog_params(self, max_wait_in_milliseconds: int) -> TLMC_JogParams: + + return self.feature_group.jog_params_feature.get_jog_params(max_wait_in_milliseconds) + + def set_jog_params(self, params: TLMC_JogParams) -> None: + + self.feature_group.jog_params_feature.set_jog_params(params) + + def get_joystick_params(self, max_wait_in_milliseconds: int) -> TLMC_JoystickParams: + + return self.feature_group.joystick_params_feature.get_joystick_params(max_wait_in_milliseconds) + + def set_joystick_params(self, params: TLMC_JoystickParams) -> None: + + self.feature_group.joystick_params_feature.set_joystick_params(params) + + def get_limit_switch_params(self, max_wait_in_milliseconds: int) -> TLMC_LimitSwitchParams: + + return self.feature_group.limit_switch_params_getter_feature.get_limit_switch_params(max_wait_in_milliseconds) + + def load_params(self) -> None: + + self.feature_group.load_params_feature.load_params() + + def get_motor_output_params(self, max_wait_in_milliseconds: int) -> TLMC_MotorOutputParams: + + return self.feature_group.motor_output_params_feature.get_motor_output_params(max_wait_in_milliseconds) + + def set_motor_output_params(self, params: TLMC_MotorOutputParams) -> None: + + self.feature_group.motor_output_params_feature.set_motor_output_params(params) + + def move(self, move_mode: TLMC_MoveMode, params: int, max_wait_in_milliseconds: int) -> None: + + self.feature_group.move_feature.move(move_mode, params, max_wait_in_milliseconds) + + def get_move_absolute_params(self, max_wait_in_milliseconds: int) -> TLMC_MoveAbsoluteParams: + + return self.feature_group.move_absolute_params_feature.get_move_absolute_params(max_wait_in_milliseconds) + + def set_move_absolute_params(self, params: TLMC_MoveAbsoluteParams) -> None: + + self.feature_group.move_absolute_params_feature.set_move_absolute_params(params) + + def get_move_relative_params(self, max_wait_in_milliseconds: int) -> TLMC_MoveRelativeParams: + + return self.feature_group.move_relative_params_feature.get_move_relative_params(max_wait_in_milliseconds) + + def set_move_relative_params(self, params: TLMC_MoveRelativeParams) -> None: + + self.feature_group.move_relative_params_feature.set_move_relative_params(params) + + def persist_params(self, parameter_group_id: TLMC_ParameterGroupId) -> None: + + self.feature_group.persist_params_feature.persist_params(parameter_group_id) + + def get_position_counter(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.position_counter_feature.get_position_counter(max_wait_in_milliseconds) + + def set_position_counter(self, new_position_counter: int) -> None: + + self.feature_group.position_counter_feature.set_position_counter(new_position_counter) + + def get_position_loop_params(self, scenario: TLMC_PositionLoopScenario, max_wait_in_milliseconds: int) -> TLMC_PositionLoopParams: + + return self.feature_group.position_loop_params_feature.get_position_loop_params(scenario, max_wait_in_milliseconds) + + def set_position_loop_params(self, scenario: TLMC_PositionLoopScenario, params: TLMC_PositionLoopParams) -> None: + + self.feature_group.position_loop_params_feature.set_position_loop_params(scenario, params) + + def get_profile_mode_params(self, max_wait_in_milliseconds: int) -> TLMC_ProfileModeParams: + + return self.feature_group.profile_mode_params_feature.get_profile_mode_params(max_wait_in_milliseconds) + + def set_profile_mode_params(self, params: TLMC_ProfileModeParams) -> None: + + self.feature_group.profile_mode_params_feature.set_profile_mode_params(params) + + def restore_factory_defaults(self) -> None: + + self.feature_group.restore_factory_defaults_feature.restore_factory_defaults() + + def get_rich_response(self) -> TLMC_RichResponse: + + return self.feature_group.rich_response_feature.get_rich_response() + + def get_setting(self, settings_name: str, max_wait_in_milliseconds: int) -> TLMC_Setting: + + return self.feature_group.settings_feature.get_setting(settings_name, max_wait_in_milliseconds) + + def get_setting_discrete_values(self, settings_name: str) -> str: + + return self.feature_group.settings_feature.get_setting_discrete_values(settings_name) + + def get_settings(self, setting_string_format: TLMC_SettingStringFormat, include_read_only_items: bool) -> str: + + return self.feature_group.settings_feature.get_settings(setting_string_format, include_read_only_items) + + def get_settings_items(self) -> List[TLMC_Setting]: + + return self.feature_group.settings_feature.get_settings_items() + + def set_settings(self, settings: str) -> None: + + self.feature_group.settings_feature.set_settings(settings) + + def get_stage_axis_params(self, max_wait_in_milliseconds: int) -> TLMC_StageAxisParams: + + return self.feature_group.stage_axis_params_feature.get_stage_axis_params(max_wait_in_milliseconds) + + def set_stage_axis_params(self, params: TLMC_StageAxisParams) -> None: + + self.feature_group.stage_axis_params_feature.set_stage_axis_params(params) + + def get_status_item(self, status_item_id: TLMC_StatusItemId) -> TLMC_StatusItem: + + return self.feature_group.status_items_feature.get_status_item(status_item_id) + + def get_status_item_count(self) -> int: + + return self.feature_group.status_items_feature.get_status_item_count() + + def get_status_items(self, start_index: int, number_of_items: int) -> List[TLMC_StatusItem]: + + return self.feature_group.status_items_feature.get_status_items(start_index, number_of_items) + + def set_status_mode(self, operating_mode: TLMC_OperatingMode) -> None: + + self.feature_group.status_mode_feature.set_status_mode(operating_mode) + + def request_status(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.status_request_feature.request_status(max_wait_in_milliseconds) + + def stop(self, stop_mode: TLMC_StopMode, max_wait_in_milliseconds: int) -> None: + + self.feature_group.stop_feature.stop(stop_mode, max_wait_in_milliseconds) + + def get_track_settle_params(self, max_wait_in_milliseconds: int) -> TLMC_TrackSettleParams: + + return self.feature_group.track_settle_params_feature.get_track_settle_params(max_wait_in_milliseconds) + + def set_track_settle_params(self, params: TLMC_TrackSettleParams) -> None: + + self.feature_group.track_settle_params_feature.set_track_settle_params(params) + + def get_trigger_params_for_dc_brushless(self, max_wait_in_milliseconds: int) -> TLMC_TriggerParamsForDcBrushless: + + return self.feature_group.trigger_params_for_dc_brushless_feature.get_trigger_params_for_dc_brushless(max_wait_in_milliseconds) + + def set_trigger_params_for_dc_brushless(self, params: TLMC_TriggerParamsForDcBrushless) -> None: + + self.feature_group.trigger_params_for_dc_brushless_feature.set_trigger_params_for_dc_brushless(params) + + def convert_from_device_units_to_physical(self, scale_type: TLMC_ScaleType, device_value: int) -> tuple[float, TLMC_Unit]: + + return self.feature_group.unit_converter_feature.convert_from_device_units_to_physical(scale_type, device_value) + + def convert_from_physical_to_device(self, scale_type: TLMC_ScaleType, unit: TLMC_Unit, physical_value: int) -> int: + + return self.feature_group.unit_converter_feature.convert_from_physical_to_device(scale_type, unit, physical_value) + + def get_preferred_physical_unit(self, scale_type: TLMC_ScaleType) -> TLMC_Unit: + + return self.feature_group.unit_converter_feature.get_preferred_physical_unit(scale_type) + + def get_universal_status(self, max_wait_in_milliseconds: int) -> TLMC_UniversalStatus: + + return self.feature_group.universal_status_feature.get_universal_status(max_wait_in_milliseconds) + + def get_universal_status_bits(self, max_wait_in_milliseconds: int) -> TLMC_UniversalStatusBit: + + return self.feature_group.universal_status_bits_feature.get_universal_status_bits(max_wait_in_milliseconds) + + def get_velocity_params(self, max_wait_in_milliseconds: int) -> TLMC_VelocityParams: + + return self.feature_group.velocity_params_feature.get_velocity_params(max_wait_in_milliseconds) + + def set_velocity_params(self, params: TLMC_VelocityParams) -> None: + + self.feature_group.velocity_params_feature.set_velocity_params(params) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/umcx.py b/Python/XA/xa_source/src/thorlabs_xa/products/umcx.py new file mode 100644 index 0000000..b26b47b --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/products/umcx.py @@ -0,0 +1,121 @@ +from typing import List + +from thorlabs_xa.interfaces.device_feature_groups.umcx_feature_group import UmcxFeatureGroup + +from thorlabs_xa.interfaces.device_features.aux_io_configuration_params import AuxIoConfigurationParams +from thorlabs_xa.interfaces.device_features.disconnect import Disconnect +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.io_configuration_params import IoConfigurationParams +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move_sync_array import MoveSyncArray +from thorlabs_xa.interfaces.device_features.move_sync_params import MoveSyncParams +from thorlabs_xa.interfaces.device_features.move_sync_start import MoveSyncStart +from thorlabs_xa.interfaces.device_features.rack_bay_occupied_state import RackBayOccupiedState +from thorlabs_xa.interfaces.device_features.settings import Settings + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.shared.params import TLMC_DeviceInfo + +from thorlabs_xa.shared.enums import TLMC_AuxIoPortMode, TLMC_AuxIoPortNumber, TLMC_IoPortNumber, TLMC_RackBayNumber, TLMC_RackBayOccupiedState, TLMC_SettingStringFormat +from thorlabs_xa.shared.params import TLMC_FirmwareVersion, TLMC_HardwareInfo, TLMC_IoConfigurationParams, TLMC_MoveSyncArray, TLMC_MoveSyncParams, TLMC_MoveSyncStartParams, TLMC_Setting +from thorlabs_xa.shared.device import Device + +class Umcx(Device, + AuxIoConfigurationParams, + Disconnect, + FirmwareVersionInfo, + HardwareInfo, + IoConfigurationParams, + LoadParams, + MoveSyncArray, + MoveSyncParams, + MoveSyncStart, + RackBayOccupiedState, + Settings): + + def __init__(self, device_handle: int, device_info: TLMC_DeviceInfo, feature_group: UmcxFeatureGroup, native_functions: NativeFunctions) -> None: + + super().__init__(device_handle, device_info, native_functions) + + self.feature_group = feature_group + + def get_aux_io_port_mode(self, port_number: TLMC_AuxIoPortNumber, max_wait_in_milliseconds: int) -> TLMC_AuxIoPortMode: + + return self.feature_group.aux_io_configuration_params_feature.get_aux_io_port_mode(port_number, max_wait_in_milliseconds) + + def get_aux_io_software_states(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.aux_io_configuration_params_feature.get_aux_io_software_states(max_wait_in_milliseconds) + + def set_aux_io_port_mode(self, port_number: TLMC_AuxIoPortNumber, port_mode: TLMC_AuxIoPortMode) -> None: + + self.feature_group.aux_io_configuration_params_feature.set_aux_io_port_mode(port_number, port_mode) + + def set_aux_io_software_states(self, software_states: int) -> None: + + self.feature_group.aux_io_configuration_params_feature.set_aux_io_software_states(software_states) + + def disconnect(self) -> None: + + self.feature_group.disconnect_feature.disconnect() + + def get_firmware_version_info(self, max_wait_in_milliseconds: int) -> tuple[TLMC_FirmwareVersion, TLMC_FirmwareVersion]: + + return self.feature_group.firmware_version_info_feature.get_firmware_version_info(max_wait_in_milliseconds) + + def get_hardware_info(self, max_wait_in_milliseconds: int) -> TLMC_HardwareInfo: + + return self.feature_group.hardware_info_feature.get_hardware_info(max_wait_in_milliseconds) + + def get_io_configuration_number_of_ports_supported(self) -> int: + + return self.feature_group.io_configuration_params_feature.get_io_configuration_number_of_ports_supported() + + def get_io_configuration_params(self, port_number: TLMC_IoPortNumber, max_wait_in_milliseconds: int) -> TLMC_IoConfigurationParams: + + return self.feature_group.io_configuration_params_feature.get_io_configuration_params(port_number, max_wait_in_milliseconds) + + def set_io_configuration_params(self, handle: int, port_number: TLMC_IoPortNumber, params: TLMC_IoConfigurationParams) -> None: + + self.feature_group.io_configuration_params_feature.set_io_configuration_params(handle, port_number, params) + + def load_params(self) -> None: + + self.feature_group.load_params_feature.load_params() + + def set_move_sync_array(self, parameters: TLMC_MoveSyncArray) -> None: + + self.feature_group.move_sync_array_feature.set_move_sync_array(parameters) + + def set_move_sync_params(self, parameters: TLMC_MoveSyncParams) -> None: + + self.feature_group.move_sync_params_feature.set_move_sync_params(parameters) + + def move_sync_start(self, parameters: TLMC_MoveSyncStartParams) -> None: + + self.feature_group.move_sync_start_feature.move_sync_start(parameters) + + def get_rack_bay_occupied_state(self, bay_number: TLMC_RackBayNumber, max_wait_in_milliseconds: int) -> TLMC_RackBayOccupiedState: + + return self.feature_group.rack_bay_occupied_state_feature.get_rack_bay_occupied_state(bay_number, max_wait_in_milliseconds) + + def get_setting(self, settings_name: str, max_wait_in_milliseconds: int) -> TLMC_Setting: + + return self.feature_group.settings_feature.get_setting(settings_name, max_wait_in_milliseconds) + + def get_setting_discrete_values(self, settings_name: str) -> str: + + return self.feature_group.settings_feature.get_setting_discrete_values(settings_name) + + def get_settings(self, setting_string_format: TLMC_SettingStringFormat, include_read_only_items: bool) -> str: + + return self.feature_group.settings_feature.get_settings(setting_string_format, include_read_only_items) + + def get_settings_items(self) -> List[TLMC_Setting]: + + return self.feature_group.settings_feature.get_settings_items() + + def set_settings(self, settings: str) -> None: + + self.feature_group.settings_feature.set_settings(settings) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/umcx_brushless_logical_channel.py b/Python/XA/xa_source/src/thorlabs_xa/products/umcx_brushless_logical_channel.py new file mode 100644 index 0000000..80a7927 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/products/umcx_brushless_logical_channel.py @@ -0,0 +1,351 @@ +from typing import List + +from thorlabs_xa.interfaces.device_feature_groups.umcx_brushless_logical_channel_feature_group import UmcxBrushlessLogicalChannelFeatureGroup + +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.current_loop_params import CurrentLoopParams +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.end_of_move_messages_mode import EndOfMoveMessagesMode +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.io_position_trigger_enable_state import IoPositionTriggerEnableState +from thorlabs_xa.interfaces.device_features.io_trigger_params import IoTriggerParams +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.joystick_params import JoystickParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.motor_output_params import MotorOutputParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.position_loop_params import PositionLoopParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.track_settle_params import TrackSettleParams +from thorlabs_xa.interfaces.device_features.umc_status import UmcStatus +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.shared.params import TLMC_DeviceInfo + +from thorlabs_xa.shared.enums import TLMC_CurrentLoopScenario, TLMC_EnableState, TLMC_EndOfMoveMessagesMode, TLMC_IoPositionTriggerEnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_ParameterGroupId, TLMC_PositionLoopScenario, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_StatusItemId, TLMC_StopMode, TLMC_Unit, TLMC_UniversalStatusBit +from thorlabs_xa.shared.params import TLMC_ConnectedProductInfo, TLMC_CurrentLoopParams, TLMC_FirmwareVersion, TLMC_GeneralMoveParams, TLMC_HardwareInfo, TLMC_HomeParams, TLMC_IoTriggerParams, TLMC_JogParams, TLMC_JoystickParams, TLMC_LimitSwitchParams, TLMC_MotorOutputParams, TLMC_MoveAbsoluteParams, TLMC_MoveRelativeParams, TLMC_PositionLoopParams, TLMC_ProfileModeParams, TLMC_RichResponse, TLMC_Setting, TLMC_StageAxisParams, TLMC_UmcStatus, TLMC_StatusItem, TLMC_TrackSettleParams, TLMC_VelocityParams +from thorlabs_xa.shared.device import Device + +class UmcxBrushlessLogicalChannel(Device, + ConnectedProduct, + CurrentLoopParams, + EnableState, + EndOfMoveMessagesMode, + FirmwareVersionInfo, + GeneralMoveParams, + HardwareInfo, + Home, + HomeParams, + Identify, + IoPositionTriggerEnableState, + IoTriggerParams, + JogParams, + JoystickParams, + LimitSwitchParamsGetter, + LoadParams, + MotorOutputParams, + Move, + MoveAbsoluteParams, + MoveRelativeParams, + PersistParams, + PositionLoopParams, + ProfileModeParams, + RestoreFactoryDefaults, + RichResponse, + Settings, + StageAxisParams, + StatusItems, + StatusMode, + StatusRequest, + Stop, + TrackSettleParams, + UmcStatus, + UnitConverter, + UniversalStatusBits, + VelocityParams): + + def __init__(self, device_handle: int, device_info: TLMC_DeviceInfo, feature_group: UmcxBrushlessLogicalChannelFeatureGroup, native_functions: NativeFunctions) -> None: + + super().__init__(device_handle, device_info, native_functions) + + self.feature_group = feature_group + + def get_connected_product_info(self) -> TLMC_ConnectedProductInfo: + + return self.feature_group.connected_product_feature.get_connected_product_info() + + def get_supported_connected_products(self) -> List[str]: + + return self.feature_group.connected_product_feature.get_supported_connected_products() + + def set_connected_product(self, product_name: str) -> None: + + self.feature_group.connected_product_feature.set_connected_product(product_name) + + def set_connected_product_info(self, product_info: TLMC_ConnectedProductInfo) -> None: + + self.feature_group.connected_product_feature.set_connected_product_info(product_info) + + def get_current_loop_params(self, scenario: TLMC_CurrentLoopScenario, max_wait_in_milliseconds: int) -> TLMC_CurrentLoopParams: + + return self.feature_group.current_loop_params_feature.get_current_loop_params(scenario, max_wait_in_milliseconds) + + def set_current_loop_params(self, scenario: TLMC_CurrentLoopScenario, parameters: TLMC_CurrentLoopParams) -> None: + + self.feature_group.current_loop_params_feature.set_current_loop_params(scenario, parameters) + + def get_enable_state(self, max_wait_in_milliseconds: int) -> TLMC_EnableState: + + return self.feature_group.enable_state_feature.get_enable_state(max_wait_in_milliseconds) + + def set_enable_state(self, enable_state: TLMC_EnableState) -> None: + + self.feature_group.enable_state_feature.set_enable_state(enable_state) + + def set_end_of_move_messages_mode(self, messages_mode: TLMC_EndOfMoveMessagesMode) -> None: + + self.feature_group.end_of_move_messages_mode_feature.set_end_of_move_messages_mode(messages_mode) + + def get_firmware_version_info(self, max_wait_in_milliseconds: int) -> tuple[TLMC_FirmwareVersion, TLMC_FirmwareVersion]: + + return self.feature_group.firmware_version_info_feature.get_firmware_version_info(max_wait_in_milliseconds) + + def get_general_move_params(self, max_wait_in_milliseconds: int) -> TLMC_GeneralMoveParams: + + return self.feature_group.general_move_params_feature.get_general_move_params(max_wait_in_milliseconds) + + def set_general_move_params(self, params: TLMC_GeneralMoveParams) -> None: + + self.feature_group.general_move_params_feature.set_general_move_params(params) + + def get_hardware_info(self, max_wait_in_milliseconds: int) -> TLMC_HardwareInfo: + + return self.feature_group.hardware_info_feature.get_hardware_info(max_wait_in_milliseconds) + + def home(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.home_feature.home(max_wait_in_milliseconds) + + def get_home_params(self, max_wait_in_milliseconds: int) -> TLMC_HomeParams: + + return self.feature_group.home_params_feature.get_home_params(max_wait_in_milliseconds) + + def set_home_params(self, params: TLMC_HomeParams) -> None: + + self.feature_group.home_params_feature.set_home_params(params) + + def identify(self) -> None: + + self.feature_group.identify_feature.identify() + + def get_io_position_trigger_enable_state(self, max_wait_in_milliseconds: int) -> TLMC_IoPositionTriggerEnableState: + + return self.feature_group.io_position_trigger_enable_state_feature.get_io_position_trigger_enable_state(max_wait_in_milliseconds) + + def set_io_position_trigger_enable_state(self, enable_state: TLMC_IoPositionTriggerEnableState, max_wait_in_milliseconds: int) -> None: + + self.feature_group.io_position_trigger_enable_state_feature.set_io_position_trigger_enable_state(enable_state, max_wait_in_milliseconds) + + def get_io_trigger_params(self, max_wait_in_milliseconds: int) -> TLMC_IoTriggerParams: + + return self.feature_group.io_trigger_params_feature.get_io_trigger_params(max_wait_in_milliseconds) + + def set_io_trigger_params(self, params: TLMC_IoTriggerParams) -> None: + + self.feature_group.io_trigger_params_feature.set_io_trigger_params(params) + + def get_jog_params(self, max_wait_in_milliseconds: int) -> TLMC_JogParams: + + return self.feature_group.jog_params_feature.get_jog_params(max_wait_in_milliseconds) + + def set_jog_params(self, params: TLMC_JogParams) -> None: + + self.feature_group.jog_params_feature.set_jog_params(params) + + def get_joystick_params(self, max_wait_in_milliseconds: int) -> TLMC_JoystickParams: + + return self.feature_group.joystick_params_feature.get_joystick_params(max_wait_in_milliseconds) + + def set_joystick_params(self, params: TLMC_JoystickParams) -> None: + + self.feature_group.joystick_params_feature.set_joystick_params(params) + + def get_limit_switch_params(self, max_wait_in_milliseconds: int) -> TLMC_LimitSwitchParams: + + return self.feature_group.limit_switch_params_getter_feature.get_limit_switch_params(max_wait_in_milliseconds) + + def load_params(self) -> None: + + self.feature_group.load_params_feature.load_params() + + def get_motor_output_params(self, max_wait_in_milliseconds: int) -> TLMC_MotorOutputParams: + + return self.feature_group.motor_output_params_feature.get_motor_output_params(max_wait_in_milliseconds) + + def set_motor_output_params(self, params: TLMC_MotorOutputParams) -> None: + + self.feature_group.motor_output_params_feature.set_motor_output_params(params) + + def move(self, move_mode: TLMC_MoveMode, params: int, max_wait_in_milliseconds: int) -> None: + + self.feature_group.move_feature.move(move_mode, params, max_wait_in_milliseconds) + + def get_move_absolute_params(self, max_wait_in_milliseconds: int) -> TLMC_MoveAbsoluteParams: + + return self.feature_group.move_absolute_params_feature.get_move_absolute_params(max_wait_in_milliseconds) + + def set_move_absolute_params(self, params: TLMC_MoveAbsoluteParams) -> None: + + self.feature_group.move_absolute_params_feature.set_move_absolute_params(params) + + def get_move_relative_params(self, max_wait_in_milliseconds: int) -> TLMC_MoveRelativeParams: + + return self.feature_group.move_relative_params_feature.get_move_relative_params(max_wait_in_milliseconds) + + def set_move_relative_params(self, params: TLMC_MoveRelativeParams) -> None: + + self.feature_group.move_relative_params_feature.set_move_relative_params(params) + + def persist_params(self, parameter_group_id: TLMC_ParameterGroupId) -> None: + + self.feature_group.persist_params_feature.persist_params(parameter_group_id) + + def get_position_counter(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.position_counter_feature.get_position_counter(max_wait_in_milliseconds) + + def set_position_counter(self, new_position_counter: int) -> None: + + self.feature_group.position_counter_feature.set_position_counter(new_position_counter) + + def get_position_loop_params(self, scenario: TLMC_PositionLoopScenario, max_wait_in_milliseconds: int) -> TLMC_PositionLoopParams: + + return self.feature_group.position_loop_params_feature.get_position_loop_params(scenario, max_wait_in_milliseconds) + + def set_position_loop_params(self, scenario: TLMC_PositionLoopScenario, params: TLMC_PositionLoopParams) -> None: + + self.feature_group.position_loop_params_feature.set_position_loop_params(scenario, params) + + def get_profile_mode_params(self, max_wait_in_milliseconds: int) -> TLMC_ProfileModeParams: + + return self.feature_group.profile_mode_params_feature.get_profile_mode_params(max_wait_in_milliseconds) + + def set_profile_mode_params(self, params: TLMC_ProfileModeParams) -> None: + + self.feature_group.profile_mode_params_feature.set_profile_mode_params(params) + + def restore_factory_defaults(self) -> None: + + self.feature_group.restore_factory_defaults_feature.restore_factory_defaults() + + def get_rich_response(self) -> TLMC_RichResponse: + + return self.feature_group.rich_response_feature.get_rich_response() + + def get_setting(self, settings_name: str, max_wait_in_milliseconds: int) -> TLMC_Setting: + + return self.feature_group.settings_feature.get_setting(settings_name, max_wait_in_milliseconds) + + def get_setting_discrete_values(self, settings_name: str) -> str: + + return self.feature_group.settings_feature.get_setting_discrete_values(settings_name) + + def get_settings(self, setting_string_format: TLMC_SettingStringFormat, include_read_only_items: bool) -> str: + + return self.feature_group.settings_feature.get_settings(setting_string_format, include_read_only_items) + + def get_settings_items(self) -> List[TLMC_Setting]: + + return self.feature_group.settings_feature.get_settings_items() + + def set_settings(self, settings: str) -> None: + + self.feature_group.settings_feature.set_settings(settings) + + def get_stage_axis_params(self, max_wait_in_milliseconds: int) -> TLMC_StageAxisParams: + + return self.feature_group.stage_axis_params_feature.get_stage_axis_params(max_wait_in_milliseconds) + + def set_stage_axis_params(self, params: TLMC_StageAxisParams) -> None: + + self.feature_group.stage_axis_params_feature.set_stage_axis_params(params) + + def get_status_item(self, status_item_id: TLMC_StatusItemId) -> TLMC_StatusItem: + + return self.feature_group.status_items_feature.get_status_item(status_item_id) + + def get_status_item_count(self) -> int: + + return self.feature_group.status_items_feature.get_status_item_count() + + def get_status_items(self, start_index: int, number_of_items: int) -> List[TLMC_StatusItem]: + + return self.feature_group.status_items_feature.get_status_items(start_index, number_of_items) + + def set_status_mode(self, operating_mode: TLMC_OperatingMode) -> None: + + self.feature_group.status_mode_feature.set_status_mode(operating_mode) + + def request_status(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.status_request_feature.request_status(max_wait_in_milliseconds) + + def stop(self, stop_mode: TLMC_StopMode, max_wait_in_milliseconds: int) -> None: + + self.feature_group.stop_feature.stop(stop_mode, max_wait_in_milliseconds) + + def get_track_settle_params(self, max_wait_in_milliseconds: int) -> TLMC_TrackSettleParams: + + return self.feature_group.track_settle_params_feature.get_track_settle_params(max_wait_in_milliseconds) + + def set_track_settle_params(self, params: TLMC_TrackSettleParams) -> None: + + self.feature_group.track_settle_params_feature.set_track_settle_params(params) + + def get_umc_status(self, max_wait_in_milliseconds: int) -> TLMC_UmcStatus: + + return self.feature_group.umc_status_feature.get_umc_status(max_wait_in_milliseconds) + + def convert_from_device_units_to_physical(self, scale_type: TLMC_ScaleType, device_value: int) -> tuple[float, TLMC_Unit]: + + return self.feature_group.unit_converter_feature.convert_from_device_units_to_physical(scale_type, device_value) + + def convert_from_physical_to_device(self, scale_type: TLMC_ScaleType, unit: TLMC_Unit, physical_value: int) -> int: + + return self.feature_group.unit_converter_feature.convert_from_physical_to_device(scale_type, unit, physical_value) + + def get_preferred_physical_unit(self, scale_type: TLMC_ScaleType) -> TLMC_Unit: + + return self.feature_group.unit_converter_feature.get_preferred_physical_unit(scale_type) + + def get_universal_status_bits(self, max_wait_in_milliseconds: int) -> TLMC_UniversalStatusBit: + + return self.feature_group.universal_status_bits_feature.get_universal_status_bits(max_wait_in_milliseconds) + + def get_velocity_params(self, max_wait_in_milliseconds: int) -> TLMC_VelocityParams: + + return self.feature_group.velocity_params_feature.get_velocity_params(max_wait_in_milliseconds) + + def set_velocity_params(self, params: TLMC_VelocityParams) -> None: + + self.feature_group.velocity_params_feature.set_velocity_params(params) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/products/umcx_stepper_logical_channel.py b/Python/XA/xa_source/src/thorlabs_xa/products/umcx_stepper_logical_channel.py new file mode 100644 index 0000000..c050d97 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/products/umcx_stepper_logical_channel.py @@ -0,0 +1,377 @@ +from typing import List + +from thorlabs_xa.interfaces.device_feature_groups.umcx_stepper_logical_channel_feature_group import UmcxStepperLogicalChannelFeatureGroup + +from thorlabs_xa.interfaces.device_features.bow_index import BowIndex +from thorlabs_xa.interfaces.device_features.connected_product import ConnectedProduct +from thorlabs_xa.interfaces.device_features.current_loop_params import CurrentLoopParams +from thorlabs_xa.interfaces.device_features.digital_output_states import DigitalOutputStates +from thorlabs_xa.interfaces.device_features.enable_state import EnableState +from thorlabs_xa.interfaces.device_features.encoder_counter import EncoderCounter +from thorlabs_xa.interfaces.device_features.firmware_version_info import FirmwareVersionInfo +from thorlabs_xa.interfaces.device_features.general_move_params import GeneralMoveParams +from thorlabs_xa.interfaces.device_features.hardware_info import HardwareInfo +from thorlabs_xa.interfaces.device_features.home import Home +from thorlabs_xa.interfaces.device_features.home_params import HomeParams +from thorlabs_xa.interfaces.device_features.identify import Identify +from thorlabs_xa.interfaces.device_features.io_position_trigger_enable_state import IoPositionTriggerEnableState +from thorlabs_xa.interfaces.device_features.io_trigger_params import IoTriggerParams +from thorlabs_xa.interfaces.device_features.jog_params import JogParams +from thorlabs_xa.interfaces.device_features.joystick_params import JoystickParams +from thorlabs_xa.interfaces.device_features.limit_switch_params_getter import LimitSwitchParamsGetter +from thorlabs_xa.interfaces.device_features.limit_switch_params_setter import LimitSwitchParamsSetter +from thorlabs_xa.interfaces.device_features.load_params import LoadParams +from thorlabs_xa.interfaces.device_features.move import Move +from thorlabs_xa.interfaces.device_features.move_absolute_params import MoveAbsoluteParams +from thorlabs_xa.interfaces.device_features.move_relative_params import MoveRelativeParams +from thorlabs_xa.interfaces.device_features.persist_params import PersistParams +from thorlabs_xa.interfaces.device_features.power_params import PowerParams +from thorlabs_xa.interfaces.device_features.profile_mode_params import ProfileModeParams +from thorlabs_xa.interfaces.device_features.restore_factory_defaults import RestoreFactoryDefaults +from thorlabs_xa.interfaces.device_features.rich_response import RichResponse +from thorlabs_xa.interfaces.device_features.set_actuator_type import SetActuatorType +from thorlabs_xa.interfaces.device_features.settings import Settings +from thorlabs_xa.interfaces.device_features.stage_axis_params import StageAxisParams +from thorlabs_xa.interfaces.device_features.status_items import StatusItems +from thorlabs_xa.interfaces.device_features.status_mode import StatusMode +from thorlabs_xa.interfaces.device_features.status_request import StatusRequest +from thorlabs_xa.interfaces.device_features.stepper_loop_params import StepperLoopParams +from thorlabs_xa.interfaces.device_features.stop import Stop +from thorlabs_xa.interfaces.device_features.umc_status import UmcStatus +from thorlabs_xa.interfaces.device_features.unit_converter import UnitConverter +from thorlabs_xa.interfaces.device_features.universal_status_bits import UniversalStatusBits +from thorlabs_xa.interfaces.device_features.velocity_params import VelocityParams + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.shared.params import TLMC_DeviceInfo + +from thorlabs_xa.shared.enums import TLMC_BowIndex, TLMC_CurrentLoopScenario, TLMC_DigitalOutput, TLMC_EnableState, TLMC_IoPositionTriggerEnableState, TLMC_MoveMode, TLMC_OperatingMode, TLMC_ParameterGroupId, TLMC_ScaleType, TLMC_SettingStringFormat, TLMC_StatusItemId, TLMC_StopMode, TLMC_Unit, TLMC_UniversalStatusBit +from thorlabs_xa.shared.params import TLMC_ConnectedProductInfo, TLMC_CurrentLoopParams, TLMC_FirmwareVersion, TLMC_GeneralMoveParams, TLMC_HardwareInfo, TLMC_HomeParams, TLMC_IoTriggerParams, TLMC_JogParams, TLMC_JoystickParams, TLMC_LimitSwitchParams, TLMC_MoveAbsoluteParams, TLMC_MoveRelativeParams, TLMC_PowerParams, TLMC_ProfileModeParams, TLMC_RichResponse, TLMC_Setting, TLMC_StageAxisParams, TLMC_UmcStatus, TLMC_StatusItem, TLMC_StepperLoopParams, TLMC_VelocityParams +from thorlabs_xa.shared.device import Device + +class UmcxStepperLogicalChannel(Device, + BowIndex, + ConnectedProduct, + CurrentLoopParams, + DigitalOutputStates, + EnableState, + EncoderCounter, + FirmwareVersionInfo, + GeneralMoveParams, + HardwareInfo, + Home, + HomeParams, + Identify, + IoPositionTriggerEnableState, + IoTriggerParams, + JogParams, + JoystickParams, + LimitSwitchParamsGetter, + LimitSwitchParamsSetter, + LoadParams, + Move, + MoveAbsoluteParams, + MoveRelativeParams, + PersistParams, + PowerParams, + ProfileModeParams, + RestoreFactoryDefaults, + RichResponse, + SetActuatorType, + Settings, + StageAxisParams, + StatusItems, + StatusMode, + StatusRequest, + StepperLoopParams, + Stop, + UmcStatus, + UnitConverter, + UniversalStatusBits, + VelocityParams): + + def __init__(self, device_handle: int, device_info: TLMC_DeviceInfo, feature_group: UmcxStepperLogicalChannelFeatureGroup, native_functions: NativeFunctions) -> None: + + super().__init__(device_handle, device_info, native_functions) + + self.feature_group = feature_group + + def get_bow_index(self, max_wait_in_milliseconds: int) -> TLMC_BowIndex: + + return self.feature_group.bow_index_feature.get_bow_index(max_wait_in_milliseconds) + + def set_bow_index(self, bow_index: TLMC_BowIndex) -> None: + + self.feature_group.bow_index_feature.set_bow_index(bow_index) + + def get_connected_product_info(self) -> TLMC_ConnectedProductInfo: + + return self.feature_group.connected_product_feature.get_connected_product_info() + + def get_supported_connected_products(self) -> List[str]: + + return self.feature_group.connected_product_feature.get_supported_connected_products() + + def set_connected_product(self, product_name: str) -> None: + + self.feature_group.connected_product_feature.set_connected_product(product_name) + + def set_connected_product_info(self, product_info: TLMC_ConnectedProductInfo) -> None: + + self.feature_group.connected_product_feature.set_connected_product_info(product_info) + + def get_current_loop_params(self, scenario: TLMC_CurrentLoopScenario, max_wait_in_milliseconds: int) -> TLMC_CurrentLoopParams: + + return self.feature_group.current_loop_params_feature.get_current_loop_params(scenario, max_wait_in_milliseconds) + + def set_current_loop_params(self, scenario: TLMC_CurrentLoopScenario, parameters: TLMC_CurrentLoopParams) -> None: + + self.feature_group.current_loop_params_feature.set_current_loop_params(scenario, parameters) + + def get_digital_output_states(self, max_wait_in_milliseconds: int) -> TLMC_DigitalOutput: + + return self.feature_group.digital_output_states_feature.get_digital_output_states(max_wait_in_milliseconds) + + def set_digital_output_states(self, params: TLMC_DigitalOutput) -> None: + + self.feature_group.digital_output_states_feature.set_digital_output_states(params) + + def get_enable_state(self, max_wait_in_milliseconds: int) -> TLMC_EnableState: + + return self.feature_group.enable_state_feature.get_enable_state(max_wait_in_milliseconds) + + def set_enable_state(self, enable_state: TLMC_EnableState) -> None: + + self.feature_group.enable_state_feature.set_enable_state(enable_state) + + def get_encoder_counter(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.encoder_counter_feature.get_encoder_counter(max_wait_in_milliseconds) + + def set_encoder_counter(self, new_encoder_counter: int) -> None: + + self.feature_group.encoder_counter_feature.set_encoder_counter(new_encoder_counter) + + def get_firmware_version_info(self, max_wait_in_milliseconds: int) -> tuple[TLMC_FirmwareVersion, TLMC_FirmwareVersion]: + + return self.feature_group.firmware_version_info_feature.get_firmware_version_info(max_wait_in_milliseconds) + + def get_general_move_params(self, max_wait_in_milliseconds: int) -> TLMC_GeneralMoveParams: + + return self.feature_group.general_move_params_feature.get_general_move_params(max_wait_in_milliseconds) + + def set_general_move_params(self, params: TLMC_GeneralMoveParams) -> None: + + self.feature_group.general_move_params_feature.set_general_move_params(params) + + def get_hardware_info(self, max_wait_in_milliseconds: int) -> TLMC_HardwareInfo: + + return self.feature_group.hardware_info_feature.get_hardware_info(max_wait_in_milliseconds) + + def home(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.home_feature.home(max_wait_in_milliseconds) + + def get_home_params(self, max_wait_in_milliseconds: int) -> TLMC_HomeParams: + + return self.feature_group.home_params_feature.get_home_params(max_wait_in_milliseconds) + + def set_home_params(self, params: TLMC_HomeParams) -> None: + + self.feature_group.home_params_feature.set_home_params(params) + + def identify(self) -> None: + + self.feature_group.identify_feature.identify() + + def get_io_position_trigger_enable_state(self, max_wait_in_milliseconds: int) -> TLMC_IoPositionTriggerEnableState: + + return self.feature_group.io_position_trigger_enable_state_feature.get_io_position_trigger_enable_state(max_wait_in_milliseconds) + + def set_io_position_trigger_enable_state(self, enable_state: TLMC_IoPositionTriggerEnableState, max_wait_in_milliseconds: int) -> None: + + self.feature_group.io_position_trigger_enable_state_feature.set_io_position_trigger_enable_state(enable_state, max_wait_in_milliseconds) + + def get_io_trigger_params(self, max_wait_in_milliseconds: int) -> TLMC_IoTriggerParams: + + return self.feature_group.io_trigger_params_feature.get_io_trigger_params(max_wait_in_milliseconds) + + def set_io_trigger_params(self, params: TLMC_IoTriggerParams) -> None: + + self.feature_group.io_trigger_params_feature.set_io_trigger_params(params) + + def get_jog_params(self, max_wait_in_milliseconds: int) -> TLMC_JogParams: + + return self.feature_group.jog_params_feature.get_jog_params(max_wait_in_milliseconds) + + def set_jog_params(self, params: TLMC_JogParams) -> None: + + self.feature_group.jog_params_feature.set_jog_params(params) + + def get_joystick_params(self, max_wait_in_milliseconds: int) -> TLMC_JoystickParams: + + return self.feature_group.joystick_params_feature.get_joystick_params(max_wait_in_milliseconds) + + def set_joystick_params(self, params: TLMC_JoystickParams) -> None: + + self.feature_group.joystick_params_feature.set_joystick_params(params) + + def get_limit_switch_params(self, max_wait_in_milliseconds: int) -> TLMC_LimitSwitchParams: + + return self.feature_group.limit_switch_params_getter_feature.get_limit_switch_params(max_wait_in_milliseconds) + + def set_limit_switch_params(self, params: TLMC_LimitSwitchParams) -> None: + + self.feature_group.limit_switch_params_setter_feature.set_limit_switch_params(params) + + def load_params(self) -> None: + + self.feature_group.load_params_feature.load_params() + + def move(self, move_mode: TLMC_MoveMode, params: int, max_wait_in_milliseconds: int) -> None: + + self.feature_group.move_feature.move(move_mode, params, max_wait_in_milliseconds) + + def get_move_absolute_params(self, max_wait_in_milliseconds: int) -> TLMC_MoveAbsoluteParams: + + return self.feature_group.move_absolute_params_feature.get_move_absolute_params(max_wait_in_milliseconds) + + def set_move_absolute_params(self, params: TLMC_MoveAbsoluteParams) -> None: + + self.feature_group.move_absolute_params_feature.set_move_absolute_params(params) + + def get_move_relative_params(self, max_wait_in_milliseconds: int) -> TLMC_MoveRelativeParams: + + return self.feature_group.move_relative_params_feature.get_move_relative_params(max_wait_in_milliseconds) + + def set_move_relative_params(self, params: TLMC_MoveRelativeParams) -> None: + + self.feature_group.move_relative_params_feature.set_move_relative_params(params) + + def persist_params(self, parameter_group_id: TLMC_ParameterGroupId) -> None: + + self.feature_group.persist_params_feature.persist_params(parameter_group_id) + + def get_position_counter(self, max_wait_in_milliseconds: int) -> int: + + return self.feature_group.position_counter_feature.get_position_counter(max_wait_in_milliseconds) + + def set_position_counter(self, new_position_counter: int) -> None: + + self.feature_group.position_counter_feature.set_position_counter(new_position_counter) + + def get_power_params(self, max_wait_in_milliseconds: int) -> TLMC_PowerParams: + + return self.feature_group.power_params_feature.get_power_params(max_wait_in_milliseconds) + + def set_power_params(self, params: TLMC_PowerParams) -> None: + + self.feature_group.power_params_feature.set_power_params(params) + + def get_profile_mode_params(self, max_wait_in_milliseconds: int) -> TLMC_ProfileModeParams: + + return self.feature_group.profile_mode_params_feature.get_profile_mode_params(max_wait_in_milliseconds) + + def set_profile_mode_params(self, params: TLMC_ProfileModeParams) -> None: + + self.feature_group.profile_mode_params_feature.set_profile_mode_params(params) + + def restore_factory_defaults(self) -> None: + + self.feature_group.restore_factory_defaults_feature.restore_factory_defaults() + + def get_rich_response(self) -> TLMC_RichResponse: + + return self.feature_group.rich_response_feature.get_rich_response() + + def set_actuator_type(self, actuator_type: int) -> None: + + self.feature_group.set_actuator_type_feature.set_actuator_type(actuator_type) + + def get_setting(self, settings_name: str, max_wait_in_milliseconds: int) -> TLMC_Setting: + + return self.feature_group.settings_feature.get_setting(settings_name, max_wait_in_milliseconds) + + def get_setting_discrete_values(self, settings_name: str) -> str: + + return self.feature_group.settings_feature.get_setting_discrete_values(settings_name) + + def get_settings(self, setting_string_format: TLMC_SettingStringFormat, include_read_only_items: bool) -> str: + + return self.feature_group.settings_feature.get_settings(setting_string_format, include_read_only_items) + + def get_settings_items(self) -> List[TLMC_Setting]: + + return self.feature_group.settings_feature.get_settings_items() + + def set_settings(self, settings: str) -> None: + + self.feature_group.settings_feature.set_settings(settings) + + def get_stage_axis_params(self, max_wait_in_milliseconds: int) -> TLMC_StageAxisParams: + + return self.feature_group.stage_axis_params_feature.get_stage_axis_params(max_wait_in_milliseconds) + + def set_stage_axis_params(self, params: TLMC_StageAxisParams) -> None: + + self.feature_group.stage_axis_params_feature.set_stage_axis_params(params) + + def get_status_item(self, status_item_id: TLMC_StatusItemId) -> TLMC_StatusItem: + + return self.feature_group.status_items_feature.get_status_item(status_item_id) + + def get_status_item_count(self) -> int: + + return self.feature_group.status_items_feature.get_status_item_count() + + def get_status_items(self, start_index: int, number_of_items: int) -> List[TLMC_StatusItem]: + + return self.feature_group.status_items_feature.get_status_items(start_index, number_of_items) + + def set_status_mode(self, operating_mode: TLMC_OperatingMode) -> None: + + self.feature_group.status_mode_feature.set_status_mode(operating_mode) + + def request_status(self, max_wait_in_milliseconds: int) -> None: + + self.feature_group.status_request_feature.request_status(max_wait_in_milliseconds) + + def get_stepper_loop_params(self, max_wait_in_milliseconds: int) -> TLMC_StepperLoopParams: + + return self.feature_group.stepper_loop_params_feature.get_stepper_loop_params(max_wait_in_milliseconds) + + def set_stepper_loop_params(self, params: TLMC_StepperLoopParams) -> None: + + self.feature_group.stepper_loop_params_feature.set_stepper_loop_params(params) + + def stop(self, stop_mode: TLMC_StopMode, max_wait_in_milliseconds: int) -> None: + + self.feature_group.stop_feature.stop(stop_mode, max_wait_in_milliseconds) + + def get_umc_status(self, max_wait_in_milliseconds: int) -> TLMC_UmcStatus: + + return self.feature_group.umc_status_feature.get_umc_status(max_wait_in_milliseconds) + + def convert_from_device_units_to_physical(self, scale_type: TLMC_ScaleType, device_value: int) -> tuple[float, TLMC_Unit]: + + return self.feature_group.unit_converter_feature.convert_from_device_units_to_physical(scale_type, device_value) + + def convert_from_physical_to_device(self, scale_type: TLMC_ScaleType, unit: TLMC_Unit, physical_value: int) -> int: + + return self.feature_group.unit_converter_feature.convert_from_physical_to_device(scale_type, unit, physical_value) + + def get_preferred_physical_unit(self, scale_type: TLMC_ScaleType) -> TLMC_Unit: + + return self.feature_group.unit_converter_feature.get_preferred_physical_unit(scale_type) + + def get_universal_status_bits(self, max_wait_in_milliseconds: int) -> TLMC_UniversalStatusBit: + + return self.feature_group.universal_status_bits_feature.get_universal_status_bits(max_wait_in_milliseconds) + + def get_velocity_params(self, max_wait_in_milliseconds: int) -> TLMC_VelocityParams: + + return self.feature_group.velocity_params_feature.get_velocity_params(max_wait_in_milliseconds) + + def set_velocity_params(self, params: TLMC_VelocityParams) -> None: + + self.feature_group.velocity_params_feature.set_velocity_params(params) \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/shared/c_params.py b/Python/XA/xa_source/src/thorlabs_xa/shared/c_params.py index c5753aa..be6623a 100644 --- a/Python/XA/xa_source/src/thorlabs_xa/shared/c_params.py +++ b/Python/XA/xa_source/src/thorlabs_xa/shared/c_params.py @@ -1,4 +1,4 @@ -from ctypes import Structure, Union, c_bool, c_char, c_double, c_float, c_int16, c_int32, c_int8, c_longlong, c_uint16, c_uint32, c_uint8, c_ulonglong +from ctypes import POINTER, Structure, Union, c_bool, c_char, c_double, c_float, c_int16, c_int32, c_int8, c_longlong, c_uint16, c_uint32, c_uint8, c_ulonglong class C_TLMC_AdcInputs(Structure): _pack_ = 1 @@ -350,6 +350,39 @@ class C_TLMC_MoveRelativeParams(Structure): ] +class C_TLMC_MoveSyncArray(Structure): + _pack_ = 1 + _fields_ = [ + ("arrayId", c_uint16), + ("channels", c_uint16), + ("numPoints", c_uint16), + ("startIndex", c_uint16), + ("timePositions", POINTER(c_int32)) +] + + +class C_TLMC_MoveSyncParams(Structure): + _pack_ = 1 + _fields_ = [ + ("arrayId", c_uint16), + ("cycleStartIndex", c_uint16), + ("cycleEndIndex", c_uint16), + ("numberOfCycles", c_uint16), + ("endIndex", c_uint16), + ("deceleration", c_int32), + ("reserved", c_int8 * 6) +] + + +class C_TLMC_MoveSyncStartParams(Structure): + _pack_ = 1 + _fields_ = [ + ("arrayId", c_uint16), + ("channels", c_uint16), + ("trigger", c_uint16) +] + + class C_TLMC_PotentiometerParams(Structure): _pack = 1 _fields_ = [("deflection0", c_uint16), @@ -513,12 +546,13 @@ class C_TLMC_PZ_OutputWaveformParams(Structure): ("numberOfSamplesBetweenTriggerRepetition", c_uint16) ] -class C_TLMC_PZ_OutputWaveformLoopTableSample(Structure): +class C_TLMC_PZ_OutputWaveformLookupTableSample(Structure): _pack_ = 1 _fields_ = [("index", c_uint16), ("voltage", c_int16) ] + class C_TLMC_PZ_MaxOutputVoltageParams(Structure): _pack_ = 1 _fields_ = [("maxOutputVoltage", c_uint16), @@ -567,6 +601,91 @@ class C_TLMC_PZ_SlewRateParams(Structure): ("closedLoopSlewRate", c_uint16) ] +class C_TLMC_PZIM_DriveOperationsParams(Structure): + _pack_ = 1 + _fields_ = [ + ("maxVoltage", c_uint16), + ("stepRate", c_uint32), + ("stepAcceleration", c_uint32) + ] + +class C_TLMC_PZIM_KcubeFeedbackSignalParams(Structure): + _pack_ = 1 + _fields_ = [ + ("feedbackSignalMode", c_uint16), + ("encoderConst", c_uint32), + ("reserved", c_uint16 * 4) + ] + +class C_TLMC_PZIM_KcubeIoTriggerParams(Structure): + _pack_ = 1 + _fields_ = [ + ("triggerChannel1", c_uint16), + ("triggerChannel2", c_uint16), + ("trigger1Mode", c_uint16), + ("trigger1Polarity", c_uint16), + ("trigger2Mode", c_uint16), + ("trigger2Polarity", c_uint16), + ("reserved", c_int8 * 12) +] + +class C_TLMC_PZIM_KcubeJogParams(Structure): + _pack_ = 1 + _fields_ = [ + ("jogMode", c_uint16), + ("jogStepSizeForward", c_uint32), + ("jogStepSizeReverse", c_uint32), + ("jogStepVelocity", c_uint32), + ("jogStepAcceleration", c_uint32) + ] + +class C_TLMC_PZIM_KcubeMmiParams(Structure): + _pack_ = 1 + _fields_ = [ + ("joystickMode", c_uint16), + ("joystickMaxVelocity", c_int32), + ("joystickDirectionSense", c_uint16), + ("presetPosition1", c_int32), + ("presetPosition2", c_int32), + ("displayBrightness", c_uint16), + ("reserved", c_int8 * 2) + ] + +class C_TLMC_PZIM_KcubeTriggerParams(Structure): + _pack_ = 1 + _fields_ = [ + ("startPositionForward", c_int32), + ("intervalForward", c_int32), + ("numberPulsesForward", c_uint32), + ("startPositionReverse", c_int32), + ("intervalReverse", c_int32), + ("numberPulsesReverse", c_uint32), + ("pulseWidth", c_uint32), + ("numberCycles", c_uint32), + ("reserved", c_uint16 * 6) +] + +class C_TLMC_PZIM_LimitSwitchParams(Structure): + _pack_ = 1 + _fields_ = [ + ("forwardHardLimit", c_uint16), + ("reverseHardLimit", c_uint16), + ("stageId", c_uint16) +] + +class C_TLMC_PZIM_PositionCounts(Structure): + _pack_ = 1 + _fields_ = [ + ("position", c_int32), + ("encoderCount", c_int32) + ] + +class C_TLMC_PZIM_StageSelectParams(Structure): + _pack_ = 1 + _fields_ = [ + ("stageIdent", c_uint16), + ("stageReserved", c_uint16) + ] class C_TLMC_RichResponse(Structure): _pack_ = 1 @@ -691,6 +810,16 @@ class C_TLMC_TriggerParamsForStepper(Structure): _fields_ = [("modes", c_uint8)] +class C_TLMC_UmcStatus(Structure): + _pack_ = 1 + _fields_ = [("position", c_int32), + ("encoderCount", c_int32), + ("velocity", c_int16), + ("motorCurrent", c_int16), + ("statusBits", c_uint32) + ] + + class C_TLMC_UniversalStatus(Structure): _pack_ = 1 _fields_ = [("position", c_int32), diff --git a/Python/XA/xa_source/src/thorlabs_xa/shared/device_factory.py b/Python/XA/xa_source/src/thorlabs_xa/shared/device_factory.py index c3188f8..252f4cc 100644 --- a/Python/XA/xa_source/src/thorlabs_xa/shared/device_factory.py +++ b/Python/XA/xa_source/src/thorlabs_xa/shared/device_factory.py @@ -1,12 +1,50 @@ +from thorlabs_xa.implementations.device_feature_groups.bbd30x_feature_group import Bbd30xFeatureGroup +from thorlabs_xa.implementations.device_feature_groups.bbd30x_logical_channel_feature_group import Bbd30xLogicalChannelFeatureGroup +from thorlabs_xa.implementations.device_feature_groups.bpc30x_feature_group import Bpc30xFeatureGroup +from thorlabs_xa.implementations.device_feature_groups.bpc30x_logical_channel_feature_group import Bpc30xLogicalChannelFeatureGroup +from thorlabs_xa.implementations.device_feature_groups.bpc301_feature_group import Bpc301FeatureGroup +from thorlabs_xa.implementations.device_feature_groups.bsc201_feature_group import Bsc201FeatureGroup +from thorlabs_xa.implementations.device_feature_groups.bsc201v4_feature_group import Bsc201v4FeatureGroup +from thorlabs_xa.implementations.device_feature_groups.bsc20x_feature_group import Bsc20xFeatureGroup +from thorlabs_xa.implementations.device_feature_groups.bsc20x_logical_channel_feature_group import Bsc20xLogicalChannelFeatureGroup +from thorlabs_xa.implementations.device_feature_groups.bsc20xv4_logical_channel_feature_group import Bsc20xv4LogicalChannelFeatureGroup +from thorlabs_xa.implementations.device_feature_groups.kbd101_feature_group import Kbd101FeatureGroup from thorlabs_xa.implementations.device_feature_groups.kdc101_feature_group import Kdc101FeatureGroup +from thorlabs_xa.implementations.device_feature_groups.kim001_feature_group import Kim001FeatureGroup from thorlabs_xa.implementations.device_feature_groups.kpc101_feature_group import Kpc101FeatureGroup +from thorlabs_xa.implementations.device_feature_groups.kst101_feature_group import Kst101FeatureGroup from thorlabs_xa.implementations.device_feature_groups.kst201_feature_group import Kst201FeatureGroup from thorlabs_xa.implementations.device_feature_groups.linear_translation_stage_feature_group import LinearTranslationStageFeatureGroup +from thorlabs_xa.implementations.device_feature_groups.pdxc2_feature_group import Pdxc2FeatureGroup +from thorlabs_xa.implementations.device_feature_groups.pdxc3_feature_group import Pdxc3FeatureGroup +from thorlabs_xa.implementations.device_feature_groups.tbd001_feature_group import Tbd001FeatureGroup +from thorlabs_xa.implementations.device_feature_groups.umcx_feature_group import UmcxFeatureGroup +from thorlabs_xa.implementations.device_feature_groups.umcx_brushless_logical_channel_feature_group import UmcxBrushlessLogicalChannelFeatureGroup +from thorlabs_xa.implementations.device_feature_groups.umcx_stepper_logical_channel_feature_group import UmcxStepperLogicalChannelFeatureGroup +from thorlabs_xa.products.bbd30x import Bbd30x +from thorlabs_xa.products.bbd30x_logical_channel import Bbd30xLogicalChannel +from thorlabs_xa.products.bpc301 import Bpc301 +from thorlabs_xa.products.bpc30x import Bpc30x +from thorlabs_xa.products.bpc30x_logical_channel import Bpc30xLogicalChannel +from thorlabs_xa.products.bsc201 import Bsc201 +from thorlabs_xa.products.bsc201v4 import Bsc201v4 +from thorlabs_xa.products.bsc20x import Bsc20x +from thorlabs_xa.products.bsc20x_logical_channel import Bsc20xLogicalChannel +from thorlabs_xa.products.bsc20xv4_logical_channel import Bsc20xv4LogicalChannel +from thorlabs_xa.products.kbd101 import Kbd101 from thorlabs_xa.products.kdc101 import Kdc101 +from thorlabs_xa.products.kim001 import Kim001 from thorlabs_xa.products.kpc101 import Kpc101 +from thorlabs_xa.products.kst101 import Kst101 from thorlabs_xa.products.kst201 import Kst201 from thorlabs_xa.products.linear_translation_stage import LinearTranslationStage +from thorlabs_xa.products.pdxc2 import Pdxc2 +from thorlabs_xa.products.pdxc3 import Pdxc3 +from thorlabs_xa.products.tbd001 import Tbd001 +from thorlabs_xa.products.umcx import Umcx +from thorlabs_xa.products.umcx_brushless_logical_channel import UmcxBrushlessLogicalChannel +from thorlabs_xa.products.umcx_stepper_logical_channel import UmcxStepperLogicalChannel from thorlabs_xa.native_sdks.native_functions import NativeFunctions @@ -24,16 +62,74 @@ def create(self, device_handle: int, device_info: TLMC_DeviceInfo) -> Device: # Note: It is expected that this will produce a pylance error until all device types are implemented match device_info.device_type: + case TLMC_DeviceType.TLMC_DeviceType_Bbd30xBaseUnit: + feature_group = Bbd30xFeatureGroup(device_handle, self.native_functions) + return Bbd30x(device_handle, device_info, feature_group, self.native_functions) + case TLMC_DeviceType.TLMC_DeviceType_Bbd30xLogicalChannel: + feature_group = Bbd30xLogicalChannelFeatureGroup(device_handle, self.native_functions) + return Bbd30xLogicalChannel(device_handle, device_info, feature_group, self.native_functions) + case TLMC_DeviceType.TLMC_DeviceType_Bpc301: + feature_group = Bpc301FeatureGroup(device_handle, self.native_functions) + return Bpc301(device_handle, device_info, feature_group, self.native_functions) + case TLMC_DeviceType.TLMC_DeviceType_Bpc30xBaseUnit: + feature_group = Bpc30xFeatureGroup(device_handle, self.native_functions) + return Bpc30x(device_handle, device_info, feature_group, self.native_functions) + case TLMC_DeviceType.TLMC_DeviceType_Bpc30xLogicalChannel: + feature_group = Bpc30xLogicalChannelFeatureGroup(device_handle, self.native_functions) + return Bpc30xLogicalChannel(device_handle, device_info, feature_group, self.native_functions) + case TLMC_DeviceType.TLMC_DeviceType_Bsc20xBaseUnit: + feature_group = Bsc20xFeatureGroup(device_handle, self.native_functions) + return Bsc20x(device_handle, device_info, feature_group, self.native_functions) + case TLMC_DeviceType.TLMC_DeviceType_Bsc20xLogicalChannel: + feature_group = Bsc20xLogicalChannelFeatureGroup(device_handle, self.native_functions) + return Bsc20xLogicalChannel(device_handle, device_info, feature_group, self.native_functions) + case TLMC_DeviceType.TLMC_DeviceType_Bsc201: + feature_group = Bsc201FeatureGroup(device_handle, self.native_functions) + return Bsc201(device_handle, device_info, feature_group, self.native_functions) + case TLMC_DeviceType.TLMC_DeviceType_Bsc201v4: + feature_group = Bsc201v4FeatureGroup(device_handle, self.native_functions) + return Bsc201v4(device_handle, device_info, feature_group, self.native_functions) + case TLMC_DeviceType.TLMC_DeviceType_Bsc20xv4LogicalChannel: + feature_group = Bsc20xv4LogicalChannelFeatureGroup(device_handle, self.native_functions) + return Bsc20xv4LogicalChannel(device_handle, device_info, feature_group, self.native_functions) + case TLMC_DeviceType.TLMC_DeviceType_Kbd101: + feature_group = Kbd101FeatureGroup(device_handle, self.native_functions) + return Kbd101(device_handle, device_info, feature_group, self.native_functions) case TLMC_DeviceType.TLMC_DeviceType_Kdc101: feature_group = Kdc101FeatureGroup(device_handle, self.native_functions) return Kdc101(device_handle, device_info, feature_group, self.native_functions) case TLMC_DeviceType.TLMC_DeviceType_Kpc101: feature_group = Kpc101FeatureGroup(device_handle, self.native_functions) return Kpc101(device_handle, device_info, feature_group, self.native_functions) + case TLMC_DeviceType.TLMC_DeviceType_Kim001: + feature_group = Kim001FeatureGroup(device_handle, self.native_functions) + return Kim001(device_handle, device_info, feature_group, self.native_functions) + case TLMC_DeviceType.TLMC_DeviceType_Kst101: + feature_group = Kst101FeatureGroup(device_handle, self.native_functions) + return Kst101(device_handle, device_info, feature_group, self.native_functions) case TLMC_DeviceType.TLMC_DeviceType_Kst201: feature_group = Kst201FeatureGroup(device_handle, self.native_functions) return Kst201(device_handle, device_info, feature_group, self.native_functions) - case TLMC_DeviceType.TLMC_DeviceType_LinearTranslationStage: + case TLMC_DeviceType.TLMC_DeviceType_Lts: feature_group = LinearTranslationStageFeatureGroup(device_handle, self.native_functions) return LinearTranslationStage(device_handle, device_info, feature_group, self.native_functions) + case TLMC_DeviceType.TLMC_DeviceType_Pdxc2: + feature_group = Pdxc2FeatureGroup(device_handle, self.native_functions) + return Pdxc2(device_handle, device_info, feature_group, self.native_functions) + case TLMC_DeviceType.TLMC_DeviceType_Pdxc3: + feature_group = Pdxc3FeatureGroup(device_handle, self.native_functions) + return Pdxc3(device_handle, device_info, feature_group, self.native_functions) + case TLMC_DeviceType.TLMC_DeviceType_Tbd001: + feature_group = Tbd001FeatureGroup(device_handle, self.native_functions) + return Tbd001(device_handle, device_info, feature_group, self.native_functions) + case TLMC_DeviceType.TLMC_DeviceType_UmcxBaseUnit: + feature_group = UmcxFeatureGroup(device_handle, self.native_functions) + return Umcx(device_handle, device_info, feature_group, self.native_functions) + case TLMC_DeviceType.TLMC_DeviceType_UmcxBrushlessLogicalChannel: + feature_group = UmcxBrushlessLogicalChannelFeatureGroup(device_handle, self.native_functions) + return UmcxBrushlessLogicalChannel(device_handle, device_info, feature_group, self.native_functions) + case TLMC_DeviceType.TLMC_DeviceType_UmcxStepperLogicalChannel: + feature_group = UmcxStepperLogicalChannelFeatureGroup(device_handle, self.native_functions) + return UmcxStepperLogicalChannel(device_handle, device_info, feature_group, self.native_functions) + raise ValueError("Device type not currently supported") \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/shared/enums.py b/Python/XA/xa_source/src/thorlabs_xa/shared/enums.py index c64c792..bac00aa 100644 --- a/Python/XA/xa_source/src/thorlabs_xa/shared/enums.py +++ b/Python/XA/xa_source/src/thorlabs_xa/shared/enums.py @@ -143,7 +143,8 @@ class TLMC_DeviceType(IntEnum): TLMC_DeviceType_Kst101 = 10 TLMC_DeviceType_Kst201 = 11 TLMC_DeviceType_Tbd001 = 12 - TLMC_DeviceType_LinearTranslationStage = 13 + TLMC_DeviceType_Lts = 13 + TLMC_DeviceType_LinearTranslationStage = TLMC_DeviceType_Lts TLMC_DeviceType_Bsc20xv4LogicalChannel = 14 TLMC_DeviceType_Bsc201 = 15 TLMC_DeviceType_Bsc201v4 = 16 @@ -154,6 +155,7 @@ class TLMC_DeviceType(IntEnum): TLMC_DeviceType_UmcxBrushlessLogicalChannel = 21 TLMC_DeviceType_UmcxStepperLogicalChannel = 22 TLMC_DeviceType_Anonymous = 23 + TLMC_DeviceType_Kim001 = 24 class TLMC_DigitalInput(IntFlag): @@ -302,6 +304,7 @@ class TLMC_JoystickAxis(IntEnum): class TLMC_JoystickDirectionSense(IntEnum): + TLMC_JoystickDirectionSense_Disabled = 0x0000 TLMC_JoystickDirectionSense_Positive = 0x0001 TLMC_JoystickDirectionSense_Negative = 0x0002 @@ -616,10 +619,16 @@ class TLMC_MoveMode(IntEnum): TLMC_MoveMode_JogForward = auto() TLMC_MoveMode_JogReverse = auto() + class TLMC_MoveDirection(IntEnum): Move_Direction_Forward = 0 Move_Direction_Reverse = 1 - + + +class TLMC_MoveSyncStartTrigger(IntEnum): + TLMC_MoveSyncStartTrigger_Software = 0x0001 + + class TLMC_NotificationId(IntEnum): TLMC_NotificationId_AnalogMonitorConfigurationParamsChanged = 0 TLMC_NotificationId_AuxIoPortModeChanged = 1 @@ -698,6 +707,20 @@ class TLMC_NotificationId(IntEnum): TLMC_NotificationId_PiezoInertialMotorTriggerTargetPositionChanged = 74 TLMC_NotificationId_UmcStatusChanged = 75 TLMC_NotificationId_AuxIoConfigurationChanged = 76 + TLMC_NotificationId_RxInactivityWarningRaised = 77 + TLMC_NotificationId_RxInactivityWarningCleared = 78 + TLMC_NotificationId_CommunicationsErrorRaised = 79 + TLMC_NotificationId_CommunicationsErrorCleared = 80 + TLMC_NotificationId_PiezoInertialMotorDriveOperationsParamsChanged = 81 + TLMC_NotificationId_PiezoInertialMotorKcubeTriggerParamsChanged = 82 + TLMC_NotificationId_PiezoInertialMotorKcubeChannelEnableChanged = 83 + TLMC_NotificationId_PiezoInertialMotorKcubeJogParamsChanged = 84 + TLMC_NotificationId_PiezoInertialMotorKcubeFeedbackSigParamsChanged = 85 + TLMC_NotificationId_PiezoInertialMotorStageSelectParamsChanged = 86 + TLMC_NotificationId_PiezoInertialMotorKcubeMoveAbsoluteParamsChanged = 87 + TLMC_NotificationId_PiezoInertialMotorKcubeMoveRelativeParamsChanged = 88 + TLMC_NotificationId_PiezoInertialMotorConversionFactorsChanged = 89 + TLMC_NotificationId_PiezoInertialMotorKcubePidParamsChanged = 90 class TLMC_OperatingMode(IntFlag): @@ -819,6 +842,45 @@ class TLMC_PZ_VoltageLimit(IntEnum): TLMC_PZ_VoltageLimit_100Volts = 0x0004 TLMC_PZ_VoltageLimit_150Volts = 0x0008 +class TLMC_PZIM_KcubeChannelEnableMode(IntEnum): + TLMC_PZIM_KcubeChannelEnableMode_None = 0x00 + TLMC_PZIM_KcubeChannelEnableMode_Channel1 = 0x01 + TLMC_PZIM_KcubeChannelEnableMode_Channel2 = 0x02 + TLMC_PZIM_KcubeChannelEnableMode_Channel3 = 0x03 + TLMC_PZIM_KcubeChannelEnableMode_Channel4 = 0x04 + TLMC_PZIM_KcubeChannelEnableMode_Channel1And2 = 0x05 + TLMC_PZIM_KcubeChannelEnableMode_Channel3And4 = 0x06 + +class TLMC_PZIM_KcubeFeedbackSignalMode(IntEnum): + TLMC_PZIM_KcubeFeedbackSignalMode_Disabled = 0x00 + TLMC_PZIM_KcubeFeedbackSignalMode_LimitSwitch = 0x01 + TLMC_PZIM_KcubeFeedbackSignalMode_Encoder = 0x02 + +class TLMC_PZIM_KcubeTriggerChannel(IntEnum): + TLMC_PZIM_KcubeTriggerChannel_Channel1 = 0x0001 + TLMC_PZIM_KcubeTriggerChannel_Channel2 = 0x0002 + TLMC_PZIM_KcubeTriggerChannel_Channel3 = 0x0004 + TLMC_PZIM_KcubeTriggerChannel_Channel4 = 0x0008 + +class TLMC_PZIM_KcubeTriggerMode(IntEnum): + TLMC_PZIM_KcubeTriggerMode_Disabled = 0x0000 + TLMC_PZIM_KcubeTriggerMode_GeneralPurposeInput = 0x0001 + TLMC_PZIM_KcubeTriggerMode_InputTriggersRelativeMove = 0x0002 + TLMC_PZIM_KcubeTriggerMode_InputTriggersAbsoluteMove = 0x0003 + TLMC_PZIM_KcubeTriggerMode_InputTriggersResetCount = 0x0004 + TLMC_PZIM_KcubeTriggerMode_GeneralPurposeOutput = 0x000A + TLMC_PZIM_KcubeTriggerMode_OutputActiveDuringMotion = 0x000B + TLMC_PZIM_KcubeTriggerMode_OutputActiveAtMaxVelocity = 0x000C + TLMC_PZIM_KcubeTriggerMode_OutputActiveAtForwardLimit = 0x0010 + TLMC_PZIM_KcubeTriggerMode_OutputActiveAtReverseLimit = 0x0011 + TLMC_PZIM_KcubeTriggerMode_OutputActiveAtEitherLimit = 0x0012 + TLMC_PZIM_KcubeTriggerMode_OutputPulsedInForwardDirection = 0x000D + TLMC_PZIM_KcubeTriggerMode_OutputPulsedInReverseDirection = 0x000E + TLMC_PZIM_KcubeTriggerMode_OutputPulsedInEitherDirection = 0x000F + +class TLMC_PZIM_StageSelectType(IntEnum): + TLMC_PZIM_StageType_LinearActuator_PIA = 0x01 + TLMC_PZIM_StageType_RotaryStage_PDR = 0x02 class TLMC_RackBayNumber(IntEnum): TLMC_RackBayNumber_1 = 0x0000 @@ -913,14 +975,24 @@ class TLMC_StageAxisId(IntEnum): TLMC_StageAxisId_Pitch = 0x0013 TLMC_StageAxisId_Roll = 0x0014 TLMC_StageAxisId_Yaw = 0x0015 + TLMC_StageAxisId_Z = 0x0016 + TLMC_StageAxisId_Goniometer = 0x0021 class TLMC_StageProductId(IntEnum): - TLMC_StageProductId_Unknown_PDXC = 0x0000 + TLMC_StageProductId_None = 0x0000 TLMC_StageProductId_Unknown = 0x0001 + TLMC_StageProductId_Unknown_PDXC = TLMC_StageProductId_None TLMC_StageProductId_MLS203_X = 0x0010 TLMC_StageProductId_MLS203_Y = 0x0011 TLMC_StageProductId_DDS = 0x0012 + TLMC_StageProductId_DDS220 = 0x0013 + TLMC_StageProductId_DDS300 = 0x0014 + TLMC_StageProductId_DDS600 = 0x0015 + TLMC_StageProductId_M150XY_X = 0x0016 + TLMC_StageProductId_M150XY_Y = 0x0017 + TLMC_StageProductId_DDS800 = 0x0018 + TLMC_StageProductId_DDS1000 = 0x0019 TLMC_StageProductId_DRV001 = 0x0049 TLMC_StageProductId_DRV013 = 0x0050 TLMC_StageProductId_DRV014 = 0x0051 @@ -946,6 +1018,7 @@ class TLMC_StageProductId(IntEnum): TLMC_StageProductId_NanoMax_300M_Z_Axis_DRV001 = 0x0073 TLMC_StageProductId_NanoMax_600_X_Axis_DRV001 = 0x0074 TLMC_StageProductId_DDR = 0x0075 + TLMC_StageProductId_DDR100 = TLMC_StageProductId_DDR TLMC_StageProductId_FW6 = 0x0076 TLMC_StageProductId_FW12 = 0x0077 TLMC_StageProductId_NanoMax_600_Z_Axis_DRV001 = 0x0078 @@ -967,6 +1040,7 @@ class TLMC_StageProductId(IntEnum): TLMC_StageProductId_NRT100 = 0x00B3 TLMC_StageProductId_NRT150 = 0x00B4 TLMC_StageProductId_FW103 = 0x00B6 + TLMC_StageProductId_LNR50SE = 0x00B7 TLMC_StageProductId_LPXY1_X = 0x00B8 TLMC_StageProductId_LPXY1_Y = 0x00B9 TLMC_StageProductId_LNR502 = 0x00BB diff --git a/Python/XA/xa_source/src/thorlabs_xa/shared/get_subchannel.py b/Python/XA/xa_source/src/thorlabs_xa/shared/get_subchannel.py new file mode 100644 index 0000000..f8f1176 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/shared/get_subchannel.py @@ -0,0 +1,9 @@ +from typing import List, Protocol + +from thorlabs_xa.shared.subchannel import Subchannel + +class GetSubchannel(Protocol): + + def get_all_subchannels(self) -> List[Subchannel]: ... + + def get_subchannel(self, subchannel_number: int) -> Subchannel: ... \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/shared/map_native_to_python.py b/Python/XA/xa_source/src/thorlabs_xa/shared/map_native_to_python.py index a924d25..21ec754 100644 --- a/Python/XA/xa_source/src/thorlabs_xa/shared/map_native_to_python.py +++ b/Python/XA/xa_source/src/thorlabs_xa/shared/map_native_to_python.py @@ -2,10 +2,10 @@ from typing import TypeAlias, Union -from thorlabs_xa.shared.c_params import C_TLMC_AdcInputs, C_TLMC_AnalogMonitorConfigurationParams, C_TLMC_ApiVersion, C_TLMC_ButtonParams, C_TLMC_ConnectedProductInfo, C_TLMC_CurrentLoopParams, C_TLMC_DcPidParams, C_TLMC_DeviceInfo, C_TLMC_FirmwareVersion, C_TLMC_GeneralMoveParams, C_TLMC_HardwareInfo, C_TLMC_HomeParams, C_TLMC_IoConfigurationParams, C_TLMC_IoTriggerParams, C_TLMC_JogParams, C_TLMC_JoystickParams, C_TLMC_JoystickSettingsParams, C_TLMC_KcubeIoTriggerParams, C_TLMC_KcubeMmiParams, C_TLMC_KcubePositionTriggerParams, C_TLMC_LcdDisplayParams, C_TLMC_LcdMoveParams, C_TLMC_LimitSwitchParams, C_TLMC_MonitorOutputParams, C_TLMC_MotorOutputParams, C_TLMC_MoveAbsoluteParams, C_TLMC_MoveRelativeParams, C_TLMC_PZ_KpcIoSettingsParams, C_TLMC_PZ_KpcIoTriggerParams, C_TLMC_PZ_KpcMmiParams, C_TLMC_PZ_LnnxControlLoopParams, C_TLMC_PZ_LnnxNotchFilterParams, C_TLMC_PZ_MaxOutputVoltageParams, C_TLMC_PZ_NanoTrakCircleDiameterLookupTableData, C_TLMC_PZ_NanoTrakCircleHomePositionParams, C_TLMC_PZ_NanoTrakCircleParams, C_TLMC_PZ_NanoTrakGainParams, C_TLMC_PZ_NanoTrakMode, C_TLMC_PZ_NanoTrakPhaseCompensationParams, C_TLMC_PZ_NanoTrakRangeParams, C_TLMC_PZ_NanoTrakStatus, C_TLMC_PZ_NanoTrakTnaIoSettings, C_TLMC_PZ_NanoTrakTrackThresholdParams, C_TLMC_PZ_OutputVoltageControlSourceParams, C_TLMC_PZ_OutputWaveformParams, C_TLMC_PZ_PositionLoopParams, C_TLMC_PZ_SlewRateParams, C_TLMC_PZ_StageInfoParams, C_TLMC_PZ_Status, C_TLMC_PositionLoopParams, C_TLMC_PotentiometerParams, C_TLMC_PowerParams, C_TLMC_ProfileModeParams, C_TLMC_RichResponse, C_TLMC_Setting, C_TLMC_StageAxisParams, C_TLMC_StatusItem, C_TLMC_StepperLoopParams, C_TLMC_StepperStatus, C_TLMC_TrackSettleParams, C_TLMC_TriggerParamsForDcBrushless, C_TLMC_TriggerParamsForStepper, C_TLMC_UniversalStatus, C_TLMC_VelocityParams -from thorlabs_xa.shared.params import TLMC_AdcInputs, TLMC_AnalogMonitorConfigurationParams, TLMC_ApiVersion, TLMC_ButtonParams, TLMC_ConnectedProductInfo, TLMC_CurrentLoopParams, TLMC_DcPidParams, TLMC_DeviceInfo, TLMC_FirmwareVersion, TLMC_GeneralMoveParams, TLMC_HardwareInfo, TLMC_HomeParams, TLMC_IoConfigurationParams, TLMC_IoTriggerParams, TLMC_JogParams, TLMC_JoystickParams, TLMC_JoystickSettingsParams, TLMC_KcubeIoTriggerParams, TLMC_KcubeMmiParams, TLMC_KcubePositionTriggerParams, TLMC_LcdDisplayParams, TLMC_LcdMoveParams, TLMC_LimitSwitchParams, TLMC_MonitorOutputParams, TLMC_MotorOutputParams, TLMC_MoveAbsoluteParams, TLMC_MoveRelativeParams, TLMC_PZ_IoTriggerParams, TLMC_PZ_KpcIoSettingsParams, TLMC_PZ_KpcIoTriggerParams, TLMC_PZ_KpcMmiParams, TLMC_PZ_LnnxControlLoopParams, TLMC_PZ_LnnxNotchFilterParams, TLMC_PZ_MaxOutputVoltageParams, TLMC_PZ_NanoTrakCircleDiameterLookupTableData, TLMC_PZ_NanoTrakCircleHomePositionParams, TLMC_PZ_NanoTrakCircleParams, TLMC_PZ_NanoTrakGainParams, TLMC_PZ_NanoTrakMode, TLMC_PZ_NanoTrakPhaseCompensationParams, TLMC_PZ_NanoTrakRangeParams, TLMC_PZ_NanoTrakStatus, TLMC_PZ_NanoTrakTnaIoSettings, TLMC_PZ_NanoTrakTrackThresholdParams, TLMC_PZ_OutputVoltageControlSourceParams, TLMC_PZ_OutputWaveformParams, TLMC_PZ_PositionLoopParams, TLMC_PZ_SlewRateParams, TLMC_PZ_StageInfoParams, TLMC_PZ_Status, TLMC_PositionLoopParams, TLMC_PotentiometerParams, TLMC_PowerParams, TLMC_ProfileModeParams, TLMC_RichResponse, TLMC_Setting, TLMC_StageAxisParams, TLMC_StatusItem, TLMC_StepperLoopParams, TLMC_StepperStatus, TLMC_TrackSettleParams, TLMC_TriggerParamsForDcBrushless, TLMC_TriggerParamsForStepper, TLMC_UniversalStatus, TLMC_VelocityParams +from thorlabs_xa.shared.c_params import C_TLMC_AdcInputs, C_TLMC_AnalogMonitorConfigurationParams, C_TLMC_ApiVersion, C_TLMC_ButtonParams, C_TLMC_ConnectedProductInfo, C_TLMC_CurrentLoopParams, C_TLMC_DcPidParams, C_TLMC_DeviceInfo, C_TLMC_FirmwareVersion, C_TLMC_GeneralMoveParams, C_TLMC_HardwareInfo, C_TLMC_HomeParams, C_TLMC_IoConfigurationParams, C_TLMC_IoTriggerParams, C_TLMC_JogParams, C_TLMC_JoystickParams, C_TLMC_JoystickSettingsParams, C_TLMC_KcubeIoTriggerParams, C_TLMC_KcubeMmiParams, C_TLMC_KcubePositionTriggerParams, C_TLMC_LcdDisplayParams, C_TLMC_LcdMoveParams, C_TLMC_LimitSwitchParams, C_TLMC_MonitorOutputParams, C_TLMC_MotorOutputParams, C_TLMC_MoveAbsoluteParams, C_TLMC_MoveRelativeParams, C_TLMC_MoveSyncArray, C_TLMC_MoveSyncParams, C_TLMC_MoveSyncStartParams, C_TLMC_PZ_KpcIoSettingsParams, C_TLMC_PZ_KpcIoTriggerParams, C_TLMC_PZ_KpcMmiParams, C_TLMC_PZ_LnnxControlLoopParams, C_TLMC_PZ_LnnxNotchFilterParams, C_TLMC_PZ_MaxOutputVoltageParams, C_TLMC_PZ_NanoTrakCircleDiameterLookupTableData, C_TLMC_PZ_NanoTrakCircleHomePositionParams, C_TLMC_PZ_NanoTrakCircleParams, C_TLMC_PZ_NanoTrakGainParams, C_TLMC_PZ_NanoTrakMode, C_TLMC_PZ_NanoTrakPhaseCompensationParams, C_TLMC_PZ_NanoTrakRangeParams, C_TLMC_PZ_NanoTrakStatus, C_TLMC_PZ_NanoTrakTnaIoSettings, C_TLMC_PZ_NanoTrakTrackThresholdParams, C_TLMC_PZ_OutputVoltageControlSourceParams, C_TLMC_PZ_OutputWaveformParams, C_TLMC_PZ_PositionLoopParams, C_TLMC_PZ_SlewRateParams, C_TLMC_PZ_StageInfoParams, C_TLMC_PZ_Status, C_TLMC_PZIM_DriveOperationsParams, C_TLMC_PZIM_KcubeFeedbackSignalParams, C_TLMC_PZIM_KcubeIoTriggerParams, C_TLMC_PZIM_KcubeJogParams, C_TLMC_PZIM_KcubeMmiParams, C_TLMC_PZIM_KcubeTriggerParams, C_TLMC_PZIM_LimitSwitchParams, C_TLMC_PZIM_PositionCounts, C_TLMC_PZIM_StageSelectParams, C_TLMC_PositionLoopParams, C_TLMC_PotentiometerParams, C_TLMC_PowerParams, C_TLMC_ProfileModeParams, C_TLMC_RichResponse, C_TLMC_Setting, C_TLMC_StageAxisParams, C_TLMC_StatusItem, C_TLMC_StepperLoopParams, C_TLMC_StepperStatus, C_TLMC_TrackSettleParams, C_TLMC_TriggerParamsForDcBrushless, C_TLMC_TriggerParamsForStepper, C_TLMC_UmcStatus, C_TLMC_UniversalStatus, C_TLMC_VelocityParams +from thorlabs_xa.shared.params import TLMC_AdcInputs, TLMC_AnalogMonitorConfigurationParams, TLMC_ApiVersion, TLMC_ButtonParams, TLMC_ConnectedProductInfo, TLMC_CurrentLoopParams, TLMC_DcPidParams, TLMC_DeviceInfo, TLMC_FirmwareVersion, TLMC_GeneralMoveParams, TLMC_HardwareInfo, TLMC_HomeParams, TLMC_IoConfigurationParams, TLMC_IoTriggerParams, TLMC_JogParams, TLMC_JoystickParams, TLMC_JoystickSettingsParams, TLMC_KcubeIoTriggerParams, TLMC_KcubeMmiParams, TLMC_KcubePositionTriggerParams, TLMC_LcdDisplayParams, TLMC_LcdMoveParams, TLMC_LimitSwitchParams, TLMC_MonitorOutputParams, TLMC_MotorOutputParams, TLMC_MoveAbsoluteParams, TLMC_MoveRelativeParams, TLMC_MoveSyncArray, TLMC_MoveSyncParams, TLMC_MoveSyncStartParams, TLMC_PZ_KpcIoSettingsParams, TLMC_PZ_KpcIoTriggerParams, TLMC_PZ_KpcMmiParams, TLMC_PZ_LnnxControlLoopParams, TLMC_PZ_LnnxNotchFilterParams, TLMC_PZ_MaxOutputVoltageParams, TLMC_PZ_NanoTrakCircleDiameterLookupTableData, TLMC_PZ_NanoTrakCircleHomePositionParams, TLMC_PZ_NanoTrakCircleParams, TLMC_PZ_NanoTrakGainParams, TLMC_PZ_NanoTrakMode, TLMC_PZ_NanoTrakPhaseCompensationParams, TLMC_PZ_NanoTrakRangeParams, TLMC_PZ_NanoTrakStatus, TLMC_PZ_NanoTrakTnaIoSettings, TLMC_PZ_NanoTrakTrackThresholdParams, TLMC_PZ_OutputVoltageControlSourceParams, TLMC_PZ_OutputWaveformParams, TLMC_PZ_PositionLoopParams, TLMC_PZ_SlewRateParams, TLMC_PZ_StageInfoParams, TLMC_PZ_Status, TLMC_PZIM_DriveOperationsParams, TLMC_PZIM_KcubeFeedbackSignalParams, TLMC_PZIM_KcubeIoTriggerParams, TLMC_PZIM_KcubeJogParams, TLMC_PZIM_KcubeMmiParams, TLMC_PZIM_KcubeTriggerParams, TLMC_PZIM_LimitSwitchParams, TLMC_PZIM_PositionCounts, TLMC_PZIM_StageSelectParams, TLMC_PositionLoopParams, TLMC_PotentiometerParams, TLMC_PowerParams, TLMC_ProfileModeParams, TLMC_RichResponse, TLMC_Setting, TLMC_StageAxisParams, TLMC_StatusItem, TLMC_StepperLoopParams, TLMC_StepperStatus, TLMC_TrackSettleParams, TLMC_TriggerParamsForDcBrushless, TLMC_TriggerParamsForStepper, TLMC_UmcStatus, TLMC_UniversalStatus, TLMC_VelocityParams -from thorlabs_xa.shared.enums import TLMC_AnalogMonitorMotorChannel, TLMC_AnalogMonitorSystemVariable, TLMC_ButtonMode, TLMC_ConnectedProductAxisType, TLMC_ConnectedProductMovementType, TLMC_CurrentLoopPhase, TLMC_DeviceFamily, TLMC_DeviceType, TLMC_HardLimitOperatingMode, TLMC_HomeDirection, TLMC_HomeLimitSwitch, TLMC_IoPortMode, TLMC_IoPortSource, TLMC_IoTriggerPolarity, TLMC_IoTriggerPortNumber, TLMC_JogMode, TLMC_JogStopMode, TLMC_JoystickAxis, TLMC_JoystickDirectionSense, TLMC_JoystickModel, TLMC_JoystickSerialInterface, TLMC_KcubeIoTriggerMode, TLMC_KcubeIoTriggerPolarity, TLMC_KcubeMmi_JoystickDirectionSense, TLMC_KcubeMmi_JoystickGear, TLMC_MonitorOutput, TLMC_PZ_IoTriggerMode, TLMC_PZ_KpcAnalogInputSource, TLMC_PZ_KpcIoTriggerMode, TLMC_PZ_KpcMmi_JoystickDirectionSense, TLMC_PZ_KpcMmi_JoystickMode, TLMC_PZ_KpcMonitorOutputMode, TLMC_PZ_KpcStrainGaugeOption, TLMC_PZ_KpcVoltageRange, TLMC_PZ_LnnxControlLoopParamsOverrideMode, TLMC_PZ_LnnxNotchFilterParamsOverrideMode, TLMC_PZ_NanoTrakAbsolutePowerAdjustType, TLMC_PZ_NanoTrakCircleDiameterMode, TLMC_PZ_NanoTrakGainControlMode, TLMC_PZ_NanoTrakPhaseCompensationMode, TLMC_PZ_NanoTrakRange, TLMC_PZ_NanoTrakRangeChangeType, TLMC_PZ_NanoTrakRangeMode, TLMC_PZ_NanoTrakStatusBit, TLMC_PZ_NanoTrakTrackingMode, TLMC_PZ_NanoTrakTrackingState, TLMC_PZ_NanoTrakUnderOverReadType, TLMC_PZ_OutputVoltageControlSource, TLMC_PZ_OutputWaveformOperatingMode, TLMC_PZ_SensorType, TLMC_PZ_StageProductId, TLMC_PZ_StatusBit, TLMC_PZ_TnaIoSignalOutputMode, TLMC_PZ_TnaIoSignalRangeType, TLMC_PZ_TnaIoSignalSourceBoostType, TLMC_PZ_TnaIoSignalSourceMode, TLMC_PZ_VoltageLimit, TLMC_PortType, TLMC_ScaleType, TLMC_SoftLimitOperatingMode, TLMC_StageAxisId, TLMC_StageProductId, TLMC_StatusItemId, TLMC_StepperLoopParams_LoopMode, TLMC_TriggerModesForDcBrushless, TLMC_TriggerModesForStepper, TLMC_Unit, TLMC_UniversalStatusBit, TLMC_ValueType +from thorlabs_xa.shared.enums import TLMC_AnalogMonitorMotorChannel, TLMC_AnalogMonitorSystemVariable, TLMC_ButtonMode, TLMC_ConnectedProductAxisType, TLMC_ConnectedProductMovementType, TLMC_CurrentLoopPhase, TLMC_DeviceFamily, TLMC_DeviceType, TLMC_HardLimitOperatingMode, TLMC_HomeDirection, TLMC_HomeLimitSwitch, TLMC_IoPortMode, TLMC_IoPortSource, TLMC_JogMode, TLMC_JogStopMode, TLMC_JoystickAxis, TLMC_JoystickDirectionSense, TLMC_JoystickModel, TLMC_JoystickSerialInterface, TLMC_KcubeIoTriggerMode, TLMC_KcubeIoTriggerPolarity, TLMC_KcubeMmi_JoystickDirectionSense, TLMC_KcubeMmi_JoystickGear, TLMC_KcubeMmi_JoystickMode, TLMC_MonitorOutput, TLMC_MoveSyncStartTrigger, TLMC_PZ_KpcAnalogInputSource, TLMC_PZ_KpcIoTriggerMode, TLMC_PZ_KpcMmi_JoystickDirectionSense, TLMC_PZ_KpcMmi_JoystickMode, TLMC_PZ_KpcMonitorOutputMode, TLMC_PZ_KpcStrainGaugeOption, TLMC_PZ_KpcVoltageRange, TLMC_PZ_LnnxControlLoopParamsOverrideMode, TLMC_PZ_LnnxNotchFilterParamsOverrideMode, TLMC_PZ_NanoTrakAbsolutePowerAdjustType, TLMC_PZ_NanoTrakCircleDiameterMode, TLMC_PZ_NanoTrakGainControlMode, TLMC_PZ_NanoTrakPhaseCompensationMode, TLMC_PZ_NanoTrakRange, TLMC_PZ_NanoTrakRangeChangeType, TLMC_PZ_NanoTrakRangeMode, TLMC_PZ_NanoTrakStatusBit, TLMC_PZ_NanoTrakTrackingMode, TLMC_PZ_NanoTrakTrackingState, TLMC_PZ_NanoTrakUnderOverReadType, TLMC_PZ_OutputVoltageControlSource, TLMC_PZ_OutputWaveformOperatingMode, TLMC_PZ_SensorType, TLMC_PZ_StageProductId, TLMC_PZ_StatusBit, TLMC_PZ_TnaIoSignalOutputMode, TLMC_PZ_TnaIoSignalRangeType, TLMC_PZ_TnaIoSignalSourceBoostType, TLMC_PZ_TnaIoSignalSourceMode, TLMC_PZ_VoltageLimit, TLMC_PZIM_KcubeFeedbackSignalMode, TLMC_PZIM_KcubeTriggerChannel, TLMC_PZIM_KcubeTriggerMode, TLMC_PZIM_StageSelectType, TLMC_ScaleType, TLMC_SoftLimitOperatingMode, TLMC_StageAxisId, TLMC_StageProductId, TLMC_StatusItemId, TLMC_StepperLoopParams_LoopMode, TLMC_TriggerModesForDcBrushless, TLMC_TriggerModesForStepper, TLMC_Unit, TLMC_UniversalStatusBit, TLMC_ValueType BufLike: TypeAlias = ( ctypes.Array[ctypes.c_char] @@ -105,7 +105,7 @@ def current_loop_params(c_params: C_TLMC_CurrentLoopParams) -> TLMC_CurrentLoop params.integral_limit = c_params.integralLimit params.integral_dead_band = c_params.integralDeadBand params.feed_forward = c_params.feedForward - params.scaling_factor = c_params.scalingFactor; + params.scaling_factor = c_params.scalingFactor return params @@ -332,7 +332,49 @@ def limit_switch_params(c_params: C_TLMC_LimitSwitchParams) -> TLMC_LimitSwitchP params.soft_limit_operating_mode = TLMC_SoftLimitOperatingMode(c_params.softLimitOperatingMode) return params + + @staticmethod + def move_sync_array(c_params: C_TLMC_MoveSyncArray) -> TLMC_MoveSyncArray: + + params = TLMC_MoveSyncArray() + params.array_id = c_params.arrayId + params.channels = c_params.channels + params.num_points = c_params.numPoints + params.start_index = c_params.startIndex + + if c_params.timePositions: + params.time_positions = [ + c_params.timePositions[i] + for i in range(c_params.numPoints) + ] + else: + params.time_positions = [] + + return params + @staticmethod + def move_sync_params(c_params: C_TLMC_MoveSyncParams) -> TLMC_MoveSyncParams: + + params = TLMC_MoveSyncParams() + params.array_id = c_params.arrayId + params.cycle_start_index = c_params.cycleStartIndex + params.cycle_end_index = c_params.cycleEndIndex + params.number_of_cycles = c_params.numberOfCycles + params.end_index = c_params.endIndex + params.deceleration = c_params.deceleration + + return params + + @staticmethod + def move_sync_start_params(c_params: C_TLMC_MoveSyncStartParams) -> TLMC_MoveSyncStartParams: + + params = TLMC_MoveSyncStartParams() + params.array_id = c_params.arrayId + params.channels = c_params.channels + params.trigger = TLMC_MoveSyncStartTrigger(c_params.trigger) + + return params + @staticmethod def monitor_output_params(c_params: C_TLMC_MonitorOutputParams) -> TLMC_MonitorOutputParams: @@ -633,6 +675,7 @@ def pz_output_waveform_params(c_params: C_TLMC_PZ_OutputWaveformParams) -> TLMC_ params.pre_cycle_delay = c_params.preCycleDelay return params + @staticmethod def pz_position_loop_params(c_params: C_TLMC_PZ_PositionLoopParams) -> TLMC_PZ_PositionLoopParams: @@ -678,6 +721,107 @@ def pz_status(c_params: C_TLMC_PZ_Status) -> TLMC_PZ_Status: return params + @staticmethod + def pzim_drive_operations_params(c_params: C_TLMC_PZIM_DriveOperationsParams) -> TLMC_PZIM_DriveOperationsParams: + + params = TLMC_PZIM_DriveOperationsParams() + params.max_voltage = c_params.maxVoltage + params.step_rate = c_params.stepRate + params.step_acceleration = c_params.stepAcceleration + + return params + + @staticmethod + def pzim_kcube_feedback_signal_params(c_params: C_TLMC_PZIM_KcubeFeedbackSignalParams) -> TLMC_PZIM_KcubeFeedbackSignalParams: + + params = TLMC_PZIM_KcubeFeedbackSignalParams() + params.feedback_signal_mode = TLMC_PZIM_KcubeFeedbackSignalMode(c_params.feedbackSignalMode) + params.encoder_const = c_params.encoderConst + + return params + + @staticmethod + def pzim_kcube_io_trigger_params(c_params: C_TLMC_PZIM_KcubeIoTriggerParams) -> TLMC_PZIM_KcubeIoTriggerParams: + + params = TLMC_PZIM_KcubeIoTriggerParams() + params.trigger_channel1 = TLMC_PZIM_KcubeTriggerChannel(c_params.triggerChannel1) + params.trigger_channel2 = TLMC_PZIM_KcubeTriggerChannel(c_params.triggerChannel2) + params.trigger1_mode = TLMC_PZIM_KcubeTriggerMode(c_params.trigger1Mode) + params.trigger1_polarity = TLMC_KcubeIoTriggerPolarity(c_params.trigger1Polarity) + params.trigger2_mode = TLMC_PZIM_KcubeTriggerMode(c_params.trigger2Mode) + params.trigger2_polarity = TLMC_KcubeIoTriggerPolarity(c_params.trigger2Polarity) + + return params + + @staticmethod + def pzim_kcube_jog_params(c_params: C_TLMC_PZIM_KcubeJogParams) -> TLMC_PZIM_KcubeJogParams: + + params = TLMC_PZIM_KcubeJogParams() + params.jog_mode = TLMC_JogMode(c_params.jogMode) + params.jog_step_size_forward = c_params.jogStepSizeForward + params.jog_step_size_reverse = c_params.jogStepSizeReverse + params.jog_step_velocity = c_params.jogStepVelocity + params.jog_step_acceleration = c_params.jogStepAcceleration + + return params + + + @staticmethod + def pzim_kcube_mmi_params(c_params: C_TLMC_PZIM_KcubeMmiParams) -> TLMC_PZIM_KcubeMmiParams: + + params = TLMC_PZIM_KcubeMmiParams() + params.joy_stick_mode = TLMC_KcubeMmi_JoystickMode(c_params.joystickMode) + params.joy_stick_max_velocity = c_params.joystickMaxVelocity + params.joy_stick_direction_sense = TLMC_JoystickDirectionSense(c_params.joystickDirectionSense) + params.preset_position_1 = c_params.presetPosition1 + params.preset_position_2 = c_params.presetPosition2 + params.display_brightness = c_params.displayBrightness + + return params + + @staticmethod + def pzim_kcube_trigger_params(c_params: C_TLMC_PZIM_KcubeTriggerParams) -> TLMC_PZIM_KcubeTriggerParams: + + params = TLMC_PZIM_KcubeTriggerParams() + params.start_position_forward = c_params.startPositionForward + params.interval_forward = c_params.intervalForward + params.number_pulses_forward = c_params.numberPulsesForward + params.start_position_reverse = c_params.startPositionReverse + params.interval_reverse = c_params.intervalReverse + params.number_pulses_reverse = c_params.numberPulsesReverse + params.pulse_width = c_params.pulseWidth + params.number_cycles = c_params.numberCycles + + return params + + @staticmethod + def pzim_limit_switch_params(c_params: C_TLMC_PZIM_LimitSwitchParams) -> TLMC_PZIM_LimitSwitchParams: + + params = TLMC_PZIM_LimitSwitchParams() + params.forward_hard_limit = TLMC_HardLimitOperatingMode(c_params.forwardHardLimit) + params.reverse_hard_limit = TLMC_HardLimitOperatingMode(c_params.reverseHardLimit) + params.stage_id = c_params.stageId + + return params + + @staticmethod + def pzim_position_counts(c_params: C_TLMC_PZIM_PositionCounts) -> TLMC_PZIM_PositionCounts: + + params = TLMC_PZIM_PositionCounts() + params.position = c_params.position + params.encoder_count = c_params.encoderCount + + return params + + @staticmethod + def pzim_stage_select_params(c_params: C_TLMC_PZIM_StageSelectParams) -> TLMC_PZIM_StageSelectParams: + + params = TLMC_PZIM_StageSelectParams() + params.stage_ident = TLMC_PZIM_StageSelectType(c_params.stageIdent) + params.stage_reserved = c_params.stageReserved + + return params + @staticmethod def rich_response(c_params: C_TLMC_RichResponse) -> TLMC_RichResponse: @@ -746,21 +890,21 @@ def status_item(c_params: C_TLMC_StatusItem) -> TLMC_StatusItem: def stage_axis_params(c_params: C_TLMC_StageAxisParams) -> TLMC_StageAxisParams: params = TLMC_StageAxisParams() - params.acceleration_scale = c_params.accelerationScale; + params.acceleration_scale = c_params.accelerationScale params.axis_id = TLMC_StageAxisId(c_params.axisId) params.counts_per_unit = c_params.countsPerUnit params.gear_box_ratio = c_params.gearBoxRatio params.max_acceleration = c_params.maxAcceleration - params.max_deceleration = c_params.maxDeceleation + params.max_deceleration = c_params.maxDeceleration params.min_position = c_params.minPosition params.max_position = c_params.maxPosition params.max_velocity = c_params.maxVelocity - params.micro_steps = c_params.microSteps; + params.micro_steps = c_params.microSteps params.part_number = MapNativeToPython.string(c_params.partNumber) - params.position_scale = c_params.positionScale; + params.position_scale = c_params.positionScale params.product_id = TLMC_StageProductId(c_params.productId) params.serial_number = c_params.serialNumber - params.velocity_scale = c_params.velocityScale; + params.velocity_scale = c_params.velocityScale return params @@ -812,7 +956,19 @@ def trigger_params_for_stepper(c_params: C_TLMC_TriggerParamsForStepper) -> TLMC params.modes = TLMC_TriggerModesForStepper(c_params.modes) return params - + + @staticmethod + def umc_status(c_params: C_TLMC_UmcStatus) -> TLMC_UmcStatus: + + params = TLMC_UmcStatus() + params.position = c_params.position + params.encoder_count = c_params.encoderCount + params.velocity = c_params.velocity + params.motor_current = c_params.motorCurrent + params.status_bits = TLMC_UniversalStatusBit(c_params.statusBits) + + return params + @staticmethod def universal_status(c_params: C_TLMC_UniversalStatus) -> TLMC_UniversalStatus: diff --git a/Python/XA/xa_source/src/thorlabs_xa/shared/map_python_to_native.py b/Python/XA/xa_source/src/thorlabs_xa/shared/map_python_to_native.py index 0e7124e..988084e 100644 --- a/Python/XA/xa_source/src/thorlabs_xa/shared/map_python_to_native.py +++ b/Python/XA/xa_source/src/thorlabs_xa/shared/map_python_to_native.py @@ -1,7 +1,7 @@ -from ctypes import c_bool, c_char, c_double, c_int16, c_int32, c_longlong, c_uint16, c_uint32, c_uint8 +from ctypes import POINTER, c_bool, c_char, c_double, c_float, c_int16, c_int32, c_longlong, c_uint16, c_uint32, c_uint8 -from thorlabs_xa.shared.c_params import C_TLMC_AnalogMonitorConfigurationParams, C_TLMC_ButtonParams, C_TLMC_ConnectedProductInfo, C_TLMC_CurrentLoopParams, C_TLMC_DcPidParams, C_TLMC_GeneralMoveParams, C_TLMC_HomeParams, C_TLMC_IoConfigurationParams, C_TLMC_IoTriggerParams, C_TLMC_JogParams, C_TLMC_JoystickParams, C_TLMC_JoystickSettingsParams, C_TLMC_KcubeIoTriggerParams, C_TLMC_KcubeMmiParams, C_TLMC_KcubePositionTriggerParams, C_TLMC_LcdDisplayParams, C_TLMC_LcdMoveParams, C_TLMC_LimitSwitchParams, C_TLMC_MonitorOutputParams, C_TLMC_MotorOutputParams, C_TLMC_MoveAbsoluteParams, C_TLMC_MoveRelativeParams, C_TLMC_PZ_KpcIoSettingsParams, C_TLMC_PZ_KpcIoTriggerParams, C_TLMC_PZ_KpcMmiParams, C_TLMC_PZ_LnnxControlLoopParams, C_TLMC_PZ_LnnxNotchFilterParams, C_TLMC_PZ_NanoTrakCircleDiameterLookupTableData, C_TLMC_PZ_NanoTrakCircleHomePositionParams, C_TLMC_PZ_NanoTrakCircleParams, C_TLMC_PZ_NanoTrakEEPROMParams, C_TLMC_PZ_NanoTrakGainParams, C_TLMC_PZ_NanoTrakMode, C_TLMC_PZ_NanoTrakPhaseCompensationParams, C_TLMC_PZ_NanoTrakRangeParams, C_TLMC_PZ_NanoTrakTnaIoSettings, C_TLMC_PZ_NanoTrakTrackThresholdParams, C_TLMC_PZ_OutputVoltageControlSourceParams, C_TLMC_PZ_OutputWaveformLoopTableSample, C_TLMC_PZ_OutputWaveformParams, C_TLMC_PZ_PositionLoopParams, C_TLMC_PZ_SlewRateParams, C_TLMC_PZ_StageInfoParams, C_TLMC_PositionLoopParams, C_TLMC_PotentiometerParams, C_TLMC_PowerParams, C_TLMC_ProfileModeParams, C_TLMC_StageAxisParams, C_TLMC_StepperLoopParams, C_TLMC_TrackSettleParams, C_TLMC_TriggerParamsForDcBrushless, C_TLMC_TriggerParamsForStepper, C_TLMC_Value, C_TLMC_VelocityParams -from thorlabs_xa.shared.params import TLMC_AnalogMonitorConfigurationParams, TLMC_ButtonParams, TLMC_ConnectedProductInfo, TLMC_CurrentLoopParams, TLMC_DcPidParams, TLMC_GeneralMoveParams, TLMC_HomeParams, TLMC_IoConfigurationParams, TLMC_IoTriggerParams, TLMC_JogParams, TLMC_JoystickParams, TLMC_JoystickSettingsParams, TLMC_KcubeIoTriggerParams, TLMC_KcubeMmiParams, TLMC_KcubePositionTriggerParams, TLMC_LcdDisplayParams, TLMC_LcdMoveParams, TLMC_LimitSwitchParams, TLMC_MonitorOutputParams, TLMC_MotorOutputParams, TLMC_MoveAbsoluteParams, TLMC_MoveRelativeParams, TLMC_PZ_IoTriggerParams, TLMC_PZ_KpcIoSettingsParams, TLMC_PZ_KpcIoTriggerParams, TLMC_PZ_KpcMmiParams, TLMC_PZ_LnnxControlLoopParams, TLMC_PZ_LnnxNotchFilterParams, TLMC_PZ_NanoTrakCircleDiameterLookupTableData, TLMC_PZ_NanoTrakCircleHomePositionParams, TLMC_PZ_NanoTrakCircleParams, TLMC_PZ_NanoTrakEEPROMParams, TLMC_PZ_NanoTrakGainParams, TLMC_PZ_NanoTrakMode, TLMC_PZ_NanoTrakPhaseCompensationParams, TLMC_PZ_NanoTrakRangeParams, TLMC_PZ_NanoTrakTnaIoSettings, TLMC_PZ_NanoTrakTrackThresholdParams, TLMC_PZ_OutputVoltageControlSourceParams, TLMC_PZ_OutputWaveformLoopTableSample, TLMC_PZ_OutputWaveformParams, TLMC_PZ_PositionLoopParams, TLMC_PZ_SlewRateParams, TLMC_PZ_StageInfoParams, TLMC_PositionLoopParams, TLMC_PotentiometerParams, TLMC_PowerParams, TLMC_ProfileModeParams, TLMC_StageAxisParams, TLMC_StepperLoopParams, TLMC_TrackSettleParams, TLMC_TriggerParamsForDcBrushless, TLMC_TriggerParamsForStepper, TLMC_Value, TLMC_VelocityParams +from thorlabs_xa.shared.c_params import C_TLMC_AnalogMonitorConfigurationParams, C_TLMC_ButtonParams, C_TLMC_ConnectedProductInfo, C_TLMC_CurrentLoopParams, C_TLMC_DcPidParams, C_TLMC_GeneralMoveParams, C_TLMC_HomeParams, C_TLMC_IoConfigurationParams, C_TLMC_IoTriggerParams, C_TLMC_JogParams, C_TLMC_JoystickParams, C_TLMC_JoystickSettingsParams, C_TLMC_KcubeIoTriggerParams, C_TLMC_KcubeMmiParams, C_TLMC_KcubePositionTriggerParams, C_TLMC_LcdDisplayParams, C_TLMC_LcdMoveParams, C_TLMC_LimitSwitchParams, C_TLMC_MonitorOutputParams, C_TLMC_MotorOutputParams, C_TLMC_MoveAbsoluteParams, C_TLMC_MoveRelativeParams, C_TLMC_MoveSyncArray, C_TLMC_MoveSyncParams, C_TLMC_MoveSyncStartParams, C_TLMC_PZ_KpcIoSettingsParams, C_TLMC_PZ_KpcIoTriggerParams, C_TLMC_PZ_KpcMmiParams, C_TLMC_PZ_LnnxControlLoopParams, C_TLMC_PZ_LnnxNotchFilterParams, C_TLMC_PZ_NanoTrakCircleDiameterLookupTableData, C_TLMC_PZ_NanoTrakCircleHomePositionParams, C_TLMC_PZ_NanoTrakCircleParams, C_TLMC_PZ_NanoTrakEEPROMParams, C_TLMC_PZ_NanoTrakGainParams, C_TLMC_PZ_NanoTrakMode, C_TLMC_PZ_NanoTrakPhaseCompensationParams, C_TLMC_PZ_NanoTrakRangeParams, C_TLMC_PZ_NanoTrakTnaIoSettings, C_TLMC_PZ_NanoTrakTrackThresholdParams, C_TLMC_PZ_OutputVoltageControlSourceParams, C_TLMC_PZ_OutputWaveformLookupTableSample, C_TLMC_PZ_OutputWaveformParams, C_TLMC_PZ_PositionLoopParams, C_TLMC_PZ_SlewRateParams, C_TLMC_PZ_StageInfoParams, C_TLMC_PZIM_DriveOperationsParams, C_TLMC_PZIM_KcubeFeedbackSignalParams, C_TLMC_PZIM_KcubeIoTriggerParams, C_TLMC_PZIM_KcubeJogParams, C_TLMC_PZIM_KcubeMmiParams, C_TLMC_PZIM_KcubeTriggerParams, C_TLMC_PZIM_LimitSwitchParams, C_TLMC_PZIM_PositionCounts, C_TLMC_PZIM_StageSelectParams, C_TLMC_PositionLoopParams, C_TLMC_PotentiometerParams, C_TLMC_PowerParams, C_TLMC_ProfileModeParams, C_TLMC_StageAxisParams, C_TLMC_StepperLoopParams, C_TLMC_TrackSettleParams, C_TLMC_TriggerParamsForDcBrushless, C_TLMC_TriggerParamsForStepper, C_TLMC_UmcStatus, C_TLMC_Value, C_TLMC_VelocityParams +from thorlabs_xa.shared.params import TLMC_AnalogMonitorConfigurationParams, TLMC_ButtonParams, TLMC_ConnectedProductInfo, TLMC_CurrentLoopParams, TLMC_DcPidParams, TLMC_GeneralMoveParams, TLMC_HomeParams, TLMC_IoConfigurationParams, TLMC_IoTriggerParams, TLMC_JogParams, TLMC_JoystickParams, TLMC_JoystickSettingsParams, TLMC_KcubeIoTriggerParams, TLMC_KcubeMmiParams, TLMC_KcubePositionTriggerParams, TLMC_LcdDisplayParams, TLMC_LcdMoveParams, TLMC_LimitSwitchParams, TLMC_MonitorOutputParams, TLMC_MotorOutputParams, TLMC_MoveAbsoluteParams, TLMC_MoveRelativeParams, TLMC_MoveSyncArray, TLMC_MoveSyncParams, TLMC_MoveSyncStartParams, TLMC_PZ_KpcIoSettingsParams, TLMC_PZ_KpcIoTriggerParams, TLMC_PZ_KpcMmiParams, TLMC_PZ_LnnxControlLoopParams, TLMC_PZ_LnnxNotchFilterParams, TLMC_PZ_NanoTrakCircleDiameterLookupTableData, TLMC_PZ_NanoTrakCircleHomePositionParams, TLMC_PZ_NanoTrakCircleParams, TLMC_PZ_NanoTrakEEPROMParams, TLMC_PZ_NanoTrakGainParams, TLMC_PZ_NanoTrakMode, TLMC_PZ_NanoTrakPhaseCompensationParams, TLMC_PZ_NanoTrakRangeParams, TLMC_PZ_NanoTrakTnaIoSettings, TLMC_PZ_NanoTrakTrackThresholdParams, TLMC_PZ_OutputVoltageControlSourceParams, TLMC_PZ_OutputWaveformLookupTableSample, TLMC_PZ_OutputWaveformParams, TLMC_PZ_PositionLoopParams, TLMC_PZ_SlewRateParams, TLMC_PZ_StageInfoParams, TLMC_PZIM_DriveOperationsParams, TLMC_PZIM_KcubeFeedbackSignalParams, TLMC_PZIM_KcubeIoTriggerParams, TLMC_PZIM_KcubeJogParams, TLMC_PZIM_KcubeMmiParams, TLMC_PZIM_KcubeTriggerParams, TLMC_PZIM_LimitSwitchParams, TLMC_PZIM_PositionCounts, TLMC_PZIM_StageSelectParams, TLMC_PositionLoopParams, TLMC_PotentiometerParams, TLMC_PowerParams, TLMC_ProfileModeParams, TLMC_StageAxisParams, TLMC_StepperLoopParams, TLMC_TrackSettleParams, TLMC_TriggerParamsForDcBrushless, TLMC_TriggerParamsForStepper, TLMC_UmcStatus, TLMC_Value, TLMC_VelocityParams MAPPING_STRING_ENCODING = 'utf-8' @@ -286,7 +286,55 @@ def move_relative_params(params: TLMC_MoveRelativeParams) -> C_TLMC_MoveRelative c_params.relativeDistance = c_int32(params.relative_distance) return c_params + + @staticmethod + def move_sync_array(params: TLMC_MoveSyncArray) -> C_TLMC_MoveSyncArray: + + c_params = C_TLMC_MoveSyncArray() + + c_params.arrayId = params.array_id + c_params.channels = params.channels + c_params.numPoints = len(params.time_positions) + c_params.startIndex = params.start_index + + if params.time_positions: + values = (c_int32 * len(params.time_positions))( + *params.time_positions + ) + + c_params.timePositions = values + + # Keep the backing array alive for the lifetime of c_params + c_params._time_positions_array = values + + else: + c_params.timePositions = POINTER(c_int32)() + + return c_params + @staticmethod + def move_sync_params(params: TLMC_MoveSyncParams) -> C_TLMC_MoveSyncParams: + + c_params = C_TLMC_MoveSyncParams() + c_params.arrayId = params.array_id + c_params.cycleStartIndex = params.cycle_start_index + c_params.cycleEndIndex = params.cycle_end_index + c_params.numberOfCycles = params.number_of_cycles + c_params.endIndex = params.end_index + c_params.deceleration = params.deceleration + + return c_params + + @staticmethod + def move_sync_start_params(params: TLMC_MoveSyncStartParams) -> C_TLMC_MoveSyncStartParams: + + c_params = C_TLMC_MoveSyncStartParams() + c_params.arrayId = params.array_id + c_params.channels = params.channels + c_params.trigger = c_uint16(int(params.trigger)) + + return c_params + @staticmethod def position_loop_params(params: TLMC_PositionLoopParams) -> C_TLMC_PositionLoopParams: @@ -360,6 +408,7 @@ def pz_kpc_io_trigger_params(params: TLMC_PZ_KpcIoTriggerParams) -> C_TLMC_PZ_Kp c_params.strainGaugeLowerLimit = c_int32(params.strain_gauge_lower_limit) c_params.strainGaugeUpperLimit = c_int32(params.strain_gauge_upper_limit) c_params.smoothingSamples = c_uint16(params.smoothing_samples) + c_params.monitorOutputMode = c_uint16(int(params.monitor_output_mode)) c_params.monitorFilterCutOffFrequency = c_uint16(params.monitor_filter_cut_off_frequency) c_params.monitorOutputSoftwareValue = c_int16(params.monitor_output_software_value) @@ -514,11 +563,11 @@ def pz_output_voltage_control_source_params(params: TLMC_PZ_OutputVoltageControl return c_params @staticmethod - def pz_output_waveform_lookup_table_sample(params: TLMC_PZ_OutputWaveformLoopTableSample) -> C_TLMC_PZ_OutputWaveformLoopTableSample: + def pz_output_waveform_lookup_table_sample(params: TLMC_PZ_OutputWaveformLookupTableSample) -> C_TLMC_PZ_OutputWaveformLookupTableSample: - c_params = C_TLMC_PZ_OutputWaveformLoopTableSample() + c_params = C_TLMC_PZ_OutputWaveformLookupTableSample() c_params.index = c_uint16(params.index) - c_params.voltage = c_uint16(params.voltage) + c_params.voltage = c_int16(params.voltage) return c_params @@ -572,6 +621,107 @@ def pz_stage_info_params(params: TLMC_PZ_StageInfoParams) -> C_TLMC_PZ_StageInfo return c_params + @staticmethod + def pzim_drive_operations_params(params: TLMC_PZIM_DriveOperationsParams) -> C_TLMC_PZIM_DriveOperationsParams: + + c_params = C_TLMC_PZIM_DriveOperationsParams() + c_params.maxVoltage = params.max_voltage + c_params.stepRate = params.step_rate + c_params.stepAcceleration = params.step_acceleration + + return c_params + + @staticmethod + def pzim_kcube_feedback_signal_params(params: TLMC_PZIM_KcubeFeedbackSignalParams) -> C_TLMC_PZIM_KcubeFeedbackSignalParams: + + + c_params = C_TLMC_PZIM_KcubeFeedbackSignalParams() + c_params.feedbackSignalMode = c_uint16(int(params.feedback_signal_mode)) + c_params.encoderConst = params.encoder_const + + return c_params + + @staticmethod + def pzim_kcube_io_trigger_params(params: TLMC_PZIM_KcubeIoTriggerParams) -> C_TLMC_PZIM_KcubeIoTriggerParams: + + c_params = C_TLMC_PZIM_KcubeIoTriggerParams() + c_params.triggerChannel1 = c_uint16(int(params.trigger_channel1)) + c_params.triggerChannel2 = c_uint16(int(params.trigger_channel2)) + c_params.trigger1Mode = c_uint16(int(params.trigger1_mode)) + c_params.trigger1Polarity = c_uint16(int(params.trigger1_polarity)) + c_params.trigger2Mode = c_uint16(int(params.trigger2_mode)) + c_params.trigger2Polarity = c_uint16(int(params.trigger2_polarity)) + + return c_params + + @staticmethod + def pzim_kcube_jog_params(params: TLMC_PZIM_KcubeJogParams) -> C_TLMC_PZIM_KcubeJogParams: + + c_params = C_TLMC_PZIM_KcubeJogParams() + c_params.jogMode = c_uint16(int(params.jog_mode)) + c_params.jogStepSizeForward = params.jog_step_size_forward + c_params.jogStepSizeReverse = params.jog_step_size_reverse + c_params.jogStepVelocity = params.jog_step_velocity + c_params.jogStepAcceleration = params.jog_step_acceleration + + return c_params + + @staticmethod + def pzim_kcube_mmi_params(params: TLMC_PZIM_KcubeMmiParams) -> C_TLMC_PZIM_KcubeMmiParams: + + c_params = C_TLMC_PZIM_KcubeMmiParams() + c_params.joystickMode = c_uint16(int(params.joy_stick_mode)) + c_params.joystickMaxVelocity = params.joy_stick_max_velocity + c_params.joystickDirectionSense = c_uint16(int(params.joy_stick_direction_sense)) + c_params.presetPosition1 = params.preset_position_1 + c_params.presetPosition2 = params.preset_position_2 + c_params.displayBrightness = params.display_brightness + + return c_params + + @staticmethod + def pzim_kcube_trigger_params(params: TLMC_PZIM_KcubeTriggerParams) -> C_TLMC_PZIM_KcubeTriggerParams: + + c_params = C_TLMC_PZIM_KcubeTriggerParams() + c_params.startPositionForward = params.start_position_forward + c_params.intervalForward = params.interval_forward + c_params.numberPulsesForward = params.number_pulses_forward + c_params.startPositionReverse = params.start_position_reverse + c_params.intervalReverse = params.interval_reverse + c_params.numberPulsesReverse = params.number_pulses_reverse + c_params.pulseWidth = params.pulse_width + c_params.numberCycles = params.number_cycles + + return c_params + + @staticmethod + def pzim_limit_switch_params(params: TLMC_PZIM_LimitSwitchParams) -> C_TLMC_PZIM_LimitSwitchParams: + + c_params = C_TLMC_PZIM_LimitSwitchParams() + c_params.forwardHardLimit = c_uint16(int(params.forward_hard_limit)) + c_params.reverseHardLimit = c_uint16(int(params.reverse_hard_limit)) + c_params.stageId = params.stage_id + + return c_params + + @staticmethod + def pzim_position_counts(params: TLMC_PZIM_PositionCounts) -> C_TLMC_PZIM_PositionCounts: + + c_params = C_TLMC_PZIM_PositionCounts() + c_params.position = params.position + c_params.encoderCount = params.encoder_count + + return c_params + + @staticmethod + def pzim_stage_select_params(params: TLMC_PZIM_StageSelectParams) -> C_TLMC_PZIM_StageSelectParams: + + c_params = C_TLMC_PZIM_StageSelectParams() + c_params.stageIdent = c_uint16(int(params.stage_ident)) + c_params.stageReserved = params.stage_reserved + + return c_params + @staticmethod def value(params: TLMC_Value) -> C_TLMC_Value: @@ -602,13 +752,13 @@ def stage_axis_params(params: TLMC_StageAxisParams) -> C_TLMC_StageAxisParams: c_params.minPosition = c_int32(params.min_position) c_params.maxPosition = c_int32(params.max_position) c_params.maxAcceleration = c_uint32(params.max_acceleration) - c_params.maxDecceleration = c_uint32(params.max_deceleration) + c_params.maxDeceleration = c_uint32(params.max_deceleration) c_params.maxVelocity = c_uint32(params.max_velocity) c_params.gearBoxRatio = c_uint16(params.gear_box_ratio) c_params.microSteps = c_uint16(params.micro_steps) - c_params.positionScale = c_uint16(params.position_scale) - c_params.velocityScale = c_uint16(params.velocity_scale) - c_params.accelerationScale = c_uint16(params.acceleration_scale) + c_params.positionScale = c_float(params.position_scale) + c_params.velocityScale = c_float(params.velocity_scale) + c_params.accelerationScale = c_float(params.acceleration_scale) return c_params @@ -651,6 +801,18 @@ def trigger_params_for_stepper(params: TLMC_TriggerParamsForStepper) -> C_TLMC_T c_params.modes = c_uint8(int(params.modes)) return c_params + + @staticmethod + def umc_status(params: TLMC_UmcStatus) -> C_TLMC_UmcStatus: + + c_params = C_TLMC_UmcStatus() + c_params.position = c_int32(params.position) + c_params.encoderCount = c_int32(params.encoder_count) + c_params.velocity = c_uint32(params.velocity) + c_params.motorCurrent = c_uint16(params.motor_current) + c_params.statusBits = c_uint32(int(params.status_bits)) + + return c_params @staticmethod def velocity_params(params: TLMC_VelocityParams) -> C_TLMC_VelocityParams: diff --git a/Python/XA/xa_source/src/thorlabs_xa/shared/params.py b/Python/XA/xa_source/src/thorlabs_xa/shared/params.py index 072a295..2f8cc58 100644 --- a/Python/XA/xa_source/src/thorlabs_xa/shared/params.py +++ b/Python/XA/xa_source/src/thorlabs_xa/shared/params.py @@ -1,7 +1,7 @@ from typing import Sequence -from thorlabs_xa.shared.enums import TLMC_AnalogMonitorMotorChannel, TLMC_AnalogMonitorSystemVariable, TLMC_ButtonMode, TLMC_ConnectedProductAxisType, TLMC_ConnectedProductMovementType, TLMC_CurrentLoopPhase, TLMC_DeviceFamily, TLMC_DeviceType, TLMC_HardLimitOperatingMode, TLMC_HomeDirection, TLMC_HomeLimitSwitch, TLMC_IoPortMode, TLMC_IoPortSource, TLMC_IoTriggerPolarity, TLMC_IoTriggerPortNumber, TLMC_JogMode, TLMC_JogStopMode, TLMC_JoystickAxis, TLMC_JoystickDirectionSense, TLMC_JoystickModel, TLMC_JoystickSerialInterface, TLMC_KcubeIoTriggerMode, TLMC_KcubeIoTriggerPolarity, TLMC_KcubeMmi_JoystickDirectionSense, TLMC_KcubeMmi_JoystickGear, TLMC_KcubeMmi_JoystickMode, TLMC_MonitorOutput, TLMC_PZ_IoTriggerMode, TLMC_PZ_KpcAnalogInputSource, TLMC_PZ_KpcIoTriggerMode, TLMC_PZ_KpcMmi_JoystickDirectionSense, TLMC_PZ_KpcMmi_JoystickMode, TLMC_PZ_KpcMonitorOutputMode, TLMC_PZ_KpcStrainGaugeOption, TLMC_PZ_KpcVoltageRange, TLMC_PZ_LnnxControlLoopParamsOverrideMode, TLMC_PZ_LnnxNotchFilterParamsOverrideMode, TLMC_PZ_NanoTrakAbsolutePowerAdjustType, TLMC_PZ_NanoTrakCircleDiameterMode, TLMC_PZ_NanoTrakGainControlMode, TLMC_PZ_NanoTrakPhaseCompensationMode, TLMC_PZ_NanoTrakRange, TLMC_PZ_NanoTrakRangeChangeType, TLMC_PZ_NanoTrakRangeMode, TLMC_PZ_NanoTrakStatusBit, TLMC_PZ_NanoTrakTrackingMode, TLMC_PZ_NanoTrakTrackingState, TLMC_PZ_NanoTrakUnderOverReadType, TLMC_PZ_OutputVoltageControlSource, TLMC_PZ_OutputWaveformOperatingMode, TLMC_PZ_SensorType, TLMC_PZ_StageProductId, TLMC_PZ_StatusBit, TLMC_PZ_TnaIoOutRangeType, TLMC_PZ_TnaIoOutRouteType, TLMC_PZ_TnaIoSignalOutputMode, TLMC_PZ_TnaIoSignalRangeType, TLMC_PZ_TnaIoSignalSourceBoostType, TLMC_PZ_TnaIoSignalSourceMode, TLMC_PZ_VoltageLimit, TLMC_PortType, TLMC_ProfileMode, TLMC_SoftLimitOperatingMode, TLMC_StageAxisId, TLMC_StageProductId, TLMC_StatusItemId, TLMC_StepperLoopParams_LoopMode, TLMC_TriggerModesForDcBrushless, TLMC_TriggerModesForStepper, TLMC_Unit, TLMC_UniversalStatusBit, TLMC_ValueType - +from thorlabs_xa.shared.enums import TLMC_AnalogMonitorMotorChannel, TLMC_AnalogMonitorSystemVariable, TLMC_ButtonMode, TLMC_ConnectedProductAxisType, TLMC_ConnectedProductMovementType, TLMC_CurrentLoopPhase, TLMC_DeviceFamily, TLMC_DeviceType, TLMC_HardLimitOperatingMode, TLMC_HomeDirection, TLMC_HomeLimitSwitch, TLMC_IoPortMode, TLMC_IoPortSource, TLMC_IoTriggerPolarity, TLMC_IoTriggerPortNumber, TLMC_JogMode, TLMC_JogStopMode, TLMC_JoystickAxis, TLMC_JoystickDirectionSense, TLMC_JoystickModel, TLMC_JoystickSerialInterface, TLMC_KcubeIoTriggerMode, TLMC_KcubeIoTriggerPolarity, TLMC_KcubeMmi_JoystickDirectionSense, TLMC_KcubeMmi_JoystickGear, TLMC_KcubeMmi_JoystickMode, TLMC_MonitorOutput, TLMC_MoveSyncStartTrigger, TLMC_PZ_IoTriggerMode, TLMC_PZ_KpcAnalogInputSource, TLMC_PZ_KpcIoTriggerMode, TLMC_PZ_KpcMmi_JoystickDirectionSense, TLMC_PZ_KpcMmi_JoystickMode, TLMC_PZ_KpcMonitorOutputMode, TLMC_PZ_KpcStrainGaugeOption, TLMC_PZ_KpcVoltageRange, TLMC_PZ_LnnxControlLoopParamsOverrideMode, TLMC_PZ_LnnxNotchFilterParamsOverrideMode, TLMC_PZ_NanoTrakAbsolutePowerAdjustType, TLMC_PZ_NanoTrakCircleDiameterMode, TLMC_PZ_NanoTrakGainControlMode, TLMC_PZ_NanoTrakPhaseCompensationMode, TLMC_PZ_NanoTrakRange, TLMC_PZ_NanoTrakRangeChangeType, TLMC_PZ_NanoTrakRangeMode, TLMC_PZ_NanoTrakStatusBit, TLMC_PZ_NanoTrakTrackingMode, TLMC_PZ_NanoTrakTrackingState, TLMC_PZ_NanoTrakUnderOverReadType, TLMC_PZ_OutputVoltageControlSource, TLMC_PZ_OutputWaveformOperatingMode, TLMC_PZ_SensorType, TLMC_PZ_StageProductId, TLMC_PZ_StatusBit, TLMC_PZ_TnaIoOutRangeType, TLMC_PZ_TnaIoOutRouteType, TLMC_PZ_TnaIoSignalOutputMode, TLMC_PZ_TnaIoSignalRangeType, TLMC_PZ_TnaIoSignalSourceBoostType, TLMC_PZ_TnaIoSignalSourceMode, TLMC_PZ_VoltageLimit, TLMC_PZIM_KcubeFeedbackSignalMode, TLMC_PZIM_KcubeTriggerChannel, TLMC_PZIM_KcubeTriggerMode, TLMC_PZIM_StageSelectType, TLMC_PortType, TLMC_ProfileMode, TLMC_SoftLimitOperatingMode, TLMC_StageAxisId, TLMC_StageProductId, TLMC_StatusItemId, TLMC_StepperLoopParams_LoopMode, TLMC_TriggerModesForDcBrushless, TLMC_TriggerModesForStepper, TLMC_Unit, TLMC_UniversalStatusBit, TLMC_ValueType + class TLMC_AnalogMonitorConfigurationParams(): def __init__(self): self._motor_channel = TLMC_AnalogMonitorMotorChannel.TLMC_AnalogMonitorMotorChannel_1 @@ -390,12 +390,28 @@ def filter_control(self, value: int): self._filterControl = value -class TLMC_FirmwareVersion(): +class TLMC_FirmwareVersion: + def __init__(self): self._minor_version = 0 self._interim_version = 0 self._major_version = 0 + def __str__(self) -> str: + return ( + f"{self.major_version}." + f"{self.interim_version}." + f"{self.minor_version}" + ) + + def __repr__(self) -> str: + return ( + f"TLMC_FirmwareVersion(" + f"major={self.major_version}, " + f"interim={self.interim_version}, " + f"minor={self.minor_version})" + ) + @property def minor_version(self) -> int: return self._minor_version @@ -435,6 +451,7 @@ def backlash_distance(self, val: int): class TLMC_HardwareInfo(): + def __init__(self): self._serial_number = 0 self._part_number = "" @@ -446,6 +463,29 @@ def __init__(self): self._modification_state = 0 self._number_of_channels = 0 + def __str__(self) -> str: + return ( + "Hardware Information\n" + f" Serial Number : {self.serial_number}\n" + f" Part Number : {self.part_number}\n" + f" Device Type : {self.type}\n" + f" Firmware Version : {self.firmware_version}\n" + f" Hardware Version : {self.hardware_version}\n" + f" Channels : {self.number_of_channels}\n" + f" Notes : {self.notes}" + ) + + def __repr__(self) -> str: + return ( + f"TLMC_HardwareInfo(" + f"serial_number={self.serial_number}, " + f"part_number='{self.part_number}', " + f"type={self.type}, " + f"firmware_version={self.firmware_version!r}, " + f"hardware_version={self.hardware_version}, " + f"number_of_channels={self.number_of_channels})" + ) + @property def serial_number(self) -> int: return self._serial_number @@ -820,9 +860,9 @@ def __init__(self): TLMC_JoystickDirectionSense, TLMC_JoystickDirectionSense, ] = ( - TLMC_JoystickDirectionSense.TLMC_JoystickDirectionSense_Disabled, - TLMC_JoystickDirectionSense.TLMC_JoystickDirectionSense_Disabled, - TLMC_JoystickDirectionSense.TLMC_JoystickDirectionSense_Disabled, + TLMC_JoystickDirectionSense.TLMC_JoystickDirectionSense_Positive, + TLMC_JoystickDirectionSense.TLMC_JoystickDirectionSense_Positive, + TLMC_JoystickDirectionSense.TLMC_JoystickDirectionSense_Positive, ) self._axis_mapping: tuple[ TLMC_JoystickAxis, @@ -1327,6 +1367,150 @@ def relative_distance(self, val: int): self._relative_distance = val +class TLMC_MoveSyncArray(): + + def __init__(self): + + self._array_id = 0 + self._channels = 0 + self._num_points = 0 + self._start_index = 0 + self._time_positions: list[int] = [] + + @property + def array_id(self) -> int: + return self._array_id + + @array_id.setter + def array_id(self, val: int): + self._array_id = val + + @property + def channels(self) -> int: + return self._channels + + @channels.setter + def channels(self, val: int): + self._channels = val + + @property + def num_points(self) -> int: + return self._num_points + + @num_points.setter + def num_points(self, val: int): + self._num_points = val + + @property + def start_index(self) -> int: + return self._start_index + + @start_index.setter + def start_index(self, val: int): + self._start_index = val + + @property + def time_positions(self) -> list[int]: + return self._time_positions + + @time_positions.setter + def time_positions(self, val: list[int]): + self._time_positions = val + + +class TLMC_MoveSyncParams(): + + def __init__(self): + + self._array_id = 0 + self._cycle_start_index = 0 + self._cycle_end_index = 0 + self._number_of_cycles = 0 + self._end_index = 0 + self._deceleration = 0 + + @property + def array_id(self) -> int: + return self._array_id + + @array_id.setter + def array_id(self, val: int): + self._array_id = val + + @property + def cycle_start_index(self) -> int: + return self._cycle_start_index + + @cycle_start_index.setter + def cycle_start_index(self, val: int): + self._cycle_start_index = val + + @property + def cycle_end_index(self) -> int: + return self._cycle_end_index + + @cycle_end_index.setter + def cycle_end_index(self, val: int): + self._cycle_end_index = val + + @property + def number_of_cycles(self) -> int: + return self._number_of_cycles + + @number_of_cycles.setter + def number_of_cycles(self, val: int): + self._number_of_cycles = val + + @property + def end_index(self) -> int: + return self._end_index + + @end_index.setter + def end_index(self, val: int): + self._end_index = val + + @property + def deceleration(self) -> int: + return self._deceleration + + @deceleration.setter + def deceleration(self, val: int): + self._deceleration = val + + +class TLMC_MoveSyncStartParams(): + + def __init__(self): + + self._array_id = 0 + self._channels = 0 + self._trigger = TLMC_MoveSyncStartTrigger.TLMC_MoveSyncStartTrigger_Software + + @property + def array_id(self) -> int: + return self._array_id + + @array_id.setter + def array_id(self, val: int): + self._array_id = val + + @property + def channels(self) -> int: + return self._channels + + @channels.setter + def channels(self, val: int): + self._channels = val + + @property + def trigger(self) -> TLMC_MoveSyncStartTrigger: + return self._trigger + + @trigger.setter + def trigger(self, val: TLMC_MoveSyncStartTrigger): + self._trigger = val + + class TLMC_PositionLoopParams(): def __init__(self): self._proportional = 0 @@ -2314,7 +2498,7 @@ def source(self, val: TLMC_PZ_OutputVoltageControlSource): self._source = val -class TLMC_PZ_OutputWaveformLoopTableSample(): +class TLMC_PZ_OutputWaveformLookupTableSample(): def __init__(self): self._index = 0 self._voltage = 0 @@ -2582,6 +2766,388 @@ def status_bits(self) -> TLMC_PZ_StatusBit: def status_bits(self, val: TLMC_PZ_StatusBit) -> None: self._status_bits = val +class TLMC_PZIM_DriveOperationsParams(): + def __init__(self): + self._max_voltage = 0 + self._step_rate = 0 + self._step_acceleration = 0 + + @property + def max_voltage(self) -> int: + return self._max_voltage + + @max_voltage.setter + def max_voltage(self, val: int): + self._max_voltage = val + + @property + def step_rate(self) -> int: + return self._step_rate + + @step_rate.setter + def step_rate(self, val: int): + self._step_rate = val + + @property + def step_acceleration(self) -> int: + return self._step_acceleration + + @step_acceleration.setter + def step_acceleration(self, val: int): + self._step_acceleration = val + +class TLMC_PZIM_KcubeFeedbackSignalParams(): + + def __init__(self): + + self._feedback_signal_mode = TLMC_PZIM_KcubeFeedbackSignalMode.TLMC_PZIM_KcubeFeedbackSignalMode_Disabled + self._encoder_const = 0 + + + @property + def feedback_signal_mode(self) -> TLMC_PZIM_KcubeFeedbackSignalMode: + return self._feedback_signal_mode + + @feedback_signal_mode.setter + def feedback_signal_mode(self, val: TLMC_PZIM_KcubeFeedbackSignalMode): + self._feedback_signal_mode = val + + @property + def encoder_const(self) -> int: + return self._encoder_const + + @encoder_const.setter + def encoder_const(self, val: int): + self._encoder_const = val + +class TLMC_PZIM_KcubeIoTriggerParams(): + + def __init__(self): + + self._trigger_channel1 = TLMC_PZIM_KcubeTriggerChannel.TLMC_PZIM_KcubeTriggerChannel_Channel1 + self._trigger_channel2 = TLMC_PZIM_KcubeTriggerChannel.TLMC_PZIM_KcubeTriggerChannel_Channel1 + self._trigger1_mode = TLMC_PZIM_KcubeTriggerMode.TLMC_PZIM_KcubeTriggerMode_Disabled + self._trigger1_polarity = TLMC_KcubeIoTriggerPolarity.TLMC_KcubeIoTriggerPolarity_ActiveIsLogicHigh + self._trigger2_mode = TLMC_PZIM_KcubeTriggerMode.TLMC_PZIM_KcubeTriggerMode_Disabled + self._trigger2_polarity = TLMC_KcubeIoTriggerPolarity.TLMC_KcubeIoTriggerPolarity_ActiveIsLogicHigh + + + @property + def trigger_channel1(self) -> TLMC_PZIM_KcubeTriggerChannel: + return self._trigger_channel1 + + @trigger_channel1.setter + def trigger_channel1(self, val: TLMC_PZIM_KcubeTriggerChannel): + self._trigger_channel1 = val + + @property + def trigger_channel2(self) -> TLMC_PZIM_KcubeTriggerChannel: + return self._trigger_channel2 + + @trigger_channel2.setter + def trigger_channel2(self, val: TLMC_PZIM_KcubeTriggerChannel): + self._trigger_channel2 = val + + @property + def trigger1_mode(self) -> TLMC_PZIM_KcubeTriggerMode: + return self._trigger1_mode + + @trigger1_mode.setter + def trigger1_mode(self, val: TLMC_PZIM_KcubeTriggerMode): + self._trigger1_mode = val + + @property + def trigger1_polarity(self) -> TLMC_KcubeIoTriggerPolarity: + return self._trigger1_polarity + + @trigger1_polarity.setter + def trigger1_polarity(self, val: TLMC_KcubeIoTriggerPolarity): + self._trigger1_polarity = val + + @property + def trigger2_mode(self) -> TLMC_PZIM_KcubeTriggerMode: + return self._trigger2_mode + + @trigger2_mode.setter + def trigger2_mode(self, val: TLMC_PZIM_KcubeTriggerMode): + self._trigger2_mode = val + + @property + def trigger2_polarity(self) -> TLMC_KcubeIoTriggerPolarity: + return self._trigger2_polarity + + @trigger2_polarity.setter + def trigger2_polarity(self, val: TLMC_KcubeIoTriggerPolarity): + self._trigger2_polarity = val + +class TLMC_PZIM_KcubeJogParams(): + + def __init__(self): + + self._jog_mode = TLMC_JogMode.TLMC_JogMode_Continuous + self._jog_step_size_forward = 0 + self._jog_step_size_reverse = 0 + self._jog_step_velocity = 0 + self._jog_step_acceleration = 0 + + + @property + def jog_mode(self) -> TLMC_JogMode: + return self._jog_mode + + @jog_mode.setter + def jog_mode(self, val: TLMC_JogMode): + self._jog_mode = val + + @property + def jog_step_size_forward(self) -> int: + return self._jog_step_size_forward + + @jog_step_size_forward.setter + def jog_step_size_forward(self, val: int): + self._jog_step_size_forward = val + + @property + def jog_step_size_reverse(self) -> int: + return self._jog_step_size_reverse + + @jog_step_size_reverse.setter + def jog_step_size_reverse(self, val: int): + self._jog_step_size_reverse = val + + @property + def jog_step_velocity(self) -> int: + return self._jog_step_velocity + + @jog_step_velocity.setter + def jog_step_velocity(self, val: int): + self._jog_step_velocity = val + + @property + def jog_step_acceleration(self) -> int: + return self._jog_step_acceleration + + @jog_step_acceleration.setter + def jog_step_acceleration(self, val: int): + self._jog_step_acceleration = val + +class TLMC_PZIM_KcubeMmiParams(): + + def __init__(self): + + self._joy_stick_mode = TLMC_KcubeMmi_JoystickMode.TLMC_KcubeMmi_JoystickMode_ControlsVelocity + self._joy_stick_max_velocity = 0 + self._joy_stick_direction_sense = TLMC_JoystickDirectionSense.TLMC_JoystickDirectionSense_Positive + self._preset_position_1 = 0 + self._preset_position_2 = 0 + self._display_brightness = 0 + + + @property + def joy_stick_mode(self) -> TLMC_KcubeMmi_JoystickMode: + return self._joy_stick_mode + + @joy_stick_mode.setter + def joy_stick_mode(self, val: TLMC_KcubeMmi_JoystickMode): + self._joy_stick_mode = val + + @property + def joy_stick_max_velocity(self) -> int: + return self._joy_stick_max_velocity + + @joy_stick_max_velocity.setter + def joy_stick_max_velocity(self, val: int): + self._joy_stick_max_velocity = val + + @property + def joy_stick_direction_sense(self) -> TLMC_JoystickDirectionSense: + return self._joy_stick_direction_sense + + @joy_stick_direction_sense.setter + def joy_stick_direction_sense(self, val: TLMC_JoystickDirectionSense): + self._joy_stick_direction_sense = val + + @property + def preset_position_1(self) -> int: + return self._preset_position_1 + + @preset_position_1.setter + def preset_position_1(self, val: int): + self._preset_position_1 = val + + @property + def preset_position_2(self) -> int: + return self._preset_position_2 + + @preset_position_2.setter + def preset_position_2(self, val: int): + self._preset_position_2 = val + + @property + def display_brightness(self) -> int: + return self._display_brightness + + @display_brightness.setter + def display_brightness(self, val: int): + self._display_brightness = val + +class TLMC_PZIM_KcubeTriggerParams(): + + def __init__(self): + + self._start_position_forward = 0 + self._interval_forward = 0 + self._number_pulses_forward = 0 + self._start_position_reverse = 0 + self._interval_reverse = 0 + self._number_pulses_reverse = 0 + self._pulse_width = 0 + self._number_cycles = 0 + + + @property + def start_position_forward(self) -> int: + return self._start_position_forward + + @start_position_forward.setter + def start_position_forward(self, val: int): + self._start_position_forward = val + + @property + def interval_forward(self) -> int: + return self._interval_forward + + @interval_forward.setter + def interval_forward(self, val: int): + self._interval_forward = val + + @property + def number_pulses_forward(self) -> int: + return self._number_pulses_forward + + @number_pulses_forward.setter + def number_pulses_forward(self, val: int): + self._number_pulses_forward = val + + @property + def start_position_reverse(self) -> int: + return self._start_position_reverse + + @start_position_reverse.setter + def start_position_reverse(self, val: int): + self._start_position_reverse = val + + @property + def interval_reverse(self) -> int: + return self._interval_reverse + + @interval_reverse.setter + def interval_reverse(self, val: int): + self._interval_reverse = val + + @property + def number_pulses_reverse(self) -> int: + return self._number_pulses_reverse + + @number_pulses_reverse.setter + def number_pulses_reverse(self, val: int): + self._number_pulses_reverse = val + + @property + def pulse_width(self) -> int: + return self._pulse_width + + @pulse_width.setter + def pulse_width(self, val: int): + self._pulse_width = val + + @property + def number_cycles(self) -> int: + return self._number_cycles + + @number_cycles.setter + def number_cycles(self, val: int): + self._number_cycles = val + +class TLMC_PZIM_LimitSwitchParams(): + + def __init__(self): + + self._forward_hard_limit = TLMC_HardLimitOperatingMode.TLMC_HardLimitOperatingMode_SwitchIgnored + self._reverse_hard_limit = TLMC_HardLimitOperatingMode.TLMC_HardLimitOperatingMode_SwitchIgnored + self._stage_id = 0 + + + @property + def forward_hard_limit(self) -> TLMC_HardLimitOperatingMode: + return self._forward_hard_limit + + @forward_hard_limit.setter + def forward_hard_limit(self, val: TLMC_HardLimitOperatingMode): + self._forward_hard_limit = val + + @property + def reverse_hard_limit(self) -> TLMC_HardLimitOperatingMode: + return self._reverse_hard_limit + + @reverse_hard_limit.setter + def reverse_hard_limit(self, val: TLMC_HardLimitOperatingMode): + self._reverse_hard_limit = val + + @property + def stage_id(self) -> int: + return self._stage_id + + @stage_id.setter + def stage_id(self, val: int): + self._stage_id = val + +class TLMC_PZIM_PositionCounts(): + + def __init__(self): + self._position = 0 + self._encoder_count = 0 + + @property + def position(self) -> int: + return self._position + + @position.setter + def position(self, val: int): + self._position = val + + @property + def encoder_count(self) -> int: + return self._encoder_count + + @encoder_count.setter + def encoder_count(self, val: int): + self._encoder_count = val + +class TLMC_PZIM_StageSelectParams(): + + def __init__(self): + + self._stage_ident = TLMC_PZIM_StageSelectType.TLMC_PZIM_StageType_LinearActuator_PIA + self._stage_reserved = 0 + + + @property + def stage_ident(self) -> TLMC_PZIM_StageSelectType: + return self._stage_ident + + @stage_ident.setter + def stage_ident(self, val: TLMC_PZIM_StageSelectType): + self._stage_ident = val + + @property + def stage_reserved(self) -> int: + return self._stage_reserved + + @stage_reserved.setter + def stage_reserved(self, val: int): + self._stage_reserved = val + class TLMC_StageAxisParams(): def __init__(self): @@ -3293,6 +3859,57 @@ def status_bits(self) -> int: @status_bits.setter def status_bits(self, val: int): self._status_bits = val + + +class TLMC_UmcStatus(): + + def __init__(self): + + self._position = 0 + self._encoder_count = 0 + self._velocity = 0 + self._motor_current = 0 + self._status_bits = TLMC_UniversalStatusBit.TLMC_UniversalStatusBit_ClockwiseHardLimit + + @property + def position(self) -> int: + return self._position + + @position.setter + def position(self, val: int): + self._position = val + + @property + def encoder_count(self) -> int: + return self._encoder_count + + @encoder_count.setter + def encoder_count(self, val: int): + self._encoder_count = val + + @property + def velocity(self) -> int: + return self._velocity + + @velocity.setter + def velocity(self, val: int): + self._velocity = val + + @property + def motor_current(self) -> int: + return self._motor_current + + @motor_current.setter + def motor_current(self, val: int): + self._motor_current = val + + @property + def status_bits(self) -> TLMC_UniversalStatusBit: + return self._status_bits + + @status_bits.setter + def status_bits(self, val: TLMC_UniversalStatusBit): + self._status_bits = val class TLMC_Value(): diff --git a/Python/XA/xa_source/src/thorlabs_xa/shared/subchannel.py b/Python/XA/xa_source/src/thorlabs_xa/shared/subchannel.py new file mode 100644 index 0000000..53d7ba5 --- /dev/null +++ b/Python/XA/xa_source/src/thorlabs_xa/shared/subchannel.py @@ -0,0 +1,48 @@ +from abc import ABCMeta + +from thorlabs_xa.native_sdks.native_functions import NativeFunctions +from thorlabs_xa.shared.enums import TLMC_DeviceType + +class Subchannel(metaclass=ABCMeta): + + def __init__(self, subchannel_handle: int, subchannel_number: int, native_functions: NativeFunctions) -> None: + + self._subchannel_handle = subchannel_handle + self._subchannel_number = subchannel_number + self._native_functions = native_functions + self._parent_device_id: str | None = None + self._parent_device_type: TLMC_DeviceType | None = None + + def set_parent_device_identity( + self, + device_id: str, + device_type: TLMC_DeviceType, + ) -> None: + self._parent_device_id = device_id + self._parent_device_type = device_type + + @property + def subchannel_handle(self) -> int: + return self._subchannel_handle + + @property + def subchannel_number(self) -> int: + return self._subchannel_number + + @property + def device_id(self) -> str: + if self._parent_device_id is None: + raise AttributeError( + "Subchannel parent device identity has not been configured" + ) + + return self._parent_device_id + + @property + def device_type(self) -> TLMC_DeviceType: + if self._parent_device_type is None: + raise AttributeError( + "Subchannel parent device identity has not been configured" + ) + + return self._parent_device_type \ No newline at end of file diff --git a/Python/XA/xa_source/src/thorlabs_xa/shared/xa_error_factory.py b/Python/XA/xa_source/src/thorlabs_xa/shared/xa_error_factory.py index aaf19a6..dbfee19 100644 --- a/Python/XA/xa_source/src/thorlabs_xa/shared/xa_error_factory.py +++ b/Python/XA/xa_source/src/thorlabs_xa/shared/xa_error_factory.py @@ -106,8 +106,7 @@ def convert_return(return_code: TLMC_ResultCode) -> None | XADeviceException: case TLMC_ResultCode.TLMC_NoFreeHandles: ex = XADeviceException( message="No free handles available, error code 20", error_code=return_code) - pass - + pass case TLMC_ResultCode.TLMC_VerificationFailure: ex = XADeviceException( @@ -123,17 +122,25 @@ def convert_return(return_code: TLMC_ResultCode) -> None | XADeviceException: ex = XADeviceException( message="Connected product not supported, error code 23", error_code=return_code) pass + case TLMC_ResultCode.TLMC_SimulationCreationError: ex = XADeviceException( message="Simulation failed to start, error code 24", error_code=return_code) pass + case TLMC_ResultCode.TLMC_ConnectedProductNotSet: ex = XADeviceException( - message="Simulation failed to start, error code 25", error_code=return_code) + message="Connected product not set, error code 25", error_code=return_code) pass + case TLMC_ResultCode.TLMC_CalibrationFileNotPresent: ex = XADeviceException( message = "Calibration file not present, error code 26", error_code=return_code) pass + case TLMC_ResultCode.TLMC_ConnectedProductUnknown: + ex = XADeviceException( + message="Connected product unknown, error code 27", error_code=return_code) + pass + return ex