dsf-python 3.5.0.2rc2__tar.gz → 3.5.1rc1__tar.gz
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.
- {dsf-python-3.5.0.2rc2/src/dsf_python.egg-info → dsf_python-3.5.1rc1}/PKG-INFO +1 -1
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/setup.py +1 -1
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/connections/init_messages/client_init_messages.py +6 -1
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/connections/intercept_connection.py +11 -1
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/boards/accelerometer.py +13 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/boards/boards.py +23 -7
- dsf_python-3.5.1rc1/src/dsf/object_model/boards/inductive_sensor.py +9 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/fans/fans.py +11 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/axis.py +20 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/move_segmentation.py +4 -4
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/plugins/plugin_manifest.py +8 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sbc/dsf/dsf.py +10 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sensors/analog_sensor.py +22 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sensors/probe.py +17 -6
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1/src/dsf_python.egg-info}/PKG-INFO +1 -1
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf_python.egg-info/SOURCES.txt +1 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/LICENSE +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/MANIFEST.in +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/README.md +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/pyproject.toml +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/setup.cfg +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/commands/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/commands/base_command.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/commands/code.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/commands/code_channel.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/commands/code_flags.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/commands/code_interception.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/commands/code_parameter.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/commands/code_type.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/commands/condition_type.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/commands/files.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/commands/generic.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/commands/http_endpoints.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/commands/model_subscription.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/commands/object_model.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/commands/packages.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/commands/plugins.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/commands/responses.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/commands/user_sessions.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/connections/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/connections/base_command_connection.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/connections/base_connection.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/connections/command_connection.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/connections/exceptions.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/connections/init_messages/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/connections/init_messages/server_init_message.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/connections/subscribe_connection.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/exceptions.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/http.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/boards/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/boards/board_closed_loop.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/boards/direct_display/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/boards/direct_display/direct_display.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/boards/direct_display/direct_display_controller.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/boards/direct_display/direct_display_encoder.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/boards/direct_display/direct_display_screen.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/boards/direct_display/direct_display_screen_st7567.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/boards/driver.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/boards/driver_closed_loop.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/boards/min_max_current.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/directories/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/directories/directories.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/fans/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/fans/fan_thermostatic_control.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/heat/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/heat/heat.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/heat/heater.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/heat/heater_model.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/heat/heater_model_pid.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/heat/heater_monitor.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/inputs/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/inputs/compatibility.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/inputs/distance_unit.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/inputs/input_channel.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/inputs/input_channel_state.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/inputs/inputs.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/job/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/job/build.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/job/build_object.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/job/gcode_fileinfo.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/job/job.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/job/layer.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/job/thumbnail_info.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/job/times_left.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/led_strips/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/led_strips/led_strip.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/limits/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/limits/limits.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/messages/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/messages/messages.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/model_collection.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/model_dictionary.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/model_object.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/current_move.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/driver_id.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/extruder.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/extruder_non_linear.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/input_shaping.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/keepout_zone.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/kinematics/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/kinematics/core_kinematics.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/kinematics/delta_kinematics.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/kinematics/delta_tower.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/kinematics/hangprinter_kinematics.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/kinematics/kinematics.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/kinematics/kinematics_name.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/kinematics/polar_kinematics.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/kinematics/scara_kinematics.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/kinematics/tilt_correction.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/kinematics/zleadscrew_kinematics.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/microstepping.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/motors_idle_control.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/move.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/move_calibration.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/move_compensation.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/move_deviations.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/move_queue_item.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/move_rotation.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/probe_grid.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/skew.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/network/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/network/network.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/network/network_interface.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/network/network_interface_type.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/network/network_protocol.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/network/network_state.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/object_model.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/plugins/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/plugins/plugins.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/plugins/sbc_permissions.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sbc/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sbc/cpu.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sbc/dsf/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sbc/dsf/http_endpoint.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sbc/dsf/http_endpoint_type.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sbc/dsf/user_sessions/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sbc/dsf/user_sessions/access_level.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sbc/dsf/user_sessions/session_type.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sbc/dsf/user_sessions/user_sessions.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sbc/memory.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sbc/sbc.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sensors/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sensors/analog_sensor_type.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sensors/endstop.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sensors/endstop_type.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sensors/filament_monitors/Duet3DFilamentMonitor.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sensors/filament_monitors/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sensors/filament_monitors/filament_monitor.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sensors/filament_monitors/filament_monitor_enable_type.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sensors/filament_monitors/filament_monitor_status.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sensors/filament_monitors/filament_monitor_type.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sensors/filament_monitors/laser_filament_monitor.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sensors/filament_monitors/pulsed_filament_monitor.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sensors/filament_monitors/rotating_magnet_filament_monitor.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sensors/gp_input_port.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sensors/probe_type.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sensors/sensors.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/sensors/temperature_error.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/spindles/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/spindles/spindle_state.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/spindles/spindles.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/state/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/state/beep_request.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/state/gp_output_port.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/state/log_level.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/state/machine_mode.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/state/machine_status.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/state/message_box.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/state/restore_point.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/state/startup_error.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/state/state.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/tools/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/tools/tool_retraction.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/tools/tool_state.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/tools/tools.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/utils.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/volumes/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/volumes/volumes.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/utility/__init__.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/utils.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf_python.egg-info/dependency_links.txt +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf_python.egg-info/requires.txt +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf_python.egg-info/top_level.txt +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/tests/test_code.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/tests/test_custom_http_endpoint.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/tests/test_custom_m_codes.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/tests/test_object_model.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/tests/test_send_simple_code.py +0 -0
- {dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/tests/test_subscribe_object_model.py +0 -0
|
@@ -6,7 +6,7 @@ long_description = open("README.md", encoding="utf-8").read()
|
|
|
6
6
|
|
|
7
7
|
setuptools.setup(
|
|
8
8
|
name="dsf-python",
|
|
9
|
-
version="3.5.
|
|
9
|
+
version="3.5.1rc1",
|
|
10
10
|
description="Python interface to access DuetSoftwareFramework",
|
|
11
11
|
long_description=long_description,
|
|
12
12
|
long_description_content_type="text/markdown",
|
|
@@ -41,7 +41,8 @@ def intercept_init_message(
|
|
|
41
41
|
channels: List[CodeChannel],
|
|
42
42
|
filters: List[str],
|
|
43
43
|
priority_codes: bool,
|
|
44
|
-
auto_flush: bool = True
|
|
44
|
+
auto_flush: bool = True,
|
|
45
|
+
auto_evaluate_expression: bool = True):
|
|
45
46
|
"""
|
|
46
47
|
Enter interception mode
|
|
47
48
|
Whenever a code is received, the connection must respond with one of
|
|
@@ -62,6 +63,9 @@ def intercept_init_message(
|
|
|
62
63
|
is specified.
|
|
63
64
|
This option makes extra Flush calls in the interceptor implementation obsolete.
|
|
64
65
|
It is highly recommended to enable this in order to avoid potential deadlocks when dealing with macros!
|
|
66
|
+
:param auto_evaluate_expression: Automatically evaluate expression parameters to their final values
|
|
67
|
+
before sending it over to the client.
|
|
68
|
+
This requires auto_flush to be True and happens when the remaining codes have been processed.
|
|
65
69
|
"""
|
|
66
70
|
return ClientInitMessage(
|
|
67
71
|
ConnectionMode.INTERCEPT,
|
|
@@ -69,6 +73,7 @@ def intercept_init_message(
|
|
|
69
73
|
"InterceptionMode": intercept_mode,
|
|
70
74
|
"Channels": channels,
|
|
71
75
|
"AutoFlush": auto_flush,
|
|
76
|
+
"AutoEvaluateExpressions": auto_evaluate_expression,
|
|
72
77
|
"Filters": filters,
|
|
73
78
|
"PriorityCodes": priority_codes,
|
|
74
79
|
},
|
|
@@ -21,6 +21,9 @@ class InterceptConnection(BaseCommandConnection):
|
|
|
21
21
|
in case a code filter is specified.
|
|
22
22
|
This option makes extra Flush calls in the interceptor implementation obsolete.
|
|
23
23
|
It is highly recommended to enable this in order to avoid potential deadlocks when dealing with macros!
|
|
24
|
+
:param auto_evaluate_expression: Automatically evaluate expression parameters to their final values
|
|
25
|
+
before sending it over to the client.
|
|
26
|
+
This requires auto_flush to be True and happens when the remaining codes have been processed.
|
|
24
27
|
:param priority_codes: Defines if priority codes may be intercepted (e.g. M122 or M999)
|
|
25
28
|
:param debug: Whether debugging output is turned on for this connection
|
|
26
29
|
"""
|
|
@@ -31,6 +34,7 @@ class InterceptConnection(BaseCommandConnection):
|
|
|
31
34
|
channels: List[CodeChannel] = None,
|
|
32
35
|
filters: List[str] = None,
|
|
33
36
|
auto_flush: bool = True,
|
|
37
|
+
auto_evaluate_expression: bool = True,
|
|
34
38
|
priority_codes: bool = False,
|
|
35
39
|
debug: bool = False,
|
|
36
40
|
):
|
|
@@ -39,12 +43,18 @@ class InterceptConnection(BaseCommandConnection):
|
|
|
39
43
|
self.channels = channels if channels is not None else CodeChannel.list()
|
|
40
44
|
self.filters = filters
|
|
41
45
|
self.auto_flush = auto_flush
|
|
46
|
+
self.auto_evaluate_expression = auto_evaluate_expression
|
|
42
47
|
self.priority_codes = priority_codes
|
|
43
48
|
|
|
44
49
|
def connect(self, socket_file: str = SOCKET_FILE): # noqa
|
|
45
50
|
"""Establishes a connection to the given UNIX socket file"""
|
|
46
51
|
iim = client_init_messages.intercept_init_message(
|
|
47
|
-
self.interception_mode,
|
|
52
|
+
self.interception_mode,
|
|
53
|
+
self.channels,
|
|
54
|
+
self.filters,
|
|
55
|
+
self.priority_codes,
|
|
56
|
+
self.auto_flush,
|
|
57
|
+
self.auto_evaluate_expression
|
|
48
58
|
)
|
|
49
59
|
return super().connect(iim, socket_file)
|
|
50
60
|
|
|
@@ -5,11 +5,24 @@ class Accelerometer(ModelObject):
|
|
|
5
5
|
"""This represents an accelerometer"""
|
|
6
6
|
def __init__(self):
|
|
7
7
|
super(Accelerometer, self).__init__()
|
|
8
|
+
# Orientation of the accelerometer
|
|
9
|
+
# See https://docs.duet3d.com/en/Duet3D_hardware/Accessories/Duet3D_Accelerometer#orientation for a list of orientations
|
|
10
|
+
self._orientation = 20
|
|
8
11
|
# Number of collected data points in the last run or 0 if it failed
|
|
9
12
|
self._points = 0
|
|
10
13
|
# Number of completed sampling runs
|
|
11
14
|
self._runs = 0
|
|
12
15
|
|
|
16
|
+
@property
|
|
17
|
+
def orientation(self) -> int:
|
|
18
|
+
"""Orientation of the accelerometer
|
|
19
|
+
See https://docs.duet3d.com/en/Duet3D_hardware/Accessories/Duet3D_Accelerometer#orientation for a list of orientations"""
|
|
20
|
+
return self._orientation
|
|
21
|
+
|
|
22
|
+
@orientation.setter
|
|
23
|
+
def orientation(self, value):
|
|
24
|
+
self._orientation = int(value)
|
|
25
|
+
|
|
13
26
|
@property
|
|
14
27
|
def points(self) -> int:
|
|
15
28
|
"""Number of collected data points in the last run or 0 if it failed"""
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
from enum import Enum
|
|
2
|
-
from typing import List,
|
|
2
|
+
from typing import List, Optional
|
|
3
3
|
|
|
4
4
|
from .accelerometer import Accelerometer
|
|
5
5
|
from .board_closed_loop import BoardClosedLoop
|
|
6
6
|
from .direct_display import DirectDisplay
|
|
7
7
|
from .driver import Driver
|
|
8
|
+
from .inductive_sensor import InductiveSensor
|
|
8
9
|
from .min_max_current import MinMaxCurrent
|
|
9
10
|
from ..model_collection import ModelCollection
|
|
10
11
|
from ..model_object import ModelObject
|
|
@@ -42,6 +43,8 @@ class Board(ModelObject):
|
|
|
42
43
|
closed_loop = wrap_model_property('closed_loop', BoardClosedLoop)
|
|
43
44
|
# Details about a connected display or None if none is connected
|
|
44
45
|
direct_display = wrap_model_property('direct_display', DirectDisplay)
|
|
46
|
+
# Information about an inductive sensor or None if not present
|
|
47
|
+
inductive_sensor = wrap_model_property('inductive_sensor', InductiveSensor)
|
|
45
48
|
# Minimum, maximum, and current temperatures of the MCU or None if unknown
|
|
46
49
|
mcu_temp = wrap_model_property('mcu_temp', MinMaxCurrent)
|
|
47
50
|
# Minimum, maximum, and current voltages on the 12V rail or None if unknown
|
|
@@ -72,11 +75,15 @@ class Board(ModelObject):
|
|
|
72
75
|
self._firmware_name = ""
|
|
73
76
|
# Version of the firmware build
|
|
74
77
|
self._firmware_version = ""
|
|
78
|
+
# Amount of free RAM on this board (in bytes or null if unknown)
|
|
79
|
+
self._free_ram = None
|
|
75
80
|
# Filename of the IAP binary that is used for updates from the SBC or None if unsupported
|
|
76
81
|
self._iap_file_name_SBC = None
|
|
77
82
|
# Filename of the IAP binary that is used for updates from the SD card or None if unsupported
|
|
78
83
|
# This is only available for the mainboard (first board item)
|
|
79
84
|
self._iap_file_name_SD = None
|
|
85
|
+
# Information about an inductive sensor or None if not present
|
|
86
|
+
self._inductive_sensor = None
|
|
80
87
|
# Maximum number of heaters this board can control
|
|
81
88
|
self._max_heaters = 0
|
|
82
89
|
# Maximum number of motors this board can drive
|
|
@@ -104,7 +111,7 @@ class Board(ModelObject):
|
|
|
104
111
|
self._wifi_firmware_file_name = None
|
|
105
112
|
|
|
106
113
|
@property
|
|
107
|
-
def bootloader_file_name(self) ->
|
|
114
|
+
def bootloader_file_name(self) -> Optional[str]:
|
|
108
115
|
"""Filename of the bootloader binary or None if unknown"""
|
|
109
116
|
return self._bootloader_file_name
|
|
110
117
|
|
|
@@ -113,7 +120,7 @@ class Board(ModelObject):
|
|
|
113
120
|
self._bootloader_file_name = str(value) if value is not None else None
|
|
114
121
|
|
|
115
122
|
@property
|
|
116
|
-
def can_address(self) ->
|
|
123
|
+
def can_address(self) -> Optional[int]:
|
|
117
124
|
"""CAN address of this board or None if not applicable"""
|
|
118
125
|
return self._can_address
|
|
119
126
|
|
|
@@ -122,7 +129,7 @@ class Board(ModelObject):
|
|
|
122
129
|
self._can_address = int(value) if value is not None else None
|
|
123
130
|
|
|
124
131
|
@property
|
|
125
|
-
def drivers(self) ->
|
|
132
|
+
def drivers(self) -> Optional[List[Driver]]:
|
|
126
133
|
"""Drivers of this board"""
|
|
127
134
|
return self._drivers
|
|
128
135
|
|
|
@@ -167,7 +174,16 @@ class Board(ModelObject):
|
|
|
167
174
|
self._firmware_version = str(value)
|
|
168
175
|
|
|
169
176
|
@property
|
|
170
|
-
def
|
|
177
|
+
def free_ram(self) -> Optional[int]:
|
|
178
|
+
"""Amount of free RAM on this board (in bytes or null if unknown)"""
|
|
179
|
+
return self._free_ram
|
|
180
|
+
|
|
181
|
+
@free_ram.setter
|
|
182
|
+
def free_ram(self, value):
|
|
183
|
+
self._free_ram = None if value is None else int(value)
|
|
184
|
+
|
|
185
|
+
@property
|
|
186
|
+
def iap_file_name_SBC(self) -> Optional[str]:
|
|
171
187
|
"""Filename of the IAP binary that is used for updates from the SBC or None if unsupported"""
|
|
172
188
|
return self._iap_file_name_SBC
|
|
173
189
|
|
|
@@ -176,7 +192,7 @@ class Board(ModelObject):
|
|
|
176
192
|
self._iap_file_name_SBC = str(value) if value is not None else None
|
|
177
193
|
|
|
178
194
|
@property
|
|
179
|
-
def iap_file_name_SD(self) ->
|
|
195
|
+
def iap_file_name_SD(self) -> Optional[str]:
|
|
180
196
|
"""Filename of the IAP binary that is used for updates from the SD card or None if unsupported
|
|
181
197
|
This is only available for the mainboard (first board item)"""
|
|
182
198
|
return self._iap_file_name_SD
|
|
@@ -256,7 +272,7 @@ class Board(ModelObject):
|
|
|
256
272
|
self._supports_direct_display = bool(value)
|
|
257
273
|
|
|
258
274
|
@property
|
|
259
|
-
def unique_id(self) ->
|
|
275
|
+
def unique_id(self) -> Optional[str]:
|
|
260
276
|
"""Unique identifier of the board or None if unknown"""
|
|
261
277
|
return self._unique_id
|
|
262
278
|
|
|
@@ -23,6 +23,8 @@ class Fan(ModelObject):
|
|
|
23
23
|
self._requested_value = 0
|
|
24
24
|
# Current RPM of this fan or -1 if unknown/unset
|
|
25
25
|
self._rpm = -1
|
|
26
|
+
# Pulses per tacho revolution
|
|
27
|
+
self._tacho_ppr = 2.0
|
|
26
28
|
# Thermostatic control parameters
|
|
27
29
|
self._thermostatic = FanThermostaticControl()
|
|
28
30
|
|
|
@@ -99,6 +101,15 @@ class Fan(ModelObject):
|
|
|
99
101
|
def rpm(self, value):
|
|
100
102
|
self._rpm = int(value)
|
|
101
103
|
|
|
104
|
+
@property
|
|
105
|
+
def tacho_ppr(self) -> float:
|
|
106
|
+
"""Pulses per tacho revolution"""
|
|
107
|
+
return self._tacho_ppr
|
|
108
|
+
|
|
109
|
+
@tacho_ppr.setter
|
|
110
|
+
def tacho_ppr(self, value):
|
|
111
|
+
self._tacho_ppr = float(value)
|
|
112
|
+
|
|
102
113
|
@property
|
|
103
114
|
def thermostatic(self) -> FanThermostaticControl:
|
|
104
115
|
"""Thermostatic control parameters"""
|
|
@@ -26,6 +26,26 @@ class AxisLetter(str, Enum):
|
|
|
26
26
|
d = 'd'
|
|
27
27
|
e = 'e'
|
|
28
28
|
f = 'f'
|
|
29
|
+
g = 'g'
|
|
30
|
+
h = 'h'
|
|
31
|
+
i = 'i'
|
|
32
|
+
j = 'j'
|
|
33
|
+
k = 'k'
|
|
34
|
+
l = 'l'
|
|
35
|
+
m = 'm'
|
|
36
|
+
n = 'n'
|
|
37
|
+
o = 'o'
|
|
38
|
+
p = 'p'
|
|
39
|
+
q = 'q'
|
|
40
|
+
r = 'r'
|
|
41
|
+
s = 's'
|
|
42
|
+
t = 't'
|
|
43
|
+
u = 'u'
|
|
44
|
+
v = 'v'
|
|
45
|
+
w = 'w'
|
|
46
|
+
x = 'x'
|
|
47
|
+
y = 'y'
|
|
48
|
+
z = 'z'
|
|
29
49
|
none = ''
|
|
30
50
|
|
|
31
51
|
|
{dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/move/move_segmentation.py
RENAMED
|
@@ -5,17 +5,17 @@ class MoveSegmentation(ModelObject):
|
|
|
5
5
|
"""Move segmentation parameters"""
|
|
6
6
|
def __init__(self):
|
|
7
7
|
super().__init__()
|
|
8
|
-
self._segments_per_sec = 0
|
|
9
|
-
self._min_segment_length = 0
|
|
8
|
+
self._segments_per_sec = 0.0
|
|
9
|
+
self._min_segment_length = 0.0
|
|
10
10
|
|
|
11
11
|
@property
|
|
12
|
-
def segments_per_sec(self) ->
|
|
12
|
+
def segments_per_sec(self) -> float:
|
|
13
13
|
"""Number of segments per second"""
|
|
14
14
|
return self._segments_per_sec
|
|
15
15
|
|
|
16
16
|
@segments_per_sec.setter
|
|
17
17
|
def segments_per_sec(self, value):
|
|
18
|
-
self._segments_per_sec =
|
|
18
|
+
self._segments_per_sec = float(value)
|
|
19
19
|
|
|
20
20
|
@property
|
|
21
21
|
def min_segment_length(self) -> float:
|
{dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/plugins/plugin_manifest.py
RENAMED
|
@@ -20,6 +20,7 @@ class PluginManifest(ModelObject):
|
|
|
20
20
|
self._name = None
|
|
21
21
|
self._rrf_version = None
|
|
22
22
|
self._sbc_auto_restart = False
|
|
23
|
+
self._sbc_config_files = []
|
|
23
24
|
self._sbc_dsf_version = None
|
|
24
25
|
self._sbc_executable = None
|
|
25
26
|
self._sbc_executable_arguments = []
|
|
@@ -137,6 +138,13 @@ class PluginManifest(ModelObject):
|
|
|
137
138
|
@sbc_auto_restart.setter
|
|
138
139
|
def sbc_auto_restart(self, value):
|
|
139
140
|
self._sbc_auto_restart = bool(value)
|
|
141
|
+
|
|
142
|
+
@property
|
|
143
|
+
def sbc_config_files(self) -> List[str]:
|
|
144
|
+
"""List of files in the sys or virtual SD directory that should not be overwritten on upgrade
|
|
145
|
+
The file may be specified either relative to 0:/sys directory (e.g. motion.conf) or relative to the
|
|
146
|
+
virtual SD directory (e.g. sys/motion.conf). Drive indices as in 0:/sys/motion.conf are not allowed!"""
|
|
147
|
+
return self._sbc_config_files
|
|
140
148
|
|
|
141
149
|
@property
|
|
142
150
|
def sbc_dsf_version(self) -> str:
|
|
@@ -13,6 +13,7 @@ class DSF(ModelObject):
|
|
|
13
13
|
super().__init__()
|
|
14
14
|
self._build_date_time = ""
|
|
15
15
|
self._http_endpoints = ModelCollection(HttpEndpoint)
|
|
16
|
+
self._is64bit = False
|
|
16
17
|
self._plugin_support = False
|
|
17
18
|
self._root_plugin_support = False
|
|
18
19
|
self._user_sessions = ModelCollection(UserSession)
|
|
@@ -27,6 +28,15 @@ class DSF(ModelObject):
|
|
|
27
28
|
def build_date_time(self, value):
|
|
28
29
|
self._build_date_time = str(value)
|
|
29
30
|
|
|
31
|
+
@property
|
|
32
|
+
def is64bit(self) -> bool:
|
|
33
|
+
"""Indicates if the process is 64-bit"""
|
|
34
|
+
return self._is64bit
|
|
35
|
+
|
|
36
|
+
@is64bit.setter
|
|
37
|
+
def is64bit(self, value):
|
|
38
|
+
self._is64bit = bool(value)
|
|
39
|
+
|
|
30
40
|
@property
|
|
31
41
|
def http_endpoints(self) -> List[HttpEndpoint]:
|
|
32
42
|
"""List of registered third-party HTTP endpoints"""
|
|
@@ -14,9 +14,11 @@ class AnalogSensor(ModelObject):
|
|
|
14
14
|
self._c = None
|
|
15
15
|
self._last_reading = None
|
|
16
16
|
self._name = None
|
|
17
|
+
self._offset_adj = 0.0
|
|
17
18
|
self._port = None
|
|
18
19
|
self._r_25 = None
|
|
19
20
|
self._r_ref = None
|
|
21
|
+
self._slope_adj = 0.0
|
|
20
22
|
self._state = TemperatureError.ok
|
|
21
23
|
self._type = AnalogSensorType.Unknown
|
|
22
24
|
|
|
@@ -55,6 +57,16 @@ class AnalogSensor(ModelObject):
|
|
|
55
57
|
@name.setter
|
|
56
58
|
def name(self, value):
|
|
57
59
|
self._name = str(value) if value is not None else None
|
|
60
|
+
|
|
61
|
+
@property
|
|
62
|
+
def offset_adj(self) -> float:
|
|
63
|
+
"""Offset adjustment (in K)
|
|
64
|
+
See also M308 U"""
|
|
65
|
+
return self._offset_adj
|
|
66
|
+
|
|
67
|
+
@offset_adj.setter
|
|
68
|
+
def offset_adj(self, value):
|
|
69
|
+
self._offset_adj = float(value)
|
|
58
70
|
|
|
59
71
|
@property
|
|
60
72
|
def port(self) -> Union[str, None]:
|
|
@@ -83,6 +95,16 @@ class AnalogSensor(ModelObject):
|
|
|
83
95
|
def r_ref(self, value):
|
|
84
96
|
self._r_ref = float(value) if value is not None else None
|
|
85
97
|
|
|
98
|
+
@property
|
|
99
|
+
def slope_adj(self) -> float:
|
|
100
|
+
"""Slope adjustment factor
|
|
101
|
+
See also M308 V"""
|
|
102
|
+
return self._slope_adj
|
|
103
|
+
|
|
104
|
+
@slope_adj.setter
|
|
105
|
+
def slope_adj(self, value):
|
|
106
|
+
self._slope_adj = float(value)
|
|
107
|
+
|
|
86
108
|
@property
|
|
87
109
|
def state(self) -> TemperatureError:
|
|
88
110
|
"""State of this sensor"""
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import List,
|
|
1
|
+
from typing import List, Optional
|
|
2
2
|
|
|
3
3
|
from .probe_type import ProbeType
|
|
4
4
|
from ..model_object import ModelObject
|
|
@@ -20,6 +20,7 @@ class Probe(ModelObject):
|
|
|
20
20
|
self._is_calibrated = None
|
|
21
21
|
self._last_stop_height = 0
|
|
22
22
|
self._max_probe_count = 1
|
|
23
|
+
self._measured_height = None
|
|
23
24
|
self._offsets = [0, 0]
|
|
24
25
|
self._recovery_time = 0
|
|
25
26
|
self._scan_coefficients = None
|
|
@@ -33,7 +34,7 @@ class Probe(ModelObject):
|
|
|
33
34
|
self._value = []
|
|
34
35
|
|
|
35
36
|
@property
|
|
36
|
-
def calib_a(self) ->
|
|
37
|
+
def calib_a(self) -> Optional[float]:
|
|
37
38
|
"""Linear coefficient for scanning probes"""
|
|
38
39
|
return self._calib_a
|
|
39
40
|
|
|
@@ -42,7 +43,7 @@ class Probe(ModelObject):
|
|
|
42
43
|
self._calib_a = float(value) if value is not None else None
|
|
43
44
|
|
|
44
45
|
@property
|
|
45
|
-
def calib_b(self) ->
|
|
46
|
+
def calib_b(self) -> Optional[float]:
|
|
46
47
|
"""Quadratic coefficient for scanning probes"""
|
|
47
48
|
return self._calib_b
|
|
48
49
|
|
|
@@ -97,7 +98,7 @@ class Probe(ModelObject):
|
|
|
97
98
|
return self._dive_heights
|
|
98
99
|
|
|
99
100
|
@property
|
|
100
|
-
def is_calibrated(self) ->
|
|
101
|
+
def is_calibrated(self) -> Optional[bool]:
|
|
101
102
|
"""Indicates if the scanning probe is calibrated"""
|
|
102
103
|
return self._is_calibrated
|
|
103
104
|
|
|
@@ -123,6 +124,15 @@ class Probe(ModelObject):
|
|
|
123
124
|
def max_probe_count(self, value):
|
|
124
125
|
self._max_probe_count = int(value)
|
|
125
126
|
|
|
127
|
+
@property
|
|
128
|
+
def measured_height(self) -> Optional[float]:
|
|
129
|
+
"""Measured height (only applicable for scanning probes, in mm or null)"""
|
|
130
|
+
return self._measured_height
|
|
131
|
+
|
|
132
|
+
@measured_height.setter
|
|
133
|
+
def measured_height(self, value):
|
|
134
|
+
self._measured_height = None if value is None else float(value)
|
|
135
|
+
|
|
126
136
|
@property
|
|
127
137
|
def offsets(self) -> List[float]:
|
|
128
138
|
"""X+Y offsets (in mm)"""
|
|
@@ -144,7 +154,7 @@ class Probe(ModelObject):
|
|
|
144
154
|
return self._speeds[0]
|
|
145
155
|
|
|
146
156
|
@property
|
|
147
|
-
def scan_coefficients(self) ->
|
|
157
|
+
def scan_coefficients(self) -> Optional[List[float]]:
|
|
148
158
|
"""Coefficients for the scanning Z-probe (4 elements, if applicable)"""
|
|
149
159
|
return self._scan_coefficients
|
|
150
160
|
|
|
@@ -154,7 +164,8 @@ class Probe(ModelObject):
|
|
|
154
164
|
|
|
155
165
|
@property
|
|
156
166
|
def speeds(self) -> List[float]:
|
|
157
|
-
"""Fast and slow probing speeds (in mm/s)
|
|
167
|
+
"""Fast and slow probing speeds (in mm/s)
|
|
168
|
+
Scanning probes may have three speeds where the last one is the movement speed while probing heightmaps"""
|
|
158
169
|
return self._speeds
|
|
159
170
|
|
|
160
171
|
@speeds.setter
|
|
@@ -48,6 +48,7 @@ src/dsf/object_model/boards/board_closed_loop.py
|
|
|
48
48
|
src/dsf/object_model/boards/boards.py
|
|
49
49
|
src/dsf/object_model/boards/driver.py
|
|
50
50
|
src/dsf/object_model/boards/driver_closed_loop.py
|
|
51
|
+
src/dsf/object_model/boards/inductive_sensor.py
|
|
51
52
|
src/dsf/object_model/boards/min_max_current.py
|
|
52
53
|
src/dsf/object_model/boards/direct_display/__init__.py
|
|
53
54
|
src/dsf/object_model/boards/direct_display/direct_display.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/connections/base_command_connection.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/boards/board_closed_loop.py
RENAMED
|
File without changes
|
{dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/boards/direct_display/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/boards/driver_closed_loop.py
RENAMED
|
File without changes
|
{dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/boards/min_max_current.py
RENAMED
|
File without changes
|
|
File without changes
|
{dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/directories/directories.py
RENAMED
|
File without changes
|
|
File without changes
|
{dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/fans/fan_thermostatic_control.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dsf-python-3.5.0.2rc2 → dsf_python-3.5.1rc1}/src/dsf/object_model/inputs/input_channel_state.py
RENAMED
|
File without changes
|
|
File without changes
|