SimpleMockController¶
-
class
lsst.ts.hexrotcomm.
SimpleMockController
(log, host='127.0.0.1', command_port=6211, telemetry_port=6210, initial_state=<ControllerState.OFFLINE: 3>)¶ Bases:
lsst.ts.hexrotcomm.BaseMockController
Simple mock controller for unit testing BaseMockController.
The MOVE command sets cmd_position and curr_position, then the controller slowly increments curr_position.
Parameters: - log :
logging.Logger
Logger.
- host :
str
(optional) IP address of 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.
Notes
The
MOVE
command is rejected if the new position is not within the configured limits.Attributes Summary
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
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_velocity
(command)do_disable
(command)do_enable
(command)do_enter_control
(command)do_exit
(command)do_position_set
(command)do_standby
(command)do_start
(command)end_run_command
(**kwargs)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 and the time. update_telemetry
(curr_tai)Update self.client.telemetry. write_config
()Write the current configuration. Attributes Documentation
-
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
¶
-
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_velocity
(command)¶
-
do_disable
(command)¶
-
do_enable
(command)¶
-
do_enter_control
(command)¶
-
do_exit
(command)¶
-
do_position_set
(command)¶
-
do_standby
(command)¶
-
do_start
(command)¶
-
end_run_command
(**kwargs)¶ Called when run_command is done.
Can be used to clear the set position.
-
get_command_key
(command)¶ Return the key to command_table.
-
set_state
(state)¶ Set the current state and substates.
Parameters: - state :
lsst.ts.idl.enums.ControllerState
orint
New state.
Notes
Sets the substates as follows:
lsst.ts.idl.enums.OfflineSubstate.AVAILABLE
if state ==lsst.ts.idl.enums.ControllerState.OFFLINE
lsst.ts.idl.enums.EnabledSubstate.STATIONARY
if state ==lsst.ts.idl.enums.ControllerState.ENABLED
The real controller goes to substate
lsst.ts.idl.enums.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 and the time.
Call this prior to writing telemetry or configuration.
Parameters: - frame_id :
int
Frame ID of header to write.
Returns: - header :
structs.Header
The header.
- curr_tai :
float
Current time in header timestamp (TAI, unix seconds).
- frame_id :
-
update_telemetry
(curr_tai)¶ Update self.client.telemetry.
Parameters: - curr_tai :
float
Time at which to compute telemetry (TAI, unix seconds). This is the time in the header, which is (approximately) the current time.
- curr_tai :
-
write_config
()¶ Write the current configuration.
- log :