Real-Time and Communication
Ordinary submit_auto(lambda) and submit_periodic() use the default asynchronous path. Enter this topic only for fixed-period control, cycle budgets, real-time queues, or long-lived interruptible I/O; these are different abstraction layers.
Start with the complete robot pipeline, which establishes roles, data ownership, and shutdown protocol before mapping each edge to a component.
- Blocking I/O workers: own, wake, and join a long-lived blocking loop without defining its protocol.
- Dedicated real-time control loop: replace the portable periodic simulation with a diagnosable real-time Facade.
- Deliver every message: ordinary frame flow and bounded draining inside a real-time cycle.
- Latest values, snapshots, and phases: configuration, complete state, and startup order.
- Communication observability: understand
CommStatsand local event callbacks. - Capacity and alerts: turn cumulative statistics into window rates, margins, alert levels, and actions.
- Cancellation and timers: cooperative task cancellation with
StopTokenand cancellable, reschedulable timer handles — and what cancellation never promises.
The complete API is in docs/API.md. The integrated runnable example is examples/comm_robot_pipeline.cpp.