Crate mechutil

Source

Modulesยง

  • 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