ruv
|
ed6157b9b7
|
fix(firmware): correct MR60BHA2 + LD2410 UART protocols (ADR-063)
MR60BHA2: SOF=0x01 (not 0x5359), XOR+NOT checksums on header and
data, frame types 0x0A14 (BR), 0x0A15 (HR), 0x0A16 (distance),
0x0F09 (presence). Based on Seeed Arduino library research.
LD2410: 256000 baud (not 115200), 0xAA report head marker,
target state byte at offset 2 (after data_type + head_marker).
Auto-detect: probes MR60 at 115200 first, then LD2410 at 256000.
Sets final baud rate after detection.
Co-Authored-By: claude-flow <ruv@ruv.net>
|
2026-03-15 15:44:08 -04:00 |
ruv
|
f42df4afaa
|
feat(firmware): ADR-063 mmWave sensor fusion — full implementation
Phase 1-2 of ADR-063:
mmwave_sensor.c/h:
- MR60BHA2 UART parser (60 GHz: HR, BR, presence, distance)
- LD2410 UART parser (24 GHz: presence, distance)
- Auto-detection: probes UART for known frame headers at boot
- Mock generator for QEMU testing (synthetic HR 72±2, BR 16±1)
- Capability flag registration per sensor type
edge_processing.c/h:
- 48-byte fused vitals packet (magic 0xC5110004)
- Kalman-style fusion: mmWave 80% + CSI 20% when both available
- Automatic fallback to CSI-only 32-byte packet when no mmWave
- Dual presence flag (Bit3 = mmwave_present)
main.c:
- mmwave_sensor_init() called at boot with auto-detect
- Status logged in startup banner
Fuzz stubs updated for mmwave_sensor API.
Build verified: QEMU mock build passes.
Co-Authored-By: claude-flow <ruv@ruv.net>
|
2026-03-15 15:40:43 -04:00 |