Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Runtime Behaviors of an Embedded Controller

Component code is typically executed as an asynchronous task invoked by Embassy Executor. A component reacts to events that are produced at higher levels of the Embedded Controller logic, through one or more policy manager tasks.

Tasks are generally event-driven actions dispatched in response to messages.

Messages are conveyed through a comms implementation. Events may be handled exclusively be a single component or reacted to by more than one component.

Messages are queued and dispatched in order but are handled asynchronously. Signaling may be required to enforce an ordered flow.

A component is wrapped within a defined Device wrapper that implements the traits that identify and control the implemented device type. The Controller for the device reacts to various events issued at the direction of policy manager logic, and in turn invokes the component hardware in appropriate response.

sequenceDiagram
    participant Policy as Policy Manager Task
    participant Comms as Comms Dispatcher
    participant Ctrl as Controller
    participant Dev as Device Wrapper
    participant Comp as Component (Implements Trait)

    Policy->>Comms: Emit Message (e.g. BatteryEvent)
    Comms->>Ctrl: dispatch_message()
    Ctrl->>Dev: handle()
    Dev->>Comp: perform_action()
    Comp-->>Dev: Result
    Dev-->>Ctrl: Response
    Ctrl-->>Comms: Ack or follow-up message