zaber-motion 7.13.0__py3-none-win_amd64.whl → 7.15.0__py3-none-win_amd64.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 -1673
  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 -134
  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 +96 -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 +163 -139
  474. zaber_motion/microscopy/illuminator_channel.py +629 -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.13.0.dist-info → zaber_motion-7.15.0.dist-info}/LICENSE.txt +2119 -2119
  487. {zaber_motion-7.13.0.dist-info → zaber_motion-7.15.0.dist-info}/METADATA +1 -1
  488. zaber_motion-7.15.0.dist-info/RECORD +496 -0
  489. zaber_motion_bindings/zaber-motion-core-windows-amd64.dll +0 -0
  490. zaber_motion-7.13.0.dist-info/RECORD +0 -494
  491. {zaber_motion-7.13.0.dist-info → zaber_motion-7.15.0.dist-info}/WHEEL +0 -0
  492. {zaber_motion-7.13.0.dist-info → zaber_motion-7.15.0.dist-info}/top_level.txt +0 -0
@@ -1,886 +1,886 @@
1
- # ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
2
- # ============== DO NOT EDIT DIRECTLY ============== #
3
- from typing import TYPE_CHECKING, Optional
4
- from ..dto import requests as dto
5
- from ..call import call, call_async
6
- from ..units import Units, LengthUnits, UnitsAndLiterals, TimeUnits
7
- from ..dto.ascii.trigger_state import TriggerState
8
- from ..dto.ascii.trigger_enabled_state import TriggerEnabledState
9
- from ..dto.ascii.io_port_type import IoPortType
10
- from ..dto.ascii.trigger_condition import TriggerCondition
11
- from ..dto.ascii.trigger_action import TriggerAction
12
- from ..dto.ascii.trigger_operation import TriggerOperation
13
-
14
- if TYPE_CHECKING:
15
- from .device import Device
16
-
17
-
18
- class Trigger:
19
- """
20
- A handle for a trigger with this number on the device.
21
- Triggers allow setting up actions that occur when a certain condition has been met or an event has occurred.
22
- Please note that the Triggers API is currently an experimental feature.
23
- Requires at least Firmware 7.06.
24
- """
25
-
26
- @property
27
- def device(self) -> 'Device':
28
- """
29
- Device that this trigger belongs to.
30
- """
31
- return self._device
32
-
33
- @property
34
- def trigger_number(self) -> int:
35
- """
36
- Number of this trigger.
37
- """
38
- return self._trigger_number
39
-
40
- def __init__(self, device: 'Device', trigger_number: int):
41
- self._device: 'Device' = device
42
- self._trigger_number: int = trigger_number
43
-
44
- def enable(
45
- self,
46
- count: int = 0
47
- ) -> None:
48
- """
49
- Enables the trigger.
50
- Once a trigger is enabled, it will fire whenever its condition transitions from false to true.
51
- If a trigger condition is true when a disabled trigger is enabled, the trigger will fire immediately.
52
-
53
- Args:
54
- count: Number of times the trigger will fire before disabling itself.
55
- If count is not specified, or 0, the trigger will fire indefinitely.
56
- """
57
- if count < 0:
58
- raise ValueError('Invalid value; count must be 0 or positive.')
59
-
60
- request = dto.TriggerEnableRequest(
61
- interface_id=self.device.connection.interface_id,
62
- device=self.device.device_address,
63
- trigger_number=self.trigger_number,
64
- count=count,
65
- )
66
- call("trigger/enable", request)
67
-
68
- async def enable_async(
69
- self,
70
- count: int = 0
71
- ) -> None:
72
- """
73
- Enables the trigger.
74
- Once a trigger is enabled, it will fire whenever its condition transitions from false to true.
75
- If a trigger condition is true when a disabled trigger is enabled, the trigger will fire immediately.
76
-
77
- Args:
78
- count: Number of times the trigger will fire before disabling itself.
79
- If count is not specified, or 0, the trigger will fire indefinitely.
80
- """
81
- if count < 0:
82
- raise ValueError('Invalid value; count must be 0 or positive.')
83
-
84
- request = dto.TriggerEnableRequest(
85
- interface_id=self.device.connection.interface_id,
86
- device=self.device.device_address,
87
- trigger_number=self.trigger_number,
88
- count=count,
89
- )
90
- await call_async("trigger/enable", request)
91
-
92
- def disable(
93
- self
94
- ) -> None:
95
- """
96
- Disables the trigger.
97
- Once disabled, the trigger will not fire and trigger actions will not run, even if trigger conditions are met.
98
- """
99
- request = dto.TriggerEmptyRequest(
100
- interface_id=self.device.connection.interface_id,
101
- device=self.device.device_address,
102
- trigger_number=self.trigger_number,
103
- )
104
- call("trigger/disable", request)
105
-
106
- async def disable_async(
107
- self
108
- ) -> None:
109
- """
110
- Disables the trigger.
111
- Once disabled, the trigger will not fire and trigger actions will not run, even if trigger conditions are met.
112
- """
113
- request = dto.TriggerEmptyRequest(
114
- interface_id=self.device.connection.interface_id,
115
- device=self.device.device_address,
116
- trigger_number=self.trigger_number,
117
- )
118
- await call_async("trigger/disable", request)
119
-
120
- def get_state(
121
- self
122
- ) -> TriggerState:
123
- """
124
- Gets the state of the trigger.
125
-
126
- Returns:
127
- Complete state of the trigger.
128
- """
129
- request = dto.TriggerEmptyRequest(
130
- interface_id=self.device.connection.interface_id,
131
- device=self.device.device_address,
132
- trigger_number=self.trigger_number,
133
- )
134
- response = call(
135
- "trigger/get_state",
136
- request,
137
- TriggerState.from_binary)
138
- return response
139
-
140
- async def get_state_async(
141
- self
142
- ) -> TriggerState:
143
- """
144
- Gets the state of the trigger.
145
-
146
- Returns:
147
- Complete state of the trigger.
148
- """
149
- request = dto.TriggerEmptyRequest(
150
- interface_id=self.device.connection.interface_id,
151
- device=self.device.device_address,
152
- trigger_number=self.trigger_number,
153
- )
154
- response = await call_async(
155
- "trigger/get_state",
156
- request,
157
- TriggerState.from_binary)
158
- return response
159
-
160
- def get_enabled_state(
161
- self
162
- ) -> TriggerEnabledState:
163
- """
164
- Gets the enabled state of the trigger.
165
-
166
- Returns:
167
- Whether the trigger is enabled and the number of times it will fire.
168
- """
169
- request = dto.TriggerEmptyRequest(
170
- interface_id=self.device.connection.interface_id,
171
- device=self.device.device_address,
172
- trigger_number=self.trigger_number,
173
- )
174
- response = call(
175
- "trigger/get_enabled_state",
176
- request,
177
- TriggerEnabledState.from_binary)
178
- return response
179
-
180
- async def get_enabled_state_async(
181
- self
182
- ) -> TriggerEnabledState:
183
- """
184
- Gets the enabled state of the trigger.
185
-
186
- Returns:
187
- Whether the trigger is enabled and the number of times it will fire.
188
- """
189
- request = dto.TriggerEmptyRequest(
190
- interface_id=self.device.connection.interface_id,
191
- device=self.device.device_address,
192
- trigger_number=self.trigger_number,
193
- )
194
- response = await call_async(
195
- "trigger/get_enabled_state",
196
- request,
197
- TriggerEnabledState.from_binary)
198
- return response
199
-
200
- def fire_when(
201
- self,
202
- condition: str
203
- ) -> None:
204
- """
205
- Set a generic trigger condition.
206
-
207
- Args:
208
- condition: The condition to set for this trigger.
209
- """
210
- request = dto.TriggerFireWhenRequest(
211
- interface_id=self.device.connection.interface_id,
212
- device=self.device.device_address,
213
- trigger_number=self.trigger_number,
214
- condition=condition,
215
- )
216
- call("trigger/fire_when", request)
217
-
218
- async def fire_when_async(
219
- self,
220
- condition: str
221
- ) -> None:
222
- """
223
- Set a generic trigger condition.
224
-
225
- Args:
226
- condition: The condition to set for this trigger.
227
- """
228
- request = dto.TriggerFireWhenRequest(
229
- interface_id=self.device.connection.interface_id,
230
- device=self.device.device_address,
231
- trigger_number=self.trigger_number,
232
- condition=condition,
233
- )
234
- await call_async("trigger/fire_when", request)
235
-
236
- def fire_when_encoder_distance_travelled(
237
- self,
238
- axis: int,
239
- distance: float,
240
- unit: LengthUnits = Units.NATIVE
241
- ) -> None:
242
- """
243
- Set a trigger condition for when an encoder position has changed by a specific distance.
244
-
245
- Args:
246
- axis: The axis to monitor for this condition.
247
- May be set to 0 on single-axis devices only.
248
- distance: The measured encoder distance between trigger fires.
249
- unit: Units of dist.
250
- """
251
- if distance <= 0:
252
- raise ValueError('Invalid value; encoder distance must be a positive value.')
253
-
254
- request = dto.TriggerFireWhenDistanceTravelledRequest(
255
- interface_id=self.device.connection.interface_id,
256
- device=self.device.device_address,
257
- trigger_number=self.trigger_number,
258
- axis=axis,
259
- distance=distance,
260
- unit=unit,
261
- )
262
- call("trigger/fire_when_encoder_distance_travelled", request)
263
-
264
- async def fire_when_encoder_distance_travelled_async(
265
- self,
266
- axis: int,
267
- distance: float,
268
- unit: LengthUnits = Units.NATIVE
269
- ) -> None:
270
- """
271
- Set a trigger condition for when an encoder position has changed by a specific distance.
272
-
273
- Args:
274
- axis: The axis to monitor for this condition.
275
- May be set to 0 on single-axis devices only.
276
- distance: The measured encoder distance between trigger fires.
277
- unit: Units of dist.
278
- """
279
- if distance <= 0:
280
- raise ValueError('Invalid value; encoder distance must be a positive value.')
281
-
282
- request = dto.TriggerFireWhenDistanceTravelledRequest(
283
- interface_id=self.device.connection.interface_id,
284
- device=self.device.device_address,
285
- trigger_number=self.trigger_number,
286
- axis=axis,
287
- distance=distance,
288
- unit=unit,
289
- )
290
- await call_async("trigger/fire_when_encoder_distance_travelled", request)
291
-
292
- def fire_when_distance_travelled(
293
- self,
294
- axis: int,
295
- distance: float,
296
- unit: LengthUnits = Units.NATIVE
297
- ) -> None:
298
- """
299
- Set a trigger condition for when an axis position has changed by a specific distance.
300
-
301
- Args:
302
- axis: The axis to monitor for this condition.
303
- May be set to 0 on single-axis devices only.
304
- distance: The measured distance between trigger fires.
305
- unit: Units of dist.
306
- """
307
- if distance <= 0:
308
- raise ValueError('Invalid value; distance must be a positive value.')
309
-
310
- request = dto.TriggerFireWhenDistanceTravelledRequest(
311
- interface_id=self.device.connection.interface_id,
312
- device=self.device.device_address,
313
- trigger_number=self.trigger_number,
314
- axis=axis,
315
- distance=distance,
316
- unit=unit,
317
- )
318
- call("trigger/fire_when_distance_travelled", request)
319
-
320
- async def fire_when_distance_travelled_async(
321
- self,
322
- axis: int,
323
- distance: float,
324
- unit: LengthUnits = Units.NATIVE
325
- ) -> None:
326
- """
327
- Set a trigger condition for when an axis position has changed by a specific distance.
328
-
329
- Args:
330
- axis: The axis to monitor for this condition.
331
- May be set to 0 on single-axis devices only.
332
- distance: The measured distance between trigger fires.
333
- unit: Units of dist.
334
- """
335
- if distance <= 0:
336
- raise ValueError('Invalid value; distance must be a positive value.')
337
-
338
- request = dto.TriggerFireWhenDistanceTravelledRequest(
339
- interface_id=self.device.connection.interface_id,
340
- device=self.device.device_address,
341
- trigger_number=self.trigger_number,
342
- axis=axis,
343
- distance=distance,
344
- unit=unit,
345
- )
346
- await call_async("trigger/fire_when_distance_travelled", request)
347
-
348
- def fire_when_io(
349
- self,
350
- port_type: IoPortType,
351
- channel: int,
352
- trigger_condition: TriggerCondition,
353
- value: float
354
- ) -> None:
355
- """
356
- Set a trigger condition based on an IO channel value.
357
-
358
- Args:
359
- port_type: The type of IO channel to monitor.
360
- channel: The IO channel to monitor.
361
- trigger_condition: Comparison operator.
362
- value: Comparison value.
363
- """
364
- if channel <= 0:
365
- raise ValueError('Invalid value; channel must be a positive value.')
366
-
367
- request = dto.TriggerFireWhenIoRequest(
368
- interface_id=self.device.connection.interface_id,
369
- device=self.device.device_address,
370
- trigger_number=self.trigger_number,
371
- port_type=port_type,
372
- channel=channel,
373
- trigger_condition=trigger_condition,
374
- value=value,
375
- )
376
- call("trigger/fire_when_io", request)
377
-
378
- async def fire_when_io_async(
379
- self,
380
- port_type: IoPortType,
381
- channel: int,
382
- trigger_condition: TriggerCondition,
383
- value: float
384
- ) -> None:
385
- """
386
- Set a trigger condition based on an IO channel value.
387
-
388
- Args:
389
- port_type: The type of IO channel to monitor.
390
- channel: The IO channel to monitor.
391
- trigger_condition: Comparison operator.
392
- value: Comparison value.
393
- """
394
- if channel <= 0:
395
- raise ValueError('Invalid value; channel must be a positive value.')
396
-
397
- request = dto.TriggerFireWhenIoRequest(
398
- interface_id=self.device.connection.interface_id,
399
- device=self.device.device_address,
400
- trigger_number=self.trigger_number,
401
- port_type=port_type,
402
- channel=channel,
403
- trigger_condition=trigger_condition,
404
- value=value,
405
- )
406
- await call_async("trigger/fire_when_io", request)
407
-
408
- def fire_when_setting(
409
- self,
410
- axis: int,
411
- setting: str,
412
- trigger_condition: TriggerCondition,
413
- value: float,
414
- unit: UnitsAndLiterals = Units.NATIVE
415
- ) -> None:
416
- """
417
- Set a trigger condition based on a setting value.
418
-
419
- Args:
420
- axis: The axis to monitor for this condition.
421
- Set to 0 for device-scope settings.
422
- setting: The setting to monitor.
423
- trigger_condition: Comparison operator.
424
- value: Comparison value.
425
- unit: Units of value.
426
- """
427
- request = dto.TriggerFireWhenSettingRequest(
428
- interface_id=self.device.connection.interface_id,
429
- device=self.device.device_address,
430
- trigger_number=self.trigger_number,
431
- axis=axis,
432
- setting=setting,
433
- trigger_condition=trigger_condition,
434
- value=value,
435
- unit=unit,
436
- )
437
- call("trigger/fire_when_setting", request)
438
-
439
- async def fire_when_setting_async(
440
- self,
441
- axis: int,
442
- setting: str,
443
- trigger_condition: TriggerCondition,
444
- value: float,
445
- unit: UnitsAndLiterals = Units.NATIVE
446
- ) -> None:
447
- """
448
- Set a trigger condition based on a setting value.
449
-
450
- Args:
451
- axis: The axis to monitor for this condition.
452
- Set to 0 for device-scope settings.
453
- setting: The setting to monitor.
454
- trigger_condition: Comparison operator.
455
- value: Comparison value.
456
- unit: Units of value.
457
- """
458
- request = dto.TriggerFireWhenSettingRequest(
459
- interface_id=self.device.connection.interface_id,
460
- device=self.device.device_address,
461
- trigger_number=self.trigger_number,
462
- axis=axis,
463
- setting=setting,
464
- trigger_condition=trigger_condition,
465
- value=value,
466
- unit=unit,
467
- )
468
- await call_async("trigger/fire_when_setting", request)
469
-
470
- def fire_when_absolute_setting(
471
- self,
472
- axis: int,
473
- setting: str,
474
- trigger_condition: TriggerCondition,
475
- value: float,
476
- unit: UnitsAndLiterals = Units.NATIVE
477
- ) -> None:
478
- """
479
- Set a trigger condition based on an absolute setting value.
480
-
481
- Args:
482
- axis: The axis to monitor for this condition.
483
- Set to 0 for device-scope settings.
484
- setting: The setting to monitor.
485
- trigger_condition: Comparison operator.
486
- value: Comparison value.
487
- unit: Units of value.
488
- """
489
- request = dto.TriggerFireWhenSettingRequest(
490
- interface_id=self.device.connection.interface_id,
491
- device=self.device.device_address,
492
- trigger_number=self.trigger_number,
493
- axis=axis,
494
- setting=setting,
495
- trigger_condition=trigger_condition,
496
- value=value,
497
- unit=unit,
498
- )
499
- call("trigger/fire_when_setting_absolute", request)
500
-
501
- async def fire_when_absolute_setting_async(
502
- self,
503
- axis: int,
504
- setting: str,
505
- trigger_condition: TriggerCondition,
506
- value: float,
507
- unit: UnitsAndLiterals = Units.NATIVE
508
- ) -> None:
509
- """
510
- Set a trigger condition based on an absolute setting value.
511
-
512
- Args:
513
- axis: The axis to monitor for this condition.
514
- Set to 0 for device-scope settings.
515
- setting: The setting to monitor.
516
- trigger_condition: Comparison operator.
517
- value: Comparison value.
518
- unit: Units of value.
519
- """
520
- request = dto.TriggerFireWhenSettingRequest(
521
- interface_id=self.device.connection.interface_id,
522
- device=self.device.device_address,
523
- trigger_number=self.trigger_number,
524
- axis=axis,
525
- setting=setting,
526
- trigger_condition=trigger_condition,
527
- value=value,
528
- unit=unit,
529
- )
530
- await call_async("trigger/fire_when_setting_absolute", request)
531
-
532
- def fire_at_interval(
533
- self,
534
- interval: float,
535
- unit: TimeUnits = Units.NATIVE
536
- ) -> None:
537
- """
538
- Set a trigger condition based on a time interval.
539
-
540
- Args:
541
- interval: The time interval between trigger fires.
542
- unit: Units of time.
543
- """
544
- if interval <= 0:
545
- raise ValueError('Invalid value; interval must be a positive value.')
546
-
547
- request = dto.TriggerFireAtIntervalRequest(
548
- interface_id=self.device.connection.interface_id,
549
- device=self.device.device_address,
550
- trigger_number=self.trigger_number,
551
- interval=interval,
552
- unit=unit,
553
- )
554
- call("trigger/fire_at_interval", request)
555
-
556
- async def fire_at_interval_async(
557
- self,
558
- interval: float,
559
- unit: TimeUnits = Units.NATIVE
560
- ) -> None:
561
- """
562
- Set a trigger condition based on a time interval.
563
-
564
- Args:
565
- interval: The time interval between trigger fires.
566
- unit: Units of time.
567
- """
568
- if interval <= 0:
569
- raise ValueError('Invalid value; interval must be a positive value.')
570
-
571
- request = dto.TriggerFireAtIntervalRequest(
572
- interface_id=self.device.connection.interface_id,
573
- device=self.device.device_address,
574
- trigger_number=self.trigger_number,
575
- interval=interval,
576
- unit=unit,
577
- )
578
- await call_async("trigger/fire_at_interval", request)
579
-
580
- def on_fire(
581
- self,
582
- action: TriggerAction,
583
- axis: int,
584
- command: str
585
- ) -> None:
586
- """
587
- Set a command to be a trigger action.
588
-
589
- Args:
590
- action: The action number to assign the command to.
591
- axis: The axis to on which to run this command.
592
- Set to 0 for device-scope settings or to run command on all axes.
593
- command: The command to run when the action is triggered.
594
- """
595
- request = dto.TriggerOnFireRequest(
596
- interface_id=self.device.connection.interface_id,
597
- device=self.device.device_address,
598
- trigger_number=self.trigger_number,
599
- action=action,
600
- axis=axis,
601
- command=command,
602
- )
603
- call("trigger/on_fire", request)
604
-
605
- async def on_fire_async(
606
- self,
607
- action: TriggerAction,
608
- axis: int,
609
- command: str
610
- ) -> None:
611
- """
612
- Set a command to be a trigger action.
613
-
614
- Args:
615
- action: The action number to assign the command to.
616
- axis: The axis to on which to run this command.
617
- Set to 0 for device-scope settings or to run command on all axes.
618
- command: The command to run when the action is triggered.
619
- """
620
- request = dto.TriggerOnFireRequest(
621
- interface_id=self.device.connection.interface_id,
622
- device=self.device.device_address,
623
- trigger_number=self.trigger_number,
624
- action=action,
625
- axis=axis,
626
- command=command,
627
- )
628
- await call_async("trigger/on_fire", request)
629
-
630
- def on_fire_set(
631
- self,
632
- action: TriggerAction,
633
- axis: int,
634
- setting: str,
635
- operation: TriggerOperation,
636
- value: float,
637
- unit: UnitsAndLiterals = Units.NATIVE
638
- ) -> None:
639
- """
640
- Set a trigger action to update a setting.
641
-
642
- Args:
643
- action: The action number to assign the command to.
644
- axis: The axis on which to change the setting.
645
- Set to 0 to change the setting for the device.
646
- setting: The name of the setting to change.
647
- operation: The operation to apply to the setting.
648
- value: Operation value.
649
- unit: Units of value.
650
- """
651
- request = dto.TriggerOnFireSetRequest(
652
- interface_id=self.device.connection.interface_id,
653
- device=self.device.device_address,
654
- trigger_number=self.trigger_number,
655
- action=action,
656
- axis=axis,
657
- setting=setting,
658
- operation=operation,
659
- value=value,
660
- unit=unit,
661
- )
662
- call("trigger/on_fire_set", request)
663
-
664
- async def on_fire_set_async(
665
- self,
666
- action: TriggerAction,
667
- axis: int,
668
- setting: str,
669
- operation: TriggerOperation,
670
- value: float,
671
- unit: UnitsAndLiterals = Units.NATIVE
672
- ) -> None:
673
- """
674
- Set a trigger action to update a setting.
675
-
676
- Args:
677
- action: The action number to assign the command to.
678
- axis: The axis on which to change the setting.
679
- Set to 0 to change the setting for the device.
680
- setting: The name of the setting to change.
681
- operation: The operation to apply to the setting.
682
- value: Operation value.
683
- unit: Units of value.
684
- """
685
- request = dto.TriggerOnFireSetRequest(
686
- interface_id=self.device.connection.interface_id,
687
- device=self.device.device_address,
688
- trigger_number=self.trigger_number,
689
- action=action,
690
- axis=axis,
691
- setting=setting,
692
- operation=operation,
693
- value=value,
694
- unit=unit,
695
- )
696
- await call_async("trigger/on_fire_set", request)
697
-
698
- def on_fire_set_to_setting(
699
- self,
700
- action: TriggerAction,
701
- axis: int,
702
- setting: str,
703
- operation: TriggerOperation,
704
- from_axis: int,
705
- from_setting: str
706
- ) -> None:
707
- """
708
- Set a trigger action to update a setting with the value of another setting.
709
-
710
- Args:
711
- action: The action number to assign the command to.
712
- axis: The axis on which to change the setting.
713
- Set to 0 to change the setting for the device.
714
- setting: The name of the setting to change.
715
- Must have either integer or boolean type.
716
- operation: The operation to apply to the setting.
717
- from_axis: The axis from which to read the setting.
718
- Set to 0 to read the setting from the device.
719
- from_setting: The name of the setting to read.
720
- Must have either integer or boolean type.
721
- """
722
- request = dto.TriggerOnFireSetToSettingRequest(
723
- interface_id=self.device.connection.interface_id,
724
- device=self.device.device_address,
725
- trigger_number=self.trigger_number,
726
- action=action,
727
- axis=axis,
728
- setting=setting,
729
- operation=operation,
730
- from_axis=from_axis,
731
- from_setting=from_setting,
732
- )
733
- call("trigger/on_fire_set_to_setting", request)
734
-
735
- async def on_fire_set_to_setting_async(
736
- self,
737
- action: TriggerAction,
738
- axis: int,
739
- setting: str,
740
- operation: TriggerOperation,
741
- from_axis: int,
742
- from_setting: str
743
- ) -> None:
744
- """
745
- Set a trigger action to update a setting with the value of another setting.
746
-
747
- Args:
748
- action: The action number to assign the command to.
749
- axis: The axis on which to change the setting.
750
- Set to 0 to change the setting for the device.
751
- setting: The name of the setting to change.
752
- Must have either integer or boolean type.
753
- operation: The operation to apply to the setting.
754
- from_axis: The axis from which to read the setting.
755
- Set to 0 to read the setting from the device.
756
- from_setting: The name of the setting to read.
757
- Must have either integer or boolean type.
758
- """
759
- request = dto.TriggerOnFireSetToSettingRequest(
760
- interface_id=self.device.connection.interface_id,
761
- device=self.device.device_address,
762
- trigger_number=self.trigger_number,
763
- action=action,
764
- axis=axis,
765
- setting=setting,
766
- operation=operation,
767
- from_axis=from_axis,
768
- from_setting=from_setting,
769
- )
770
- await call_async("trigger/on_fire_set_to_setting", request)
771
-
772
- def clear_action(
773
- self,
774
- action: TriggerAction = TriggerAction.ALL
775
- ) -> None:
776
- """
777
- Clear a trigger action.
778
-
779
- Args:
780
- action: The action number to clear.
781
- The default option is to clear all actions.
782
- """
783
- request = dto.TriggerClearActionRequest(
784
- interface_id=self.device.connection.interface_id,
785
- device=self.device.device_address,
786
- trigger_number=self.trigger_number,
787
- action=action,
788
- )
789
- call("trigger/clear_action", request)
790
-
791
- async def clear_action_async(
792
- self,
793
- action: TriggerAction = TriggerAction.ALL
794
- ) -> None:
795
- """
796
- Clear a trigger action.
797
-
798
- Args:
799
- action: The action number to clear.
800
- The default option is to clear all actions.
801
- """
802
- request = dto.TriggerClearActionRequest(
803
- interface_id=self.device.connection.interface_id,
804
- device=self.device.device_address,
805
- trigger_number=self.trigger_number,
806
- action=action,
807
- )
808
- await call_async("trigger/clear_action", request)
809
-
810
- def get_label(
811
- self
812
- ) -> str:
813
- """
814
- Returns the label for the trigger.
815
-
816
- Returns:
817
- The label for the trigger.
818
- """
819
- request = dto.TriggerEmptyRequest(
820
- interface_id=self.device.connection.interface_id,
821
- device=self.device.device_address,
822
- trigger_number=self.trigger_number,
823
- )
824
- response = call(
825
- "trigger/get_label",
826
- request,
827
- dto.StringResponse.from_binary)
828
- return response.value
829
-
830
- async def get_label_async(
831
- self
832
- ) -> str:
833
- """
834
- Returns the label for the trigger.
835
-
836
- Returns:
837
- The label for the trigger.
838
- """
839
- request = dto.TriggerEmptyRequest(
840
- interface_id=self.device.connection.interface_id,
841
- device=self.device.device_address,
842
- trigger_number=self.trigger_number,
843
- )
844
- response = await call_async(
845
- "trigger/get_label",
846
- request,
847
- dto.StringResponse.from_binary)
848
- return response.value
849
-
850
- def set_label(
851
- self,
852
- label: Optional[str]
853
- ) -> None:
854
- """
855
- Sets the label for the trigger.
856
-
857
- Args:
858
- label: The label to set for this trigger.
859
- If no value or an empty string is provided, this label is deleted.
860
- """
861
- request = dto.TriggerSetLabelRequest(
862
- interface_id=self.device.connection.interface_id,
863
- device=self.device.device_address,
864
- trigger_number=self.trigger_number,
865
- label=label,
866
- )
867
- call("trigger/set_label", request)
868
-
869
- async def set_label_async(
870
- self,
871
- label: Optional[str]
872
- ) -> None:
873
- """
874
- Sets the label for the trigger.
875
-
876
- Args:
877
- label: The label to set for this trigger.
878
- If no value or an empty string is provided, this label is deleted.
879
- """
880
- request = dto.TriggerSetLabelRequest(
881
- interface_id=self.device.connection.interface_id,
882
- device=self.device.device_address,
883
- trigger_number=self.trigger_number,
884
- label=label,
885
- )
886
- await call_async("trigger/set_label", request)
1
+ # ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
2
+ # ============== DO NOT EDIT DIRECTLY ============== #
3
+ from typing import TYPE_CHECKING, Optional
4
+ from ..dto import requests as dto
5
+ from ..call import call, call_async
6
+ from ..units import Units, LengthUnits, UnitsAndLiterals, TimeUnits
7
+ from ..dto.ascii.trigger_state import TriggerState
8
+ from ..dto.ascii.trigger_enabled_state import TriggerEnabledState
9
+ from ..dto.ascii.io_port_type import IoPortType
10
+ from ..dto.ascii.trigger_condition import TriggerCondition
11
+ from ..dto.ascii.trigger_action import TriggerAction
12
+ from ..dto.ascii.trigger_operation import TriggerOperation
13
+
14
+ if TYPE_CHECKING:
15
+ from .device import Device
16
+
17
+
18
+ class Trigger:
19
+ """
20
+ A handle for a trigger with this number on the device.
21
+ Triggers allow setting up actions that occur when a certain condition has been met or an event has occurred.
22
+ Please note that the Triggers API is currently an experimental feature.
23
+ Requires at least Firmware 7.06.
24
+ """
25
+
26
+ @property
27
+ def device(self) -> 'Device':
28
+ """
29
+ Device that this trigger belongs to.
30
+ """
31
+ return self._device
32
+
33
+ @property
34
+ def trigger_number(self) -> int:
35
+ """
36
+ Number of this trigger.
37
+ """
38
+ return self._trigger_number
39
+
40
+ def __init__(self, device: 'Device', trigger_number: int):
41
+ self._device: 'Device' = device
42
+ self._trigger_number: int = trigger_number
43
+
44
+ def enable(
45
+ self,
46
+ count: int = 0
47
+ ) -> None:
48
+ """
49
+ Enables the trigger.
50
+ Once a trigger is enabled, it will fire whenever its condition transitions from false to true.
51
+ If a trigger condition is true when a disabled trigger is enabled, the trigger will fire immediately.
52
+
53
+ Args:
54
+ count: Number of times the trigger will fire before disabling itself.
55
+ If count is not specified, or 0, the trigger will fire indefinitely.
56
+ """
57
+ if count < 0:
58
+ raise ValueError('Invalid value; count must be 0 or positive.')
59
+
60
+ request = dto.TriggerEnableRequest(
61
+ interface_id=self.device.connection.interface_id,
62
+ device=self.device.device_address,
63
+ trigger_number=self.trigger_number,
64
+ count=count,
65
+ )
66
+ call("trigger/enable", request)
67
+
68
+ async def enable_async(
69
+ self,
70
+ count: int = 0
71
+ ) -> None:
72
+ """
73
+ Enables the trigger.
74
+ Once a trigger is enabled, it will fire whenever its condition transitions from false to true.
75
+ If a trigger condition is true when a disabled trigger is enabled, the trigger will fire immediately.
76
+
77
+ Args:
78
+ count: Number of times the trigger will fire before disabling itself.
79
+ If count is not specified, or 0, the trigger will fire indefinitely.
80
+ """
81
+ if count < 0:
82
+ raise ValueError('Invalid value; count must be 0 or positive.')
83
+
84
+ request = dto.TriggerEnableRequest(
85
+ interface_id=self.device.connection.interface_id,
86
+ device=self.device.device_address,
87
+ trigger_number=self.trigger_number,
88
+ count=count,
89
+ )
90
+ await call_async("trigger/enable", request)
91
+
92
+ def disable(
93
+ self
94
+ ) -> None:
95
+ """
96
+ Disables the trigger.
97
+ Once disabled, the trigger will not fire and trigger actions will not run, even if trigger conditions are met.
98
+ """
99
+ request = dto.TriggerEmptyRequest(
100
+ interface_id=self.device.connection.interface_id,
101
+ device=self.device.device_address,
102
+ trigger_number=self.trigger_number,
103
+ )
104
+ call("trigger/disable", request)
105
+
106
+ async def disable_async(
107
+ self
108
+ ) -> None:
109
+ """
110
+ Disables the trigger.
111
+ Once disabled, the trigger will not fire and trigger actions will not run, even if trigger conditions are met.
112
+ """
113
+ request = dto.TriggerEmptyRequest(
114
+ interface_id=self.device.connection.interface_id,
115
+ device=self.device.device_address,
116
+ trigger_number=self.trigger_number,
117
+ )
118
+ await call_async("trigger/disable", request)
119
+
120
+ def get_state(
121
+ self
122
+ ) -> TriggerState:
123
+ """
124
+ Gets the state of the trigger.
125
+
126
+ Returns:
127
+ Complete state of the trigger.
128
+ """
129
+ request = dto.TriggerEmptyRequest(
130
+ interface_id=self.device.connection.interface_id,
131
+ device=self.device.device_address,
132
+ trigger_number=self.trigger_number,
133
+ )
134
+ response = call(
135
+ "trigger/get_state",
136
+ request,
137
+ TriggerState.from_binary)
138
+ return response
139
+
140
+ async def get_state_async(
141
+ self
142
+ ) -> TriggerState:
143
+ """
144
+ Gets the state of the trigger.
145
+
146
+ Returns:
147
+ Complete state of the trigger.
148
+ """
149
+ request = dto.TriggerEmptyRequest(
150
+ interface_id=self.device.connection.interface_id,
151
+ device=self.device.device_address,
152
+ trigger_number=self.trigger_number,
153
+ )
154
+ response = await call_async(
155
+ "trigger/get_state",
156
+ request,
157
+ TriggerState.from_binary)
158
+ return response
159
+
160
+ def get_enabled_state(
161
+ self
162
+ ) -> TriggerEnabledState:
163
+ """
164
+ Gets the enabled state of the trigger.
165
+
166
+ Returns:
167
+ Whether the trigger is enabled and the number of times it will fire.
168
+ """
169
+ request = dto.TriggerEmptyRequest(
170
+ interface_id=self.device.connection.interface_id,
171
+ device=self.device.device_address,
172
+ trigger_number=self.trigger_number,
173
+ )
174
+ response = call(
175
+ "trigger/get_enabled_state",
176
+ request,
177
+ TriggerEnabledState.from_binary)
178
+ return response
179
+
180
+ async def get_enabled_state_async(
181
+ self
182
+ ) -> TriggerEnabledState:
183
+ """
184
+ Gets the enabled state of the trigger.
185
+
186
+ Returns:
187
+ Whether the trigger is enabled and the number of times it will fire.
188
+ """
189
+ request = dto.TriggerEmptyRequest(
190
+ interface_id=self.device.connection.interface_id,
191
+ device=self.device.device_address,
192
+ trigger_number=self.trigger_number,
193
+ )
194
+ response = await call_async(
195
+ "trigger/get_enabled_state",
196
+ request,
197
+ TriggerEnabledState.from_binary)
198
+ return response
199
+
200
+ def fire_when(
201
+ self,
202
+ condition: str
203
+ ) -> None:
204
+ """
205
+ Set a generic trigger condition.
206
+
207
+ Args:
208
+ condition: The condition to set for this trigger.
209
+ """
210
+ request = dto.TriggerFireWhenRequest(
211
+ interface_id=self.device.connection.interface_id,
212
+ device=self.device.device_address,
213
+ trigger_number=self.trigger_number,
214
+ condition=condition,
215
+ )
216
+ call("trigger/fire_when", request)
217
+
218
+ async def fire_when_async(
219
+ self,
220
+ condition: str
221
+ ) -> None:
222
+ """
223
+ Set a generic trigger condition.
224
+
225
+ Args:
226
+ condition: The condition to set for this trigger.
227
+ """
228
+ request = dto.TriggerFireWhenRequest(
229
+ interface_id=self.device.connection.interface_id,
230
+ device=self.device.device_address,
231
+ trigger_number=self.trigger_number,
232
+ condition=condition,
233
+ )
234
+ await call_async("trigger/fire_when", request)
235
+
236
+ def fire_when_encoder_distance_travelled(
237
+ self,
238
+ axis: int,
239
+ distance: float,
240
+ unit: LengthUnits = Units.NATIVE
241
+ ) -> None:
242
+ """
243
+ Set a trigger condition for when an encoder position has changed by a specific distance.
244
+
245
+ Args:
246
+ axis: The axis to monitor for this condition.
247
+ May be set to 0 on single-axis devices only.
248
+ distance: The measured encoder distance between trigger fires.
249
+ unit: Units of dist.
250
+ """
251
+ if distance <= 0:
252
+ raise ValueError('Invalid value; encoder distance must be a positive value.')
253
+
254
+ request = dto.TriggerFireWhenDistanceTravelledRequest(
255
+ interface_id=self.device.connection.interface_id,
256
+ device=self.device.device_address,
257
+ trigger_number=self.trigger_number,
258
+ axis=axis,
259
+ distance=distance,
260
+ unit=unit,
261
+ )
262
+ call("trigger/fire_when_encoder_distance_travelled", request)
263
+
264
+ async def fire_when_encoder_distance_travelled_async(
265
+ self,
266
+ axis: int,
267
+ distance: float,
268
+ unit: LengthUnits = Units.NATIVE
269
+ ) -> None:
270
+ """
271
+ Set a trigger condition for when an encoder position has changed by a specific distance.
272
+
273
+ Args:
274
+ axis: The axis to monitor for this condition.
275
+ May be set to 0 on single-axis devices only.
276
+ distance: The measured encoder distance between trigger fires.
277
+ unit: Units of dist.
278
+ """
279
+ if distance <= 0:
280
+ raise ValueError('Invalid value; encoder distance must be a positive value.')
281
+
282
+ request = dto.TriggerFireWhenDistanceTravelledRequest(
283
+ interface_id=self.device.connection.interface_id,
284
+ device=self.device.device_address,
285
+ trigger_number=self.trigger_number,
286
+ axis=axis,
287
+ distance=distance,
288
+ unit=unit,
289
+ )
290
+ await call_async("trigger/fire_when_encoder_distance_travelled", request)
291
+
292
+ def fire_when_distance_travelled(
293
+ self,
294
+ axis: int,
295
+ distance: float,
296
+ unit: LengthUnits = Units.NATIVE
297
+ ) -> None:
298
+ """
299
+ Set a trigger condition for when an axis position has changed by a specific distance.
300
+
301
+ Args:
302
+ axis: The axis to monitor for this condition.
303
+ May be set to 0 on single-axis devices only.
304
+ distance: The measured distance between trigger fires.
305
+ unit: Units of dist.
306
+ """
307
+ if distance <= 0:
308
+ raise ValueError('Invalid value; distance must be a positive value.')
309
+
310
+ request = dto.TriggerFireWhenDistanceTravelledRequest(
311
+ interface_id=self.device.connection.interface_id,
312
+ device=self.device.device_address,
313
+ trigger_number=self.trigger_number,
314
+ axis=axis,
315
+ distance=distance,
316
+ unit=unit,
317
+ )
318
+ call("trigger/fire_when_distance_travelled", request)
319
+
320
+ async def fire_when_distance_travelled_async(
321
+ self,
322
+ axis: int,
323
+ distance: float,
324
+ unit: LengthUnits = Units.NATIVE
325
+ ) -> None:
326
+ """
327
+ Set a trigger condition for when an axis position has changed by a specific distance.
328
+
329
+ Args:
330
+ axis: The axis to monitor for this condition.
331
+ May be set to 0 on single-axis devices only.
332
+ distance: The measured distance between trigger fires.
333
+ unit: Units of dist.
334
+ """
335
+ if distance <= 0:
336
+ raise ValueError('Invalid value; distance must be a positive value.')
337
+
338
+ request = dto.TriggerFireWhenDistanceTravelledRequest(
339
+ interface_id=self.device.connection.interface_id,
340
+ device=self.device.device_address,
341
+ trigger_number=self.trigger_number,
342
+ axis=axis,
343
+ distance=distance,
344
+ unit=unit,
345
+ )
346
+ await call_async("trigger/fire_when_distance_travelled", request)
347
+
348
+ def fire_when_io(
349
+ self,
350
+ port_type: IoPortType,
351
+ channel: int,
352
+ trigger_condition: TriggerCondition,
353
+ value: float
354
+ ) -> None:
355
+ """
356
+ Set a trigger condition based on an IO channel value.
357
+
358
+ Args:
359
+ port_type: The type of IO channel to monitor.
360
+ channel: The IO channel to monitor.
361
+ trigger_condition: Comparison operator.
362
+ value: Comparison value.
363
+ """
364
+ if channel <= 0:
365
+ raise ValueError('Invalid value; channel must be a positive value.')
366
+
367
+ request = dto.TriggerFireWhenIoRequest(
368
+ interface_id=self.device.connection.interface_id,
369
+ device=self.device.device_address,
370
+ trigger_number=self.trigger_number,
371
+ port_type=port_type,
372
+ channel=channel,
373
+ trigger_condition=trigger_condition,
374
+ value=value,
375
+ )
376
+ call("trigger/fire_when_io", request)
377
+
378
+ async def fire_when_io_async(
379
+ self,
380
+ port_type: IoPortType,
381
+ channel: int,
382
+ trigger_condition: TriggerCondition,
383
+ value: float
384
+ ) -> None:
385
+ """
386
+ Set a trigger condition based on an IO channel value.
387
+
388
+ Args:
389
+ port_type: The type of IO channel to monitor.
390
+ channel: The IO channel to monitor.
391
+ trigger_condition: Comparison operator.
392
+ value: Comparison value.
393
+ """
394
+ if channel <= 0:
395
+ raise ValueError('Invalid value; channel must be a positive value.')
396
+
397
+ request = dto.TriggerFireWhenIoRequest(
398
+ interface_id=self.device.connection.interface_id,
399
+ device=self.device.device_address,
400
+ trigger_number=self.trigger_number,
401
+ port_type=port_type,
402
+ channel=channel,
403
+ trigger_condition=trigger_condition,
404
+ value=value,
405
+ )
406
+ await call_async("trigger/fire_when_io", request)
407
+
408
+ def fire_when_setting(
409
+ self,
410
+ axis: int,
411
+ setting: str,
412
+ trigger_condition: TriggerCondition,
413
+ value: float,
414
+ unit: UnitsAndLiterals = Units.NATIVE
415
+ ) -> None:
416
+ """
417
+ Set a trigger condition based on a setting value.
418
+
419
+ Args:
420
+ axis: The axis to monitor for this condition.
421
+ Set to 0 for device-scope settings.
422
+ setting: The setting to monitor.
423
+ trigger_condition: Comparison operator.
424
+ value: Comparison value.
425
+ unit: Units of value.
426
+ """
427
+ request = dto.TriggerFireWhenSettingRequest(
428
+ interface_id=self.device.connection.interface_id,
429
+ device=self.device.device_address,
430
+ trigger_number=self.trigger_number,
431
+ axis=axis,
432
+ setting=setting,
433
+ trigger_condition=trigger_condition,
434
+ value=value,
435
+ unit=unit,
436
+ )
437
+ call("trigger/fire_when_setting", request)
438
+
439
+ async def fire_when_setting_async(
440
+ self,
441
+ axis: int,
442
+ setting: str,
443
+ trigger_condition: TriggerCondition,
444
+ value: float,
445
+ unit: UnitsAndLiterals = Units.NATIVE
446
+ ) -> None:
447
+ """
448
+ Set a trigger condition based on a setting value.
449
+
450
+ Args:
451
+ axis: The axis to monitor for this condition.
452
+ Set to 0 for device-scope settings.
453
+ setting: The setting to monitor.
454
+ trigger_condition: Comparison operator.
455
+ value: Comparison value.
456
+ unit: Units of value.
457
+ """
458
+ request = dto.TriggerFireWhenSettingRequest(
459
+ interface_id=self.device.connection.interface_id,
460
+ device=self.device.device_address,
461
+ trigger_number=self.trigger_number,
462
+ axis=axis,
463
+ setting=setting,
464
+ trigger_condition=trigger_condition,
465
+ value=value,
466
+ unit=unit,
467
+ )
468
+ await call_async("trigger/fire_when_setting", request)
469
+
470
+ def fire_when_absolute_setting(
471
+ self,
472
+ axis: int,
473
+ setting: str,
474
+ trigger_condition: TriggerCondition,
475
+ value: float,
476
+ unit: UnitsAndLiterals = Units.NATIVE
477
+ ) -> None:
478
+ """
479
+ Set a trigger condition based on an absolute setting value.
480
+
481
+ Args:
482
+ axis: The axis to monitor for this condition.
483
+ Set to 0 for device-scope settings.
484
+ setting: The setting to monitor.
485
+ trigger_condition: Comparison operator.
486
+ value: Comparison value.
487
+ unit: Units of value.
488
+ """
489
+ request = dto.TriggerFireWhenSettingRequest(
490
+ interface_id=self.device.connection.interface_id,
491
+ device=self.device.device_address,
492
+ trigger_number=self.trigger_number,
493
+ axis=axis,
494
+ setting=setting,
495
+ trigger_condition=trigger_condition,
496
+ value=value,
497
+ unit=unit,
498
+ )
499
+ call("trigger/fire_when_setting_absolute", request)
500
+
501
+ async def fire_when_absolute_setting_async(
502
+ self,
503
+ axis: int,
504
+ setting: str,
505
+ trigger_condition: TriggerCondition,
506
+ value: float,
507
+ unit: UnitsAndLiterals = Units.NATIVE
508
+ ) -> None:
509
+ """
510
+ Set a trigger condition based on an absolute setting value.
511
+
512
+ Args:
513
+ axis: The axis to monitor for this condition.
514
+ Set to 0 for device-scope settings.
515
+ setting: The setting to monitor.
516
+ trigger_condition: Comparison operator.
517
+ value: Comparison value.
518
+ unit: Units of value.
519
+ """
520
+ request = dto.TriggerFireWhenSettingRequest(
521
+ interface_id=self.device.connection.interface_id,
522
+ device=self.device.device_address,
523
+ trigger_number=self.trigger_number,
524
+ axis=axis,
525
+ setting=setting,
526
+ trigger_condition=trigger_condition,
527
+ value=value,
528
+ unit=unit,
529
+ )
530
+ await call_async("trigger/fire_when_setting_absolute", request)
531
+
532
+ def fire_at_interval(
533
+ self,
534
+ interval: float,
535
+ unit: TimeUnits = Units.NATIVE
536
+ ) -> None:
537
+ """
538
+ Set a trigger condition based on a time interval.
539
+
540
+ Args:
541
+ interval: The time interval between trigger fires.
542
+ unit: Units of time.
543
+ """
544
+ if interval <= 0:
545
+ raise ValueError('Invalid value; interval must be a positive value.')
546
+
547
+ request = dto.TriggerFireAtIntervalRequest(
548
+ interface_id=self.device.connection.interface_id,
549
+ device=self.device.device_address,
550
+ trigger_number=self.trigger_number,
551
+ interval=interval,
552
+ unit=unit,
553
+ )
554
+ call("trigger/fire_at_interval", request)
555
+
556
+ async def fire_at_interval_async(
557
+ self,
558
+ interval: float,
559
+ unit: TimeUnits = Units.NATIVE
560
+ ) -> None:
561
+ """
562
+ Set a trigger condition based on a time interval.
563
+
564
+ Args:
565
+ interval: The time interval between trigger fires.
566
+ unit: Units of time.
567
+ """
568
+ if interval <= 0:
569
+ raise ValueError('Invalid value; interval must be a positive value.')
570
+
571
+ request = dto.TriggerFireAtIntervalRequest(
572
+ interface_id=self.device.connection.interface_id,
573
+ device=self.device.device_address,
574
+ trigger_number=self.trigger_number,
575
+ interval=interval,
576
+ unit=unit,
577
+ )
578
+ await call_async("trigger/fire_at_interval", request)
579
+
580
+ def on_fire(
581
+ self,
582
+ action: TriggerAction,
583
+ axis: int,
584
+ command: str
585
+ ) -> None:
586
+ """
587
+ Set a command to be a trigger action.
588
+
589
+ Args:
590
+ action: The action number to assign the command to.
591
+ axis: The axis to on which to run this command.
592
+ Set to 0 for device-scope settings or to run command on all axes.
593
+ command: The command to run when the action is triggered.
594
+ """
595
+ request = dto.TriggerOnFireRequest(
596
+ interface_id=self.device.connection.interface_id,
597
+ device=self.device.device_address,
598
+ trigger_number=self.trigger_number,
599
+ action=action,
600
+ axis=axis,
601
+ command=command,
602
+ )
603
+ call("trigger/on_fire", request)
604
+
605
+ async def on_fire_async(
606
+ self,
607
+ action: TriggerAction,
608
+ axis: int,
609
+ command: str
610
+ ) -> None:
611
+ """
612
+ Set a command to be a trigger action.
613
+
614
+ Args:
615
+ action: The action number to assign the command to.
616
+ axis: The axis to on which to run this command.
617
+ Set to 0 for device-scope settings or to run command on all axes.
618
+ command: The command to run when the action is triggered.
619
+ """
620
+ request = dto.TriggerOnFireRequest(
621
+ interface_id=self.device.connection.interface_id,
622
+ device=self.device.device_address,
623
+ trigger_number=self.trigger_number,
624
+ action=action,
625
+ axis=axis,
626
+ command=command,
627
+ )
628
+ await call_async("trigger/on_fire", request)
629
+
630
+ def on_fire_set(
631
+ self,
632
+ action: TriggerAction,
633
+ axis: int,
634
+ setting: str,
635
+ operation: TriggerOperation,
636
+ value: float,
637
+ unit: UnitsAndLiterals = Units.NATIVE
638
+ ) -> None:
639
+ """
640
+ Set a trigger action to update a setting.
641
+
642
+ Args:
643
+ action: The action number to assign the command to.
644
+ axis: The axis on which to change the setting.
645
+ Set to 0 to change the setting for the device.
646
+ setting: The name of the setting to change.
647
+ operation: The operation to apply to the setting.
648
+ value: Operation value.
649
+ unit: Units of value.
650
+ """
651
+ request = dto.TriggerOnFireSetRequest(
652
+ interface_id=self.device.connection.interface_id,
653
+ device=self.device.device_address,
654
+ trigger_number=self.trigger_number,
655
+ action=action,
656
+ axis=axis,
657
+ setting=setting,
658
+ operation=operation,
659
+ value=value,
660
+ unit=unit,
661
+ )
662
+ call("trigger/on_fire_set", request)
663
+
664
+ async def on_fire_set_async(
665
+ self,
666
+ action: TriggerAction,
667
+ axis: int,
668
+ setting: str,
669
+ operation: TriggerOperation,
670
+ value: float,
671
+ unit: UnitsAndLiterals = Units.NATIVE
672
+ ) -> None:
673
+ """
674
+ Set a trigger action to update a setting.
675
+
676
+ Args:
677
+ action: The action number to assign the command to.
678
+ axis: The axis on which to change the setting.
679
+ Set to 0 to change the setting for the device.
680
+ setting: The name of the setting to change.
681
+ operation: The operation to apply to the setting.
682
+ value: Operation value.
683
+ unit: Units of value.
684
+ """
685
+ request = dto.TriggerOnFireSetRequest(
686
+ interface_id=self.device.connection.interface_id,
687
+ device=self.device.device_address,
688
+ trigger_number=self.trigger_number,
689
+ action=action,
690
+ axis=axis,
691
+ setting=setting,
692
+ operation=operation,
693
+ value=value,
694
+ unit=unit,
695
+ )
696
+ await call_async("trigger/on_fire_set", request)
697
+
698
+ def on_fire_set_to_setting(
699
+ self,
700
+ action: TriggerAction,
701
+ axis: int,
702
+ setting: str,
703
+ operation: TriggerOperation,
704
+ from_axis: int,
705
+ from_setting: str
706
+ ) -> None:
707
+ """
708
+ Set a trigger action to update a setting with the value of another setting.
709
+
710
+ Args:
711
+ action: The action number to assign the command to.
712
+ axis: The axis on which to change the setting.
713
+ Set to 0 to change the setting for the device.
714
+ setting: The name of the setting to change.
715
+ Must have either integer or boolean type.
716
+ operation: The operation to apply to the setting.
717
+ from_axis: The axis from which to read the setting.
718
+ Set to 0 to read the setting from the device.
719
+ from_setting: The name of the setting to read.
720
+ Must have either integer or boolean type.
721
+ """
722
+ request = dto.TriggerOnFireSetToSettingRequest(
723
+ interface_id=self.device.connection.interface_id,
724
+ device=self.device.device_address,
725
+ trigger_number=self.trigger_number,
726
+ action=action,
727
+ axis=axis,
728
+ setting=setting,
729
+ operation=operation,
730
+ from_axis=from_axis,
731
+ from_setting=from_setting,
732
+ )
733
+ call("trigger/on_fire_set_to_setting", request)
734
+
735
+ async def on_fire_set_to_setting_async(
736
+ self,
737
+ action: TriggerAction,
738
+ axis: int,
739
+ setting: str,
740
+ operation: TriggerOperation,
741
+ from_axis: int,
742
+ from_setting: str
743
+ ) -> None:
744
+ """
745
+ Set a trigger action to update a setting with the value of another setting.
746
+
747
+ Args:
748
+ action: The action number to assign the command to.
749
+ axis: The axis on which to change the setting.
750
+ Set to 0 to change the setting for the device.
751
+ setting: The name of the setting to change.
752
+ Must have either integer or boolean type.
753
+ operation: The operation to apply to the setting.
754
+ from_axis: The axis from which to read the setting.
755
+ Set to 0 to read the setting from the device.
756
+ from_setting: The name of the setting to read.
757
+ Must have either integer or boolean type.
758
+ """
759
+ request = dto.TriggerOnFireSetToSettingRequest(
760
+ interface_id=self.device.connection.interface_id,
761
+ device=self.device.device_address,
762
+ trigger_number=self.trigger_number,
763
+ action=action,
764
+ axis=axis,
765
+ setting=setting,
766
+ operation=operation,
767
+ from_axis=from_axis,
768
+ from_setting=from_setting,
769
+ )
770
+ await call_async("trigger/on_fire_set_to_setting", request)
771
+
772
+ def clear_action(
773
+ self,
774
+ action: TriggerAction = TriggerAction.ALL
775
+ ) -> None:
776
+ """
777
+ Clear a trigger action.
778
+
779
+ Args:
780
+ action: The action number to clear.
781
+ The default option is to clear all actions.
782
+ """
783
+ request = dto.TriggerClearActionRequest(
784
+ interface_id=self.device.connection.interface_id,
785
+ device=self.device.device_address,
786
+ trigger_number=self.trigger_number,
787
+ action=action,
788
+ )
789
+ call("trigger/clear_action", request)
790
+
791
+ async def clear_action_async(
792
+ self,
793
+ action: TriggerAction = TriggerAction.ALL
794
+ ) -> None:
795
+ """
796
+ Clear a trigger action.
797
+
798
+ Args:
799
+ action: The action number to clear.
800
+ The default option is to clear all actions.
801
+ """
802
+ request = dto.TriggerClearActionRequest(
803
+ interface_id=self.device.connection.interface_id,
804
+ device=self.device.device_address,
805
+ trigger_number=self.trigger_number,
806
+ action=action,
807
+ )
808
+ await call_async("trigger/clear_action", request)
809
+
810
+ def get_label(
811
+ self
812
+ ) -> str:
813
+ """
814
+ Returns the label for the trigger.
815
+
816
+ Returns:
817
+ The label for the trigger.
818
+ """
819
+ request = dto.TriggerEmptyRequest(
820
+ interface_id=self.device.connection.interface_id,
821
+ device=self.device.device_address,
822
+ trigger_number=self.trigger_number,
823
+ )
824
+ response = call(
825
+ "trigger/get_label",
826
+ request,
827
+ dto.StringResponse.from_binary)
828
+ return response.value
829
+
830
+ async def get_label_async(
831
+ self
832
+ ) -> str:
833
+ """
834
+ Returns the label for the trigger.
835
+
836
+ Returns:
837
+ The label for the trigger.
838
+ """
839
+ request = dto.TriggerEmptyRequest(
840
+ interface_id=self.device.connection.interface_id,
841
+ device=self.device.device_address,
842
+ trigger_number=self.trigger_number,
843
+ )
844
+ response = await call_async(
845
+ "trigger/get_label",
846
+ request,
847
+ dto.StringResponse.from_binary)
848
+ return response.value
849
+
850
+ def set_label(
851
+ self,
852
+ label: Optional[str]
853
+ ) -> None:
854
+ """
855
+ Sets the label for the trigger.
856
+
857
+ Args:
858
+ label: The label to set for this trigger.
859
+ If no value or an empty string is provided, this label is deleted.
860
+ """
861
+ request = dto.TriggerSetLabelRequest(
862
+ interface_id=self.device.connection.interface_id,
863
+ device=self.device.device_address,
864
+ trigger_number=self.trigger_number,
865
+ label=label,
866
+ )
867
+ call("trigger/set_label", request)
868
+
869
+ async def set_label_async(
870
+ self,
871
+ label: Optional[str]
872
+ ) -> None:
873
+ """
874
+ Sets the label for the trigger.
875
+
876
+ Args:
877
+ label: The label to set for this trigger.
878
+ If no value or an empty string is provided, this label is deleted.
879
+ """
880
+ request = dto.TriggerSetLabelRequest(
881
+ interface_id=self.device.connection.interface_id,
882
+ device=self.device.device_address,
883
+ trigger_number=self.trigger_number,
884
+ label=label,
885
+ )
886
+ await call_async("trigger/set_label", request)