Previously only WiFi-CSI produced breathing/HR estimates. With the HLK-LD2402 radar wired up we can compute a second, physically independent breathing estimate from chest-induced cm flicker in the distance time-series — a useful cross-check that catches the case when one modality is blind (e.g. WiFi-CSI when nodes are offline, or mmWave when nothing's in the radar's field of view). mmwave.rs: - Plumb a per-reading VitalSignDetector tuned for the module's 6 Hz Normal-Mode cadence (Nyquist 3 Hz comfortably covers the 0.1-0.5 Hz breathing band). - Distance (cm) feeds the detector as the "amplitude" channel; phase is empty so heartbeat falls back to amplitude residual. - Gate `current_vitals()` on data freshness so a disconnected radar doesn't return stale cached BPMs. main.rs: - New GET /api/v1/mmwave/vitals returning the same shape as /api/v1/vital-signs plus buffer status for UI warm-up feedback. ui/raw.html: - Each vital pill now shows both 📶 (WiFi-CSI) and 📡 (mmWave) values side-by-side, separated by `|`. mmWave HR is labelled "n/a" — cm precision at 6 Hz puts heartbeat below the noise floor. Buffer fill (e.g. "120/180") shown while detector is warming up so the operator knows BPM is on the way. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| .claude-flow | ||
| crates | ||
| data/recordings | ||
| docs | ||
| examples | ||
| patches/ruvector-crv | ||
| Cargo.lock | ||
| Cargo.toml | ||