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.
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.
Machine “configuration” overlays: named sparse patches applied on top of a
module’s base config to select a hardware build. See config_overlay docs.
Machine “configuration” overlays for module configs.
IPC module for CommandMessage-based communication between autocore-server
and external modules. Provides ModuleHandler trait (analogous to AsyncServelet),
TCP transport with length-prefix framing, and TopicRouter for message dispatch.
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.
Per-run timestamped log files with bounded run-count retention
(<base>.<YYYYMMDDThhmmss>.log, keeping the newest N runs).
Per-run log files with bounded retention.
One-call service logger setup: per-run file + size cap + simplelog, wired
together so the disk-usage cap can’t be left out.
One-call service logger setup for autocore binaries.
Self-describing header + layout fingerprint for the cyclic GM shared-memory
segment. Shared by autocore-server (segment creator + codegen) and
autocore-std (control program) so a layout/ABI mismatch fails loud instead
of reading mismapped memory.
Tool & editor registry: external packages contribute tools/editors via
manifests in <config>/tools.d, discovered by the server and the IDE.
See doc/tool-registry.md.
Autocore tool & editor registry.
Runtime settings for registered tools (<config>/tool-settings), two-tier:
a reserved launch block the server reads plus free-form tool-private state.
Runtime settings for registered tools.
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
ABI version of any type that lives inside the cyclic SHM segment (signal
Event primitives, packed reprs, register encodings, etc.). Bump this ONLY
when such a binary representation changes — NOT on every release. This, not
VERSION, is the hard ABI gate between server and control program.
Human-facing package version (shown by acctl and in logs). Compiled into the
binary, so it reflects what the running process was actually built with —
unlike parsing a Cargo.toml off disk.