mirror of
https://github.com/ruvnet/RuView
synced 2026-07-27 18:11:43 +00:00
fix(host): 256-bin HE-LTF ingest end-to-end + latent offset bugs (#1005)
Audit of every ADR-018 consumer against live C6 HE20 frames (532B/256-bin): - sensing-server + CLI calibrate parsers read n_subcarriers from one byte (256 decoded as 0) with stale seq/rssi offsets (rssi always 0 — latent, pre-existing, confirmed vs firmware csi_collector.c). Fixed to the real ADR-018 layout; n_subcarriers u8->u16; byte 18 surfaced as typed PpduType. - sensing-server probe buffer 256B -> 2048B (532B datagram errored on Windows) - per-node grid gate: lock densest (n_subcarriers, ppdu_type) grid, re-warm on upgrade, skip sparser minority frames — HT-64 never mixes into an HE-256 baseline window - hardware parser: HE-aware bandwidth classification (256-FFT HE20 = 20MHz, was Bw160); PpduType/Adr018Flags re-exported - verbatim live frames (532B HE-SU, 148B HT) embedded as regression fixtures - archive python parser: bandwidth heuristic mirror fix Live-validated: calibrate --tier he20 consumed 600x 256-bin frames into an ADR-135 He20 baseline (242 tones) skipping 94 HT frames; sensing-server shows node 12 active with real RSSI (-40dBm). 765 tests green across the three crates; workspace check clean; Python proof PASS. Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
@@ -221,11 +221,15 @@ class ESP32BinaryParser:
|
||||
|
||||
snr = float(rssi - noise_floor)
|
||||
frequency = float(freq_mhz) * 1e6
|
||||
bandwidth = 20e6 # default; could infer from n_subcarriers
|
||||
|
||||
if n_subcarriers <= 56:
|
||||
# Bandwidth inference (issue #1005): HE-LTF uses a 4x denser tone
|
||||
# grid than HT-LTF on the same channel width — an HE-SU frame with
|
||||
# 256 bins (242 active HE20 tones) is a *20 MHz* capture, not 160.
|
||||
if ppdu_byte in (1, 2, 3): # HE-SU / HE-MU / HE-TB
|
||||
bandwidth = 40e6 if (flags_byte & 0x01) or n_subcarriers > 256 else 20e6
|
||||
elif n_subcarriers <= 64: # ESP32 HT20 delivers the full 64-bin FFT
|
||||
bandwidth = 20e6
|
||||
elif n_subcarriers <= 114:
|
||||
elif n_subcarriers <= 128:
|
||||
bandwidth = 40e6
|
||||
elif n_subcarriers <= 242:
|
||||
bandwidth = 80e6
|
||||
|
||||
Reference in New Issue
Block a user