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

Control protocol

The control protocol is the shared contract that lets a generic application operate any firmware. It exists so that a firmware author describes a device once, in Config, Status and Action, and every client can use it without a firmware-specific integration.

 Firmware        sections · services · actions
    │            described by schemas the device publishes
 Protocol        request/response messages (protobuf), one schema, bounded sizes
    │
 Transport       moves bytes: BLE today (GATT), others possible
    │
 Application     rohi desktop · mobile app (planned) · your client

What it does

  • Makes capabilities discoverable. Clients ask what sections, services and actions exist and fetch their schemas. Config becomes readable and editable settings, Status becomes health and metrics, Action becomes callable operations.
  • Avoids per-firmware clients. The protocol, the dispatcher and the client know no module by name, so a new firmware module needs no client change.
  • Separates concerns. The firmware owns meaning, the protocol owns the wire format and the transport owns delivery. The transport carries opaque bytes, so replacing it does not change the firmware or the clients.

Current state

AspectState
Protocolversion 1; still under development and changing without a version bump: keep client and firmware on the same revision
TransportBLE is the only implemented transport; the tcp:// device URI is parsed but not implemented
Securitythe link is not paired or encrypted yet; the policy hook exists, the reference firmware runs the open policy
Scopelocal control only; telemetry uplink is a separate service

Where to go next