BaseDevice

class lsst.ts.ess.common.device.BaseDevice(name: str, device_id: str, sensor: BaseSensor, baud_rate: int, callback_func: Callable, log: Logger)

Bases: ABC

Base class for the different types of Sensor Devices.

This class holds all common code for the hardware devices. Device specific code (for instance for a serial or an FTDI device) needs to be implemented in a subclass.

Parameters:
namestr

The name of the device.

device_idstr

The hardware device ID to connect to. This can be a physical ID (e.g. /dev/ttyUSB0), a serial port (e.g. serial_ch_1) or any other ID used by the specific device.

sensorBaseSensor

The sensor that produces the telemetry.

baud_rateint

The baud rate of the sensor.

callback_funcCallable

Callback function to receive the telemetry.

loglogging.Logger

The logger to create a child logger for.

Methods Summary

basic_close()

Close the Sensor Device.

basic_open()

Open the Sensor Device.

close()

Stop the telemetry loop.

handle_readline_exception(exception)

Handle any exception that happened in the readline method.

open()

Generic open function.

readline()

Read a line of telemetry from the device.

Methods Documentation

abstract async basic_close() None

Close the Sensor Device.

abstract async basic_open() None

Open the Sensor Device.

async close() None

Stop the telemetry loop.

async handle_readline_exception(exception: BaseException) None

Handle any exception that happened in the readline method.

The default is to log and ignore but subclasses may override this method to customize the behavior.

Parameters:
exceptionBaseException

The exception to handle.

async open() None

Generic open function.

Check if the device is open and, if not, call basic_open. Then start the telemetry loop.

Raises:
RuntimeError

In case the device already is open.

abstract async readline() str

Read a line of telemetry from the device.

Returns:
linestr

Line read from the device. Includes terminator string if there is one. May be returned empty if nothing was received or partial if the readline was started during device reception.