spaxel/firmware
jedarden bcfd1e3f16 feat(protocol): full bidirectional node protocol over WebSocket
- firmware: wire on-device motion hints to websocket_send_motion_hint()
  with 1s rate-limit; csi_set_rate() now writes to g_state.packet_rate
- firmware: websocket_send_motion_hint() sends variance + MAC + timestamp
  to mothership so rate controller ramps ahead of server-side detection
- mothership: RateController.OnMotionHint() preemptively ramps adjacent
  nodes via SetAdjacentNodesFn callback (topology-aware burst propagation)
- mothership: idle timeout extended to 30s; variance_threshold=0 in active
  mode (server handles detection), DefaultVarianceThreshold=1.0 in idle
- mothership: SendRoleToMAC() exposes dynamic role changes post-connect
- mothership: SendOTAToMAC() enables pushing firmware updates to nodes
- mothership: OTA status events are now logged with state and progress %

Protocol is backward-compatible: binary CSI frames work as in Phase 1;
JSON control messages are additive on the same single WebSocket per node.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 23:14:19 -04:00
..
main feat(protocol): full bidirectional node protocol over WebSocket 2026-03-26 23:14:19 -04:00
CMakeLists.txt feat(firmware): ESP32-S3 firmware skeleton with CSI/BLE/WebSocket 2026-03-26 07:20:55 -04:00
partitions.csv feat(firmware): ESP32-S3 firmware skeleton with CSI/BLE/WebSocket 2026-03-26 07:20:55 -04:00
sdkconfig.defaults feat(firmware): ESP32-S3 firmware skeleton with CSI/BLE/WebSocket 2026-03-26 07:20:55 -04:00