No description
- /ws/node endpoint: one goroutine per connection, bidirectional - Binary frames: 24-byte header → CSIFrame struct; payload as []int8 I/Q pairs - JSON frames: dispatched by "type" field (hello, health, ble, motion_hint, ota_status) - Per-link ring buffer: 256-sample circular, keyed by (node_mac, peer_mac) - Node identity from first "hello" — no pre-registration required - Used gorilla/websocket: mature, SetReadDeadline, binary frame support - mDNS via hashicorp/mdns at _spaxel._tcp.local:8080 - Ping/pong keepalive: 30s ping interval, 60s read deadline - Malformed frame tracking: warn at 100/min, close at 1000/min Complete: frame parsing, ring buffers, mDNS, hello/health/ble dispatch, tests (22 passing) Remaining: OTA command dispatch, /ws/dashboard publisher, SQLite fleet manager (Phase 2) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .marathon | ||
| docs | ||
| mothership | ||
| PROGRESS.md | ||