Skip to content

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.

  1. Blocking I/O workers: own, wake, and join a long-lived blocking loop without defining its protocol.
  2. Dedicated real-time control loop: replace the portable periodic simulation with a diagnosable real-time Facade.
  3. Deliver every message: ordinary frame flow and bounded draining inside a real-time cycle.
  4. Latest values, snapshots, and phases: configuration, complete state, and startup order.
  5. Communication observability: understand CommStats and local event callbacks.
  6. Capacity and alerts: turn cumulative statistics into window rates, margins, alert levels, and actions.
  7. Cancellation and timers: cooperative task cancellation with StopToken and 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.