ControllerCell

class lsst.ts.m2com.ControllerCell(log=None, timeout_in_second=0.05, maxsize_queue=1000, is_csc=True, host=None, port_command=None, port_telemetry=None, timeout_connection=10)

Bases: Controller

Cell controller class.

Parameters:
loglogging.Logger or None, optional

A logger. If None, a logger will be instantiated. (the default is None)

timeout_in_secondfloat, optional

Time limit for reading data from the TCP/IP interface (sec). (the default is 0.05)

maxsize_queueint, optional

Maximum size of queue. (the default is 1000)

is_cscbool, optional

Is called by the commandable SAL component (CSC) or not. This is a temporary option to separate the CSC and engineering user interface (EUI). This will be removed in the future after the state machines in the cell controller are unified to a single one. (the default is True)

hoststr or None, optional

Host address. (the default is None)

port_commandint or None, optional

Command port to connect. (the default is None)

port_telemetryint or None, optional

Telemetry port to connect. (the default is None)

timeout_connectionint or float, optional

Connection timeout in second. (the default is 10)

Attributes:
hoststr or None

Host address.

port_commandint or None

Command port to connect.

port_telemetryint or None

Telemetry port to connect.

timeout_connectionint or float

Connection timeout in second.

mock_serverMockServer or None

Mock server to support the simulation.

run_loopsbool

The event and telemetry loops are running or not.

stop_loop_timeoutfloat

Timeout of stoping loop in second.

Attributes Summary

TELEMETRY_WAIT_TIMEOUT

Methods Summary

are_clients_connected()

The command and telemetry sockets are connected or not.

assert_controller_state(command_name, ...)

Assert the current controller's state is allowed to do the command or not.

clear_errors()

Clear the errors.

close()

Cancel the task and close the connection.

close_tasks()

Close the asynchronous tasks.

connect_server()

Connect the TCP/IP server.

run_mock_server(config_dir, lut_path)

Run the mock server to support the simulation mode.

run_task_connection_monitor_loop(...[, period])

Run the task of connection monitor loop.

run_task_event_loop(process_event, *args, ...)

Run the task of event loop.

run_task_telemetry_loop(process_telemetry, *args)

Run the task of telemetry loop.

start(host, port_command, port_telemetry[, ...])

Start the task and connection.

stop_loops()

Stop the loops.

write_command_to_server(message_name[, ...])

Write the command (message_name) to server.

Attributes Documentation

TELEMETRY_WAIT_TIMEOUT = 900

Methods Documentation

are_clients_connected()

The command and telemetry sockets are connected or not.

Returns:
bool

True if clients are connected. Else, False.

assert_controller_state(command_name, allowed_curr_states)

Assert the current controller’s state is allowed to do the command or not.

Parameters:
command_namestr

Command name.

allowed_curr_stateslist [lsst.ts.salobj.State]

Allowed current states.

Raises:
ValueError

When the command is not allowed in current controller’s state.

async clear_errors()

Clear the errors.

async close()

Cancel the task and close the connection.

Note: this function is safe to call even though there is no connection.

async close_tasks()

Close the asynchronous tasks.

async connect_server()

Connect the TCP/IP server.

Raises:
RuntimeError

If timeout in connection.

async run_mock_server(config_dir, lut_path)

Run the mock server to support the simulation mode.

Parameters:
config_dirpathlib.PosixPath

Configuration directory.

lut_pathstr

Look-up table (LUT) path.

run_task_connection_monitor_loop(process_lost_connection, *args, period=1, **kwargs)

Run the task of connection monitor loop.

Parameters:
process_lost_connectionfunc or coroutine

Function to process the lost of connection.

*argsargs

Arguments needed in “process_lost_connection” function call.

periodfloat or int, optional

Period to check the connection status in second. (the default is 1)

**kwargsdict, optional

Additional keyword arguments in “process_lost_connection” function call.

run_task_event_loop(process_event, *args, **kwargs)

Run the task of event loop.

Parameters:
process_eventfunc or coroutine

Function to process the event. It must have a keyward argument of “message” to receive the message as a dictionary.

*argsargs

Arguments needed in “process_event” function call.

**kwargsdict, optional

Additional keyword arguments in “process_event” function call.

run_task_telemetry_loop(process_telemetry, *args, period=2, **kwargs)

Run the task of telemetry loop.

Parameters:
process_telemetryfunc or coroutine

Function to process the telemetry. It must have a keyward argument of “message” to receive the message as a dictionary.

*argsargs

Arguments needed in “process_telemetry” function call.

periodfloat or int, optional

Period to check the telemetry rate in second. (the default is 2)

**kwargsdict, optional

Additional keyword arguments in “process_telemetry” function call.

start(host, port_command, port_telemetry, sequence_generator=None, timeout=10.0)

Start the task and connection.

Parameters:
hoststr

Host address.

port_commandint

IP port for the command server.

port_telemetryint

IP port for the telemetry server.

sequence_generatorgenerator or None, optional

Sequence generator. (the default is None)

timeoutfloat, optional

Connection timeout in second. (default is 10.0)

async stop_loops()

Stop the loops.

async write_command_to_server(message_name, message_details=None, timeout=10.0, controller_state_expected=None)

Write the command (message_name) to server.

Parameters:
message_namestr

Message name to server.

message_detailsdict or None, optional

Message details. (the default is None)

timeoutfloat, optional

Timeout of command in second. (the default is 10.0)

controller_state_expectedenum lsst.ts.salobj.State or None,

optional

Expected controller’s state. This is only used for the commands related to the state transition. (the default is None)

Raises:
OSError

When no TCP/IP connection.

RuntimeError

When the command failed.