An actor for tick events and command routing.
Asynchronous, bi-directional comms channel.
An asynchronous, bi-directional channel meant for communicating via an internal bus.
We use tokio mpsc (multi-producer, single consumer) channels because tokio typically
runs through all or projects.
CommandMessage and CommandMessageResult. Used for our message pipelines and IPC.
MechFsmCommandArgTuple
The MechFsmCommandArgTuple attempts to reduce the number transmissions required to execute a command by
allowing for multiple arguments or varying types in the same transmission. To do so, values are serialized
into the data field, with separate arrays tracking type information and value length. The data field can
store up to 255 arguments, based upon argument length. For 255 values, every column would need to be a byte.
If every argument was four bytes long, the maximum number of arguments would be 63.
One-to-many notifier. Some cool lifetime concepts, but tokio::channels are usually a better choice.
An object dictionary similar to CANopen or CoE, used as registers with CommandFsm implementations.
This module provides an implementation based upon the CANopen object dictionary
or CAN over EtherCAT (CoE) systems. The object
dictionary is the core mechanism for configuration and communication with
CANopen devices. Each entry in the dictionary is represented by an index, which
may contain sub-indices for more complex data structures such as arrays and
records.
Register value used for flexible communication with a Codesys-based PLC,
although it should be compatible with any controller.
Timer on delay.
Variant data type.
Variant type used for communications and other purposes.
A good example of a Variant type used in a similar application
is in the locka99/opcua implementation found here:
https://github.com/locka99/opcua/blob/master/lib/src/types/variant.rs