MockMTHexapodController¶
-
class
lsst.ts.hexapod.
MockMTHexapodController
(index, log, host='127.0.0.1', command_port=5571, telemetry_port=5570, initial_state=<ControllerState.OFFLINE: 3>)¶ Bases:
lsst.ts.hexrotcomm.base_mock_controller.BaseMockController
Mock MT hexapod controller that talks over TCP/IP.
Parameters: - index :
SalIndex
orint
SAL index; see
SalIndex
for the allowed values.- log :
logging.Logger
Logger.
- host :
str
(optional) IP address of CSC server.
- command_port :
int
(optional) Command socket port. This argument is intended for unit tests; use the default value for normal operation.
- telemetry_port :
int
(optional) Telemetry socket port. This argument is intended for unit tests; use the default value for normal operation.
- initial_state :
Hexapod.ControllerState
(optional) Initial state of mock controller.
Notes
To start the mock controller:
ctrl = MockHexapodController(…) await ctrl.connect_taskTo stop the server:
await ctrl.stop()Known Limitations
- The synchronized move parameter is ignored. Supporting this would be fairly easy.
- No lookup table support. Thus MOVE_LUT is the same as MOVE_POINT_TO_POINT.
- Acceleration is treated as instantanous.
Attributes Summary
actuator_base_positions
actuator_encoder_resolution
actuator_max_length
actuator_min_length
actuator_mirror_positions
actuator_speed
command_connected
Return True if the command socket is connected. connect_retry_interval
connected
Return True if command and telemetry sockets are connected. enabled_substate
offline_substate
pivot
state
telemetry_connected
Return True if the telemetry socket is connected. telemetry_interval
Methods Summary
assert_state
(state[, offline_substate, …])assert_stationary
()close
()Kill command and telemetry tasks and close the connections. command_loop
()Read and execute commands. connect
()Connect the sockets. connect_command
()Connect or reconnect to the command socket. connect_telemetry
()Connect or reconnect to the telemetry/configuration socket. do_clear_error
(command)do_config_accel
(command)do_config_limits
(command)do_config_vel
(command)do_disable
(command)do_enable
(command)do_enter_control
(command)do_exit
(command)do_move_point_to_point
(command)do_offset
(command)do_position_set
(command)do_set_pivotpoint
(command)do_standby
(command)do_start
(command)do_stop
(command)end_run_command
(command, cmd_method)Called when run_command is done. get_command_key
(command)Return the key to command_table. run_command
(command)Run a command. set_state
(state)Set the current state and substates. telemetry_loop
()Write configuration once, then telemetry at regular intervals. update_and_get_header
(frame_id)Update the config or telemetry header and return it. update_telemetry
()Update self.client.telemetry. write_config
()Write the current configuration. Attributes Documentation
-
actuator_base_positions
= [(-227647, 653753, 0), (227647, 653753, 0), (679990, -129728, 0), (452343, -524025, 0), (-452343, -524025, 0), (-679990, -129728, 0)]¶
-
actuator_encoder_resolution
= 10¶
-
actuator_max_length
= 14100¶
-
actuator_min_length
= -14100¶
-
actuator_mirror_positions
= [(-472917, 512146, 403918), (472917, 512146, 403918), (679990, 153485, 403918), (207073, -665631, 403918), (-207073, -665631, 403918), (-679990, 153485, 403918)]¶
-
actuator_speed
= 500¶
-
command_connected
¶ Return True if the command socket is connected.
-
connect_retry_interval
= 0.1¶
-
connected
¶ Return True if command and telemetry sockets are connected.
-
enabled_substate
¶
-
offline_substate
¶
-
pivot
= (0, 0, 500000)¶
-
state
¶
-
telemetry_connected
¶ Return True if the telemetry socket is connected.
-
telemetry_interval
= 0.1¶
Methods Documentation
-
assert_state
(state, offline_substate=None, enabled_substate=None)¶
-
assert_stationary
()¶
-
close
()¶ Kill command and telemetry tasks and close the connections.
Always safe to call.
-
command_loop
()¶ Read and execute commands.
-
connect
()¶ Connect the sockets.
Notes
This will wait forever for a connection.
-
connect_command
()¶ Connect or reconnect to the command socket.
Notes
This will wait forever for a connection.
-
connect_telemetry
()¶ Connect or reconnect to the telemetry/configuration socket.
Notes
This will wait forever for a connection.
-
do_clear_error
(command)¶
-
do_config_accel
(command)¶
-
do_config_limits
(command)¶
-
do_config_vel
(command)¶
-
do_disable
(command)¶
-
do_enable
(command)¶
-
do_enter_control
(command)¶
-
do_exit
(command)¶
-
do_move_point_to_point
(command)¶
-
do_offset
(command)¶
-
do_position_set
(command)¶
-
do_set_pivotpoint
(command)¶
-
do_standby
(command)¶
-
do_start
(command)¶
-
do_stop
(command)¶
-
end_run_command
(command, cmd_method)¶ Called when run_command is done.
Can be used to clear the set position.
-
get_command_key
(command)¶ Return the key to command_table.
-
run_command
(command)¶ Run a command.
Parameters: - command :
Command
Command to run.
- command :
-
set_state
(state)¶ Set the current state and substates.
Parameters: - state :
lsst.ts.idl.enums.Rotator.ControllerState
orint
New state.
Notes
Sets the substates as follows:
lsst.ts.idl.enums.Rotator.OfflineSubstate.AVAILABLE
if state ==lsst.ts.idl.enums.Rotator.ControllerState.OFFLINE
lsst.ts.idl.enums.Rotator.EnabledSubstate.STATIONARY
if state ==lsst.ts.idl.enums.Rotator.ControllerState.ENABLED
The real controller goes to substate
lsst.ts.idl.enums.Rotator.OfflineSubstate.PUBLISH_ONLY
when going offline, but requires the engineering user interface (EUI) to get out of that state, and we don’t have an EUI for the mock controller!- state :
-
telemetry_loop
()¶ Write configuration once, then telemetry at regular intervals.
-
update_and_get_header
(frame_id)¶ Update the config or telemetry header and return it.
Call this prior to writing telemetry or configuration.
Parameters: - frame_id :
int
Frame ID of header to write.
- frame_id :
-
update_telemetry
()¶ Update self.client.telemetry.
-
write_config
()¶ Write the current configuration.
- index :