Parent: #137. Radio settings and firmware must be DAPPS-controllable, not hand-provisioned. - [ ] Device-control API: region presets (localisation), TX power (region-capped), channel management (name + 16-byte PSK) — these map 1:1 to companion opcodes already implemented in the PoC (`SET_RADIO_PARAMS` 0x0B, `SET_RADIO_TX_POWER` 0x0C, `SET_CHANNEL` 0x20, `GET_CHANNEL` 0x1F, `SET_ADVERT_NAME` 0x08, `APP_START`→`SELF_INFO`). Persist in `SystemOptions`, apply on startup/change. - [ ] Firmware flash/upgrade wrapping esptool: detect board, fetch+verify the per-board merged bin (sha256), **release the serial port**, flash @ 0x0, verify, restart. Deliberate operator action, not auto-update. Radio liveness watchdog + reset/recovery is tracked separately. See README "Device-control & firmware API".
Parent: #137. Radio settings and firmware must be DAPPS-controllable, not hand-provisioned.
SET_RADIO_PARAMS0x0B,SET_RADIO_TX_POWER0x0C,SET_CHANNEL0x20,GET_CHANNEL0x1F,SET_ADVERT_NAME0x08,APP_START→SELF_INFO). Persist inSystemOptions, apply on startup/change.Radio liveness watchdog + reset/recovery is tracked separately. See README "Device-control & firmware API".