connectionState
Canonical app-level connection state.
This is the single source of truth for connection status across the entire application. All UI components, feature modules, and ViewModels should observe this flow — never RadioInterfaceService.connectionState.
State transitions are managed exclusively by MeshConnectionManager, which reconciles transport-level events with handshake progress and device sleep policy:
ConnectionState.Disconnected — no active connection to a radio
ConnectionState.Connecting — transport is up, mesh handshake (config + node-info) in progress
ConnectionState.Connected — handshake complete, radio fully operational
ConnectionState.DeviceSleep — radio entered light-sleep (transient disconnect)