Runtime Status Activity
Sections, controls, and event types
Runtime Status Activity
FixoRuntimeActivity is the Agent-side full-page view of the live Runtime for the active preset. This page enumerates its sections, controls, and the event taxonomy it records.
Sections
| Section | Contents |
|---|---|
| Build & Inject | The shared BuildInjectWidget band. Identical to the one inside the Fixo wizard; same controls drive build / inject / start / stop. |
| Live Values | Per-channel actuator and sensor read-back. Placeholder until the firmware protocol gains a read path. |
| Numex Channels | One row per active channel: (channelId → active stanza) with a LightWidget for activation state. Fed by Runtime::channelActiveChanged. |
| Event Log | Read-only tail of the last 200 entries from the RuntimeEventLog, newest at the bottom. The full log survives restarts. |
Controls
| Control | Behaviour |
|---|---|
| Change active preset… | Pushes the preset picker (FixoPresetSelectorActivity). On pick, AgentRuntimeService::setActivePreset() swaps the runtime. |
| Clear log… | Wipes the persistent RuntimeEventLog. |
Stop / reflash / reconnect controls live inside the embedded Build & Inject band; the activity does not duplicate them.
Event types
Every entry in the log is one of six types:
| Type | Triggered by | Payload |
|---|---|---|
StatusChange |
Runtime::statusChanged |
from, to — both RuntimeStatus values |
ConnectionChange |
Runtime::connectionStatusChanged |
from, to — both ConnectionStatus values |
PresetChange |
AgentRuntimeService::setActivePreset |
from, fromHash, to, toHash |
PingTimeout |
Runtime::pingTimeout |
reason string |
Error |
Runtime::error |
message string |
FirmwareReplied |
Runtime::statusReplied |
configHashHex, rttMs (sampled, see below) |
FirmwareReplied is sampled at most once per minute per active preset. The first reply per (presetName, contentHash) pair is always logged so a quick boot still has a baseline.
buildProgress, flashProgress, serialCountersChanged, and channelActiveChanged are intentionally not logged — they're high-frequency or only meaningful live; the activity displays them, the log records discrete state.
Persistence
Backed by liblog/log/LogStorage — a memory-mapped append-only file with automatic rotation. Each entry is one JSON-encoded line. Stored at <userDataDir>/runtime_event_log/.
In-memory the log holds at most 10 000 entries, with entries older than 30 days pruned.
Related
- Check Runtime Status — howto walkthrough.
- The glance row on
FaceActivity(FixoRuntimeStatusWidget) — the same status surface, condensed.