From 699e14facffe1c186ba8180050a7a64162b83726 Mon Sep 17 00:00:00 2001 From: Blaise Thompson Date: Tue, 19 Dec 2023 12:19:51 -0600 Subject: [PATCH] add kd-scientific (#97) --- daemons/kd-scientific-legato100.avpr | 333 +++++++++++++++++++++++++++ known-hardware.toml | 6 + known-packages.toml | 7 + 3 files changed, 346 insertions(+) create mode 100644 daemons/kd-scientific-legato100.avpr diff --git a/daemons/kd-scientific-legato100.avpr b/daemons/kd-scientific-legato100.avpr new file mode 100644 index 00000000..dc8eee0c --- /dev/null +++ b/daemons/kd-scientific-legato100.avpr @@ -0,0 +1,333 @@ +{ + "config": { + "baud_rate": { + "default": 115200, + "origin": "uses-uart", + "type": "int" + }, + "enable": { + "default": true, + "doc": "Disable this daemon. The kind entry-point will not attempt to start this daemon.", + "origin": "is-daemon", + "type": "boolean" + }, + "identifiers": { + "default": { + "infusing": 1, + "paused": 0 + }, + "doc": "Position identifiers", + "origin": "is-discrete", + "type": { + "type": "map", + "values": "double" + } + }, + "log_level": { + "default": "info", + "doc": "Set daemon log-level.", + "origin": "is-daemon", + "type": { + "name": "level", + "symbols": [ + "debug", + "info", + "notice", + "warning", + "error", + "critical", + "alert", + "emergency" + ], + "type": "enum" + } + }, + "log_to_file": { + "default": false, + "doc": "Optionally force logging to a file.", + "origin": "is-daemon", + "type": "boolean" + }, + "make": { + "default": null, + "origin": "is-daemon", + "type": [ + "null", + "string" + ] + }, + "model": { + "default": null, + "origin": "is-daemon", + "type": [ + "null", + "string" + ] + }, + "port": { + "doc": "TCP port for daemon to occupy.", + "origin": "is-daemon", + "type": "int" + }, + "serial": { + "default": null, + "doc": "Serial number for the particular device represented by the daemon", + "origin": "is-daemon", + "type": [ + "null", + "string" + ] + }, + "serial_port": { + "origin": "uses-uart", + "type": "string" + } + }, + "doc": "", + "hardware": [ + "kd-scientific:legato100" + ], + "installation": { + "PyPI": "https://pypi.org/project/yaqd-kd-scientific", + "conda-forge": "https://anaconda.org/conda-forge/yaqd-kd-scientific" + }, + "links": { + "bugtracker": "https://github.com/yaq-project/yaqd-kd-scientific/-/issues", + "source": "https://github.com/yaq-project/yaqd-kd-scientific" + }, + "messages": { + "busy": { + "doc": "Returns true if daemon is currently busy.", + "origin": "is-daemon", + "request": [], + "response": "boolean" + }, + "direct_serial_write": { + "doc": "Expose direct access to the serial port to clients.\n\nThis should not be encouraged for normal use, but may be very important for debugging.\nIf a device is expected to return data, it should be logged at the INFO level, not returned to the client.\nThis is done to allow long tasks to be run asynchronously, and to explicitly discourage use of this method except when debugging.\nSetting `busy` to true is encouraged, but individual daemon writers should consider their own use case.\n", + "origin": "uses-serial", + "request": [ + { + "name": "message", + "type": "bytes" + } + ], + "response": "null" + }, + "get_config": { + "doc": "Full configuration for the individual daemon as defined in the TOML file.\nThis includes defaults and shared settings not directly specified in the daemon-specific TOML table.\n", + "origin": "is-daemon", + "request": [], + "response": "string" + }, + "get_config_filepath": { + "doc": "String representing the absolute filepath of the configuration file on the host machine.\n", + "origin": "is-daemon", + "request": [], + "response": "string" + }, + "get_destination": { + "doc": "Get current daemon destination.", + "origin": "has-position", + "request": [], + "response": "double" + }, + "get_identifier": { + "doc": "Get current identifier string. Current identifier may be None.", + "origin": "is-discrete", + "request": [], + "response": [ + "null", + "string" + ] + }, + "get_position": { + "doc": "Get current daemon position.", + "origin": "has-position", + "request": [], + "response": "double" + }, + "get_position_identifier_options": { + "doc": "Get position identifier names. Identifiers may not change at runtime.", + "origin": "is-discrete", + "request": [], + "response": { + "items": "string", + "type": "array" + } + }, + "get_position_identifiers": { + "doc": "Get position identifiers. Identifiers may not change at runtime.", + "origin": "is-discrete", + "request": [], + "response": { + "type": "map", + "values": "double" + } + }, + "get_state": { + "doc": "Get version of the running daemon", + "origin": "is-daemon", + "request": [], + "response": "string" + }, + "get_units": { + "doc": "Get units of daemon. These units apply to the position and destination properties.", + "origin": "has-position", + "request": [], + "response": [ + "null", + "string" + ] + }, + "id": { + "doc": "JSON object with information to identify the daemon, including name, kind, make, model, serial.\n", + "origin": "is-daemon", + "request": [], + "response": { + "type": "map", + "values": [ + "null", + "string" + ] + } + }, + "set_identifier": { + "doc": "Set using an identifier. Returns new destination.", + "origin": "is-discrete", + "request": [ + { + "name": "identifier", + "type": "string" + } + ], + "response": "double" + }, + "set_position": { + "doc": "Give the daemon a new destination, and begin motion towards that destination.", + "origin": "has-position", + "request": [ + { + "name": "position", + "type": "double" + } + ], + "response": "null" + }, + "set_relative": { + "doc": "Give the daemon a new destination relative to its current position. Daemon will immediately begin motion towards new destination. Returns new destination.", + "origin": "has-position", + "request": [ + { + "name": "distance", + "type": "double" + } + ], + "response": "double" + }, + "shutdown": { + "doc": "Cleanly shutdown (or restart) daemon.", + "origin": "is-daemon", + "request": [ + { + "default": false, + "name": "restart", + "type": "boolean" + } + ], + "response": "null" + } + }, + "properties": { + "destination": { + "control_kind": "hinted", + "dynamic": true, + "getter": "get_destination", + "limits_getter": null, + "options_getter": null, + "record_kind": "data", + "setter": "set_position", + "type": "double", + "units_getter": "get_units" + }, + "position": { + "control_kind": "hinted", + "dynamic": true, + "getter": "get_position", + "limits_getter": null, + "options_getter": null, + "record_kind": "data", + "setter": null, + "type": "double", + "units_getter": "get_units" + }, + "position_identifier": { + "control_kind": "hinted", + "dynamic": true, + "getter": "get_identifier", + "limits_getter": null, + "options_getter": "get_position_identifier_options", + "record_kind": "data", + "setter": "set_identifier", + "type": "string", + "units_getter": null + } + }, + "protocol": "kd-scientific-legato100", + "requires": [], + "state": { + "destination": { + "default": NaN, + "origin": "has-position", + "type": "double" + }, + "position": { + "default": NaN, + "origin": "has-position", + "type": "double" + }, + "position_identifier": { + "default": null, + "doc": "Current position identifier.", + "origin": "is-discrete", + "type": [ + "null", + "string" + ] + } + }, + "traits": [ + "has-position", + "is-daemon", + "is-discrete", + "uses-serial", + "uses-uart" + ], + "types": [ + { + "fields": [ + { + "name": "shape", + "type": { + "items": "int", + "type": "array" + } + }, + { + "name": "typestr", + "type": "string" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "version", + "type": "int" + } + ], + "logicalType": "ndarray", + "name": "ndarray", + "type": "record" + } + ] +} \ No newline at end of file diff --git a/known-hardware.toml b/known-hardware.toml index 1eba874a..bb6be5e0 100644 --- a/known-hardware.toml +++ b/known-hardware.toml @@ -93,6 +93,12 @@ links.manufacturer = "https://www.horiba.com/int/scientific/products/detail/acti doc = "Visible Single-Photon Detector. Used for Time Correlated Single Photon Counting via Becker-Hickl SPC-130." links.manufacturer = "https://www.idquantique.com/quantum-sensing/products/id100/" +[kd-scientific] + +[kd-scientific.legato100] +doc = "Infuse only single syringe pump." +links.manufacturer = "https://www.kdscientific.com/legato-100-syringe-pump.html" + [labjack] [labjack.t4] diff --git a/known-packages.toml b/known-packages.toml index ccd9a2f2..1bc07e17 100644 --- a/known-packages.toml +++ b/known-packages.toml @@ -154,6 +154,13 @@ badges = [ "", ] +[daemons.yaqd-kd-scientific] +badges = [ + "", + "", + "", +] + [daemons.yaqd-labjack] badges = [ "",