zaber-motion 7.13.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.
- zaber_motion/__init__.py +103 -103
- zaber_motion/ascii/__init__.py +73 -73
- zaber_motion/ascii/all_axes.py +352 -352
- zaber_motion/ascii/axis.py +1673 -1673
- zaber_motion/ascii/axis_group.py +391 -391
- zaber_motion/ascii/axis_settings.py +752 -752
- zaber_motion/ascii/connection.py +1174 -1174
- zaber_motion/ascii/device.py +908 -908
- zaber_motion/ascii/device_io.py +1170 -1170
- zaber_motion/ascii/device_settings.py +735 -735
- zaber_motion/ascii/lockstep.py +1184 -1184
- zaber_motion/ascii/oscilloscope.py +635 -635
- zaber_motion/ascii/oscilloscope_data.py +240 -240
- zaber_motion/ascii/pvt.py +105 -105
- zaber_motion/ascii/pvt_buffer.py +146 -146
- zaber_motion/ascii/pvt_io.py +630 -630
- zaber_motion/ascii/pvt_sequence.py +1530 -1530
- zaber_motion/ascii/servo_tuner.py +637 -637
- zaber_motion/ascii/setting_constants.py +1755 -1755
- zaber_motion/ascii/storage.py +905 -905
- zaber_motion/ascii/stream.py +2182 -2182
- zaber_motion/ascii/stream_buffer.py +101 -101
- zaber_motion/ascii/stream_io.py +700 -700
- zaber_motion/ascii/streams.py +105 -105
- zaber_motion/ascii/transport.py +202 -202
- zaber_motion/ascii/trigger.py +886 -886
- zaber_motion/ascii/triggers.py +241 -241
- zaber_motion/ascii/warning_flags.py +178 -178
- zaber_motion/ascii/warnings.py +152 -152
- zaber_motion/async_utils.py +46 -46
- zaber_motion/binary/__init__.py +14 -14
- zaber_motion/binary/connection.py +648 -648
- zaber_motion/binary/device.py +924 -924
- zaber_motion/binary/device_settings.py +121 -121
- zaber_motion/bindings.py +50 -50
- zaber_motion/call.py +198 -198
- zaber_motion/convert_exception.py +138 -138
- zaber_motion/dto/__init__.py +11 -11
- zaber_motion/dto/ascii/__init__.py +46 -46
- zaber_motion/dto/ascii/alert_event.py +110 -110
- zaber_motion/dto/ascii/axis_identity.py +134 -134
- zaber_motion/dto/ascii/axis_type.py +14 -14
- zaber_motion/dto/ascii/can_set_state_axis_response.py +69 -69
- zaber_motion/dto/ascii/can_set_state_device_response.py +75 -75
- zaber_motion/dto/ascii/conversion_factor.py +81 -81
- zaber_motion/dto/ascii/device_identity.py +136 -136
- zaber_motion/dto/ascii/device_io_info.py +108 -108
- zaber_motion/dto/ascii/digital_output_action.py +13 -13
- zaber_motion/dto/ascii/get_axis_setting.py +64 -64
- zaber_motion/dto/ascii/get_axis_setting_result.py +81 -81
- zaber_motion/dto/ascii/get_setting.py +88 -88
- zaber_motion/dto/ascii/get_setting_result.py +87 -87
- zaber_motion/dto/ascii/io_port_label.py +84 -84
- zaber_motion/dto/ascii/io_port_type.py +14 -14
- zaber_motion/dto/ascii/lockstep_axes.py +108 -108
- zaber_motion/dto/ascii/measurement_sequence.py +73 -73
- zaber_motion/dto/ascii/message_type.py +14 -14
- zaber_motion/dto/ascii/optional_measurement_sequence.py +71 -71
- zaber_motion/dto/ascii/oscilloscope_capture_properties.py +116 -116
- zaber_motion/dto/ascii/oscilloscope_data_source.py +11 -11
- zaber_motion/dto/ascii/paramset_info.py +92 -92
- zaber_motion/dto/ascii/pid_tuning.py +125 -125
- zaber_motion/dto/ascii/pvt_axis_definition.py +70 -70
- zaber_motion/dto/ascii/pvt_axis_type.py +11 -11
- zaber_motion/dto/ascii/pvt_csv_data.py +75 -75
- zaber_motion/dto/ascii/pvt_mode.py +12 -12
- zaber_motion/dto/ascii/pvt_sequence_data.py +99 -99
- zaber_motion/dto/ascii/response.py +137 -137
- zaber_motion/dto/ascii/servo_tuning_param.py +66 -66
- zaber_motion/dto/ascii/servo_tuning_paramset.py +21 -21
- zaber_motion/dto/ascii/set_state_axis_response.py +75 -75
- zaber_motion/dto/ascii/set_state_device_response.py +80 -80
- zaber_motion/dto/ascii/simple_tuning.py +118 -118
- zaber_motion/dto/ascii/simple_tuning_param_definition.py +100 -100
- zaber_motion/dto/ascii/stream_axis_definition.py +70 -70
- zaber_motion/dto/ascii/stream_axis_type.py +11 -11
- zaber_motion/dto/ascii/stream_mode.py +13 -13
- zaber_motion/dto/ascii/trigger_action.py +12 -12
- zaber_motion/dto/ascii/trigger_condition.py +15 -15
- zaber_motion/dto/ascii/trigger_enabled_state.py +68 -68
- zaber_motion/dto/ascii/trigger_operation.py +12 -12
- zaber_motion/dto/ascii/trigger_state.py +114 -114
- zaber_motion/dto/ascii/unknown_response_event.py +137 -137
- zaber_motion/dto/axis_address.py +74 -74
- zaber_motion/dto/binary/__init__.py +11 -11
- zaber_motion/dto/binary/binary_settings.py +74 -74
- zaber_motion/dto/binary/command_code.py +106 -106
- zaber_motion/dto/binary/device_identity.py +156 -156
- zaber_motion/dto/binary/device_type.py +12 -12
- zaber_motion/dto/binary/error_code.py +101 -101
- zaber_motion/dto/binary/message.py +91 -91
- zaber_motion/dto/binary/reply_code.py +16 -16
- zaber_motion/dto/binary/reply_only_event.py +91 -91
- zaber_motion/dto/binary/unknown_response_event.py +91 -91
- zaber_motion/dto/channel_address.py +74 -74
- zaber_motion/dto/device_db_source.py +66 -66
- zaber_motion/dto/device_db_source_type.py +11 -11
- zaber_motion/dto/exceptions/__init__.py +24 -24
- zaber_motion/dto/exceptions/binary_command_failed_exception_data.py +57 -57
- zaber_motion/dto/exceptions/command_failed_exception_data.py +151 -151
- zaber_motion/dto/exceptions/command_too_long_exception_data.py +98 -98
- zaber_motion/dto/exceptions/device_address_conflict_exception_data.py +63 -63
- zaber_motion/dto/exceptions/device_db_failed_exception_data.py +74 -74
- zaber_motion/dto/exceptions/device_db_inner_error.py +85 -85
- zaber_motion/dto/exceptions/g_code_execution_exception_data.py +75 -75
- zaber_motion/dto/exceptions/g_code_syntax_exception_data.py +75 -75
- zaber_motion/dto/exceptions/invalid_packet_exception_data.py +63 -63
- zaber_motion/dto/exceptions/invalid_pvt_point.py +69 -69
- zaber_motion/dto/exceptions/invalid_response_exception_data.py +51 -51
- zaber_motion/dto/exceptions/movement_failed_exception_data.py +104 -104
- zaber_motion/dto/exceptions/movement_interrupted_exception_data.py +104 -104
- zaber_motion/dto/exceptions/operation_failed_exception_data.py +104 -104
- zaber_motion/dto/exceptions/pvt_execution_exception_data.py +86 -86
- zaber_motion/dto/exceptions/pvt_movement_failed_exception_data.py +69 -69
- zaber_motion/dto/exceptions/pvt_movement_interrupted_exception_data.py +69 -69
- zaber_motion/dto/exceptions/set_device_state_exception_data.py +176 -176
- zaber_motion/dto/exceptions/set_peripheral_state_exception_data.py +121 -121
- zaber_motion/dto/exceptions/stream_execution_exception_data.py +63 -63
- zaber_motion/dto/exceptions/stream_movement_failed_exception_data.py +69 -69
- zaber_motion/dto/exceptions/stream_movement_interrupted_exception_data.py +69 -69
- zaber_motion/dto/firmware_version.py +91 -91
- zaber_motion/dto/gcode/__init__.py +9 -9
- zaber_motion/dto/gcode/axis_definition.py +74 -74
- zaber_motion/dto/gcode/axis_mapping.py +69 -69
- zaber_motion/dto/gcode/axis_transformation.py +79 -79
- zaber_motion/dto/gcode/device_definition.py +99 -99
- zaber_motion/dto/gcode/translate_message.py +87 -87
- zaber_motion/dto/gcode/translate_result.py +79 -79
- zaber_motion/dto/gcode/translator_config.py +84 -84
- zaber_motion/dto/log_output_mode.py +13 -13
- zaber_motion/dto/measurement.py +67 -67
- zaber_motion/dto/microscopy/__init__.py +6 -6
- zaber_motion/dto/microscopy/autofocus_status.py +57 -57
- zaber_motion/dto/microscopy/microscope_config.py +159 -159
- zaber_motion/dto/microscopy/third_party_components.py +55 -55
- zaber_motion/dto/microscopy/wdi_autofocus_provider_status.py +57 -57
- zaber_motion/dto/named_parameter.py +64 -64
- zaber_motion/dto/product/__init__.py +5 -5
- zaber_motion/dto/product/process_controller_mode.py +13 -13
- zaber_motion/dto/product/process_controller_source.py +72 -72
- zaber_motion/dto/product/process_controller_source_sensor.py +11 -11
- zaber_motion/dto/requests/__init__.py +256 -254
- zaber_motion/dto/requests/alert_event_wrapper.py +82 -82
- zaber_motion/dto/requests/autofocus_focus_request.py +131 -131
- zaber_motion/dto/requests/autofocus_get_objective_params_request.py +121 -121
- zaber_motion/dto/requests/autofocus_get_objective_params_response.py +56 -56
- zaber_motion/dto/requests/autofocus_get_status_response.py +50 -50
- zaber_motion/dto/requests/autofocus_set_objective_params_request.py +141 -141
- zaber_motion/dto/requests/axes_empty_request.py +95 -95
- zaber_motion/dto/requests/axes_get_setting_request.py +121 -121
- zaber_motion/dto/requests/axes_move_request.py +114 -114
- zaber_motion/dto/requests/axis_empty_request.py +79 -79
- zaber_motion/dto/requests/axis_move_type.py +12 -12
- zaber_motion/dto/requests/axis_to_string_request.py +88 -88
- zaber_motion/dto/requests/binary_device_detect_request.py +56 -56
- zaber_motion/dto/requests/binary_device_detect_response.py +57 -57
- zaber_motion/dto/requests/binary_device_get_setting_request.py +89 -89
- zaber_motion/dto/requests/binary_device_home_request.py +88 -88
- zaber_motion/dto/requests/binary_device_move_request.py +111 -111
- zaber_motion/dto/requests/binary_device_set_setting_request.py +100 -100
- zaber_motion/dto/requests/binary_device_stop_request.py +88 -88
- zaber_motion/dto/requests/binary_generic_with_units_request.py +122 -122
- zaber_motion/dto/requests/binary_message_collection.py +56 -56
- zaber_motion/dto/requests/binary_reply_only_event_wrapper.py +82 -82
- zaber_motion/dto/requests/bool_response.py +43 -43
- zaber_motion/dto/requests/can_set_state_axis_response.py +60 -60
- zaber_motion/dto/requests/can_set_state_request.py +100 -100
- zaber_motion/dto/requests/channel_on.py +84 -84
- zaber_motion/dto/requests/channel_set_intensity.py +90 -90
- zaber_motion/dto/requests/check_version_request.py +54 -54
- zaber_motion/dto/requests/custom_interface_close_request.py +60 -60
- zaber_motion/dto/requests/custom_interface_open_response.py +51 -51
- zaber_motion/dto/requests/custom_interface_read_request.py +51 -51
- zaber_motion/dto/requests/custom_interface_write_request.py +60 -60
- zaber_motion/dto/requests/device_cancel_all_outputs_schedule_request.py +80 -80
- zaber_motion/dto/requests/device_cancel_output_schedule_request.py +84 -84
- zaber_motion/dto/requests/device_convert_setting_request.py +116 -116
- zaber_motion/dto/requests/device_detect_request.py +68 -68
- zaber_motion/dto/requests/device_detect_response.py +57 -57
- zaber_motion/dto/requests/device_empty_request.py +65 -65
- zaber_motion/dto/requests/device_get_all_analog_io_request.py +74 -74
- zaber_motion/dto/requests/device_get_all_analog_io_response.py +54 -54
- zaber_motion/dto/requests/device_get_all_digital_io_request.py +74 -74
- zaber_motion/dto/requests/device_get_all_digital_io_response.py +46 -46
- zaber_motion/dto/requests/device_get_analog_io_request.py +88 -88
- zaber_motion/dto/requests/device_get_digital_io_request.py +88 -88
- zaber_motion/dto/requests/device_get_setting_request.py +100 -100
- zaber_motion/dto/requests/device_get_storage_request.py +93 -93
- zaber_motion/dto/requests/device_get_warnings_request.py +84 -84
- zaber_motion/dto/requests/device_get_warnings_response.py +51 -51
- zaber_motion/dto/requests/device_home_request.py +84 -84
- zaber_motion/dto/requests/device_identify_request.py +77 -77
- zaber_motion/dto/requests/device_move_request.py +177 -177
- zaber_motion/dto/requests/device_move_sin_request.py +140 -140
- zaber_motion/dto/requests/device_multi_get_setting_request.py +118 -118
- zaber_motion/dto/requests/device_on_all_request.py +56 -56
- zaber_motion/dto/requests/device_on_all_response.py +57 -57
- zaber_motion/dto/requests/device_restore_request.py +84 -84
- zaber_motion/dto/requests/device_set_all_analog_outputs_request.py +82 -82
- zaber_motion/dto/requests/device_set_all_analog_outputs_schedule_request.py +121 -121
- zaber_motion/dto/requests/device_set_all_digital_outputs_request.py +83 -83
- zaber_motion/dto/requests/device_set_all_digital_outputs_schedule_request.py +122 -122
- zaber_motion/dto/requests/device_set_analog_output_request.py +90 -90
- zaber_motion/dto/requests/device_set_analog_output_schedule_request.py +124 -124
- zaber_motion/dto/requests/device_set_digital_output_request.py +91 -91
- zaber_motion/dto/requests/device_set_digital_output_schedule_request.py +125 -125
- zaber_motion/dto/requests/device_set_lowpass_filter_request.py +102 -102
- zaber_motion/dto/requests/device_set_setting_bool_request.py +93 -93
- zaber_motion/dto/requests/device_set_setting_int_request.py +102 -102
- zaber_motion/dto/requests/device_set_setting_request.py +111 -111
- zaber_motion/dto/requests/device_set_setting_str_request.py +97 -97
- zaber_motion/dto/requests/device_set_storage_bool_request.py +93 -93
- zaber_motion/dto/requests/device_set_storage_number_request.py +99 -99
- zaber_motion/dto/requests/device_set_storage_request.py +102 -102
- zaber_motion/dto/requests/device_set_unit_conversions_request.py +108 -108
- zaber_motion/dto/requests/device_stop_request.py +84 -84
- zaber_motion/dto/requests/device_storage_list_keys_request.py +88 -88
- zaber_motion/dto/requests/device_storage_request.py +88 -88
- zaber_motion/dto/requests/device_type.py +8 -8
- zaber_motion/dto/requests/device_wait_until_idle_request.py +84 -84
- zaber_motion/dto/requests/disconnected_event.py +101 -101
- zaber_motion/dto/requests/double_array_response.py +54 -54
- zaber_motion/dto/requests/double_response.py +48 -48
- zaber_motion/dto/requests/driver_enable_request.py +90 -90
- zaber_motion/dto/requests/empty_autofocus_request.py +107 -107
- zaber_motion/dto/requests/empty_request.py +38 -38
- zaber_motion/dto/requests/errors.py +68 -68
- zaber_motion/dto/requests/find_device_request.py +65 -65
- zaber_motion/dto/requests/find_device_response.py +51 -51
- zaber_motion/dto/requests/forget_devices_request.py +71 -71
- zaber_motion/dto/requests/gateway_event.py +45 -45
- zaber_motion/dto/requests/gateway_request.py +45 -45
- zaber_motion/dto/requests/gateway_response.py +69 -69
- zaber_motion/dto/requests/generic_binary_request.py +107 -107
- zaber_motion/dto/requests/generic_command_request.py +107 -107
- zaber_motion/dto/requests/generic_command_response_collection.py +56 -56
- zaber_motion/dto/requests/get_all_io_port_labels_response.py +56 -56
- zaber_motion/dto/requests/get_axis_setting_results.py +56 -56
- zaber_motion/dto/requests/get_io_port_label_request.py +91 -91
- zaber_motion/dto/requests/get_setting_results.py +56 -56
- zaber_motion/dto/requests/get_simple_tuning_param_definition_response.py +56 -56
- zaber_motion/dto/requests/int_64_response.py +51 -51
- zaber_motion/dto/requests/int_array_response.py +57 -57
- zaber_motion/dto/requests/int_request.py +51 -51
- zaber_motion/dto/requests/int_response.py +51 -51
- zaber_motion/dto/requests/interface_empty_request.py +51 -51
- zaber_motion/dto/requests/interface_type.py +11 -11
- zaber_motion/dto/requests/load_paramset.py +102 -102
- zaber_motion/dto/requests/lockstep_disable_request.py +84 -84
- zaber_motion/dto/requests/lockstep_empty_request.py +79 -79
- zaber_motion/dto/requests/lockstep_enable_request.py +99 -99
- zaber_motion/dto/requests/lockstep_get_axis_numbers_response.py +57 -57
- zaber_motion/dto/requests/lockstep_get_request.py +91 -91
- zaber_motion/dto/requests/lockstep_home_request.py +84 -84
- zaber_motion/dto/requests/lockstep_move_request.py +163 -163
- zaber_motion/dto/requests/lockstep_move_sin_request.py +140 -140
- zaber_motion/dto/requests/lockstep_set_request.py +116 -116
- zaber_motion/dto/requests/lockstep_stop_request.py +84 -84
- zaber_motion/dto/requests/lockstep_wait_until_idle_request.py +84 -84
- zaber_motion/dto/requests/microscope_config_response.py +50 -50
- zaber_motion/dto/requests/microscope_empty_request.py +65 -65
- zaber_motion/dto/requests/microscope_find_request.py +63 -63
- zaber_motion/dto/requests/microscope_init_request.py +70 -70
- zaber_motion/dto/requests/microscope_trigger_camera_request.py +107 -107
- zaber_motion/dto/requests/objective_changer_change_request.py +119 -119
- zaber_motion/dto/requests/objective_changer_create_response.py +79 -79
- zaber_motion/dto/requests/objective_changer_get_current_response.py +51 -51
- zaber_motion/dto/requests/objective_changer_request.py +93 -93
- zaber_motion/dto/requests/objective_changer_set_request.py +116 -116
- zaber_motion/dto/requests/open_binary_interface_request.py +100 -100
- zaber_motion/dto/requests/open_interface_request.py +159 -159
- zaber_motion/dto/requests/open_interface_response.py +51 -51
- zaber_motion/dto/requests/oscilloscope_add_io_channel_request.py +91 -91
- zaber_motion/dto/requests/oscilloscope_add_setting_channel_request.py +88 -88
- zaber_motion/dto/requests/oscilloscope_data_get_request.py +63 -63
- zaber_motion/dto/requests/oscilloscope_data_get_sample_time_request.py +77 -77
- zaber_motion/dto/requests/oscilloscope_data_get_samples_response.py +54 -54
- zaber_motion/dto/requests/oscilloscope_data_identifier.py +51 -51
- zaber_motion/dto/requests/oscilloscope_read_response.py +57 -57
- zaber_motion/dto/requests/oscilloscope_request.py +65 -65
- zaber_motion/dto/requests/oscilloscope_start_request.py +79 -79
- zaber_motion/dto/requests/prepare_command_request.py +108 -108
- zaber_motion/dto/requests/process_on.py +107 -107
- zaber_motion/dto/requests/pvt_buffer_get_sequence_data_request.py +79 -79
- zaber_motion/dto/requests/pvt_csv_request.py +59 -59
- zaber_motion/dto/requests/pvt_generate_positions_request.py +74 -74
- zaber_motion/dto/requests/pvt_generate_velocities_and_times_request.py +96 -96
- zaber_motion/dto/requests/pvt_generate_velocities_request.py +93 -93
- zaber_motion/dto/requests/pvt_load_csv_request.py +45 -45
- zaber_motion/dto/requests/pvt_point_request.py +145 -145
- zaber_motion/dto/requests/pvt_points_request.py +147 -147
- zaber_motion/dto/requests/pvt_save_csv_request.py +74 -74
- zaber_motion/dto/requests/pvt_submit_sequence_data_request.py +93 -93
- zaber_motion/dto/requests/renumber_request.py +79 -79
- zaber_motion/dto/requests/response_type.py +8 -8
- zaber_motion/dto/requests/servo_tuning_paramset_response.py +48 -48
- zaber_motion/dto/requests/servo_tuning_request.py +91 -91
- zaber_motion/dto/requests/set_device_db_layered_sources_request.py +56 -56
- zaber_motion/dto/requests/set_device_db_source_request.py +63 -63
- zaber_motion/dto/requests/set_interface_checksum_enabled_request.py +56 -56
- zaber_motion/dto/requests/set_interface_timeout_request.py +65 -65
- zaber_motion/dto/requests/set_internal_mode_request.py +43 -43
- zaber_motion/dto/requests/set_io_port_label_request.py +100 -100
- zaber_motion/dto/requests/set_log_output_request.py +57 -57
- zaber_motion/dto/requests/set_process_controller_source.py +93 -93
- zaber_motion/dto/requests/set_servo_tuning_pid_request.py +135 -135
- zaber_motion/dto/requests/set_servo_tuning_request.py +116 -116
- zaber_motion/dto/requests/set_simple_tuning.py +174 -174
- zaber_motion/dto/requests/set_state_request.py +93 -93
- zaber_motion/dto/requests/stream_arc_request.py +199 -199
- zaber_motion/dto/requests/stream_buffer_erase_request.py +84 -84
- zaber_motion/dto/requests/stream_buffer_get_content_request.py +84 -84
- zaber_motion/dto/requests/stream_buffer_get_content_response.py +51 -51
- zaber_motion/dto/requests/stream_buffer_list.py +70 -70
- zaber_motion/dto/requests/stream_call_request.py +112 -112
- zaber_motion/dto/requests/stream_cancel_all_outputs_schedule_request.py +99 -99
- zaber_motion/dto/requests/stream_cancel_output_schedule_request.py +103 -103
- zaber_motion/dto/requests/stream_circle_request.py +155 -155
- zaber_motion/dto/requests/stream_empty_request.py +84 -84
- zaber_motion/dto/requests/stream_generic_command_batch_request.py +99 -99
- zaber_motion/dto/requests/stream_generic_command_request.py +93 -93
- zaber_motion/dto/requests/stream_get_axes_response.py +75 -75
- zaber_motion/dto/requests/stream_get_max_centripetal_acceleration_request.py +96 -96
- zaber_motion/dto/requests/stream_get_max_speed_request.py +96 -96
- zaber_motion/dto/requests/stream_get_max_tangential_acceleration_request.py +96 -96
- zaber_motion/dto/requests/stream_line_request.py +135 -135
- zaber_motion/dto/requests/stream_mode_response.py +60 -60
- zaber_motion/dto/requests/stream_segment_type.py +8 -8
- zaber_motion/dto/requests/stream_set_all_analog_outputs_request.py +101 -101
- zaber_motion/dto/requests/stream_set_all_analog_outputs_schedule_request.py +140 -140
- zaber_motion/dto/requests/stream_set_all_digital_outputs_request.py +102 -102
- zaber_motion/dto/requests/stream_set_all_digital_outputs_schedule_request.py +141 -141
- zaber_motion/dto/requests/stream_set_analog_output_request.py +109 -109
- zaber_motion/dto/requests/stream_set_analog_output_schedule_request.py +143 -143
- zaber_motion/dto/requests/stream_set_digital_output_request.py +110 -110
- zaber_motion/dto/requests/stream_set_digital_output_schedule_request.py +144 -144
- zaber_motion/dto/requests/stream_set_hold_request.py +89 -89
- zaber_motion/dto/requests/stream_set_max_centripetal_acceleration_request.py +107 -107
- zaber_motion/dto/requests/stream_set_max_speed_request.py +107 -107
- zaber_motion/dto/requests/stream_set_max_tangential_acceleration_request.py +107 -107
- zaber_motion/dto/requests/stream_setup_live_composite_request.py +123 -123
- zaber_motion/dto/requests/stream_setup_live_request.py +104 -104
- zaber_motion/dto/requests/stream_setup_store_arbitrary_axes_request.py +126 -126
- zaber_motion/dto/requests/stream_setup_store_composite_request.py +151 -151
- zaber_motion/dto/requests/stream_setup_store_request.py +132 -132
- zaber_motion/dto/requests/stream_wait_analog_input_request.py +118 -118
- zaber_motion/dto/requests/stream_wait_digital_input_request.py +103 -103
- zaber_motion/dto/requests/stream_wait_request.py +107 -107
- zaber_motion/dto/requests/stream_wait_until_idle_request.py +89 -89
- zaber_motion/dto/requests/string_array_response.py +51 -51
- zaber_motion/dto/requests/string_response.py +45 -45
- zaber_motion/dto/requests/test_event.py +45 -45
- zaber_motion/dto/requests/test_request.py +55 -55
- zaber_motion/dto/requests/test_request_complex.py +57 -0
- zaber_motion/dto/requests/test_response.py +45 -45
- zaber_motion/dto/requests/test_response_long.py +51 -51
- zaber_motion/dto/requests/toggle_device_db_store_request.py +50 -50
- zaber_motion/dto/requests/tools_list_serial_ports_response.py +51 -51
- zaber_motion/dto/requests/translator_create_from_device_request.py +97 -97
- zaber_motion/dto/requests/translator_create_live_request.py +91 -91
- zaber_motion/dto/requests/translator_create_request.py +62 -62
- zaber_motion/dto/requests/translator_create_response.py +51 -51
- zaber_motion/dto/requests/translator_empty_request.py +51 -51
- zaber_motion/dto/requests/translator_flush_live_request.py +56 -56
- zaber_motion/dto/requests/translator_flush_response.py +51 -51
- zaber_motion/dto/requests/translator_get_axis_offset_request.py +81 -81
- zaber_motion/dto/requests/translator_get_axis_position_request.py +72 -72
- zaber_motion/dto/requests/translator_set_axis_position_request.py +83 -83
- zaber_motion/dto/requests/translator_set_feed_rate_override_request.py +62 -62
- zaber_motion/dto/requests/translator_set_traverse_rate_request.py +74 -74
- zaber_motion/dto/requests/translator_translate_request.py +60 -60
- zaber_motion/dto/requests/trigger_clear_action_request.py +91 -91
- zaber_motion/dto/requests/trigger_empty_request.py +79 -79
- zaber_motion/dto/requests/trigger_enable_request.py +93 -93
- zaber_motion/dto/requests/trigger_enabled_states.py +56 -56
- zaber_motion/dto/requests/trigger_fire_at_interval_request.py +102 -102
- zaber_motion/dto/requests/trigger_fire_when_distance_travelled_request.py +116 -116
- zaber_motion/dto/requests/trigger_fire_when_io_request.py +128 -128
- zaber_motion/dto/requests/trigger_fire_when_request.py +88 -88
- zaber_motion/dto/requests/trigger_fire_when_setting_request.py +137 -137
- zaber_motion/dto/requests/trigger_on_fire_request.py +114 -114
- zaber_motion/dto/requests/trigger_on_fire_set_request.py +149 -149
- zaber_motion/dto/requests/trigger_on_fire_set_to_setting_request.py +149 -149
- zaber_motion/dto/requests/trigger_set_label_request.py +88 -88
- zaber_motion/dto/requests/trigger_states.py +56 -56
- zaber_motion/dto/requests/unit_convert_unit_request.py +71 -71
- zaber_motion/dto/requests/unit_get_enum_request.py +45 -45
- zaber_motion/dto/requests/unit_get_enum_response.py +48 -48
- zaber_motion/dto/requests/unit_get_symbol_request.py +48 -48
- zaber_motion/dto/requests/unit_get_symbol_response.py +45 -45
- zaber_motion/dto/requests/unknown_binary_response_event_wrapper.py +82 -82
- zaber_motion/dto/requests/unknown_response_event_wrapper.py +82 -82
- zaber_motion/dto/requests/wait_to_clear_warnings_request.py +105 -105
- zaber_motion/dto/requests/wait_to_respond_request.py +76 -76
- zaber_motion/dto/requests/wdi_generic_float_request.py +119 -0
- zaber_motion/dto/requests/wdi_generic_request.py +136 -136
- zaber_motion/dto/requests/wdi_get_status_response.py +50 -50
- zaber_motion/dto/rotation_direction.py +13 -13
- zaber_motion/dto_object.py +18 -18
- zaber_motion/events.py +112 -112
- zaber_motion/exceptions/__init__.py +87 -87
- zaber_motion/exceptions/bad_command_exception.py +10 -10
- zaber_motion/exceptions/bad_data_exception.py +10 -10
- zaber_motion/exceptions/binary_command_failed_exception.py +27 -27
- zaber_motion/exceptions/command_failed_exception.py +27 -27
- zaber_motion/exceptions/command_preempted_exception.py +10 -10
- zaber_motion/exceptions/command_too_long_exception.py +27 -27
- zaber_motion/exceptions/connection_closed_exception.py +10 -10
- zaber_motion/exceptions/connection_failed_exception.py +10 -10
- zaber_motion/exceptions/conversion_failed_exception.py +10 -10
- zaber_motion/exceptions/device_address_conflict_exception.py +27 -27
- zaber_motion/exceptions/device_busy_exception.py +10 -10
- zaber_motion/exceptions/device_db_failed_exception.py +27 -27
- zaber_motion/exceptions/device_detection_failed_exception.py +10 -10
- zaber_motion/exceptions/device_failed_exception.py +11 -11
- zaber_motion/exceptions/device_not_identified_exception.py +10 -10
- zaber_motion/exceptions/driver_disabled_exception.py +10 -10
- zaber_motion/exceptions/g_code_execution_exception.py +27 -27
- zaber_motion/exceptions/g_code_syntax_exception.py +27 -27
- zaber_motion/exceptions/incompatible_shared_library_exception.py +11 -11
- zaber_motion/exceptions/internal_error_exception.py +10 -10
- zaber_motion/exceptions/invalid_argument_exception.py +10 -10
- zaber_motion/exceptions/invalid_csv_data_exception.py +10 -10
- zaber_motion/exceptions/invalid_data_exception.py +10 -10
- zaber_motion/exceptions/invalid_operation_exception.py +10 -10
- zaber_motion/exceptions/invalid_packet_exception.py +27 -27
- zaber_motion/exceptions/invalid_park_state_exception.py +10 -10
- zaber_motion/exceptions/invalid_request_data_exception.py +11 -11
- zaber_motion/exceptions/invalid_response_exception.py +27 -27
- zaber_motion/exceptions/io_channel_out_of_range_exception.py +10 -10
- zaber_motion/exceptions/io_failed_exception.py +10 -10
- zaber_motion/exceptions/lockstep_enabled_exception.py +10 -10
- zaber_motion/exceptions/lockstep_not_enabled_exception.py +10 -10
- zaber_motion/exceptions/motion_lib_exception.py +18 -18
- zaber_motion/exceptions/movement_failed_exception.py +27 -27
- zaber_motion/exceptions/movement_interrupted_exception.py +27 -27
- zaber_motion/exceptions/no_device_found_exception.py +10 -10
- zaber_motion/exceptions/no_value_for_key_exception.py +10 -10
- zaber_motion/exceptions/not_supported_exception.py +10 -10
- zaber_motion/exceptions/operation_failed_exception.py +27 -27
- zaber_motion/exceptions/os_failed_exception.py +10 -10
- zaber_motion/exceptions/out_of_request_ids_exception.py +10 -10
- zaber_motion/exceptions/pvt_discontinuity_exception.py +10 -10
- zaber_motion/exceptions/pvt_execution_exception.py +27 -27
- zaber_motion/exceptions/pvt_mode_exception.py +10 -10
- zaber_motion/exceptions/pvt_movement_failed_exception.py +27 -27
- zaber_motion/exceptions/pvt_movement_interrupted_exception.py +27 -27
- zaber_motion/exceptions/pvt_sequence_generation_failed_exception.py +10 -10
- zaber_motion/exceptions/pvt_setup_failed_exception.py +10 -10
- zaber_motion/exceptions/remote_mode_exception.py +11 -11
- zaber_motion/exceptions/request_timeout_exception.py +10 -10
- zaber_motion/exceptions/serial_port_busy_exception.py +10 -10
- zaber_motion/exceptions/set_device_state_failed_exception.py +27 -27
- zaber_motion/exceptions/set_peripheral_state_failed_exception.py +27 -27
- zaber_motion/exceptions/setting_not_found_exception.py +10 -10
- zaber_motion/exceptions/stream_discontinuity_exception.py +10 -10
- zaber_motion/exceptions/stream_execution_exception.py +27 -27
- zaber_motion/exceptions/stream_mode_exception.py +10 -10
- zaber_motion/exceptions/stream_movement_failed_exception.py +27 -27
- zaber_motion/exceptions/stream_movement_interrupted_exception.py +27 -27
- zaber_motion/exceptions/stream_setup_failed_exception.py +10 -10
- zaber_motion/exceptions/timeout_exception.py +10 -10
- zaber_motion/exceptions/transport_already_used_exception.py +10 -10
- zaber_motion/exceptions/unknown_request_exception.py +10 -10
- zaber_motion/gcode/__init__.py +11 -11
- zaber_motion/gcode/offline_translator.py +401 -401
- zaber_motion/gcode/translator.py +424 -424
- zaber_motion/library.py +179 -179
- zaber_motion/microscopy/__init__.py +14 -14
- zaber_motion/microscopy/autofocus.py +645 -645
- zaber_motion/microscopy/camera_trigger.py +108 -108
- zaber_motion/microscopy/filter_changer.py +167 -167
- zaber_motion/microscopy/illuminator.py +139 -139
- zaber_motion/microscopy/illuminator_channel.py +616 -616
- zaber_motion/microscopy/microscope.py +315 -315
- zaber_motion/microscopy/objective_changer.py +403 -403
- zaber_motion/microscopy/wdi_autofocus_provider.py +536 -396
- zaber_motion/product/__init__.py +7 -7
- zaber_motion/product/process.py +818 -818
- zaber_motion/product/process_controller.py +134 -134
- zaber_motion/serialization.py +32 -32
- zaber_motion/tools.py +78 -78
- zaber_motion/unit_table.py +86 -86
- zaber_motion/units.py +206 -206
- zaber_motion/version.py +1 -1
- {zaber_motion-7.13.0.dist-info → zaber_motion-7.14.0.dist-info}/LICENSE.txt +2119 -2119
- {zaber_motion-7.13.0.dist-info → zaber_motion-7.14.0.dist-info}/METADATA +1 -1
- zaber_motion-7.14.0.dist-info/RECORD +496 -0
- zaber_motion_bindings/zaber-motion-core-windows-386.dll +0 -0
- zaber_motion-7.13.0.dist-info/RECORD +0 -494
- {zaber_motion-7.13.0.dist-info → zaber_motion-7.14.0.dist-info}/WHEEL +0 -0
- {zaber_motion-7.13.0.dist-info → zaber_motion-7.14.0.dist-info}/top_level.txt +0 -0
zaber_motion/ascii/storage.py
CHANGED
|
@@ -1,905 +1,905 @@
|
|
|
1
|
-
# ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
|
|
2
|
-
# ============== DO NOT EDIT DIRECTLY ============== #
|
|
3
|
-
|
|
4
|
-
from typing import TYPE_CHECKING, List, Optional
|
|
5
|
-
from ..call import call, call_async
|
|
6
|
-
|
|
7
|
-
from ..dto import requests as dto
|
|
8
|
-
|
|
9
|
-
if TYPE_CHECKING:
|
|
10
|
-
from .axis import Axis
|
|
11
|
-
from .device import Device
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class AxisStorage:
|
|
15
|
-
"""
|
|
16
|
-
Class providing access to axis storage.
|
|
17
|
-
Requires at least Firmware 7.30.
|
|
18
|
-
"""
|
|
19
|
-
|
|
20
|
-
def __init__(self, axis: 'Axis'):
|
|
21
|
-
self._axis: 'Axis' = axis
|
|
22
|
-
|
|
23
|
-
def set_string(
|
|
24
|
-
self,
|
|
25
|
-
key: str,
|
|
26
|
-
value: str,
|
|
27
|
-
encode: bool = False
|
|
28
|
-
) -> None:
|
|
29
|
-
"""
|
|
30
|
-
Sets the axis value stored at the provided key.
|
|
31
|
-
|
|
32
|
-
Args:
|
|
33
|
-
key: Key to set the value at.
|
|
34
|
-
value: Value to set.
|
|
35
|
-
encode: Whether the stored value should be base64 encoded before being stored.
|
|
36
|
-
This makes the string unreadable to humans using the ASCII protocol,
|
|
37
|
-
however, values stored this way can be of any length and use non-ASCII and protocol reserved characters.
|
|
38
|
-
"""
|
|
39
|
-
request = dto.DeviceSetStorageRequest(
|
|
40
|
-
interface_id=self._axis.device.connection.interface_id,
|
|
41
|
-
device=self._axis.device.device_address,
|
|
42
|
-
axis=self._axis.axis_number,
|
|
43
|
-
key=key,
|
|
44
|
-
value=value,
|
|
45
|
-
encode=encode,
|
|
46
|
-
)
|
|
47
|
-
call("device/set_storage", request)
|
|
48
|
-
|
|
49
|
-
async def set_string_async(
|
|
50
|
-
self,
|
|
51
|
-
key: str,
|
|
52
|
-
value: str,
|
|
53
|
-
encode: bool = False
|
|
54
|
-
) -> None:
|
|
55
|
-
"""
|
|
56
|
-
Sets the axis value stored at the provided key.
|
|
57
|
-
|
|
58
|
-
Args:
|
|
59
|
-
key: Key to set the value at.
|
|
60
|
-
value: Value to set.
|
|
61
|
-
encode: Whether the stored value should be base64 encoded before being stored.
|
|
62
|
-
This makes the string unreadable to humans using the ASCII protocol,
|
|
63
|
-
however, values stored this way can be of any length and use non-ASCII and protocol reserved characters.
|
|
64
|
-
"""
|
|
65
|
-
request = dto.DeviceSetStorageRequest(
|
|
66
|
-
interface_id=self._axis.device.connection.interface_id,
|
|
67
|
-
device=self._axis.device.device_address,
|
|
68
|
-
axis=self._axis.axis_number,
|
|
69
|
-
key=key,
|
|
70
|
-
value=value,
|
|
71
|
-
encode=encode,
|
|
72
|
-
)
|
|
73
|
-
await call_async("device/set_storage", request)
|
|
74
|
-
|
|
75
|
-
def get_string(
|
|
76
|
-
self,
|
|
77
|
-
key: str,
|
|
78
|
-
decode: bool = False
|
|
79
|
-
) -> str:
|
|
80
|
-
"""
|
|
81
|
-
Gets the axis value stored with the provided key.
|
|
82
|
-
|
|
83
|
-
Args:
|
|
84
|
-
key: Key to read the value of.
|
|
85
|
-
decode: Whether the stored value should be decoded.
|
|
86
|
-
Only use this when reading values set by storage.set with "encode" true.
|
|
87
|
-
|
|
88
|
-
Returns:
|
|
89
|
-
Stored value.
|
|
90
|
-
"""
|
|
91
|
-
request = dto.DeviceGetStorageRequest(
|
|
92
|
-
interface_id=self._axis.device.connection.interface_id,
|
|
93
|
-
device=self._axis.device.device_address,
|
|
94
|
-
axis=self._axis.axis_number,
|
|
95
|
-
key=key,
|
|
96
|
-
decode=decode,
|
|
97
|
-
)
|
|
98
|
-
response = call(
|
|
99
|
-
"device/get_storage",
|
|
100
|
-
request,
|
|
101
|
-
dto.StringResponse.from_binary)
|
|
102
|
-
return response.value
|
|
103
|
-
|
|
104
|
-
async def get_string_async(
|
|
105
|
-
self,
|
|
106
|
-
key: str,
|
|
107
|
-
decode: bool = False
|
|
108
|
-
) -> str:
|
|
109
|
-
"""
|
|
110
|
-
Gets the axis value stored with the provided key.
|
|
111
|
-
|
|
112
|
-
Args:
|
|
113
|
-
key: Key to read the value of.
|
|
114
|
-
decode: Whether the stored value should be decoded.
|
|
115
|
-
Only use this when reading values set by storage.set with "encode" true.
|
|
116
|
-
|
|
117
|
-
Returns:
|
|
118
|
-
Stored value.
|
|
119
|
-
"""
|
|
120
|
-
request = dto.DeviceGetStorageRequest(
|
|
121
|
-
interface_id=self._axis.device.connection.interface_id,
|
|
122
|
-
device=self._axis.device.device_address,
|
|
123
|
-
axis=self._axis.axis_number,
|
|
124
|
-
key=key,
|
|
125
|
-
decode=decode,
|
|
126
|
-
)
|
|
127
|
-
response = await call_async(
|
|
128
|
-
"device/get_storage",
|
|
129
|
-
request,
|
|
130
|
-
dto.StringResponse.from_binary)
|
|
131
|
-
return response.value
|
|
132
|
-
|
|
133
|
-
def set_number(
|
|
134
|
-
self,
|
|
135
|
-
key: str,
|
|
136
|
-
value: float
|
|
137
|
-
) -> None:
|
|
138
|
-
"""
|
|
139
|
-
Sets the value at the provided key to the provided number.
|
|
140
|
-
|
|
141
|
-
Args:
|
|
142
|
-
key: Key to set the value at.
|
|
143
|
-
value: Value to set.
|
|
144
|
-
"""
|
|
145
|
-
request = dto.DeviceSetStorageNumberRequest(
|
|
146
|
-
interface_id=self._axis.device.connection.interface_id,
|
|
147
|
-
device=self._axis.device.device_address,
|
|
148
|
-
axis=self._axis.axis_number,
|
|
149
|
-
key=key,
|
|
150
|
-
value=value,
|
|
151
|
-
)
|
|
152
|
-
call("device/set_storage_number", request)
|
|
153
|
-
|
|
154
|
-
async def set_number_async(
|
|
155
|
-
self,
|
|
156
|
-
key: str,
|
|
157
|
-
value: float
|
|
158
|
-
) -> None:
|
|
159
|
-
"""
|
|
160
|
-
Sets the value at the provided key to the provided number.
|
|
161
|
-
|
|
162
|
-
Args:
|
|
163
|
-
key: Key to set the value at.
|
|
164
|
-
value: Value to set.
|
|
165
|
-
"""
|
|
166
|
-
request = dto.DeviceSetStorageNumberRequest(
|
|
167
|
-
interface_id=self._axis.device.connection.interface_id,
|
|
168
|
-
device=self._axis.device.device_address,
|
|
169
|
-
axis=self._axis.axis_number,
|
|
170
|
-
key=key,
|
|
171
|
-
value=value,
|
|
172
|
-
)
|
|
173
|
-
await call_async("device/set_storage_number", request)
|
|
174
|
-
|
|
175
|
-
def get_number(
|
|
176
|
-
self,
|
|
177
|
-
key: str
|
|
178
|
-
) -> float:
|
|
179
|
-
"""
|
|
180
|
-
Gets the value at the provided key interpreted as a number.
|
|
181
|
-
|
|
182
|
-
Args:
|
|
183
|
-
key: Key to get the value at.
|
|
184
|
-
|
|
185
|
-
Returns:
|
|
186
|
-
Stored value.
|
|
187
|
-
"""
|
|
188
|
-
request = dto.DeviceStorageRequest(
|
|
189
|
-
interface_id=self._axis.device.connection.interface_id,
|
|
190
|
-
device=self._axis.device.device_address,
|
|
191
|
-
axis=self._axis.axis_number,
|
|
192
|
-
key=key,
|
|
193
|
-
)
|
|
194
|
-
response = call(
|
|
195
|
-
"device/get_storage_number",
|
|
196
|
-
request,
|
|
197
|
-
dto.DoubleResponse.from_binary)
|
|
198
|
-
return response.value
|
|
199
|
-
|
|
200
|
-
async def get_number_async(
|
|
201
|
-
self,
|
|
202
|
-
key: str
|
|
203
|
-
) -> float:
|
|
204
|
-
"""
|
|
205
|
-
Gets the value at the provided key interpreted as a number.
|
|
206
|
-
|
|
207
|
-
Args:
|
|
208
|
-
key: Key to get the value at.
|
|
209
|
-
|
|
210
|
-
Returns:
|
|
211
|
-
Stored value.
|
|
212
|
-
"""
|
|
213
|
-
request = dto.DeviceStorageRequest(
|
|
214
|
-
interface_id=self._axis.device.connection.interface_id,
|
|
215
|
-
device=self._axis.device.device_address,
|
|
216
|
-
axis=self._axis.axis_number,
|
|
217
|
-
key=key,
|
|
218
|
-
)
|
|
219
|
-
response = await call_async(
|
|
220
|
-
"device/get_storage_number",
|
|
221
|
-
request,
|
|
222
|
-
dto.DoubleResponse.from_binary)
|
|
223
|
-
return response.value
|
|
224
|
-
|
|
225
|
-
def set_bool(
|
|
226
|
-
self,
|
|
227
|
-
key: str,
|
|
228
|
-
value: bool
|
|
229
|
-
) -> None:
|
|
230
|
-
"""
|
|
231
|
-
Sets the value at the provided key to the provided boolean.
|
|
232
|
-
|
|
233
|
-
Args:
|
|
234
|
-
key: Key to set the value at.
|
|
235
|
-
value: Value to set.
|
|
236
|
-
"""
|
|
237
|
-
request = dto.DeviceSetStorageBoolRequest(
|
|
238
|
-
interface_id=self._axis.device.connection.interface_id,
|
|
239
|
-
device=self._axis.device.device_address,
|
|
240
|
-
axis=self._axis.axis_number,
|
|
241
|
-
key=key,
|
|
242
|
-
value=value,
|
|
243
|
-
)
|
|
244
|
-
call("device/set_storage_bool", request)
|
|
245
|
-
|
|
246
|
-
async def set_bool_async(
|
|
247
|
-
self,
|
|
248
|
-
key: str,
|
|
249
|
-
value: bool
|
|
250
|
-
) -> None:
|
|
251
|
-
"""
|
|
252
|
-
Sets the value at the provided key to the provided boolean.
|
|
253
|
-
|
|
254
|
-
Args:
|
|
255
|
-
key: Key to set the value at.
|
|
256
|
-
value: Value to set.
|
|
257
|
-
"""
|
|
258
|
-
request = dto.DeviceSetStorageBoolRequest(
|
|
259
|
-
interface_id=self._axis.device.connection.interface_id,
|
|
260
|
-
device=self._axis.device.device_address,
|
|
261
|
-
axis=self._axis.axis_number,
|
|
262
|
-
key=key,
|
|
263
|
-
value=value,
|
|
264
|
-
)
|
|
265
|
-
await call_async("device/set_storage_bool", request)
|
|
266
|
-
|
|
267
|
-
def get_bool(
|
|
268
|
-
self,
|
|
269
|
-
key: str
|
|
270
|
-
) -> bool:
|
|
271
|
-
"""
|
|
272
|
-
Gets the value at the provided key interpreted as a boolean.
|
|
273
|
-
|
|
274
|
-
Args:
|
|
275
|
-
key: Key to get the value at.
|
|
276
|
-
|
|
277
|
-
Returns:
|
|
278
|
-
Stored value.
|
|
279
|
-
"""
|
|
280
|
-
request = dto.DeviceStorageRequest(
|
|
281
|
-
interface_id=self._axis.device.connection.interface_id,
|
|
282
|
-
device=self._axis.device.device_address,
|
|
283
|
-
axis=self._axis.axis_number,
|
|
284
|
-
key=key,
|
|
285
|
-
)
|
|
286
|
-
response = call(
|
|
287
|
-
"device/get_storage_bool",
|
|
288
|
-
request,
|
|
289
|
-
dto.BoolResponse.from_binary)
|
|
290
|
-
return response.value
|
|
291
|
-
|
|
292
|
-
async def get_bool_async(
|
|
293
|
-
self,
|
|
294
|
-
key: str
|
|
295
|
-
) -> bool:
|
|
296
|
-
"""
|
|
297
|
-
Gets the value at the provided key interpreted as a boolean.
|
|
298
|
-
|
|
299
|
-
Args:
|
|
300
|
-
key: Key to get the value at.
|
|
301
|
-
|
|
302
|
-
Returns:
|
|
303
|
-
Stored value.
|
|
304
|
-
"""
|
|
305
|
-
request = dto.DeviceStorageRequest(
|
|
306
|
-
interface_id=self._axis.device.connection.interface_id,
|
|
307
|
-
device=self._axis.device.device_address,
|
|
308
|
-
axis=self._axis.axis_number,
|
|
309
|
-
key=key,
|
|
310
|
-
)
|
|
311
|
-
response = await call_async(
|
|
312
|
-
"device/get_storage_bool",
|
|
313
|
-
request,
|
|
314
|
-
dto.BoolResponse.from_binary)
|
|
315
|
-
return response.value
|
|
316
|
-
|
|
317
|
-
def erase_key(
|
|
318
|
-
self,
|
|
319
|
-
key: str
|
|
320
|
-
) -> bool:
|
|
321
|
-
"""
|
|
322
|
-
Erases the axis value stored at the provided key.
|
|
323
|
-
|
|
324
|
-
Args:
|
|
325
|
-
key: Key to erase.
|
|
326
|
-
|
|
327
|
-
Returns:
|
|
328
|
-
A boolean indicating if the key existed.
|
|
329
|
-
"""
|
|
330
|
-
request = dto.DeviceStorageRequest(
|
|
331
|
-
interface_id=self._axis.device.connection.interface_id,
|
|
332
|
-
device=self._axis.device.device_address,
|
|
333
|
-
axis=self._axis.axis_number,
|
|
334
|
-
key=key,
|
|
335
|
-
)
|
|
336
|
-
response = call(
|
|
337
|
-
"device/erase_storage",
|
|
338
|
-
request,
|
|
339
|
-
dto.BoolResponse.from_binary)
|
|
340
|
-
return response.value
|
|
341
|
-
|
|
342
|
-
async def erase_key_async(
|
|
343
|
-
self,
|
|
344
|
-
key: str
|
|
345
|
-
) -> bool:
|
|
346
|
-
"""
|
|
347
|
-
Erases the axis value stored at the provided key.
|
|
348
|
-
|
|
349
|
-
Args:
|
|
350
|
-
key: Key to erase.
|
|
351
|
-
|
|
352
|
-
Returns:
|
|
353
|
-
A boolean indicating if the key existed.
|
|
354
|
-
"""
|
|
355
|
-
request = dto.DeviceStorageRequest(
|
|
356
|
-
interface_id=self._axis.device.connection.interface_id,
|
|
357
|
-
device=self._axis.device.device_address,
|
|
358
|
-
axis=self._axis.axis_number,
|
|
359
|
-
key=key,
|
|
360
|
-
)
|
|
361
|
-
response = await call_async(
|
|
362
|
-
"device/erase_storage",
|
|
363
|
-
request,
|
|
364
|
-
dto.BoolResponse.from_binary)
|
|
365
|
-
return response.value
|
|
366
|
-
|
|
367
|
-
def list_keys(
|
|
368
|
-
self,
|
|
369
|
-
prefix: Optional[str] = None
|
|
370
|
-
) -> List[str]:
|
|
371
|
-
"""
|
|
372
|
-
Lists the axis storage keys matching a given prefix.
|
|
373
|
-
Omit the prefix to list all the keys.
|
|
374
|
-
|
|
375
|
-
Args:
|
|
376
|
-
prefix: Optional key prefix.
|
|
377
|
-
|
|
378
|
-
Returns:
|
|
379
|
-
Storage keys matching the given prefix.
|
|
380
|
-
"""
|
|
381
|
-
request = dto.DeviceStorageListKeysRequest(
|
|
382
|
-
interface_id=self._axis.device.connection.interface_id,
|
|
383
|
-
device=self._axis.device.device_address,
|
|
384
|
-
axis=self._axis.axis_number,
|
|
385
|
-
prefix=prefix,
|
|
386
|
-
)
|
|
387
|
-
response = call(
|
|
388
|
-
"device/storage_list_keys",
|
|
389
|
-
request,
|
|
390
|
-
dto.StringArrayResponse.from_binary)
|
|
391
|
-
return response.values
|
|
392
|
-
|
|
393
|
-
async def list_keys_async(
|
|
394
|
-
self,
|
|
395
|
-
prefix: Optional[str] = None
|
|
396
|
-
) -> List[str]:
|
|
397
|
-
"""
|
|
398
|
-
Lists the axis storage keys matching a given prefix.
|
|
399
|
-
Omit the prefix to list all the keys.
|
|
400
|
-
|
|
401
|
-
Args:
|
|
402
|
-
prefix: Optional key prefix.
|
|
403
|
-
|
|
404
|
-
Returns:
|
|
405
|
-
Storage keys matching the given prefix.
|
|
406
|
-
"""
|
|
407
|
-
request = dto.DeviceStorageListKeysRequest(
|
|
408
|
-
interface_id=self._axis.device.connection.interface_id,
|
|
409
|
-
device=self._axis.device.device_address,
|
|
410
|
-
axis=self._axis.axis_number,
|
|
411
|
-
prefix=prefix,
|
|
412
|
-
)
|
|
413
|
-
response = await call_async(
|
|
414
|
-
"device/storage_list_keys",
|
|
415
|
-
request,
|
|
416
|
-
dto.StringArrayResponse.from_binary)
|
|
417
|
-
return response.values
|
|
418
|
-
|
|
419
|
-
def key_exists(
|
|
420
|
-
self,
|
|
421
|
-
key: str
|
|
422
|
-
) -> bool:
|
|
423
|
-
"""
|
|
424
|
-
Determines whether a given key exists in axis storage.
|
|
425
|
-
|
|
426
|
-
Args:
|
|
427
|
-
key: Key which existence to determine.
|
|
428
|
-
|
|
429
|
-
Returns:
|
|
430
|
-
True indicating that the key exists, false otherwise.
|
|
431
|
-
"""
|
|
432
|
-
request = dto.DeviceStorageRequest(
|
|
433
|
-
interface_id=self._axis.device.connection.interface_id,
|
|
434
|
-
device=self._axis.device.device_address,
|
|
435
|
-
axis=self._axis.axis_number,
|
|
436
|
-
key=key,
|
|
437
|
-
)
|
|
438
|
-
response = call(
|
|
439
|
-
"device/storage_key_exists",
|
|
440
|
-
request,
|
|
441
|
-
dto.BoolResponse.from_binary)
|
|
442
|
-
return response.value
|
|
443
|
-
|
|
444
|
-
async def key_exists_async(
|
|
445
|
-
self,
|
|
446
|
-
key: str
|
|
447
|
-
) -> bool:
|
|
448
|
-
"""
|
|
449
|
-
Determines whether a given key exists in axis storage.
|
|
450
|
-
|
|
451
|
-
Args:
|
|
452
|
-
key: Key which existence to determine.
|
|
453
|
-
|
|
454
|
-
Returns:
|
|
455
|
-
True indicating that the key exists, false otherwise.
|
|
456
|
-
"""
|
|
457
|
-
request = dto.DeviceStorageRequest(
|
|
458
|
-
interface_id=self._axis.device.connection.interface_id,
|
|
459
|
-
device=self._axis.device.device_address,
|
|
460
|
-
axis=self._axis.axis_number,
|
|
461
|
-
key=key,
|
|
462
|
-
)
|
|
463
|
-
response = await call_async(
|
|
464
|
-
"device/storage_key_exists",
|
|
465
|
-
request,
|
|
466
|
-
dto.BoolResponse.from_binary)
|
|
467
|
-
return response.value
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
class DeviceStorage:
|
|
471
|
-
"""
|
|
472
|
-
Class providing access to device storage.
|
|
473
|
-
Requires at least Firmware 7.30.
|
|
474
|
-
"""
|
|
475
|
-
|
|
476
|
-
def __init__(self, device: 'Device'):
|
|
477
|
-
self._device: 'Device' = device
|
|
478
|
-
|
|
479
|
-
def set_string(
|
|
480
|
-
self,
|
|
481
|
-
key: str,
|
|
482
|
-
value: str,
|
|
483
|
-
encode: bool = False
|
|
484
|
-
) -> None:
|
|
485
|
-
"""
|
|
486
|
-
Sets the device value stored at the provided key.
|
|
487
|
-
|
|
488
|
-
Args:
|
|
489
|
-
key: Key to set the value at.
|
|
490
|
-
value: Value to set.
|
|
491
|
-
encode: Whether the stored value should be base64 encoded before being stored.
|
|
492
|
-
This makes the string unreadable to humans using the ASCII protocol,
|
|
493
|
-
however, values stored this way can be of any length and use non-ASCII and protocol reserved characters.
|
|
494
|
-
"""
|
|
495
|
-
request = dto.DeviceSetStorageRequest(
|
|
496
|
-
interface_id=self._device.connection.interface_id,
|
|
497
|
-
device=self._device.device_address,
|
|
498
|
-
key=key,
|
|
499
|
-
value=value,
|
|
500
|
-
encode=encode,
|
|
501
|
-
)
|
|
502
|
-
call("device/set_storage", request)
|
|
503
|
-
|
|
504
|
-
async def set_string_async(
|
|
505
|
-
self,
|
|
506
|
-
key: str,
|
|
507
|
-
value: str,
|
|
508
|
-
encode: bool = False
|
|
509
|
-
) -> None:
|
|
510
|
-
"""
|
|
511
|
-
Sets the device value stored at the provided key.
|
|
512
|
-
|
|
513
|
-
Args:
|
|
514
|
-
key: Key to set the value at.
|
|
515
|
-
value: Value to set.
|
|
516
|
-
encode: Whether the stored value should be base64 encoded before being stored.
|
|
517
|
-
This makes the string unreadable to humans using the ASCII protocol,
|
|
518
|
-
however, values stored this way can be of any length and use non-ASCII and protocol reserved characters.
|
|
519
|
-
"""
|
|
520
|
-
request = dto.DeviceSetStorageRequest(
|
|
521
|
-
interface_id=self._device.connection.interface_id,
|
|
522
|
-
device=self._device.device_address,
|
|
523
|
-
key=key,
|
|
524
|
-
value=value,
|
|
525
|
-
encode=encode,
|
|
526
|
-
)
|
|
527
|
-
await call_async("device/set_storage", request)
|
|
528
|
-
|
|
529
|
-
def get_string(
|
|
530
|
-
self,
|
|
531
|
-
key: str,
|
|
532
|
-
decode: bool = False
|
|
533
|
-
) -> str:
|
|
534
|
-
"""
|
|
535
|
-
Gets the device value stored with the provided key.
|
|
536
|
-
|
|
537
|
-
Args:
|
|
538
|
-
key: Key to read the value of.
|
|
539
|
-
decode: Whether the stored value should be decoded.
|
|
540
|
-
Only use this when reading values set by storage.set with "encode" true.
|
|
541
|
-
|
|
542
|
-
Returns:
|
|
543
|
-
Stored value.
|
|
544
|
-
"""
|
|
545
|
-
request = dto.DeviceGetStorageRequest(
|
|
546
|
-
interface_id=self._device.connection.interface_id,
|
|
547
|
-
device=self._device.device_address,
|
|
548
|
-
key=key,
|
|
549
|
-
decode=decode,
|
|
550
|
-
)
|
|
551
|
-
response = call(
|
|
552
|
-
"device/get_storage",
|
|
553
|
-
request,
|
|
554
|
-
dto.StringResponse.from_binary)
|
|
555
|
-
return response.value
|
|
556
|
-
|
|
557
|
-
async def get_string_async(
|
|
558
|
-
self,
|
|
559
|
-
key: str,
|
|
560
|
-
decode: bool = False
|
|
561
|
-
) -> str:
|
|
562
|
-
"""
|
|
563
|
-
Gets the device value stored with the provided key.
|
|
564
|
-
|
|
565
|
-
Args:
|
|
566
|
-
key: Key to read the value of.
|
|
567
|
-
decode: Whether the stored value should be decoded.
|
|
568
|
-
Only use this when reading values set by storage.set with "encode" true.
|
|
569
|
-
|
|
570
|
-
Returns:
|
|
571
|
-
Stored value.
|
|
572
|
-
"""
|
|
573
|
-
request = dto.DeviceGetStorageRequest(
|
|
574
|
-
interface_id=self._device.connection.interface_id,
|
|
575
|
-
device=self._device.device_address,
|
|
576
|
-
key=key,
|
|
577
|
-
decode=decode,
|
|
578
|
-
)
|
|
579
|
-
response = await call_async(
|
|
580
|
-
"device/get_storage",
|
|
581
|
-
request,
|
|
582
|
-
dto.StringResponse.from_binary)
|
|
583
|
-
return response.value
|
|
584
|
-
|
|
585
|
-
def set_number(
|
|
586
|
-
self,
|
|
587
|
-
key: str,
|
|
588
|
-
value: float
|
|
589
|
-
) -> None:
|
|
590
|
-
"""
|
|
591
|
-
Sets the value at the provided key to the provided number.
|
|
592
|
-
|
|
593
|
-
Args:
|
|
594
|
-
key: Key to set the value at.
|
|
595
|
-
value: Value to set.
|
|
596
|
-
"""
|
|
597
|
-
request = dto.DeviceSetStorageNumberRequest(
|
|
598
|
-
interface_id=self._device.connection.interface_id,
|
|
599
|
-
device=self._device.device_address,
|
|
600
|
-
key=key,
|
|
601
|
-
value=value,
|
|
602
|
-
)
|
|
603
|
-
call("device/set_storage_number", request)
|
|
604
|
-
|
|
605
|
-
async def set_number_async(
|
|
606
|
-
self,
|
|
607
|
-
key: str,
|
|
608
|
-
value: float
|
|
609
|
-
) -> None:
|
|
610
|
-
"""
|
|
611
|
-
Sets the value at the provided key to the provided number.
|
|
612
|
-
|
|
613
|
-
Args:
|
|
614
|
-
key: Key to set the value at.
|
|
615
|
-
value: Value to set.
|
|
616
|
-
"""
|
|
617
|
-
request = dto.DeviceSetStorageNumberRequest(
|
|
618
|
-
interface_id=self._device.connection.interface_id,
|
|
619
|
-
device=self._device.device_address,
|
|
620
|
-
key=key,
|
|
621
|
-
value=value,
|
|
622
|
-
)
|
|
623
|
-
await call_async("device/set_storage_number", request)
|
|
624
|
-
|
|
625
|
-
def get_number(
|
|
626
|
-
self,
|
|
627
|
-
key: str
|
|
628
|
-
) -> float:
|
|
629
|
-
"""
|
|
630
|
-
Gets the value at the provided key interpreted as a number.
|
|
631
|
-
|
|
632
|
-
Args:
|
|
633
|
-
key: Key to get the value at.
|
|
634
|
-
|
|
635
|
-
Returns:
|
|
636
|
-
Stored value.
|
|
637
|
-
"""
|
|
638
|
-
request = dto.DeviceStorageRequest(
|
|
639
|
-
interface_id=self._device.connection.interface_id,
|
|
640
|
-
device=self._device.device_address,
|
|
641
|
-
key=key,
|
|
642
|
-
)
|
|
643
|
-
response = call(
|
|
644
|
-
"device/get_storage_number",
|
|
645
|
-
request,
|
|
646
|
-
dto.DoubleResponse.from_binary)
|
|
647
|
-
return response.value
|
|
648
|
-
|
|
649
|
-
async def get_number_async(
|
|
650
|
-
self,
|
|
651
|
-
key: str
|
|
652
|
-
) -> float:
|
|
653
|
-
"""
|
|
654
|
-
Gets the value at the provided key interpreted as a number.
|
|
655
|
-
|
|
656
|
-
Args:
|
|
657
|
-
key: Key to get the value at.
|
|
658
|
-
|
|
659
|
-
Returns:
|
|
660
|
-
Stored value.
|
|
661
|
-
"""
|
|
662
|
-
request = dto.DeviceStorageRequest(
|
|
663
|
-
interface_id=self._device.connection.interface_id,
|
|
664
|
-
device=self._device.device_address,
|
|
665
|
-
key=key,
|
|
666
|
-
)
|
|
667
|
-
response = await call_async(
|
|
668
|
-
"device/get_storage_number",
|
|
669
|
-
request,
|
|
670
|
-
dto.DoubleResponse.from_binary)
|
|
671
|
-
return response.value
|
|
672
|
-
|
|
673
|
-
def set_bool(
|
|
674
|
-
self,
|
|
675
|
-
key: str,
|
|
676
|
-
value: bool
|
|
677
|
-
) -> None:
|
|
678
|
-
"""
|
|
679
|
-
Sets the value at the provided key to the provided boolean.
|
|
680
|
-
|
|
681
|
-
Args:
|
|
682
|
-
key: Key to set the value at.
|
|
683
|
-
value: Value to set.
|
|
684
|
-
"""
|
|
685
|
-
request = dto.DeviceSetStorageBoolRequest(
|
|
686
|
-
interface_id=self._device.connection.interface_id,
|
|
687
|
-
device=self._device.device_address,
|
|
688
|
-
key=key,
|
|
689
|
-
value=value,
|
|
690
|
-
)
|
|
691
|
-
call("device/set_storage_bool", request)
|
|
692
|
-
|
|
693
|
-
async def set_bool_async(
|
|
694
|
-
self,
|
|
695
|
-
key: str,
|
|
696
|
-
value: bool
|
|
697
|
-
) -> None:
|
|
698
|
-
"""
|
|
699
|
-
Sets the value at the provided key to the provided boolean.
|
|
700
|
-
|
|
701
|
-
Args:
|
|
702
|
-
key: Key to set the value at.
|
|
703
|
-
value: Value to set.
|
|
704
|
-
"""
|
|
705
|
-
request = dto.DeviceSetStorageBoolRequest(
|
|
706
|
-
interface_id=self._device.connection.interface_id,
|
|
707
|
-
device=self._device.device_address,
|
|
708
|
-
key=key,
|
|
709
|
-
value=value,
|
|
710
|
-
)
|
|
711
|
-
await call_async("device/set_storage_bool", request)
|
|
712
|
-
|
|
713
|
-
def get_bool(
|
|
714
|
-
self,
|
|
715
|
-
key: str
|
|
716
|
-
) -> bool:
|
|
717
|
-
"""
|
|
718
|
-
Gets the value at the provided key interpreted as a boolean.
|
|
719
|
-
|
|
720
|
-
Args:
|
|
721
|
-
key: Key to get the value at.
|
|
722
|
-
|
|
723
|
-
Returns:
|
|
724
|
-
Stored value.
|
|
725
|
-
"""
|
|
726
|
-
request = dto.DeviceStorageRequest(
|
|
727
|
-
interface_id=self._device.connection.interface_id,
|
|
728
|
-
device=self._device.device_address,
|
|
729
|
-
key=key,
|
|
730
|
-
)
|
|
731
|
-
response = call(
|
|
732
|
-
"device/get_storage_bool",
|
|
733
|
-
request,
|
|
734
|
-
dto.BoolResponse.from_binary)
|
|
735
|
-
return response.value
|
|
736
|
-
|
|
737
|
-
async def get_bool_async(
|
|
738
|
-
self,
|
|
739
|
-
key: str
|
|
740
|
-
) -> bool:
|
|
741
|
-
"""
|
|
742
|
-
Gets the value at the provided key interpreted as a boolean.
|
|
743
|
-
|
|
744
|
-
Args:
|
|
745
|
-
key: Key to get the value at.
|
|
746
|
-
|
|
747
|
-
Returns:
|
|
748
|
-
Stored value.
|
|
749
|
-
"""
|
|
750
|
-
request = dto.DeviceStorageRequest(
|
|
751
|
-
interface_id=self._device.connection.interface_id,
|
|
752
|
-
device=self._device.device_address,
|
|
753
|
-
key=key,
|
|
754
|
-
)
|
|
755
|
-
response = await call_async(
|
|
756
|
-
"device/get_storage_bool",
|
|
757
|
-
request,
|
|
758
|
-
dto.BoolResponse.from_binary)
|
|
759
|
-
return response.value
|
|
760
|
-
|
|
761
|
-
def erase_key(
|
|
762
|
-
self,
|
|
763
|
-
key: str
|
|
764
|
-
) -> bool:
|
|
765
|
-
"""
|
|
766
|
-
Erases the device value stored at the provided key.
|
|
767
|
-
|
|
768
|
-
Args:
|
|
769
|
-
key: Key to erase.
|
|
770
|
-
|
|
771
|
-
Returns:
|
|
772
|
-
A boolean indicating if the key existed.
|
|
773
|
-
"""
|
|
774
|
-
request = dto.DeviceStorageRequest(
|
|
775
|
-
interface_id=self._device.connection.interface_id,
|
|
776
|
-
device=self._device.device_address,
|
|
777
|
-
key=key,
|
|
778
|
-
)
|
|
779
|
-
response = call(
|
|
780
|
-
"device/erase_storage",
|
|
781
|
-
request,
|
|
782
|
-
dto.BoolResponse.from_binary)
|
|
783
|
-
return response.value
|
|
784
|
-
|
|
785
|
-
async def erase_key_async(
|
|
786
|
-
self,
|
|
787
|
-
key: str
|
|
788
|
-
) -> bool:
|
|
789
|
-
"""
|
|
790
|
-
Erases the device value stored at the provided key.
|
|
791
|
-
|
|
792
|
-
Args:
|
|
793
|
-
key: Key to erase.
|
|
794
|
-
|
|
795
|
-
Returns:
|
|
796
|
-
A boolean indicating if the key existed.
|
|
797
|
-
"""
|
|
798
|
-
request = dto.DeviceStorageRequest(
|
|
799
|
-
interface_id=self._device.connection.interface_id,
|
|
800
|
-
device=self._device.device_address,
|
|
801
|
-
key=key,
|
|
802
|
-
)
|
|
803
|
-
response = await call_async(
|
|
804
|
-
"device/erase_storage",
|
|
805
|
-
request,
|
|
806
|
-
dto.BoolResponse.from_binary)
|
|
807
|
-
return response.value
|
|
808
|
-
|
|
809
|
-
def list_keys(
|
|
810
|
-
self,
|
|
811
|
-
prefix: Optional[str] = None
|
|
812
|
-
) -> List[str]:
|
|
813
|
-
"""
|
|
814
|
-
Lists the device storage keys matching a given prefix.
|
|
815
|
-
Omit the prefix to list all the keys.
|
|
816
|
-
|
|
817
|
-
Args:
|
|
818
|
-
prefix: Optional key prefix.
|
|
819
|
-
|
|
820
|
-
Returns:
|
|
821
|
-
Storage keys matching the given prefix.
|
|
822
|
-
"""
|
|
823
|
-
request = dto.DeviceStorageListKeysRequest(
|
|
824
|
-
interface_id=self._device.connection.interface_id,
|
|
825
|
-
device=self._device.device_address,
|
|
826
|
-
prefix=prefix,
|
|
827
|
-
)
|
|
828
|
-
response = call(
|
|
829
|
-
"device/storage_list_keys",
|
|
830
|
-
request,
|
|
831
|
-
dto.StringArrayResponse.from_binary)
|
|
832
|
-
return response.values
|
|
833
|
-
|
|
834
|
-
async def list_keys_async(
|
|
835
|
-
self,
|
|
836
|
-
prefix: Optional[str] = None
|
|
837
|
-
) -> List[str]:
|
|
838
|
-
"""
|
|
839
|
-
Lists the device storage keys matching a given prefix.
|
|
840
|
-
Omit the prefix to list all the keys.
|
|
841
|
-
|
|
842
|
-
Args:
|
|
843
|
-
prefix: Optional key prefix.
|
|
844
|
-
|
|
845
|
-
Returns:
|
|
846
|
-
Storage keys matching the given prefix.
|
|
847
|
-
"""
|
|
848
|
-
request = dto.DeviceStorageListKeysRequest(
|
|
849
|
-
interface_id=self._device.connection.interface_id,
|
|
850
|
-
device=self._device.device_address,
|
|
851
|
-
prefix=prefix,
|
|
852
|
-
)
|
|
853
|
-
response = await call_async(
|
|
854
|
-
"device/storage_list_keys",
|
|
855
|
-
request,
|
|
856
|
-
dto.StringArrayResponse.from_binary)
|
|
857
|
-
return response.values
|
|
858
|
-
|
|
859
|
-
def key_exists(
|
|
860
|
-
self,
|
|
861
|
-
key: str
|
|
862
|
-
) -> bool:
|
|
863
|
-
"""
|
|
864
|
-
Determines whether a given key exists in device storage.
|
|
865
|
-
|
|
866
|
-
Args:
|
|
867
|
-
key: Key which existence to determine.
|
|
868
|
-
|
|
869
|
-
Returns:
|
|
870
|
-
True indicating that the key exists, false otherwise.
|
|
871
|
-
"""
|
|
872
|
-
request = dto.DeviceStorageRequest(
|
|
873
|
-
interface_id=self._device.connection.interface_id,
|
|
874
|
-
device=self._device.device_address,
|
|
875
|
-
key=key,
|
|
876
|
-
)
|
|
877
|
-
response = call(
|
|
878
|
-
"device/storage_key_exists",
|
|
879
|
-
request,
|
|
880
|
-
dto.BoolResponse.from_binary)
|
|
881
|
-
return response.value
|
|
882
|
-
|
|
883
|
-
async def key_exists_async(
|
|
884
|
-
self,
|
|
885
|
-
key: str
|
|
886
|
-
) -> bool:
|
|
887
|
-
"""
|
|
888
|
-
Determines whether a given key exists in device storage.
|
|
889
|
-
|
|
890
|
-
Args:
|
|
891
|
-
key: Key which existence to determine.
|
|
892
|
-
|
|
893
|
-
Returns:
|
|
894
|
-
True indicating that the key exists, false otherwise.
|
|
895
|
-
"""
|
|
896
|
-
request = dto.DeviceStorageRequest(
|
|
897
|
-
interface_id=self._device.connection.interface_id,
|
|
898
|
-
device=self._device.device_address,
|
|
899
|
-
key=key,
|
|
900
|
-
)
|
|
901
|
-
response = await call_async(
|
|
902
|
-
"device/storage_key_exists",
|
|
903
|
-
request,
|
|
904
|
-
dto.BoolResponse.from_binary)
|
|
905
|
-
return response.value
|
|
1
|
+
# ===== THIS FILE IS GENERATED FROM A TEMPLATE ===== #
|
|
2
|
+
# ============== DO NOT EDIT DIRECTLY ============== #
|
|
3
|
+
|
|
4
|
+
from typing import TYPE_CHECKING, List, Optional
|
|
5
|
+
from ..call import call, call_async
|
|
6
|
+
|
|
7
|
+
from ..dto import requests as dto
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from .axis import Axis
|
|
11
|
+
from .device import Device
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class AxisStorage:
|
|
15
|
+
"""
|
|
16
|
+
Class providing access to axis storage.
|
|
17
|
+
Requires at least Firmware 7.30.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
def __init__(self, axis: 'Axis'):
|
|
21
|
+
self._axis: 'Axis' = axis
|
|
22
|
+
|
|
23
|
+
def set_string(
|
|
24
|
+
self,
|
|
25
|
+
key: str,
|
|
26
|
+
value: str,
|
|
27
|
+
encode: bool = False
|
|
28
|
+
) -> None:
|
|
29
|
+
"""
|
|
30
|
+
Sets the axis value stored at the provided key.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
key: Key to set the value at.
|
|
34
|
+
value: Value to set.
|
|
35
|
+
encode: Whether the stored value should be base64 encoded before being stored.
|
|
36
|
+
This makes the string unreadable to humans using the ASCII protocol,
|
|
37
|
+
however, values stored this way can be of any length and use non-ASCII and protocol reserved characters.
|
|
38
|
+
"""
|
|
39
|
+
request = dto.DeviceSetStorageRequest(
|
|
40
|
+
interface_id=self._axis.device.connection.interface_id,
|
|
41
|
+
device=self._axis.device.device_address,
|
|
42
|
+
axis=self._axis.axis_number,
|
|
43
|
+
key=key,
|
|
44
|
+
value=value,
|
|
45
|
+
encode=encode,
|
|
46
|
+
)
|
|
47
|
+
call("device/set_storage", request)
|
|
48
|
+
|
|
49
|
+
async def set_string_async(
|
|
50
|
+
self,
|
|
51
|
+
key: str,
|
|
52
|
+
value: str,
|
|
53
|
+
encode: bool = False
|
|
54
|
+
) -> None:
|
|
55
|
+
"""
|
|
56
|
+
Sets the axis value stored at the provided key.
|
|
57
|
+
|
|
58
|
+
Args:
|
|
59
|
+
key: Key to set the value at.
|
|
60
|
+
value: Value to set.
|
|
61
|
+
encode: Whether the stored value should be base64 encoded before being stored.
|
|
62
|
+
This makes the string unreadable to humans using the ASCII protocol,
|
|
63
|
+
however, values stored this way can be of any length and use non-ASCII and protocol reserved characters.
|
|
64
|
+
"""
|
|
65
|
+
request = dto.DeviceSetStorageRequest(
|
|
66
|
+
interface_id=self._axis.device.connection.interface_id,
|
|
67
|
+
device=self._axis.device.device_address,
|
|
68
|
+
axis=self._axis.axis_number,
|
|
69
|
+
key=key,
|
|
70
|
+
value=value,
|
|
71
|
+
encode=encode,
|
|
72
|
+
)
|
|
73
|
+
await call_async("device/set_storage", request)
|
|
74
|
+
|
|
75
|
+
def get_string(
|
|
76
|
+
self,
|
|
77
|
+
key: str,
|
|
78
|
+
decode: bool = False
|
|
79
|
+
) -> str:
|
|
80
|
+
"""
|
|
81
|
+
Gets the axis value stored with the provided key.
|
|
82
|
+
|
|
83
|
+
Args:
|
|
84
|
+
key: Key to read the value of.
|
|
85
|
+
decode: Whether the stored value should be decoded.
|
|
86
|
+
Only use this when reading values set by storage.set with "encode" true.
|
|
87
|
+
|
|
88
|
+
Returns:
|
|
89
|
+
Stored value.
|
|
90
|
+
"""
|
|
91
|
+
request = dto.DeviceGetStorageRequest(
|
|
92
|
+
interface_id=self._axis.device.connection.interface_id,
|
|
93
|
+
device=self._axis.device.device_address,
|
|
94
|
+
axis=self._axis.axis_number,
|
|
95
|
+
key=key,
|
|
96
|
+
decode=decode,
|
|
97
|
+
)
|
|
98
|
+
response = call(
|
|
99
|
+
"device/get_storage",
|
|
100
|
+
request,
|
|
101
|
+
dto.StringResponse.from_binary)
|
|
102
|
+
return response.value
|
|
103
|
+
|
|
104
|
+
async def get_string_async(
|
|
105
|
+
self,
|
|
106
|
+
key: str,
|
|
107
|
+
decode: bool = False
|
|
108
|
+
) -> str:
|
|
109
|
+
"""
|
|
110
|
+
Gets the axis value stored with the provided key.
|
|
111
|
+
|
|
112
|
+
Args:
|
|
113
|
+
key: Key to read the value of.
|
|
114
|
+
decode: Whether the stored value should be decoded.
|
|
115
|
+
Only use this when reading values set by storage.set with "encode" true.
|
|
116
|
+
|
|
117
|
+
Returns:
|
|
118
|
+
Stored value.
|
|
119
|
+
"""
|
|
120
|
+
request = dto.DeviceGetStorageRequest(
|
|
121
|
+
interface_id=self._axis.device.connection.interface_id,
|
|
122
|
+
device=self._axis.device.device_address,
|
|
123
|
+
axis=self._axis.axis_number,
|
|
124
|
+
key=key,
|
|
125
|
+
decode=decode,
|
|
126
|
+
)
|
|
127
|
+
response = await call_async(
|
|
128
|
+
"device/get_storage",
|
|
129
|
+
request,
|
|
130
|
+
dto.StringResponse.from_binary)
|
|
131
|
+
return response.value
|
|
132
|
+
|
|
133
|
+
def set_number(
|
|
134
|
+
self,
|
|
135
|
+
key: str,
|
|
136
|
+
value: float
|
|
137
|
+
) -> None:
|
|
138
|
+
"""
|
|
139
|
+
Sets the value at the provided key to the provided number.
|
|
140
|
+
|
|
141
|
+
Args:
|
|
142
|
+
key: Key to set the value at.
|
|
143
|
+
value: Value to set.
|
|
144
|
+
"""
|
|
145
|
+
request = dto.DeviceSetStorageNumberRequest(
|
|
146
|
+
interface_id=self._axis.device.connection.interface_id,
|
|
147
|
+
device=self._axis.device.device_address,
|
|
148
|
+
axis=self._axis.axis_number,
|
|
149
|
+
key=key,
|
|
150
|
+
value=value,
|
|
151
|
+
)
|
|
152
|
+
call("device/set_storage_number", request)
|
|
153
|
+
|
|
154
|
+
async def set_number_async(
|
|
155
|
+
self,
|
|
156
|
+
key: str,
|
|
157
|
+
value: float
|
|
158
|
+
) -> None:
|
|
159
|
+
"""
|
|
160
|
+
Sets the value at the provided key to the provided number.
|
|
161
|
+
|
|
162
|
+
Args:
|
|
163
|
+
key: Key to set the value at.
|
|
164
|
+
value: Value to set.
|
|
165
|
+
"""
|
|
166
|
+
request = dto.DeviceSetStorageNumberRequest(
|
|
167
|
+
interface_id=self._axis.device.connection.interface_id,
|
|
168
|
+
device=self._axis.device.device_address,
|
|
169
|
+
axis=self._axis.axis_number,
|
|
170
|
+
key=key,
|
|
171
|
+
value=value,
|
|
172
|
+
)
|
|
173
|
+
await call_async("device/set_storage_number", request)
|
|
174
|
+
|
|
175
|
+
def get_number(
|
|
176
|
+
self,
|
|
177
|
+
key: str
|
|
178
|
+
) -> float:
|
|
179
|
+
"""
|
|
180
|
+
Gets the value at the provided key interpreted as a number.
|
|
181
|
+
|
|
182
|
+
Args:
|
|
183
|
+
key: Key to get the value at.
|
|
184
|
+
|
|
185
|
+
Returns:
|
|
186
|
+
Stored value.
|
|
187
|
+
"""
|
|
188
|
+
request = dto.DeviceStorageRequest(
|
|
189
|
+
interface_id=self._axis.device.connection.interface_id,
|
|
190
|
+
device=self._axis.device.device_address,
|
|
191
|
+
axis=self._axis.axis_number,
|
|
192
|
+
key=key,
|
|
193
|
+
)
|
|
194
|
+
response = call(
|
|
195
|
+
"device/get_storage_number",
|
|
196
|
+
request,
|
|
197
|
+
dto.DoubleResponse.from_binary)
|
|
198
|
+
return response.value
|
|
199
|
+
|
|
200
|
+
async def get_number_async(
|
|
201
|
+
self,
|
|
202
|
+
key: str
|
|
203
|
+
) -> float:
|
|
204
|
+
"""
|
|
205
|
+
Gets the value at the provided key interpreted as a number.
|
|
206
|
+
|
|
207
|
+
Args:
|
|
208
|
+
key: Key to get the value at.
|
|
209
|
+
|
|
210
|
+
Returns:
|
|
211
|
+
Stored value.
|
|
212
|
+
"""
|
|
213
|
+
request = dto.DeviceStorageRequest(
|
|
214
|
+
interface_id=self._axis.device.connection.interface_id,
|
|
215
|
+
device=self._axis.device.device_address,
|
|
216
|
+
axis=self._axis.axis_number,
|
|
217
|
+
key=key,
|
|
218
|
+
)
|
|
219
|
+
response = await call_async(
|
|
220
|
+
"device/get_storage_number",
|
|
221
|
+
request,
|
|
222
|
+
dto.DoubleResponse.from_binary)
|
|
223
|
+
return response.value
|
|
224
|
+
|
|
225
|
+
def set_bool(
|
|
226
|
+
self,
|
|
227
|
+
key: str,
|
|
228
|
+
value: bool
|
|
229
|
+
) -> None:
|
|
230
|
+
"""
|
|
231
|
+
Sets the value at the provided key to the provided boolean.
|
|
232
|
+
|
|
233
|
+
Args:
|
|
234
|
+
key: Key to set the value at.
|
|
235
|
+
value: Value to set.
|
|
236
|
+
"""
|
|
237
|
+
request = dto.DeviceSetStorageBoolRequest(
|
|
238
|
+
interface_id=self._axis.device.connection.interface_id,
|
|
239
|
+
device=self._axis.device.device_address,
|
|
240
|
+
axis=self._axis.axis_number,
|
|
241
|
+
key=key,
|
|
242
|
+
value=value,
|
|
243
|
+
)
|
|
244
|
+
call("device/set_storage_bool", request)
|
|
245
|
+
|
|
246
|
+
async def set_bool_async(
|
|
247
|
+
self,
|
|
248
|
+
key: str,
|
|
249
|
+
value: bool
|
|
250
|
+
) -> None:
|
|
251
|
+
"""
|
|
252
|
+
Sets the value at the provided key to the provided boolean.
|
|
253
|
+
|
|
254
|
+
Args:
|
|
255
|
+
key: Key to set the value at.
|
|
256
|
+
value: Value to set.
|
|
257
|
+
"""
|
|
258
|
+
request = dto.DeviceSetStorageBoolRequest(
|
|
259
|
+
interface_id=self._axis.device.connection.interface_id,
|
|
260
|
+
device=self._axis.device.device_address,
|
|
261
|
+
axis=self._axis.axis_number,
|
|
262
|
+
key=key,
|
|
263
|
+
value=value,
|
|
264
|
+
)
|
|
265
|
+
await call_async("device/set_storage_bool", request)
|
|
266
|
+
|
|
267
|
+
def get_bool(
|
|
268
|
+
self,
|
|
269
|
+
key: str
|
|
270
|
+
) -> bool:
|
|
271
|
+
"""
|
|
272
|
+
Gets the value at the provided key interpreted as a boolean.
|
|
273
|
+
|
|
274
|
+
Args:
|
|
275
|
+
key: Key to get the value at.
|
|
276
|
+
|
|
277
|
+
Returns:
|
|
278
|
+
Stored value.
|
|
279
|
+
"""
|
|
280
|
+
request = dto.DeviceStorageRequest(
|
|
281
|
+
interface_id=self._axis.device.connection.interface_id,
|
|
282
|
+
device=self._axis.device.device_address,
|
|
283
|
+
axis=self._axis.axis_number,
|
|
284
|
+
key=key,
|
|
285
|
+
)
|
|
286
|
+
response = call(
|
|
287
|
+
"device/get_storage_bool",
|
|
288
|
+
request,
|
|
289
|
+
dto.BoolResponse.from_binary)
|
|
290
|
+
return response.value
|
|
291
|
+
|
|
292
|
+
async def get_bool_async(
|
|
293
|
+
self,
|
|
294
|
+
key: str
|
|
295
|
+
) -> bool:
|
|
296
|
+
"""
|
|
297
|
+
Gets the value at the provided key interpreted as a boolean.
|
|
298
|
+
|
|
299
|
+
Args:
|
|
300
|
+
key: Key to get the value at.
|
|
301
|
+
|
|
302
|
+
Returns:
|
|
303
|
+
Stored value.
|
|
304
|
+
"""
|
|
305
|
+
request = dto.DeviceStorageRequest(
|
|
306
|
+
interface_id=self._axis.device.connection.interface_id,
|
|
307
|
+
device=self._axis.device.device_address,
|
|
308
|
+
axis=self._axis.axis_number,
|
|
309
|
+
key=key,
|
|
310
|
+
)
|
|
311
|
+
response = await call_async(
|
|
312
|
+
"device/get_storage_bool",
|
|
313
|
+
request,
|
|
314
|
+
dto.BoolResponse.from_binary)
|
|
315
|
+
return response.value
|
|
316
|
+
|
|
317
|
+
def erase_key(
|
|
318
|
+
self,
|
|
319
|
+
key: str
|
|
320
|
+
) -> bool:
|
|
321
|
+
"""
|
|
322
|
+
Erases the axis value stored at the provided key.
|
|
323
|
+
|
|
324
|
+
Args:
|
|
325
|
+
key: Key to erase.
|
|
326
|
+
|
|
327
|
+
Returns:
|
|
328
|
+
A boolean indicating if the key existed.
|
|
329
|
+
"""
|
|
330
|
+
request = dto.DeviceStorageRequest(
|
|
331
|
+
interface_id=self._axis.device.connection.interface_id,
|
|
332
|
+
device=self._axis.device.device_address,
|
|
333
|
+
axis=self._axis.axis_number,
|
|
334
|
+
key=key,
|
|
335
|
+
)
|
|
336
|
+
response = call(
|
|
337
|
+
"device/erase_storage",
|
|
338
|
+
request,
|
|
339
|
+
dto.BoolResponse.from_binary)
|
|
340
|
+
return response.value
|
|
341
|
+
|
|
342
|
+
async def erase_key_async(
|
|
343
|
+
self,
|
|
344
|
+
key: str
|
|
345
|
+
) -> bool:
|
|
346
|
+
"""
|
|
347
|
+
Erases the axis value stored at the provided key.
|
|
348
|
+
|
|
349
|
+
Args:
|
|
350
|
+
key: Key to erase.
|
|
351
|
+
|
|
352
|
+
Returns:
|
|
353
|
+
A boolean indicating if the key existed.
|
|
354
|
+
"""
|
|
355
|
+
request = dto.DeviceStorageRequest(
|
|
356
|
+
interface_id=self._axis.device.connection.interface_id,
|
|
357
|
+
device=self._axis.device.device_address,
|
|
358
|
+
axis=self._axis.axis_number,
|
|
359
|
+
key=key,
|
|
360
|
+
)
|
|
361
|
+
response = await call_async(
|
|
362
|
+
"device/erase_storage",
|
|
363
|
+
request,
|
|
364
|
+
dto.BoolResponse.from_binary)
|
|
365
|
+
return response.value
|
|
366
|
+
|
|
367
|
+
def list_keys(
|
|
368
|
+
self,
|
|
369
|
+
prefix: Optional[str] = None
|
|
370
|
+
) -> List[str]:
|
|
371
|
+
"""
|
|
372
|
+
Lists the axis storage keys matching a given prefix.
|
|
373
|
+
Omit the prefix to list all the keys.
|
|
374
|
+
|
|
375
|
+
Args:
|
|
376
|
+
prefix: Optional key prefix.
|
|
377
|
+
|
|
378
|
+
Returns:
|
|
379
|
+
Storage keys matching the given prefix.
|
|
380
|
+
"""
|
|
381
|
+
request = dto.DeviceStorageListKeysRequest(
|
|
382
|
+
interface_id=self._axis.device.connection.interface_id,
|
|
383
|
+
device=self._axis.device.device_address,
|
|
384
|
+
axis=self._axis.axis_number,
|
|
385
|
+
prefix=prefix,
|
|
386
|
+
)
|
|
387
|
+
response = call(
|
|
388
|
+
"device/storage_list_keys",
|
|
389
|
+
request,
|
|
390
|
+
dto.StringArrayResponse.from_binary)
|
|
391
|
+
return response.values
|
|
392
|
+
|
|
393
|
+
async def list_keys_async(
|
|
394
|
+
self,
|
|
395
|
+
prefix: Optional[str] = None
|
|
396
|
+
) -> List[str]:
|
|
397
|
+
"""
|
|
398
|
+
Lists the axis storage keys matching a given prefix.
|
|
399
|
+
Omit the prefix to list all the keys.
|
|
400
|
+
|
|
401
|
+
Args:
|
|
402
|
+
prefix: Optional key prefix.
|
|
403
|
+
|
|
404
|
+
Returns:
|
|
405
|
+
Storage keys matching the given prefix.
|
|
406
|
+
"""
|
|
407
|
+
request = dto.DeviceStorageListKeysRequest(
|
|
408
|
+
interface_id=self._axis.device.connection.interface_id,
|
|
409
|
+
device=self._axis.device.device_address,
|
|
410
|
+
axis=self._axis.axis_number,
|
|
411
|
+
prefix=prefix,
|
|
412
|
+
)
|
|
413
|
+
response = await call_async(
|
|
414
|
+
"device/storage_list_keys",
|
|
415
|
+
request,
|
|
416
|
+
dto.StringArrayResponse.from_binary)
|
|
417
|
+
return response.values
|
|
418
|
+
|
|
419
|
+
def key_exists(
|
|
420
|
+
self,
|
|
421
|
+
key: str
|
|
422
|
+
) -> bool:
|
|
423
|
+
"""
|
|
424
|
+
Determines whether a given key exists in axis storage.
|
|
425
|
+
|
|
426
|
+
Args:
|
|
427
|
+
key: Key which existence to determine.
|
|
428
|
+
|
|
429
|
+
Returns:
|
|
430
|
+
True indicating that the key exists, false otherwise.
|
|
431
|
+
"""
|
|
432
|
+
request = dto.DeviceStorageRequest(
|
|
433
|
+
interface_id=self._axis.device.connection.interface_id,
|
|
434
|
+
device=self._axis.device.device_address,
|
|
435
|
+
axis=self._axis.axis_number,
|
|
436
|
+
key=key,
|
|
437
|
+
)
|
|
438
|
+
response = call(
|
|
439
|
+
"device/storage_key_exists",
|
|
440
|
+
request,
|
|
441
|
+
dto.BoolResponse.from_binary)
|
|
442
|
+
return response.value
|
|
443
|
+
|
|
444
|
+
async def key_exists_async(
|
|
445
|
+
self,
|
|
446
|
+
key: str
|
|
447
|
+
) -> bool:
|
|
448
|
+
"""
|
|
449
|
+
Determines whether a given key exists in axis storage.
|
|
450
|
+
|
|
451
|
+
Args:
|
|
452
|
+
key: Key which existence to determine.
|
|
453
|
+
|
|
454
|
+
Returns:
|
|
455
|
+
True indicating that the key exists, false otherwise.
|
|
456
|
+
"""
|
|
457
|
+
request = dto.DeviceStorageRequest(
|
|
458
|
+
interface_id=self._axis.device.connection.interface_id,
|
|
459
|
+
device=self._axis.device.device_address,
|
|
460
|
+
axis=self._axis.axis_number,
|
|
461
|
+
key=key,
|
|
462
|
+
)
|
|
463
|
+
response = await call_async(
|
|
464
|
+
"device/storage_key_exists",
|
|
465
|
+
request,
|
|
466
|
+
dto.BoolResponse.from_binary)
|
|
467
|
+
return response.value
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
class DeviceStorage:
|
|
471
|
+
"""
|
|
472
|
+
Class providing access to device storage.
|
|
473
|
+
Requires at least Firmware 7.30.
|
|
474
|
+
"""
|
|
475
|
+
|
|
476
|
+
def __init__(self, device: 'Device'):
|
|
477
|
+
self._device: 'Device' = device
|
|
478
|
+
|
|
479
|
+
def set_string(
|
|
480
|
+
self,
|
|
481
|
+
key: str,
|
|
482
|
+
value: str,
|
|
483
|
+
encode: bool = False
|
|
484
|
+
) -> None:
|
|
485
|
+
"""
|
|
486
|
+
Sets the device value stored at the provided key.
|
|
487
|
+
|
|
488
|
+
Args:
|
|
489
|
+
key: Key to set the value at.
|
|
490
|
+
value: Value to set.
|
|
491
|
+
encode: Whether the stored value should be base64 encoded before being stored.
|
|
492
|
+
This makes the string unreadable to humans using the ASCII protocol,
|
|
493
|
+
however, values stored this way can be of any length and use non-ASCII and protocol reserved characters.
|
|
494
|
+
"""
|
|
495
|
+
request = dto.DeviceSetStorageRequest(
|
|
496
|
+
interface_id=self._device.connection.interface_id,
|
|
497
|
+
device=self._device.device_address,
|
|
498
|
+
key=key,
|
|
499
|
+
value=value,
|
|
500
|
+
encode=encode,
|
|
501
|
+
)
|
|
502
|
+
call("device/set_storage", request)
|
|
503
|
+
|
|
504
|
+
async def set_string_async(
|
|
505
|
+
self,
|
|
506
|
+
key: str,
|
|
507
|
+
value: str,
|
|
508
|
+
encode: bool = False
|
|
509
|
+
) -> None:
|
|
510
|
+
"""
|
|
511
|
+
Sets the device value stored at the provided key.
|
|
512
|
+
|
|
513
|
+
Args:
|
|
514
|
+
key: Key to set the value at.
|
|
515
|
+
value: Value to set.
|
|
516
|
+
encode: Whether the stored value should be base64 encoded before being stored.
|
|
517
|
+
This makes the string unreadable to humans using the ASCII protocol,
|
|
518
|
+
however, values stored this way can be of any length and use non-ASCII and protocol reserved characters.
|
|
519
|
+
"""
|
|
520
|
+
request = dto.DeviceSetStorageRequest(
|
|
521
|
+
interface_id=self._device.connection.interface_id,
|
|
522
|
+
device=self._device.device_address,
|
|
523
|
+
key=key,
|
|
524
|
+
value=value,
|
|
525
|
+
encode=encode,
|
|
526
|
+
)
|
|
527
|
+
await call_async("device/set_storage", request)
|
|
528
|
+
|
|
529
|
+
def get_string(
|
|
530
|
+
self,
|
|
531
|
+
key: str,
|
|
532
|
+
decode: bool = False
|
|
533
|
+
) -> str:
|
|
534
|
+
"""
|
|
535
|
+
Gets the device value stored with the provided key.
|
|
536
|
+
|
|
537
|
+
Args:
|
|
538
|
+
key: Key to read the value of.
|
|
539
|
+
decode: Whether the stored value should be decoded.
|
|
540
|
+
Only use this when reading values set by storage.set with "encode" true.
|
|
541
|
+
|
|
542
|
+
Returns:
|
|
543
|
+
Stored value.
|
|
544
|
+
"""
|
|
545
|
+
request = dto.DeviceGetStorageRequest(
|
|
546
|
+
interface_id=self._device.connection.interface_id,
|
|
547
|
+
device=self._device.device_address,
|
|
548
|
+
key=key,
|
|
549
|
+
decode=decode,
|
|
550
|
+
)
|
|
551
|
+
response = call(
|
|
552
|
+
"device/get_storage",
|
|
553
|
+
request,
|
|
554
|
+
dto.StringResponse.from_binary)
|
|
555
|
+
return response.value
|
|
556
|
+
|
|
557
|
+
async def get_string_async(
|
|
558
|
+
self,
|
|
559
|
+
key: str,
|
|
560
|
+
decode: bool = False
|
|
561
|
+
) -> str:
|
|
562
|
+
"""
|
|
563
|
+
Gets the device value stored with the provided key.
|
|
564
|
+
|
|
565
|
+
Args:
|
|
566
|
+
key: Key to read the value of.
|
|
567
|
+
decode: Whether the stored value should be decoded.
|
|
568
|
+
Only use this when reading values set by storage.set with "encode" true.
|
|
569
|
+
|
|
570
|
+
Returns:
|
|
571
|
+
Stored value.
|
|
572
|
+
"""
|
|
573
|
+
request = dto.DeviceGetStorageRequest(
|
|
574
|
+
interface_id=self._device.connection.interface_id,
|
|
575
|
+
device=self._device.device_address,
|
|
576
|
+
key=key,
|
|
577
|
+
decode=decode,
|
|
578
|
+
)
|
|
579
|
+
response = await call_async(
|
|
580
|
+
"device/get_storage",
|
|
581
|
+
request,
|
|
582
|
+
dto.StringResponse.from_binary)
|
|
583
|
+
return response.value
|
|
584
|
+
|
|
585
|
+
def set_number(
|
|
586
|
+
self,
|
|
587
|
+
key: str,
|
|
588
|
+
value: float
|
|
589
|
+
) -> None:
|
|
590
|
+
"""
|
|
591
|
+
Sets the value at the provided key to the provided number.
|
|
592
|
+
|
|
593
|
+
Args:
|
|
594
|
+
key: Key to set the value at.
|
|
595
|
+
value: Value to set.
|
|
596
|
+
"""
|
|
597
|
+
request = dto.DeviceSetStorageNumberRequest(
|
|
598
|
+
interface_id=self._device.connection.interface_id,
|
|
599
|
+
device=self._device.device_address,
|
|
600
|
+
key=key,
|
|
601
|
+
value=value,
|
|
602
|
+
)
|
|
603
|
+
call("device/set_storage_number", request)
|
|
604
|
+
|
|
605
|
+
async def set_number_async(
|
|
606
|
+
self,
|
|
607
|
+
key: str,
|
|
608
|
+
value: float
|
|
609
|
+
) -> None:
|
|
610
|
+
"""
|
|
611
|
+
Sets the value at the provided key to the provided number.
|
|
612
|
+
|
|
613
|
+
Args:
|
|
614
|
+
key: Key to set the value at.
|
|
615
|
+
value: Value to set.
|
|
616
|
+
"""
|
|
617
|
+
request = dto.DeviceSetStorageNumberRequest(
|
|
618
|
+
interface_id=self._device.connection.interface_id,
|
|
619
|
+
device=self._device.device_address,
|
|
620
|
+
key=key,
|
|
621
|
+
value=value,
|
|
622
|
+
)
|
|
623
|
+
await call_async("device/set_storage_number", request)
|
|
624
|
+
|
|
625
|
+
def get_number(
|
|
626
|
+
self,
|
|
627
|
+
key: str
|
|
628
|
+
) -> float:
|
|
629
|
+
"""
|
|
630
|
+
Gets the value at the provided key interpreted as a number.
|
|
631
|
+
|
|
632
|
+
Args:
|
|
633
|
+
key: Key to get the value at.
|
|
634
|
+
|
|
635
|
+
Returns:
|
|
636
|
+
Stored value.
|
|
637
|
+
"""
|
|
638
|
+
request = dto.DeviceStorageRequest(
|
|
639
|
+
interface_id=self._device.connection.interface_id,
|
|
640
|
+
device=self._device.device_address,
|
|
641
|
+
key=key,
|
|
642
|
+
)
|
|
643
|
+
response = call(
|
|
644
|
+
"device/get_storage_number",
|
|
645
|
+
request,
|
|
646
|
+
dto.DoubleResponse.from_binary)
|
|
647
|
+
return response.value
|
|
648
|
+
|
|
649
|
+
async def get_number_async(
|
|
650
|
+
self,
|
|
651
|
+
key: str
|
|
652
|
+
) -> float:
|
|
653
|
+
"""
|
|
654
|
+
Gets the value at the provided key interpreted as a number.
|
|
655
|
+
|
|
656
|
+
Args:
|
|
657
|
+
key: Key to get the value at.
|
|
658
|
+
|
|
659
|
+
Returns:
|
|
660
|
+
Stored value.
|
|
661
|
+
"""
|
|
662
|
+
request = dto.DeviceStorageRequest(
|
|
663
|
+
interface_id=self._device.connection.interface_id,
|
|
664
|
+
device=self._device.device_address,
|
|
665
|
+
key=key,
|
|
666
|
+
)
|
|
667
|
+
response = await call_async(
|
|
668
|
+
"device/get_storage_number",
|
|
669
|
+
request,
|
|
670
|
+
dto.DoubleResponse.from_binary)
|
|
671
|
+
return response.value
|
|
672
|
+
|
|
673
|
+
def set_bool(
|
|
674
|
+
self,
|
|
675
|
+
key: str,
|
|
676
|
+
value: bool
|
|
677
|
+
) -> None:
|
|
678
|
+
"""
|
|
679
|
+
Sets the value at the provided key to the provided boolean.
|
|
680
|
+
|
|
681
|
+
Args:
|
|
682
|
+
key: Key to set the value at.
|
|
683
|
+
value: Value to set.
|
|
684
|
+
"""
|
|
685
|
+
request = dto.DeviceSetStorageBoolRequest(
|
|
686
|
+
interface_id=self._device.connection.interface_id,
|
|
687
|
+
device=self._device.device_address,
|
|
688
|
+
key=key,
|
|
689
|
+
value=value,
|
|
690
|
+
)
|
|
691
|
+
call("device/set_storage_bool", request)
|
|
692
|
+
|
|
693
|
+
async def set_bool_async(
|
|
694
|
+
self,
|
|
695
|
+
key: str,
|
|
696
|
+
value: bool
|
|
697
|
+
) -> None:
|
|
698
|
+
"""
|
|
699
|
+
Sets the value at the provided key to the provided boolean.
|
|
700
|
+
|
|
701
|
+
Args:
|
|
702
|
+
key: Key to set the value at.
|
|
703
|
+
value: Value to set.
|
|
704
|
+
"""
|
|
705
|
+
request = dto.DeviceSetStorageBoolRequest(
|
|
706
|
+
interface_id=self._device.connection.interface_id,
|
|
707
|
+
device=self._device.device_address,
|
|
708
|
+
key=key,
|
|
709
|
+
value=value,
|
|
710
|
+
)
|
|
711
|
+
await call_async("device/set_storage_bool", request)
|
|
712
|
+
|
|
713
|
+
def get_bool(
|
|
714
|
+
self,
|
|
715
|
+
key: str
|
|
716
|
+
) -> bool:
|
|
717
|
+
"""
|
|
718
|
+
Gets the value at the provided key interpreted as a boolean.
|
|
719
|
+
|
|
720
|
+
Args:
|
|
721
|
+
key: Key to get the value at.
|
|
722
|
+
|
|
723
|
+
Returns:
|
|
724
|
+
Stored value.
|
|
725
|
+
"""
|
|
726
|
+
request = dto.DeviceStorageRequest(
|
|
727
|
+
interface_id=self._device.connection.interface_id,
|
|
728
|
+
device=self._device.device_address,
|
|
729
|
+
key=key,
|
|
730
|
+
)
|
|
731
|
+
response = call(
|
|
732
|
+
"device/get_storage_bool",
|
|
733
|
+
request,
|
|
734
|
+
dto.BoolResponse.from_binary)
|
|
735
|
+
return response.value
|
|
736
|
+
|
|
737
|
+
async def get_bool_async(
|
|
738
|
+
self,
|
|
739
|
+
key: str
|
|
740
|
+
) -> bool:
|
|
741
|
+
"""
|
|
742
|
+
Gets the value at the provided key interpreted as a boolean.
|
|
743
|
+
|
|
744
|
+
Args:
|
|
745
|
+
key: Key to get the value at.
|
|
746
|
+
|
|
747
|
+
Returns:
|
|
748
|
+
Stored value.
|
|
749
|
+
"""
|
|
750
|
+
request = dto.DeviceStorageRequest(
|
|
751
|
+
interface_id=self._device.connection.interface_id,
|
|
752
|
+
device=self._device.device_address,
|
|
753
|
+
key=key,
|
|
754
|
+
)
|
|
755
|
+
response = await call_async(
|
|
756
|
+
"device/get_storage_bool",
|
|
757
|
+
request,
|
|
758
|
+
dto.BoolResponse.from_binary)
|
|
759
|
+
return response.value
|
|
760
|
+
|
|
761
|
+
def erase_key(
|
|
762
|
+
self,
|
|
763
|
+
key: str
|
|
764
|
+
) -> bool:
|
|
765
|
+
"""
|
|
766
|
+
Erases the device value stored at the provided key.
|
|
767
|
+
|
|
768
|
+
Args:
|
|
769
|
+
key: Key to erase.
|
|
770
|
+
|
|
771
|
+
Returns:
|
|
772
|
+
A boolean indicating if the key existed.
|
|
773
|
+
"""
|
|
774
|
+
request = dto.DeviceStorageRequest(
|
|
775
|
+
interface_id=self._device.connection.interface_id,
|
|
776
|
+
device=self._device.device_address,
|
|
777
|
+
key=key,
|
|
778
|
+
)
|
|
779
|
+
response = call(
|
|
780
|
+
"device/erase_storage",
|
|
781
|
+
request,
|
|
782
|
+
dto.BoolResponse.from_binary)
|
|
783
|
+
return response.value
|
|
784
|
+
|
|
785
|
+
async def erase_key_async(
|
|
786
|
+
self,
|
|
787
|
+
key: str
|
|
788
|
+
) -> bool:
|
|
789
|
+
"""
|
|
790
|
+
Erases the device value stored at the provided key.
|
|
791
|
+
|
|
792
|
+
Args:
|
|
793
|
+
key: Key to erase.
|
|
794
|
+
|
|
795
|
+
Returns:
|
|
796
|
+
A boolean indicating if the key existed.
|
|
797
|
+
"""
|
|
798
|
+
request = dto.DeviceStorageRequest(
|
|
799
|
+
interface_id=self._device.connection.interface_id,
|
|
800
|
+
device=self._device.device_address,
|
|
801
|
+
key=key,
|
|
802
|
+
)
|
|
803
|
+
response = await call_async(
|
|
804
|
+
"device/erase_storage",
|
|
805
|
+
request,
|
|
806
|
+
dto.BoolResponse.from_binary)
|
|
807
|
+
return response.value
|
|
808
|
+
|
|
809
|
+
def list_keys(
|
|
810
|
+
self,
|
|
811
|
+
prefix: Optional[str] = None
|
|
812
|
+
) -> List[str]:
|
|
813
|
+
"""
|
|
814
|
+
Lists the device storage keys matching a given prefix.
|
|
815
|
+
Omit the prefix to list all the keys.
|
|
816
|
+
|
|
817
|
+
Args:
|
|
818
|
+
prefix: Optional key prefix.
|
|
819
|
+
|
|
820
|
+
Returns:
|
|
821
|
+
Storage keys matching the given prefix.
|
|
822
|
+
"""
|
|
823
|
+
request = dto.DeviceStorageListKeysRequest(
|
|
824
|
+
interface_id=self._device.connection.interface_id,
|
|
825
|
+
device=self._device.device_address,
|
|
826
|
+
prefix=prefix,
|
|
827
|
+
)
|
|
828
|
+
response = call(
|
|
829
|
+
"device/storage_list_keys",
|
|
830
|
+
request,
|
|
831
|
+
dto.StringArrayResponse.from_binary)
|
|
832
|
+
return response.values
|
|
833
|
+
|
|
834
|
+
async def list_keys_async(
|
|
835
|
+
self,
|
|
836
|
+
prefix: Optional[str] = None
|
|
837
|
+
) -> List[str]:
|
|
838
|
+
"""
|
|
839
|
+
Lists the device storage keys matching a given prefix.
|
|
840
|
+
Omit the prefix to list all the keys.
|
|
841
|
+
|
|
842
|
+
Args:
|
|
843
|
+
prefix: Optional key prefix.
|
|
844
|
+
|
|
845
|
+
Returns:
|
|
846
|
+
Storage keys matching the given prefix.
|
|
847
|
+
"""
|
|
848
|
+
request = dto.DeviceStorageListKeysRequest(
|
|
849
|
+
interface_id=self._device.connection.interface_id,
|
|
850
|
+
device=self._device.device_address,
|
|
851
|
+
prefix=prefix,
|
|
852
|
+
)
|
|
853
|
+
response = await call_async(
|
|
854
|
+
"device/storage_list_keys",
|
|
855
|
+
request,
|
|
856
|
+
dto.StringArrayResponse.from_binary)
|
|
857
|
+
return response.values
|
|
858
|
+
|
|
859
|
+
def key_exists(
|
|
860
|
+
self,
|
|
861
|
+
key: str
|
|
862
|
+
) -> bool:
|
|
863
|
+
"""
|
|
864
|
+
Determines whether a given key exists in device storage.
|
|
865
|
+
|
|
866
|
+
Args:
|
|
867
|
+
key: Key which existence to determine.
|
|
868
|
+
|
|
869
|
+
Returns:
|
|
870
|
+
True indicating that the key exists, false otherwise.
|
|
871
|
+
"""
|
|
872
|
+
request = dto.DeviceStorageRequest(
|
|
873
|
+
interface_id=self._device.connection.interface_id,
|
|
874
|
+
device=self._device.device_address,
|
|
875
|
+
key=key,
|
|
876
|
+
)
|
|
877
|
+
response = call(
|
|
878
|
+
"device/storage_key_exists",
|
|
879
|
+
request,
|
|
880
|
+
dto.BoolResponse.from_binary)
|
|
881
|
+
return response.value
|
|
882
|
+
|
|
883
|
+
async def key_exists_async(
|
|
884
|
+
self,
|
|
885
|
+
key: str
|
|
886
|
+
) -> bool:
|
|
887
|
+
"""
|
|
888
|
+
Determines whether a given key exists in device storage.
|
|
889
|
+
|
|
890
|
+
Args:
|
|
891
|
+
key: Key which existence to determine.
|
|
892
|
+
|
|
893
|
+
Returns:
|
|
894
|
+
True indicating that the key exists, false otherwise.
|
|
895
|
+
"""
|
|
896
|
+
request = dto.DeviceStorageRequest(
|
|
897
|
+
interface_id=self._device.connection.interface_id,
|
|
898
|
+
device=self._device.device_address,
|
|
899
|
+
key=key,
|
|
900
|
+
)
|
|
901
|
+
response = await call_async(
|
|
902
|
+
"device/storage_key_exists",
|
|
903
|
+
request,
|
|
904
|
+
dto.BoolResponse.from_binary)
|
|
905
|
+
return response.value
|