yaq/daemons/wright-filter-wheel


Expose a filter wheel as a yaq daemon.

bugtracker
source

installation

The wright-filter-wheel daemon can be installed using the following package managers:

PyPI

traits

The wright-filter-wheel daemon is composed of the following traits:

is-discrete
has-position
uses-uart
is-homeable
uses-serial
is-daemon
has-limits

configuration

baud_rate (int) default: 57600

identifiers ({'type': 'map', 'values': 'float'}) default: {}
Position identifiers

limits (array) default: [-inf, inf]
Configuration limits are strictly optional.

make (['null', 'string']) default: None

microstep (int) default: 1
Increases angle resolution of filter wheel; valid integers are 1, 2, 4, 8, 16, 32

model (['null', 'string']) default: None

motor (int) default: 0
Index for filter wheel motor

out_of_limits (enum) default: closest
Control behavior of daemon when set_position is given a value outside of limits.

port (int)
TCP port for daemon to occupy.

serial (['null', 'string']) default: None
Serial number for the particular device represented by the daemon

serial_port (string)

units (string) default: deg
Units of angle the filter wheel uses to set position

state

The wright-filter-wheel daemon will provide the following state information:

destination (float)

hw_limits (array)

position (float)

position_identifier (['null', 'string'])
Current position identifier.

messages

The wright-filter-wheel daemon will expose the following public messages:

busy ➜ boolean
Returns true if daemon is currently busy.

direct_serial_write ➜ null
Expose direct access to the serial port to clients. This should not be encouraged for normal use, but may be very important for debugging. If a device is expected to return data, it should be logged at the INFO level, not returned to the client. This is done to allow long tasks to be run asynchronously, and to explicitly discourage use of this method except when debugging. Setting `busy` to true is encouraged, but individual daemon writers should consider their own use case.
parameters:

message (bytes)

get_config ➜ string
Full configuration for the individual daemon as defined in the TOML file. This includes defaults and shared settings not directly specified in the daemon-specific TOML table.

get_config_filepath ➜ string
String representing the absolute filepath of the configuration file on the host machine.

get_destination ➜ float
Get current daemon destination.

get_identifier ➜ ['null', 'string']
Get current identifier string. Current identifier may be None.

get_limits ➜ {'items': 'float', 'type': 'array'}
Get daemon limits.Limits will be the intersection of config limits and driver limits (when appliciable).

get_position ➜ float
Get current daemon position.

get_position_identifiers ➜ {'type': 'map', 'values': 'float'}
Get position identifiers. Identifiers may not change at runtime.

get_state ➜ string
Get version of the running daemon

get_units ➜ ['null', 'string']
Get units of daemon. These units apply to the position and destination fields.

home ➜ null
Initiates the homing procedure. The daemon will report as busy during the homing procedure. After the homing procedure is complete, the daemon will return to the current destination.

id ➜ {'type': 'map', 'values': ['null', 'string']}
JSON object with information to identify the daemon, including name, kind, make, model, serial.

in_limits ➜ boolean
Check if a given position is within daemon limits.
parameters:

position (float)

set_identifier ➜ float
Set using an identifier. Returns new destination.
parameters:

identifier (string)

set_position ➜ null
Give the daemon a new destination, and begin motion towards that destination.
parameters:

position (float)

set_relative ➜ float
Give the daemon a new destination relative to its current position. Daemon will immediately begin motion towards new destination. Returns new destination.
parameters:

distance (float)

shutdown ➜ null
Cleanly shutdown (or restart) daemon.
parameters:

restart (boolean) default: False


built 2020-10-27 13:47:08                                      CC0: no copyright