zaber-motion 7.12.0__py3-none-win32.whl → 7.14.0__py3-none-win32.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (492) hide show
  1. zaber_motion/__init__.py +103 -103
  2. zaber_motion/ascii/__init__.py +73 -73
  3. zaber_motion/ascii/all_axes.py +352 -352
  4. zaber_motion/ascii/axis.py +1673 -1666
  5. zaber_motion/ascii/axis_group.py +391 -391
  6. zaber_motion/ascii/axis_settings.py +752 -752
  7. zaber_motion/ascii/connection.py +1174 -1174
  8. zaber_motion/ascii/device.py +908 -908
  9. zaber_motion/ascii/device_io.py +1170 -1170
  10. zaber_motion/ascii/device_settings.py +735 -735
  11. zaber_motion/ascii/lockstep.py +1184 -1184
  12. zaber_motion/ascii/oscilloscope.py +635 -635
  13. zaber_motion/ascii/oscilloscope_data.py +240 -240
  14. zaber_motion/ascii/pvt.py +105 -105
  15. zaber_motion/ascii/pvt_buffer.py +146 -146
  16. zaber_motion/ascii/pvt_io.py +630 -630
  17. zaber_motion/ascii/pvt_sequence.py +1530 -1530
  18. zaber_motion/ascii/servo_tuner.py +637 -637
  19. zaber_motion/ascii/setting_constants.py +1755 -1755
  20. zaber_motion/ascii/storage.py +905 -905
  21. zaber_motion/ascii/stream.py +2182 -2182
  22. zaber_motion/ascii/stream_buffer.py +101 -101
  23. zaber_motion/ascii/stream_io.py +700 -700
  24. zaber_motion/ascii/streams.py +105 -105
  25. zaber_motion/ascii/transport.py +202 -202
  26. zaber_motion/ascii/trigger.py +886 -886
  27. zaber_motion/ascii/triggers.py +241 -241
  28. zaber_motion/ascii/warning_flags.py +178 -178
  29. zaber_motion/ascii/warnings.py +152 -152
  30. zaber_motion/async_utils.py +46 -46
  31. zaber_motion/binary/__init__.py +14 -14
  32. zaber_motion/binary/connection.py +648 -648
  33. zaber_motion/binary/device.py +924 -924
  34. zaber_motion/binary/device_settings.py +121 -121
  35. zaber_motion/bindings.py +50 -50
  36. zaber_motion/call.py +198 -198
  37. zaber_motion/convert_exception.py +138 -138
  38. zaber_motion/dto/__init__.py +11 -11
  39. zaber_motion/dto/ascii/__init__.py +46 -46
  40. zaber_motion/dto/ascii/alert_event.py +110 -110
  41. zaber_motion/dto/ascii/axis_identity.py +134 -117
  42. zaber_motion/dto/ascii/axis_type.py +14 -14
  43. zaber_motion/dto/ascii/can_set_state_axis_response.py +69 -69
  44. zaber_motion/dto/ascii/can_set_state_device_response.py +75 -75
  45. zaber_motion/dto/ascii/conversion_factor.py +81 -81
  46. zaber_motion/dto/ascii/device_identity.py +136 -136
  47. zaber_motion/dto/ascii/device_io_info.py +108 -108
  48. zaber_motion/dto/ascii/digital_output_action.py +13 -13
  49. zaber_motion/dto/ascii/get_axis_setting.py +64 -64
  50. zaber_motion/dto/ascii/get_axis_setting_result.py +81 -81
  51. zaber_motion/dto/ascii/get_setting.py +88 -88
  52. zaber_motion/dto/ascii/get_setting_result.py +87 -87
  53. zaber_motion/dto/ascii/io_port_label.py +84 -84
  54. zaber_motion/dto/ascii/io_port_type.py +14 -14
  55. zaber_motion/dto/ascii/lockstep_axes.py +108 -108
  56. zaber_motion/dto/ascii/measurement_sequence.py +73 -73
  57. zaber_motion/dto/ascii/message_type.py +14 -14
  58. zaber_motion/dto/ascii/optional_measurement_sequence.py +71 -71
  59. zaber_motion/dto/ascii/oscilloscope_capture_properties.py +116 -116
  60. zaber_motion/dto/ascii/oscilloscope_data_source.py +11 -11
  61. zaber_motion/dto/ascii/paramset_info.py +92 -92
  62. zaber_motion/dto/ascii/pid_tuning.py +125 -125
  63. zaber_motion/dto/ascii/pvt_axis_definition.py +70 -70
  64. zaber_motion/dto/ascii/pvt_axis_type.py +11 -11
  65. zaber_motion/dto/ascii/pvt_csv_data.py +75 -75
  66. zaber_motion/dto/ascii/pvt_mode.py +12 -12
  67. zaber_motion/dto/ascii/pvt_sequence_data.py +99 -99
  68. zaber_motion/dto/ascii/response.py +137 -137
  69. zaber_motion/dto/ascii/servo_tuning_param.py +66 -66
  70. zaber_motion/dto/ascii/servo_tuning_paramset.py +21 -21
  71. zaber_motion/dto/ascii/set_state_axis_response.py +75 -75
  72. zaber_motion/dto/ascii/set_state_device_response.py +80 -80
  73. zaber_motion/dto/ascii/simple_tuning.py +118 -118
  74. zaber_motion/dto/ascii/simple_tuning_param_definition.py +100 -100
  75. zaber_motion/dto/ascii/stream_axis_definition.py +70 -70
  76. zaber_motion/dto/ascii/stream_axis_type.py +11 -11
  77. zaber_motion/dto/ascii/stream_mode.py +13 -13
  78. zaber_motion/dto/ascii/trigger_action.py +12 -12
  79. zaber_motion/dto/ascii/trigger_condition.py +15 -15
  80. zaber_motion/dto/ascii/trigger_enabled_state.py +68 -68
  81. zaber_motion/dto/ascii/trigger_operation.py +12 -12
  82. zaber_motion/dto/ascii/trigger_state.py +114 -114
  83. zaber_motion/dto/ascii/unknown_response_event.py +137 -137
  84. zaber_motion/dto/axis_address.py +74 -74
  85. zaber_motion/dto/binary/__init__.py +11 -11
  86. zaber_motion/dto/binary/binary_settings.py +74 -74
  87. zaber_motion/dto/binary/command_code.py +106 -106
  88. zaber_motion/dto/binary/device_identity.py +156 -156
  89. zaber_motion/dto/binary/device_type.py +12 -12
  90. zaber_motion/dto/binary/error_code.py +101 -101
  91. zaber_motion/dto/binary/message.py +91 -91
  92. zaber_motion/dto/binary/reply_code.py +16 -16
  93. zaber_motion/dto/binary/reply_only_event.py +91 -91
  94. zaber_motion/dto/binary/unknown_response_event.py +91 -91
  95. zaber_motion/dto/channel_address.py +74 -74
  96. zaber_motion/dto/device_db_source.py +66 -66
  97. zaber_motion/dto/device_db_source_type.py +11 -11
  98. zaber_motion/dto/exceptions/__init__.py +24 -24
  99. zaber_motion/dto/exceptions/binary_command_failed_exception_data.py +57 -57
  100. zaber_motion/dto/exceptions/command_failed_exception_data.py +151 -151
  101. zaber_motion/dto/exceptions/command_too_long_exception_data.py +98 -98
  102. zaber_motion/dto/exceptions/device_address_conflict_exception_data.py +63 -63
  103. zaber_motion/dto/exceptions/device_db_failed_exception_data.py +74 -74
  104. zaber_motion/dto/exceptions/device_db_inner_error.py +85 -85
  105. zaber_motion/dto/exceptions/g_code_execution_exception_data.py +75 -75
  106. zaber_motion/dto/exceptions/g_code_syntax_exception_data.py +75 -75
  107. zaber_motion/dto/exceptions/invalid_packet_exception_data.py +63 -63
  108. zaber_motion/dto/exceptions/invalid_pvt_point.py +69 -69
  109. zaber_motion/dto/exceptions/invalid_response_exception_data.py +51 -51
  110. zaber_motion/dto/exceptions/movement_failed_exception_data.py +104 -104
  111. zaber_motion/dto/exceptions/movement_interrupted_exception_data.py +104 -104
  112. zaber_motion/dto/exceptions/operation_failed_exception_data.py +104 -104
  113. zaber_motion/dto/exceptions/pvt_execution_exception_data.py +86 -86
  114. zaber_motion/dto/exceptions/pvt_movement_failed_exception_data.py +69 -69
  115. zaber_motion/dto/exceptions/pvt_movement_interrupted_exception_data.py +69 -69
  116. zaber_motion/dto/exceptions/set_device_state_exception_data.py +176 -176
  117. zaber_motion/dto/exceptions/set_peripheral_state_exception_data.py +121 -121
  118. zaber_motion/dto/exceptions/stream_execution_exception_data.py +63 -63
  119. zaber_motion/dto/exceptions/stream_movement_failed_exception_data.py +69 -69
  120. zaber_motion/dto/exceptions/stream_movement_interrupted_exception_data.py +69 -69
  121. zaber_motion/dto/firmware_version.py +91 -91
  122. zaber_motion/dto/gcode/__init__.py +9 -9
  123. zaber_motion/dto/gcode/axis_definition.py +74 -74
  124. zaber_motion/dto/gcode/axis_mapping.py +69 -69
  125. zaber_motion/dto/gcode/axis_transformation.py +79 -79
  126. zaber_motion/dto/gcode/device_definition.py +99 -99
  127. zaber_motion/dto/gcode/translate_message.py +87 -87
  128. zaber_motion/dto/gcode/translate_result.py +79 -79
  129. zaber_motion/dto/gcode/translator_config.py +84 -84
  130. zaber_motion/dto/log_output_mode.py +13 -13
  131. zaber_motion/dto/measurement.py +67 -67
  132. zaber_motion/dto/microscopy/__init__.py +6 -6
  133. zaber_motion/dto/microscopy/autofocus_status.py +57 -57
  134. zaber_motion/dto/microscopy/microscope_config.py +159 -159
  135. zaber_motion/dto/microscopy/third_party_components.py +55 -55
  136. zaber_motion/dto/microscopy/wdi_autofocus_provider_status.py +57 -57
  137. zaber_motion/dto/named_parameter.py +64 -64
  138. zaber_motion/dto/product/__init__.py +5 -5
  139. zaber_motion/dto/product/process_controller_mode.py +13 -13
  140. zaber_motion/dto/product/process_controller_source.py +72 -72
  141. zaber_motion/dto/product/process_controller_source_sensor.py +11 -11
  142. zaber_motion/dto/requests/__init__.py +256 -254
  143. zaber_motion/dto/requests/alert_event_wrapper.py +82 -82
  144. zaber_motion/dto/requests/autofocus_focus_request.py +131 -131
  145. zaber_motion/dto/requests/autofocus_get_objective_params_request.py +121 -121
  146. zaber_motion/dto/requests/autofocus_get_objective_params_response.py +56 -56
  147. zaber_motion/dto/requests/autofocus_get_status_response.py +50 -50
  148. zaber_motion/dto/requests/autofocus_set_objective_params_request.py +141 -141
  149. zaber_motion/dto/requests/axes_empty_request.py +95 -95
  150. zaber_motion/dto/requests/axes_get_setting_request.py +121 -121
  151. zaber_motion/dto/requests/axes_move_request.py +114 -114
  152. zaber_motion/dto/requests/axis_empty_request.py +79 -79
  153. zaber_motion/dto/requests/axis_move_type.py +12 -12
  154. zaber_motion/dto/requests/axis_to_string_request.py +88 -88
  155. zaber_motion/dto/requests/binary_device_detect_request.py +56 -56
  156. zaber_motion/dto/requests/binary_device_detect_response.py +57 -57
  157. zaber_motion/dto/requests/binary_device_get_setting_request.py +89 -89
  158. zaber_motion/dto/requests/binary_device_home_request.py +88 -88
  159. zaber_motion/dto/requests/binary_device_move_request.py +111 -111
  160. zaber_motion/dto/requests/binary_device_set_setting_request.py +100 -100
  161. zaber_motion/dto/requests/binary_device_stop_request.py +88 -88
  162. zaber_motion/dto/requests/binary_generic_with_units_request.py +122 -122
  163. zaber_motion/dto/requests/binary_message_collection.py +56 -56
  164. zaber_motion/dto/requests/binary_reply_only_event_wrapper.py +82 -82
  165. zaber_motion/dto/requests/bool_response.py +43 -43
  166. zaber_motion/dto/requests/can_set_state_axis_response.py +60 -60
  167. zaber_motion/dto/requests/can_set_state_request.py +100 -100
  168. zaber_motion/dto/requests/channel_on.py +84 -84
  169. zaber_motion/dto/requests/channel_set_intensity.py +90 -90
  170. zaber_motion/dto/requests/check_version_request.py +54 -54
  171. zaber_motion/dto/requests/custom_interface_close_request.py +60 -60
  172. zaber_motion/dto/requests/custom_interface_open_response.py +51 -51
  173. zaber_motion/dto/requests/custom_interface_read_request.py +51 -51
  174. zaber_motion/dto/requests/custom_interface_write_request.py +60 -60
  175. zaber_motion/dto/requests/device_cancel_all_outputs_schedule_request.py +80 -80
  176. zaber_motion/dto/requests/device_cancel_output_schedule_request.py +84 -84
  177. zaber_motion/dto/requests/device_convert_setting_request.py +116 -116
  178. zaber_motion/dto/requests/device_detect_request.py +68 -68
  179. zaber_motion/dto/requests/device_detect_response.py +57 -57
  180. zaber_motion/dto/requests/device_empty_request.py +65 -65
  181. zaber_motion/dto/requests/device_get_all_analog_io_request.py +74 -74
  182. zaber_motion/dto/requests/device_get_all_analog_io_response.py +54 -54
  183. zaber_motion/dto/requests/device_get_all_digital_io_request.py +74 -74
  184. zaber_motion/dto/requests/device_get_all_digital_io_response.py +46 -46
  185. zaber_motion/dto/requests/device_get_analog_io_request.py +88 -88
  186. zaber_motion/dto/requests/device_get_digital_io_request.py +88 -88
  187. zaber_motion/dto/requests/device_get_setting_request.py +100 -100
  188. zaber_motion/dto/requests/device_get_storage_request.py +93 -93
  189. zaber_motion/dto/requests/device_get_warnings_request.py +84 -84
  190. zaber_motion/dto/requests/device_get_warnings_response.py +51 -51
  191. zaber_motion/dto/requests/device_home_request.py +84 -84
  192. zaber_motion/dto/requests/device_identify_request.py +77 -77
  193. zaber_motion/dto/requests/device_move_request.py +177 -177
  194. zaber_motion/dto/requests/device_move_sin_request.py +140 -140
  195. zaber_motion/dto/requests/device_multi_get_setting_request.py +118 -118
  196. zaber_motion/dto/requests/device_on_all_request.py +56 -56
  197. zaber_motion/dto/requests/device_on_all_response.py +57 -57
  198. zaber_motion/dto/requests/device_restore_request.py +84 -84
  199. zaber_motion/dto/requests/device_set_all_analog_outputs_request.py +82 -82
  200. zaber_motion/dto/requests/device_set_all_analog_outputs_schedule_request.py +121 -121
  201. zaber_motion/dto/requests/device_set_all_digital_outputs_request.py +83 -83
  202. zaber_motion/dto/requests/device_set_all_digital_outputs_schedule_request.py +122 -122
  203. zaber_motion/dto/requests/device_set_analog_output_request.py +90 -90
  204. zaber_motion/dto/requests/device_set_analog_output_schedule_request.py +124 -124
  205. zaber_motion/dto/requests/device_set_digital_output_request.py +91 -91
  206. zaber_motion/dto/requests/device_set_digital_output_schedule_request.py +125 -125
  207. zaber_motion/dto/requests/device_set_lowpass_filter_request.py +102 -102
  208. zaber_motion/dto/requests/device_set_setting_bool_request.py +93 -93
  209. zaber_motion/dto/requests/device_set_setting_int_request.py +102 -102
  210. zaber_motion/dto/requests/device_set_setting_request.py +111 -111
  211. zaber_motion/dto/requests/device_set_setting_str_request.py +97 -97
  212. zaber_motion/dto/requests/device_set_storage_bool_request.py +93 -93
  213. zaber_motion/dto/requests/device_set_storage_number_request.py +99 -99
  214. zaber_motion/dto/requests/device_set_storage_request.py +102 -102
  215. zaber_motion/dto/requests/device_set_unit_conversions_request.py +108 -108
  216. zaber_motion/dto/requests/device_stop_request.py +84 -84
  217. zaber_motion/dto/requests/device_storage_list_keys_request.py +88 -88
  218. zaber_motion/dto/requests/device_storage_request.py +88 -88
  219. zaber_motion/dto/requests/device_type.py +8 -8
  220. zaber_motion/dto/requests/device_wait_until_idle_request.py +84 -84
  221. zaber_motion/dto/requests/disconnected_event.py +101 -101
  222. zaber_motion/dto/requests/double_array_response.py +54 -54
  223. zaber_motion/dto/requests/double_response.py +48 -48
  224. zaber_motion/dto/requests/driver_enable_request.py +90 -90
  225. zaber_motion/dto/requests/empty_autofocus_request.py +107 -107
  226. zaber_motion/dto/requests/empty_request.py +38 -38
  227. zaber_motion/dto/requests/errors.py +68 -68
  228. zaber_motion/dto/requests/find_device_request.py +65 -65
  229. zaber_motion/dto/requests/find_device_response.py +51 -51
  230. zaber_motion/dto/requests/forget_devices_request.py +71 -71
  231. zaber_motion/dto/requests/gateway_event.py +45 -45
  232. zaber_motion/dto/requests/gateway_request.py +45 -45
  233. zaber_motion/dto/requests/gateway_response.py +69 -69
  234. zaber_motion/dto/requests/generic_binary_request.py +107 -107
  235. zaber_motion/dto/requests/generic_command_request.py +107 -107
  236. zaber_motion/dto/requests/generic_command_response_collection.py +56 -56
  237. zaber_motion/dto/requests/get_all_io_port_labels_response.py +56 -56
  238. zaber_motion/dto/requests/get_axis_setting_results.py +56 -56
  239. zaber_motion/dto/requests/get_io_port_label_request.py +91 -91
  240. zaber_motion/dto/requests/get_setting_results.py +56 -56
  241. zaber_motion/dto/requests/get_simple_tuning_param_definition_response.py +56 -56
  242. zaber_motion/dto/requests/int_64_response.py +51 -51
  243. zaber_motion/dto/requests/int_array_response.py +57 -57
  244. zaber_motion/dto/requests/int_request.py +51 -51
  245. zaber_motion/dto/requests/int_response.py +51 -51
  246. zaber_motion/dto/requests/interface_empty_request.py +51 -51
  247. zaber_motion/dto/requests/interface_type.py +11 -11
  248. zaber_motion/dto/requests/load_paramset.py +102 -102
  249. zaber_motion/dto/requests/lockstep_disable_request.py +84 -84
  250. zaber_motion/dto/requests/lockstep_empty_request.py +79 -79
  251. zaber_motion/dto/requests/lockstep_enable_request.py +99 -99
  252. zaber_motion/dto/requests/lockstep_get_axis_numbers_response.py +57 -57
  253. zaber_motion/dto/requests/lockstep_get_request.py +91 -91
  254. zaber_motion/dto/requests/lockstep_home_request.py +84 -84
  255. zaber_motion/dto/requests/lockstep_move_request.py +163 -163
  256. zaber_motion/dto/requests/lockstep_move_sin_request.py +140 -140
  257. zaber_motion/dto/requests/lockstep_set_request.py +116 -116
  258. zaber_motion/dto/requests/lockstep_stop_request.py +84 -84
  259. zaber_motion/dto/requests/lockstep_wait_until_idle_request.py +84 -84
  260. zaber_motion/dto/requests/microscope_config_response.py +50 -50
  261. zaber_motion/dto/requests/microscope_empty_request.py +65 -65
  262. zaber_motion/dto/requests/microscope_find_request.py +63 -63
  263. zaber_motion/dto/requests/microscope_init_request.py +70 -70
  264. zaber_motion/dto/requests/microscope_trigger_camera_request.py +107 -107
  265. zaber_motion/dto/requests/objective_changer_change_request.py +119 -119
  266. zaber_motion/dto/requests/objective_changer_create_response.py +79 -79
  267. zaber_motion/dto/requests/objective_changer_get_current_response.py +51 -51
  268. zaber_motion/dto/requests/objective_changer_request.py +93 -93
  269. zaber_motion/dto/requests/objective_changer_set_request.py +116 -116
  270. zaber_motion/dto/requests/open_binary_interface_request.py +100 -100
  271. zaber_motion/dto/requests/open_interface_request.py +159 -159
  272. zaber_motion/dto/requests/open_interface_response.py +51 -51
  273. zaber_motion/dto/requests/oscilloscope_add_io_channel_request.py +91 -91
  274. zaber_motion/dto/requests/oscilloscope_add_setting_channel_request.py +88 -88
  275. zaber_motion/dto/requests/oscilloscope_data_get_request.py +63 -63
  276. zaber_motion/dto/requests/oscilloscope_data_get_sample_time_request.py +77 -77
  277. zaber_motion/dto/requests/oscilloscope_data_get_samples_response.py +54 -54
  278. zaber_motion/dto/requests/oscilloscope_data_identifier.py +51 -51
  279. zaber_motion/dto/requests/oscilloscope_read_response.py +57 -57
  280. zaber_motion/dto/requests/oscilloscope_request.py +65 -65
  281. zaber_motion/dto/requests/oscilloscope_start_request.py +79 -79
  282. zaber_motion/dto/requests/prepare_command_request.py +108 -108
  283. zaber_motion/dto/requests/process_on.py +107 -107
  284. zaber_motion/dto/requests/pvt_buffer_get_sequence_data_request.py +79 -79
  285. zaber_motion/dto/requests/pvt_csv_request.py +59 -59
  286. zaber_motion/dto/requests/pvt_generate_positions_request.py +74 -74
  287. zaber_motion/dto/requests/pvt_generate_velocities_and_times_request.py +96 -96
  288. zaber_motion/dto/requests/pvt_generate_velocities_request.py +93 -93
  289. zaber_motion/dto/requests/pvt_load_csv_request.py +45 -45
  290. zaber_motion/dto/requests/pvt_point_request.py +145 -145
  291. zaber_motion/dto/requests/pvt_points_request.py +147 -147
  292. zaber_motion/dto/requests/pvt_save_csv_request.py +74 -74
  293. zaber_motion/dto/requests/pvt_submit_sequence_data_request.py +93 -93
  294. zaber_motion/dto/requests/renumber_request.py +79 -79
  295. zaber_motion/dto/requests/response_type.py +8 -8
  296. zaber_motion/dto/requests/servo_tuning_paramset_response.py +48 -48
  297. zaber_motion/dto/requests/servo_tuning_request.py +91 -91
  298. zaber_motion/dto/requests/set_device_db_layered_sources_request.py +56 -56
  299. zaber_motion/dto/requests/set_device_db_source_request.py +63 -63
  300. zaber_motion/dto/requests/set_interface_checksum_enabled_request.py +56 -56
  301. zaber_motion/dto/requests/set_interface_timeout_request.py +65 -65
  302. zaber_motion/dto/requests/set_internal_mode_request.py +43 -43
  303. zaber_motion/dto/requests/set_io_port_label_request.py +100 -100
  304. zaber_motion/dto/requests/set_log_output_request.py +57 -57
  305. zaber_motion/dto/requests/set_process_controller_source.py +93 -93
  306. zaber_motion/dto/requests/set_servo_tuning_pid_request.py +135 -135
  307. zaber_motion/dto/requests/set_servo_tuning_request.py +116 -116
  308. zaber_motion/dto/requests/set_simple_tuning.py +174 -174
  309. zaber_motion/dto/requests/set_state_request.py +93 -93
  310. zaber_motion/dto/requests/stream_arc_request.py +199 -199
  311. zaber_motion/dto/requests/stream_buffer_erase_request.py +84 -84
  312. zaber_motion/dto/requests/stream_buffer_get_content_request.py +84 -84
  313. zaber_motion/dto/requests/stream_buffer_get_content_response.py +51 -51
  314. zaber_motion/dto/requests/stream_buffer_list.py +70 -70
  315. zaber_motion/dto/requests/stream_call_request.py +112 -112
  316. zaber_motion/dto/requests/stream_cancel_all_outputs_schedule_request.py +99 -99
  317. zaber_motion/dto/requests/stream_cancel_output_schedule_request.py +103 -103
  318. zaber_motion/dto/requests/stream_circle_request.py +155 -155
  319. zaber_motion/dto/requests/stream_empty_request.py +84 -84
  320. zaber_motion/dto/requests/stream_generic_command_batch_request.py +99 -99
  321. zaber_motion/dto/requests/stream_generic_command_request.py +93 -93
  322. zaber_motion/dto/requests/stream_get_axes_response.py +75 -75
  323. zaber_motion/dto/requests/stream_get_max_centripetal_acceleration_request.py +96 -96
  324. zaber_motion/dto/requests/stream_get_max_speed_request.py +96 -96
  325. zaber_motion/dto/requests/stream_get_max_tangential_acceleration_request.py +96 -96
  326. zaber_motion/dto/requests/stream_line_request.py +135 -135
  327. zaber_motion/dto/requests/stream_mode_response.py +60 -60
  328. zaber_motion/dto/requests/stream_segment_type.py +8 -8
  329. zaber_motion/dto/requests/stream_set_all_analog_outputs_request.py +101 -101
  330. zaber_motion/dto/requests/stream_set_all_analog_outputs_schedule_request.py +140 -140
  331. zaber_motion/dto/requests/stream_set_all_digital_outputs_request.py +102 -102
  332. zaber_motion/dto/requests/stream_set_all_digital_outputs_schedule_request.py +141 -141
  333. zaber_motion/dto/requests/stream_set_analog_output_request.py +109 -109
  334. zaber_motion/dto/requests/stream_set_analog_output_schedule_request.py +143 -143
  335. zaber_motion/dto/requests/stream_set_digital_output_request.py +110 -110
  336. zaber_motion/dto/requests/stream_set_digital_output_schedule_request.py +144 -144
  337. zaber_motion/dto/requests/stream_set_hold_request.py +89 -89
  338. zaber_motion/dto/requests/stream_set_max_centripetal_acceleration_request.py +107 -107
  339. zaber_motion/dto/requests/stream_set_max_speed_request.py +107 -107
  340. zaber_motion/dto/requests/stream_set_max_tangential_acceleration_request.py +107 -107
  341. zaber_motion/dto/requests/stream_setup_live_composite_request.py +123 -123
  342. zaber_motion/dto/requests/stream_setup_live_request.py +104 -104
  343. zaber_motion/dto/requests/stream_setup_store_arbitrary_axes_request.py +126 -126
  344. zaber_motion/dto/requests/stream_setup_store_composite_request.py +151 -151
  345. zaber_motion/dto/requests/stream_setup_store_request.py +132 -132
  346. zaber_motion/dto/requests/stream_wait_analog_input_request.py +118 -118
  347. zaber_motion/dto/requests/stream_wait_digital_input_request.py +103 -103
  348. zaber_motion/dto/requests/stream_wait_request.py +107 -107
  349. zaber_motion/dto/requests/stream_wait_until_idle_request.py +89 -89
  350. zaber_motion/dto/requests/string_array_response.py +51 -51
  351. zaber_motion/dto/requests/string_response.py +45 -45
  352. zaber_motion/dto/requests/test_event.py +45 -45
  353. zaber_motion/dto/requests/test_request.py +55 -55
  354. zaber_motion/dto/requests/test_request_complex.py +57 -0
  355. zaber_motion/dto/requests/test_response.py +45 -45
  356. zaber_motion/dto/requests/test_response_long.py +51 -51
  357. zaber_motion/dto/requests/toggle_device_db_store_request.py +50 -50
  358. zaber_motion/dto/requests/tools_list_serial_ports_response.py +51 -51
  359. zaber_motion/dto/requests/translator_create_from_device_request.py +97 -97
  360. zaber_motion/dto/requests/translator_create_live_request.py +91 -91
  361. zaber_motion/dto/requests/translator_create_request.py +62 -62
  362. zaber_motion/dto/requests/translator_create_response.py +51 -51
  363. zaber_motion/dto/requests/translator_empty_request.py +51 -51
  364. zaber_motion/dto/requests/translator_flush_live_request.py +56 -56
  365. zaber_motion/dto/requests/translator_flush_response.py +51 -51
  366. zaber_motion/dto/requests/translator_get_axis_offset_request.py +81 -81
  367. zaber_motion/dto/requests/translator_get_axis_position_request.py +72 -72
  368. zaber_motion/dto/requests/translator_set_axis_position_request.py +83 -83
  369. zaber_motion/dto/requests/translator_set_feed_rate_override_request.py +62 -62
  370. zaber_motion/dto/requests/translator_set_traverse_rate_request.py +74 -74
  371. zaber_motion/dto/requests/translator_translate_request.py +60 -60
  372. zaber_motion/dto/requests/trigger_clear_action_request.py +91 -91
  373. zaber_motion/dto/requests/trigger_empty_request.py +79 -79
  374. zaber_motion/dto/requests/trigger_enable_request.py +93 -93
  375. zaber_motion/dto/requests/trigger_enabled_states.py +56 -56
  376. zaber_motion/dto/requests/trigger_fire_at_interval_request.py +102 -102
  377. zaber_motion/dto/requests/trigger_fire_when_distance_travelled_request.py +116 -116
  378. zaber_motion/dto/requests/trigger_fire_when_io_request.py +128 -128
  379. zaber_motion/dto/requests/trigger_fire_when_request.py +88 -88
  380. zaber_motion/dto/requests/trigger_fire_when_setting_request.py +137 -137
  381. zaber_motion/dto/requests/trigger_on_fire_request.py +114 -114
  382. zaber_motion/dto/requests/trigger_on_fire_set_request.py +149 -149
  383. zaber_motion/dto/requests/trigger_on_fire_set_to_setting_request.py +149 -149
  384. zaber_motion/dto/requests/trigger_set_label_request.py +88 -88
  385. zaber_motion/dto/requests/trigger_states.py +56 -56
  386. zaber_motion/dto/requests/unit_convert_unit_request.py +71 -71
  387. zaber_motion/dto/requests/unit_get_enum_request.py +45 -45
  388. zaber_motion/dto/requests/unit_get_enum_response.py +48 -48
  389. zaber_motion/dto/requests/unit_get_symbol_request.py +48 -48
  390. zaber_motion/dto/requests/unit_get_symbol_response.py +45 -45
  391. zaber_motion/dto/requests/unknown_binary_response_event_wrapper.py +82 -82
  392. zaber_motion/dto/requests/unknown_response_event_wrapper.py +82 -82
  393. zaber_motion/dto/requests/wait_to_clear_warnings_request.py +105 -105
  394. zaber_motion/dto/requests/wait_to_respond_request.py +76 -76
  395. zaber_motion/dto/requests/wdi_generic_float_request.py +119 -0
  396. zaber_motion/dto/requests/wdi_generic_request.py +136 -136
  397. zaber_motion/dto/requests/wdi_get_status_response.py +50 -50
  398. zaber_motion/dto/rotation_direction.py +13 -13
  399. zaber_motion/dto_object.py +18 -18
  400. zaber_motion/events.py +112 -112
  401. zaber_motion/exceptions/__init__.py +87 -87
  402. zaber_motion/exceptions/bad_command_exception.py +10 -10
  403. zaber_motion/exceptions/bad_data_exception.py +10 -10
  404. zaber_motion/exceptions/binary_command_failed_exception.py +27 -27
  405. zaber_motion/exceptions/command_failed_exception.py +27 -27
  406. zaber_motion/exceptions/command_preempted_exception.py +10 -10
  407. zaber_motion/exceptions/command_too_long_exception.py +27 -27
  408. zaber_motion/exceptions/connection_closed_exception.py +10 -10
  409. zaber_motion/exceptions/connection_failed_exception.py +10 -10
  410. zaber_motion/exceptions/conversion_failed_exception.py +10 -10
  411. zaber_motion/exceptions/device_address_conflict_exception.py +27 -27
  412. zaber_motion/exceptions/device_busy_exception.py +10 -10
  413. zaber_motion/exceptions/device_db_failed_exception.py +27 -27
  414. zaber_motion/exceptions/device_detection_failed_exception.py +10 -10
  415. zaber_motion/exceptions/device_failed_exception.py +11 -11
  416. zaber_motion/exceptions/device_not_identified_exception.py +10 -10
  417. zaber_motion/exceptions/driver_disabled_exception.py +10 -10
  418. zaber_motion/exceptions/g_code_execution_exception.py +27 -27
  419. zaber_motion/exceptions/g_code_syntax_exception.py +27 -27
  420. zaber_motion/exceptions/incompatible_shared_library_exception.py +11 -11
  421. zaber_motion/exceptions/internal_error_exception.py +10 -10
  422. zaber_motion/exceptions/invalid_argument_exception.py +10 -10
  423. zaber_motion/exceptions/invalid_csv_data_exception.py +10 -10
  424. zaber_motion/exceptions/invalid_data_exception.py +10 -10
  425. zaber_motion/exceptions/invalid_operation_exception.py +10 -10
  426. zaber_motion/exceptions/invalid_packet_exception.py +27 -27
  427. zaber_motion/exceptions/invalid_park_state_exception.py +10 -10
  428. zaber_motion/exceptions/invalid_request_data_exception.py +11 -11
  429. zaber_motion/exceptions/invalid_response_exception.py +27 -27
  430. zaber_motion/exceptions/io_channel_out_of_range_exception.py +10 -10
  431. zaber_motion/exceptions/io_failed_exception.py +10 -10
  432. zaber_motion/exceptions/lockstep_enabled_exception.py +10 -10
  433. zaber_motion/exceptions/lockstep_not_enabled_exception.py +10 -10
  434. zaber_motion/exceptions/motion_lib_exception.py +18 -18
  435. zaber_motion/exceptions/movement_failed_exception.py +27 -27
  436. zaber_motion/exceptions/movement_interrupted_exception.py +27 -27
  437. zaber_motion/exceptions/no_device_found_exception.py +10 -10
  438. zaber_motion/exceptions/no_value_for_key_exception.py +10 -10
  439. zaber_motion/exceptions/not_supported_exception.py +10 -10
  440. zaber_motion/exceptions/operation_failed_exception.py +27 -27
  441. zaber_motion/exceptions/os_failed_exception.py +10 -10
  442. zaber_motion/exceptions/out_of_request_ids_exception.py +10 -10
  443. zaber_motion/exceptions/pvt_discontinuity_exception.py +10 -10
  444. zaber_motion/exceptions/pvt_execution_exception.py +27 -27
  445. zaber_motion/exceptions/pvt_mode_exception.py +10 -10
  446. zaber_motion/exceptions/pvt_movement_failed_exception.py +27 -27
  447. zaber_motion/exceptions/pvt_movement_interrupted_exception.py +27 -27
  448. zaber_motion/exceptions/pvt_sequence_generation_failed_exception.py +10 -10
  449. zaber_motion/exceptions/pvt_setup_failed_exception.py +10 -10
  450. zaber_motion/exceptions/remote_mode_exception.py +11 -11
  451. zaber_motion/exceptions/request_timeout_exception.py +10 -10
  452. zaber_motion/exceptions/serial_port_busy_exception.py +10 -10
  453. zaber_motion/exceptions/set_device_state_failed_exception.py +27 -27
  454. zaber_motion/exceptions/set_peripheral_state_failed_exception.py +27 -27
  455. zaber_motion/exceptions/setting_not_found_exception.py +10 -10
  456. zaber_motion/exceptions/stream_discontinuity_exception.py +10 -10
  457. zaber_motion/exceptions/stream_execution_exception.py +27 -27
  458. zaber_motion/exceptions/stream_mode_exception.py +10 -10
  459. zaber_motion/exceptions/stream_movement_failed_exception.py +27 -27
  460. zaber_motion/exceptions/stream_movement_interrupted_exception.py +27 -27
  461. zaber_motion/exceptions/stream_setup_failed_exception.py +10 -10
  462. zaber_motion/exceptions/timeout_exception.py +10 -10
  463. zaber_motion/exceptions/transport_already_used_exception.py +10 -10
  464. zaber_motion/exceptions/unknown_request_exception.py +10 -10
  465. zaber_motion/gcode/__init__.py +11 -11
  466. zaber_motion/gcode/offline_translator.py +401 -401
  467. zaber_motion/gcode/translator.py +424 -424
  468. zaber_motion/library.py +179 -179
  469. zaber_motion/microscopy/__init__.py +14 -14
  470. zaber_motion/microscopy/autofocus.py +645 -645
  471. zaber_motion/microscopy/camera_trigger.py +108 -108
  472. zaber_motion/microscopy/filter_changer.py +167 -167
  473. zaber_motion/microscopy/illuminator.py +139 -139
  474. zaber_motion/microscopy/illuminator_channel.py +616 -616
  475. zaber_motion/microscopy/microscope.py +315 -315
  476. zaber_motion/microscopy/objective_changer.py +403 -403
  477. zaber_motion/microscopy/wdi_autofocus_provider.py +536 -396
  478. zaber_motion/product/__init__.py +7 -7
  479. zaber_motion/product/process.py +818 -818
  480. zaber_motion/product/process_controller.py +134 -134
  481. zaber_motion/serialization.py +32 -32
  482. zaber_motion/tools.py +78 -78
  483. zaber_motion/unit_table.py +86 -86
  484. zaber_motion/units.py +206 -206
  485. zaber_motion/version.py +1 -1
  486. {zaber_motion-7.12.0.dist-info → zaber_motion-7.14.0.dist-info}/LICENSE.txt +2119 -2119
  487. {zaber_motion-7.12.0.dist-info → zaber_motion-7.14.0.dist-info}/METADATA +1 -1
  488. zaber_motion-7.14.0.dist-info/RECORD +496 -0
  489. zaber_motion_bindings/zaber-motion-core-windows-386.dll +0 -0
  490. zaber_motion-7.12.0.dist-info/RECORD +0 -494
  491. {zaber_motion-7.12.0.dist-info → zaber_motion-7.14.0.dist-info}/WHEEL +0 -0
  492. {zaber_motion-7.12.0.dist-info → zaber_motion-7.14.0.dist-info}/top_level.txt +0 -0
@@ -1,396 +1,536 @@
1
- # ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
2
- # ============== DO NOT EDIT DIRECTLY ============== #
3
-
4
- from typing import Generator, Any, Optional, List
5
- import asyncio
6
-
7
- from ..call import call, call_async, call_sync
8
- from ..exceptions.motion_lib_exception import MotionLibException
9
-
10
- from ..dto import requests as dto
11
- from ..dto.microscopy.wdi_autofocus_provider_status import WdiAutofocusProviderStatus
12
-
13
-
14
- class WdiAutofocusProvider:
15
- """
16
- Class representing access to WDI Autofocus connection.
17
- """
18
-
19
- DEFAULT_TCP_PORT = 27
20
- """
21
- Default port number for TCP connections to WDI autofocus.
22
- """
23
-
24
- @property
25
- def provider_id(self) -> int:
26
- """
27
- The ID identifies the autofocus with the underlying library.
28
- """
29
- return self._provider_id
30
-
31
- def __init__(self, provider_id: int):
32
- self._provider_id: int = provider_id
33
-
34
- @staticmethod
35
- def open_tcp(
36
- host_name: str,
37
- port: int = DEFAULT_TCP_PORT
38
- ) -> 'WdiAutofocusProvider':
39
- """
40
- Opens a TCP connection to WDI autofocus.
41
-
42
- Args:
43
- host_name: Hostname or IP address.
44
- port: Optional port number (defaults to 27).
45
-
46
- Returns:
47
- An object representing the autofocus connection.
48
- """
49
- request = dto.OpenInterfaceRequest(
50
- interface_type=dto.InterfaceType.TCP,
51
- host_name=host_name,
52
- port=port,
53
- )
54
- response = call(
55
- "wdi/open",
56
- request,
57
- dto.IntResponse.from_binary)
58
- return WdiAutofocusProvider(response.value)
59
-
60
- @staticmethod
61
- def open_tcp_async(
62
- host_name: str,
63
- port: int = DEFAULT_TCP_PORT
64
- ) -> 'AsyncWdiAutofocusOpener':
65
- """
66
- Opens a TCP connection to WDI autofocus.
67
-
68
- Args:
69
- host_name: Hostname or IP address.
70
- port: Optional port number (defaults to 27).
71
-
72
- Returns:
73
- An object representing the autofocus connection.
74
- """
75
- request = dto.OpenInterfaceRequest(
76
- interface_type=dto.InterfaceType.TCP,
77
- host_name=host_name,
78
- port=port,
79
- )
80
- return AsyncWdiAutofocusOpener(request)
81
-
82
- def close(
83
- self
84
- ) -> None:
85
- """
86
- Close the connection.
87
- """
88
- request = dto.InterfaceEmptyRequest(
89
- interface_id=self.provider_id,
90
- )
91
- call("wdi/close", request)
92
-
93
- async def close_async(
94
- self
95
- ) -> None:
96
- """
97
- Close the connection.
98
- """
99
- request = dto.InterfaceEmptyRequest(
100
- interface_id=self.provider_id,
101
- )
102
- await call_async("wdi/close", request)
103
-
104
- @staticmethod
105
- def __free(
106
- provider_id: int
107
- ) -> None:
108
- """
109
- Frees the connection.
110
-
111
- Args:
112
- provider_id: The ID of the connection to free.
113
- """
114
- request = dto.InterfaceEmptyRequest(
115
- interface_id=provider_id,
116
- )
117
- call_sync("wdi/free", request)
118
-
119
- def generic_read(
120
- self,
121
- register_id: int,
122
- size: int,
123
- count: int = 1,
124
- offset: int = 0,
125
- register_bank: str = "U"
126
- ) -> List[int]:
127
- """
128
- Generic read operation.
129
-
130
- Args:
131
- register_id: Register address to read from.
132
- size: Data size to read. Valid values are (1,2,4). Determines the data type (Byte, Word, DWord).
133
- count: Number of values to read (defaults to 1).
134
- offset: Offset within the register (defaults to 0).
135
- register_bank: Register bank letter (defaults to U for user bank).
136
-
137
- Returns:
138
- Array of integers read from the device.
139
- """
140
- request = dto.WdiGenericRequest(
141
- interface_id=self.provider_id,
142
- register_id=register_id,
143
- size=size,
144
- count=count,
145
- offset=offset,
146
- register_bank=register_bank,
147
- )
148
- response = call(
149
- "wdi/read",
150
- request,
151
- dto.IntArrayResponse.from_binary)
152
- return response.values
153
-
154
- async def generic_read_async(
155
- self,
156
- register_id: int,
157
- size: int,
158
- count: int = 1,
159
- offset: int = 0,
160
- register_bank: str = "U"
161
- ) -> List[int]:
162
- """
163
- Generic read operation.
164
-
165
- Args:
166
- register_id: Register address to read from.
167
- size: Data size to read. Valid values are (1,2,4). Determines the data type (Byte, Word, DWord).
168
- count: Number of values to read (defaults to 1).
169
- offset: Offset within the register (defaults to 0).
170
- register_bank: Register bank letter (defaults to U for user bank).
171
-
172
- Returns:
173
- Array of integers read from the device.
174
- """
175
- request = dto.WdiGenericRequest(
176
- interface_id=self.provider_id,
177
- register_id=register_id,
178
- size=size,
179
- count=count,
180
- offset=offset,
181
- register_bank=register_bank,
182
- )
183
- response = await call_async(
184
- "wdi/read",
185
- request,
186
- dto.IntArrayResponse.from_binary)
187
- return response.values
188
-
189
- def generic_write(
190
- self,
191
- register_id: int,
192
- size: int = 0,
193
- data: List[int] = [],
194
- offset: int = 0,
195
- register_bank: str = "U"
196
- ) -> None:
197
- """
198
- Generic write operation.
199
-
200
- Args:
201
- register_id: Register address to write to.
202
- size: Data size to write. Valid values are (0,1,2,4). Determines the data type (Nil, Byte, Word, DWord).
203
- data: Array of values to write to the register. Empty array is allowed.
204
- offset: Offset within the register (defaults to 0).
205
- register_bank: Register bank letter (defaults to U for user bank).
206
- """
207
- request = dto.WdiGenericRequest(
208
- interface_id=self.provider_id,
209
- register_id=register_id,
210
- size=size,
211
- data=data,
212
- offset=offset,
213
- register_bank=register_bank,
214
- )
215
- call("wdi/write", request)
216
-
217
- async def generic_write_async(
218
- self,
219
- register_id: int,
220
- size: int = 0,
221
- data: List[int] = [],
222
- offset: int = 0,
223
- register_bank: str = "U"
224
- ) -> None:
225
- """
226
- Generic write operation.
227
-
228
- Args:
229
- register_id: Register address to write to.
230
- size: Data size to write. Valid values are (0,1,2,4). Determines the data type (Nil, Byte, Word, DWord).
231
- data: Array of values to write to the register. Empty array is allowed.
232
- offset: Offset within the register (defaults to 0).
233
- register_bank: Register bank letter (defaults to U for user bank).
234
- """
235
- request = dto.WdiGenericRequest(
236
- interface_id=self.provider_id,
237
- register_id=register_id,
238
- size=size,
239
- data=data,
240
- offset=offset,
241
- register_bank=register_bank,
242
- )
243
- await call_async("wdi/write", request)
244
-
245
- def enable_laser(
246
- self
247
- ) -> None:
248
- """
249
- Enables the laser.
250
- """
251
- request = dto.WdiGenericRequest(
252
- interface_id=self.provider_id,
253
- register_id=1,
254
- )
255
- call("wdi/write", request)
256
-
257
- async def enable_laser_async(
258
- self
259
- ) -> None:
260
- """
261
- Enables the laser.
262
- """
263
- request = dto.WdiGenericRequest(
264
- interface_id=self.provider_id,
265
- register_id=1,
266
- )
267
- await call_async("wdi/write", request)
268
-
269
- def disable_laser(
270
- self
271
- ) -> None:
272
- """
273
- Disables the laser.
274
- """
275
- request = dto.WdiGenericRequest(
276
- interface_id=self.provider_id,
277
- register_id=2,
278
- )
279
- call("wdi/write", request)
280
-
281
- async def disable_laser_async(
282
- self
283
- ) -> None:
284
- """
285
- Disables the laser.
286
- """
287
- request = dto.WdiGenericRequest(
288
- interface_id=self.provider_id,
289
- register_id=2,
290
- )
291
- await call_async("wdi/write", request)
292
-
293
- def get_status(
294
- self
295
- ) -> WdiAutofocusProviderStatus:
296
- """
297
- Gets the status of the autofocus.
298
-
299
- Returns:
300
- The status of the autofocus.
301
- """
302
- request = dto.InterfaceEmptyRequest(
303
- interface_id=self.provider_id,
304
- )
305
- response = call(
306
- "wdi/get_status",
307
- request,
308
- dto.WdiGetStatusResponse.from_binary)
309
- return response.status
310
-
311
- async def get_status_async(
312
- self
313
- ) -> WdiAutofocusProviderStatus:
314
- """
315
- Gets the status of the autofocus.
316
-
317
- Returns:
318
- The status of the autofocus.
319
- """
320
- request = dto.InterfaceEmptyRequest(
321
- interface_id=self.provider_id,
322
- )
323
- response = await call_async(
324
- "wdi/get_status",
325
- request,
326
- dto.WdiGetStatusResponse.from_binary)
327
- return response.status
328
-
329
- def __repr__(
330
- self
331
- ) -> str:
332
- """
333
- Returns a string that represents the autofocus connection.
334
-
335
- Returns:
336
- A string that represents the connection.
337
- """
338
- request = dto.InterfaceEmptyRequest(
339
- interface_id=self.provider_id,
340
- )
341
- response = call_sync(
342
- "wdi/to_string",
343
- request,
344
- dto.StringResponse.from_binary)
345
- return response.value
346
-
347
- def __enter__(self) -> 'WdiAutofocusProvider':
348
- """ __enter__ """
349
- return self
350
-
351
- def __exit__(self, _type: Any, _value: Any, _traceback: Any) -> None:
352
- """ __exit__ """
353
- self.close()
354
-
355
- def __del__(self) -> None:
356
- """ __del__ """
357
- WdiAutofocusProvider.__free(self.provider_id)
358
-
359
-
360
- class AsyncWdiAutofocusOpener:
361
- '''Provides a connection in an asynchronous context using `await` or `async with`'''
362
- def __init__(self, request: dto.OpenInterfaceRequest) -> None:
363
- self._request = request
364
- self._resource: Optional[WdiAutofocusProvider] = None
365
-
366
- async def _create_resource(self) -> WdiAutofocusProvider:
367
- task = asyncio.ensure_future(call_async(
368
- "wdi/open",
369
- self._request,
370
- dto.IntResponse.from_binary))
371
-
372
- try:
373
- response = await asyncio.shield(task)
374
- except asyncio.CancelledError:
375
- async def cancel() -> None:
376
- try:
377
- response = await task
378
- await WdiAutofocusProvider(response.value).close_async()
379
- except MotionLibException:
380
- pass
381
-
382
- asyncio.ensure_future(cancel())
383
- raise
384
-
385
- return WdiAutofocusProvider(response.value)
386
-
387
- def __await__(self) -> Generator[Any, None, 'WdiAutofocusProvider']:
388
- return self._create_resource().__await__()
389
-
390
- async def __aenter__(self) -> 'WdiAutofocusProvider':
391
- self._resource = await self._create_resource()
392
- return self._resource
393
-
394
- async def __aexit__(self, exc_type: Any, exc: Any, trace: Any) -> None:
395
- if self._resource is not None:
396
- await self._resource.close_async()
1
+ # ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
2
+ # ============== DO NOT EDIT DIRECTLY ============== #
3
+
4
+ from typing import Generator, Any, Optional, List
5
+ import asyncio
6
+
7
+ from ..call import call, call_async, call_sync
8
+ from ..exceptions.motion_lib_exception import MotionLibException
9
+
10
+ from ..dto import requests as dto
11
+ from ..dto.microscopy.wdi_autofocus_provider_status import WdiAutofocusProviderStatus
12
+ from ..dto.firmware_version import FirmwareVersion
13
+
14
+
15
+ class WdiAutofocusProvider:
16
+ """
17
+ Class representing access to WDI Autofocus connection.
18
+ """
19
+
20
+ DEFAULT_TCP_PORT = 27
21
+ """
22
+ Default port number for TCP connections to WDI autofocus.
23
+ """
24
+
25
+ @property
26
+ def provider_id(self) -> int:
27
+ """
28
+ The ID identifies the autofocus with the underlying library.
29
+ """
30
+ return self._provider_id
31
+
32
+ @property
33
+ def firmware_version(self) -> FirmwareVersion:
34
+ """
35
+ The firmware version of the connected autofocus.
36
+ """
37
+ return self.__retrieve_firmware_version()
38
+
39
+ def __init__(self, provider_id: int):
40
+ self._provider_id: int = provider_id
41
+
42
+ @staticmethod
43
+ def open_tcp(
44
+ host_name: str,
45
+ port: int = DEFAULT_TCP_PORT
46
+ ) -> 'WdiAutofocusProvider':
47
+ """
48
+ Opens a TCP connection to WDI autofocus.
49
+
50
+ Args:
51
+ host_name: Hostname or IP address.
52
+ port: Optional port number (defaults to 27).
53
+
54
+ Returns:
55
+ An object representing the autofocus connection.
56
+ """
57
+ request = dto.OpenInterfaceRequest(
58
+ interface_type=dto.InterfaceType.TCP,
59
+ host_name=host_name,
60
+ port=port,
61
+ )
62
+ response = call(
63
+ "wdi/open",
64
+ request,
65
+ dto.IntResponse.from_binary)
66
+ return WdiAutofocusProvider(response.value)
67
+
68
+ @staticmethod
69
+ def open_tcp_async(
70
+ host_name: str,
71
+ port: int = DEFAULT_TCP_PORT
72
+ ) -> 'AsyncWdiAutofocusOpener':
73
+ """
74
+ Opens a TCP connection to WDI autofocus.
75
+
76
+ Args:
77
+ host_name: Hostname or IP address.
78
+ port: Optional port number (defaults to 27).
79
+
80
+ Returns:
81
+ An object representing the autofocus connection.
82
+ """
83
+ request = dto.OpenInterfaceRequest(
84
+ interface_type=dto.InterfaceType.TCP,
85
+ host_name=host_name,
86
+ port=port,
87
+ )
88
+ return AsyncWdiAutofocusOpener(request)
89
+
90
+ def close(
91
+ self
92
+ ) -> None:
93
+ """
94
+ Close the connection.
95
+ """
96
+ request = dto.InterfaceEmptyRequest(
97
+ interface_id=self.provider_id,
98
+ )
99
+ call("wdi/close", request)
100
+
101
+ async def close_async(
102
+ self
103
+ ) -> None:
104
+ """
105
+ Close the connection.
106
+ """
107
+ request = dto.InterfaceEmptyRequest(
108
+ interface_id=self.provider_id,
109
+ )
110
+ await call_async("wdi/close", request)
111
+
112
+ @staticmethod
113
+ def __free(
114
+ provider_id: int
115
+ ) -> None:
116
+ """
117
+ Frees the connection.
118
+
119
+ Args:
120
+ provider_id: The ID of the connection to free.
121
+ """
122
+ request = dto.InterfaceEmptyRequest(
123
+ interface_id=provider_id,
124
+ )
125
+ call_sync("wdi/free", request)
126
+
127
+ def __retrieve_firmware_version(
128
+ self
129
+ ) -> FirmwareVersion:
130
+ """
131
+ Returns FW version.
132
+
133
+ Returns:
134
+ Firmware version.
135
+ """
136
+ request = dto.InterfaceEmptyRequest(
137
+ interface_id=self.provider_id,
138
+ )
139
+ response = call_sync(
140
+ "wdi/get_firmware_version",
141
+ request,
142
+ FirmwareVersion.from_binary)
143
+ return response
144
+
145
+ def generic_read(
146
+ self,
147
+ register_id: int,
148
+ size: int,
149
+ count: int = 1,
150
+ offset: int = 0,
151
+ register_bank: str = "U"
152
+ ) -> List[int]:
153
+ """
154
+ Generic read operation.
155
+
156
+ Args:
157
+ register_id: Register address to read from.
158
+ size: Data size to read. Valid values are (1,2,4). Determines the data type (Byte, Word, DWord).
159
+ count: Number of values to read (defaults to 1).
160
+ offset: Offset within the register (defaults to 0).
161
+ register_bank: Register bank letter (defaults to U for user bank).
162
+
163
+ Returns:
164
+ Array of integers read from the device.
165
+ """
166
+ request = dto.WdiGenericRequest(
167
+ interface_id=self.provider_id,
168
+ register_id=register_id,
169
+ size=size,
170
+ count=count,
171
+ offset=offset,
172
+ register_bank=register_bank,
173
+ )
174
+ response = call(
175
+ "wdi/read",
176
+ request,
177
+ dto.IntArrayResponse.from_binary)
178
+ return response.values
179
+
180
+ async def generic_read_async(
181
+ self,
182
+ register_id: int,
183
+ size: int,
184
+ count: int = 1,
185
+ offset: int = 0,
186
+ register_bank: str = "U"
187
+ ) -> List[int]:
188
+ """
189
+ Generic read operation.
190
+
191
+ Args:
192
+ register_id: Register address to read from.
193
+ size: Data size to read. Valid values are (1,2,4). Determines the data type (Byte, Word, DWord).
194
+ count: Number of values to read (defaults to 1).
195
+ offset: Offset within the register (defaults to 0).
196
+ register_bank: Register bank letter (defaults to U for user bank).
197
+
198
+ Returns:
199
+ Array of integers read from the device.
200
+ """
201
+ request = dto.WdiGenericRequest(
202
+ interface_id=self.provider_id,
203
+ register_id=register_id,
204
+ size=size,
205
+ count=count,
206
+ offset=offset,
207
+ register_bank=register_bank,
208
+ )
209
+ response = await call_async(
210
+ "wdi/read",
211
+ request,
212
+ dto.IntArrayResponse.from_binary)
213
+ return response.values
214
+
215
+ def generic_write(
216
+ self,
217
+ register_id: int,
218
+ size: int = 0,
219
+ data: List[int] = [],
220
+ offset: int = 0,
221
+ register_bank: str = "U"
222
+ ) -> None:
223
+ """
224
+ Generic write operation.
225
+
226
+ Args:
227
+ register_id: Register address to write to.
228
+ size: Data size to write. Valid values are (0,1,2,4). Determines the data type (Nil, Byte, Word, DWord).
229
+ data: Array of values to write to the register. Empty array is allowed.
230
+ offset: Offset within the register (defaults to 0).
231
+ register_bank: Register bank letter (defaults to U for user bank).
232
+ """
233
+ request = dto.WdiGenericRequest(
234
+ interface_id=self.provider_id,
235
+ register_id=register_id,
236
+ size=size,
237
+ data=data,
238
+ offset=offset,
239
+ register_bank=register_bank,
240
+ )
241
+ call("wdi/write", request)
242
+
243
+ async def generic_write_async(
244
+ self,
245
+ register_id: int,
246
+ size: int = 0,
247
+ data: List[int] = [],
248
+ offset: int = 0,
249
+ register_bank: str = "U"
250
+ ) -> None:
251
+ """
252
+ Generic write operation.
253
+
254
+ Args:
255
+ register_id: Register address to write to.
256
+ size: Data size to write. Valid values are (0,1,2,4). Determines the data type (Nil, Byte, Word, DWord).
257
+ data: Array of values to write to the register. Empty array is allowed.
258
+ offset: Offset within the register (defaults to 0).
259
+ register_bank: Register bank letter (defaults to U for user bank).
260
+ """
261
+ request = dto.WdiGenericRequest(
262
+ interface_id=self.provider_id,
263
+ register_id=register_id,
264
+ size=size,
265
+ data=data,
266
+ offset=offset,
267
+ register_bank=register_bank,
268
+ )
269
+ await call_async("wdi/write", request)
270
+
271
+ def generic_read_float(
272
+ self,
273
+ register_id: int,
274
+ count: int = 1,
275
+ offset: int = 0,
276
+ register_bank: str = "U"
277
+ ) -> List[float]:
278
+ """
279
+ Generic read operation.
280
+
281
+ Args:
282
+ register_id: Register address to read from.
283
+ count: Number of values to read (defaults to 1).
284
+ offset: Offset within the register (defaults to 0).
285
+ register_bank: Register bank letter (defaults to U for user bank).
286
+
287
+ Returns:
288
+ Array of floats read from the device.
289
+ """
290
+ request = dto.WdiGenericFloatRequest(
291
+ interface_id=self.provider_id,
292
+ register_id=register_id,
293
+ count=count,
294
+ offset=offset,
295
+ register_bank=register_bank,
296
+ )
297
+ response = call(
298
+ "wdi/read_float",
299
+ request,
300
+ dto.DoubleArrayResponse.from_binary)
301
+ return response.values
302
+
303
+ async def generic_read_float_async(
304
+ self,
305
+ register_id: int,
306
+ count: int = 1,
307
+ offset: int = 0,
308
+ register_bank: str = "U"
309
+ ) -> List[float]:
310
+ """
311
+ Generic read operation.
312
+
313
+ Args:
314
+ register_id: Register address to read from.
315
+ count: Number of values to read (defaults to 1).
316
+ offset: Offset within the register (defaults to 0).
317
+ register_bank: Register bank letter (defaults to U for user bank).
318
+
319
+ Returns:
320
+ Array of floats read from the device.
321
+ """
322
+ request = dto.WdiGenericFloatRequest(
323
+ interface_id=self.provider_id,
324
+ register_id=register_id,
325
+ count=count,
326
+ offset=offset,
327
+ register_bank=register_bank,
328
+ )
329
+ response = await call_async(
330
+ "wdi/read_float",
331
+ request,
332
+ dto.DoubleArrayResponse.from_binary)
333
+ return response.values
334
+
335
+ def generic_write_float(
336
+ self,
337
+ register_id: int,
338
+ data: List[float] = [],
339
+ offset: int = 0,
340
+ register_bank: str = "U"
341
+ ) -> None:
342
+ """
343
+ Generic write operation.
344
+
345
+ Args:
346
+ register_id: Register address to write to.
347
+ data: Array of values to write to the register. Empty array is allowed.
348
+ offset: Offset within the register (defaults to 0).
349
+ register_bank: Register bank letter (defaults to U for user bank).
350
+ """
351
+ request = dto.WdiGenericFloatRequest(
352
+ interface_id=self.provider_id,
353
+ register_id=register_id,
354
+ data=data,
355
+ offset=offset,
356
+ register_bank=register_bank,
357
+ )
358
+ call("wdi/write_float", request)
359
+
360
+ async def generic_write_float_async(
361
+ self,
362
+ register_id: int,
363
+ data: List[float] = [],
364
+ offset: int = 0,
365
+ register_bank: str = "U"
366
+ ) -> None:
367
+ """
368
+ Generic write operation.
369
+
370
+ Args:
371
+ register_id: Register address to write to.
372
+ data: Array of values to write to the register. Empty array is allowed.
373
+ offset: Offset within the register (defaults to 0).
374
+ register_bank: Register bank letter (defaults to U for user bank).
375
+ """
376
+ request = dto.WdiGenericFloatRequest(
377
+ interface_id=self.provider_id,
378
+ register_id=register_id,
379
+ data=data,
380
+ offset=offset,
381
+ register_bank=register_bank,
382
+ )
383
+ await call_async("wdi/write_float", request)
384
+
385
+ def enable_laser(
386
+ self
387
+ ) -> None:
388
+ """
389
+ Enables the laser.
390
+ """
391
+ request = dto.WdiGenericRequest(
392
+ interface_id=self.provider_id,
393
+ register_id=1,
394
+ )
395
+ call("wdi/write", request)
396
+
397
+ async def enable_laser_async(
398
+ self
399
+ ) -> None:
400
+ """
401
+ Enables the laser.
402
+ """
403
+ request = dto.WdiGenericRequest(
404
+ interface_id=self.provider_id,
405
+ register_id=1,
406
+ )
407
+ await call_async("wdi/write", request)
408
+
409
+ def disable_laser(
410
+ self
411
+ ) -> None:
412
+ """
413
+ Disables the laser.
414
+ """
415
+ request = dto.WdiGenericRequest(
416
+ interface_id=self.provider_id,
417
+ register_id=2,
418
+ )
419
+ call("wdi/write", request)
420
+
421
+ async def disable_laser_async(
422
+ self
423
+ ) -> None:
424
+ """
425
+ Disables the laser.
426
+ """
427
+ request = dto.WdiGenericRequest(
428
+ interface_id=self.provider_id,
429
+ register_id=2,
430
+ )
431
+ await call_async("wdi/write", request)
432
+
433
+ def get_status(
434
+ self
435
+ ) -> WdiAutofocusProviderStatus:
436
+ """
437
+ Gets the status of the autofocus.
438
+
439
+ Returns:
440
+ The status of the autofocus.
441
+ """
442
+ request = dto.InterfaceEmptyRequest(
443
+ interface_id=self.provider_id,
444
+ )
445
+ response = call(
446
+ "wdi/get_status",
447
+ request,
448
+ dto.WdiGetStatusResponse.from_binary)
449
+ return response.status
450
+
451
+ async def get_status_async(
452
+ self
453
+ ) -> WdiAutofocusProviderStatus:
454
+ """
455
+ Gets the status of the autofocus.
456
+
457
+ Returns:
458
+ The status of the autofocus.
459
+ """
460
+ request = dto.InterfaceEmptyRequest(
461
+ interface_id=self.provider_id,
462
+ )
463
+ response = await call_async(
464
+ "wdi/get_status",
465
+ request,
466
+ dto.WdiGetStatusResponse.from_binary)
467
+ return response.status
468
+
469
+ def __repr__(
470
+ self
471
+ ) -> str:
472
+ """
473
+ Returns a string that represents the autofocus connection.
474
+
475
+ Returns:
476
+ A string that represents the connection.
477
+ """
478
+ request = dto.InterfaceEmptyRequest(
479
+ interface_id=self.provider_id,
480
+ )
481
+ response = call_sync(
482
+ "wdi/to_string",
483
+ request,
484
+ dto.StringResponse.from_binary)
485
+ return response.value
486
+
487
+ def __enter__(self) -> 'WdiAutofocusProvider':
488
+ """ __enter__ """
489
+ return self
490
+
491
+ def __exit__(self, _type: Any, _value: Any, _traceback: Any) -> None:
492
+ """ __exit__ """
493
+ self.close()
494
+
495
+ def __del__(self) -> None:
496
+ """ __del__ """
497
+ WdiAutofocusProvider.__free(self.provider_id)
498
+
499
+
500
+ class AsyncWdiAutofocusOpener:
501
+ '''Provides a connection in an asynchronous context using `await` or `async with`'''
502
+ def __init__(self, request: dto.OpenInterfaceRequest) -> None:
503
+ self._request = request
504
+ self._resource: Optional[WdiAutofocusProvider] = None
505
+
506
+ async def _create_resource(self) -> WdiAutofocusProvider:
507
+ task = asyncio.ensure_future(call_async(
508
+ "wdi/open",
509
+ self._request,
510
+ dto.IntResponse.from_binary))
511
+
512
+ try:
513
+ response = await asyncio.shield(task)
514
+ except asyncio.CancelledError:
515
+ async def cancel() -> None:
516
+ try:
517
+ response = await task
518
+ await WdiAutofocusProvider(response.value).close_async()
519
+ except MotionLibException:
520
+ pass
521
+
522
+ asyncio.ensure_future(cancel())
523
+ raise
524
+
525
+ return WdiAutofocusProvider(response.value)
526
+
527
+ def __await__(self) -> Generator[Any, None, 'WdiAutofocusProvider']:
528
+ return self._create_resource().__await__()
529
+
530
+ async def __aenter__(self) -> 'WdiAutofocusProvider':
531
+ self._resource = await self._create_resource()
532
+ return self._resource
533
+
534
+ async def __aexit__(self, exc_type: Any, exc: Any, trace: Any) -> None:
535
+ if self._resource is not None:
536
+ await self._resource.close_async()