wifi-densepose/firmware/esp32-csi-node/main
rUv 5789351b78
fix(esp32): add connected-STA self-ping CSI traffic source (#954) (#985)
The ESP32 CSI engine only produces CSI for received OFDM frames (L-LTF/
HT-LTF). On a quiet network — or on a display-enabled build where the
#893 MGMT->MGMT+DATA promiscuous upgrade is skipped (has_display=true) —
the only CSI-eligible frames are sparse beacons (often non-OFDM DSSS),
so wifi_csi_callback can starve to yield=0pps -> DEGRADED -> motion=0
(#521, #954).

Fix (additive): pin a ~50 Hz OFDM unicast floor by pinging the STA's own
DHCP gateway. The router's ICMP echo replies are OFDM frames destined to
this station and drive the CSI engine regardless of promiscuous filter
state or ambient traffic. Mirrors Espressif's esp-csi csi_recv_router
reference. Promiscuous capture (#396/#893) is left fully intact so
multistatic/multi-node sensing still hears other stations' frames.

Reconciles PR #955 (which removed promiscuous entirely and conflicted
with the already-shipped #893 DATA-capture path) into an additive change
on current main.

Verified on ESP32-S3 (N16R8, COM8), ESP-IDF v5.4:
  Promiscuous mode enabled (MGMT-only, RuView#396)
  self-ping started -> 192.168.1.1 @50Hz (CSI OFDM source, fix #521/#954)
  CSI cb #1: len=128 rssi=-40 ch=5
  adaptive_ctrl: state=6 yield=13-19pps motion=1.00 presence>0  (SENSE_ACTIVE)
DEGRADED cleared; CSI yield stable ~15 pps over 60 s.

Co-authored-by: Meraj <merajmehrabi@gmail.com>
2026-06-09 14:43:12 +02:00
..
lp_core ADR-110: ESP32-C6 firmware extension (#764) 2026-05-23 15:34:48 -04:00
CMakeLists.txt ADR-110: ESP32-C6 firmware extension (#764) 2026-05-23 15:34:48 -04:00
Kconfig.projbuild ADR-110: ESP32-C6 firmware extension (#764) 2026-05-23 15:34:48 -04:00
adaptive_controller.c fix: firmware cluster — wasm3 IDF v6.0 build (#946) + swarm TLS stack (#949) + Docker unauth default (#864) (#975) 2026-06-08 16:39:42 +02:00
adaptive_controller.h ADR-081: Implement 5-layer adaptive CSI mesh firmware kernel (#404) 2026-04-20 10:38:23 -04:00
adaptive_controller_decide.c ADR-081: Implement 5-layer adaptive CSI mesh firmware kernel (#404) 2026-04-20 10:38:23 -04:00
c6_lp_core.c ADR-110: ESP32-C6 firmware extension (#764) 2026-05-23 15:34:48 -04:00
c6_lp_core.h ADR-110: ESP32-C6 firmware extension (#764) 2026-05-23 15:34:48 -04:00
c6_softap_he.c ADR-110: ESP32-C6 firmware extension (#764) 2026-05-23 15:34:48 -04:00
c6_softap_he.h ADR-110: ESP32-C6 firmware extension (#764) 2026-05-23 15:34:48 -04:00
c6_sync_espnow.c fix: IDF v6.0 ESP-NOW callback compat (#944) + occupancy noise-floor anchor (#942) (#945) 2026-06-04 08:17:37 +02:00
c6_sync_espnow.h ADR-110: ESP32-C6 firmware extension (#764) 2026-05-23 15:34:48 -04:00
c6_timesync.c ADR-110: ESP32-C6 firmware extension (#764) 2026-05-23 15:34:48 -04:00
c6_timesync.h ADR-110: ESP32-C6 firmware extension (#764) 2026-05-23 15:34:48 -04:00
c6_twt.c ADR-110: ESP32-C6 firmware extension (#764) 2026-05-23 15:34:48 -04:00
c6_twt.h ADR-110: ESP32-C6 firmware extension (#764) 2026-05-23 15:34:48 -04:00
csi_collector.c fix(esp32): add connected-STA self-ping CSI traffic source (#954) (#985) 2026-06-09 14:43:12 +02:00
csi_collector.h fix(firmware): capture DATA frames on display-less boards — #893/#866/#897 2026-06-02 09:57:19 +02:00
display_hal.c docs: update README with ADR-045–048, Observatory, adaptive classifier, AMOLED display 2026-03-05 10:20:48 -05:00
display_hal.h docs: update README with ADR-045–048, Observatory, adaptive classifier, AMOLED display 2026-03-05 10:20:48 -05:00
display_task.c fix(firmware): capture DATA frames on display-less boards — #893/#866/#897 2026-06-02 09:57:19 +02:00
display_task.h fix(firmware): capture DATA frames on display-less boards — #893/#866/#897 2026-06-02 09:57:19 +02:00
display_ui.c fix(firmware): defensive node_id capture prevents runtime clobber (#390) 2026-04-15 13:47:34 -04:00
display_ui.h docs: update README with ADR-045–048, Observatory, adaptive classifier, AMOLED display 2026-03-05 10:20:48 -05:00
edge_processing.c fix(firmware): add vTaskDelay(1) yields in process_frame() at tier>=2 to fix WDT storm (#683) 2026-05-21 09:20:21 -04:00
edge_processing.h feat: ADR-069 ESP32 CSI → Cognitum Seed RVF pipeline (v0.5.4-esp32) 2026-04-02 19:32:18 -04:00
idf_component.yml fix(led): disable onboard WS2812 LED during CSI collection (#273) 2026-05-17 18:18:10 -04:00
lv_conf.h docs: update README with ADR-045–048, Observatory, adaptive classifier, AMOLED display 2026-03-05 10:20:48 -05:00
main.c fix(firmware): capture DATA frames on display-less boards — #893/#866/#897 2026-06-02 09:57:19 +02:00
mmwave_sensor.c refactor(mmwave): use sizeof() in mr60_process_frame bounds checks (#414) 2026-05-17 18:15:01 -04:00
mmwave_sensor.h feat: ADR-063/064 mmWave sensor fusion + multimodal ambient intelligence (#269) 2026-03-15 16:10:10 -04:00
mock_csi.c feat: QEMU ESP32-S3 testing platform + swarm configurator (ADR-061/062) (#260) 2026-03-14 13:39:51 -04:00
mock_csi.h feat: QEMU ESP32-S3 testing platform + swarm configurator (ADR-061/062) (#260) 2026-03-14 13:39:51 -04:00
nvs_config.c feat: happiness scoring pipeline + ESP32 swarm with Cognitum Seed (#285) 2026-03-20 18:46:34 -04:00
nvs_config.h feat: happiness scoring pipeline + ESP32 swarm with Cognitum Seed (#285) 2026-03-20 18:46:34 -04:00
ota_update.c release: ESP32-S3 firmware v0.6.5 — Tmr Svc stack + OTA init refactor (#628) 2026-05-18 17:05:35 -04:00
ota_update.h feat: complete vendor repos, add edge intelligence and WASM modules 2026-03-02 23:53:25 -05:00
power_mgmt.c feat: complete vendor repos, add edge intelligence and WASM modules 2026-03-02 23:53:25 -05:00
power_mgmt.h feat: complete vendor repos, add edge intelligence and WASM modules 2026-03-02 23:53:25 -05:00
rv_feature_state.c ADR-081: Implement 5-layer adaptive CSI mesh firmware kernel (#404) 2026-04-20 10:38:23 -04:00
rv_feature_state.h fix(protocol): resolve 0xC511_0004 magic collision (closes #928) (#931) 2026-06-03 11:56:35 +02:00
rv_mesh.c ADR-081: Implement 5-layer adaptive CSI mesh firmware kernel (#404) 2026-04-20 10:38:23 -04:00
rv_mesh.h ADR-081: Implement 5-layer adaptive CSI mesh firmware kernel (#404) 2026-04-20 10:38:23 -04:00
rv_radio_ops.h ADR-081: Implement 5-layer adaptive CSI mesh firmware kernel (#404) 2026-04-20 10:38:23 -04:00
rv_radio_ops_esp32.c ADR-081: Implement 5-layer adaptive CSI mesh firmware kernel (#404) 2026-04-20 10:38:23 -04:00
rv_radio_ops_mock.c ADR-081: Implement 5-layer adaptive CSI mesh firmware kernel (#404) 2026-04-20 10:38:23 -04:00
rvf_parser.c firmware/esp32-csi-node: IDF 6 build, HE CSI config, unicore DSP, provision chip detect (#522) 2026-05-17 18:00:40 -04:00
rvf_parser.h feat: complete vendor repos, add edge intelligence and WASM modules 2026-03-02 23:53:25 -05:00
stream_sender.c fix: rate-limit CSI sends and add ENOMEM backoff to prevent crash (#132) 2026-03-03 16:00:40 -05:00
stream_sender.h fix(docker): Update Dockerfile paths from src/ to v1/src/ 2026-02-28 13:38:21 -05:00
swarm_bridge.c fix: firmware cluster — wasm3 IDF v6.0 build (#946) + swarm TLS stack (#949) + Docker unauth default (#864) (#975) 2026-06-08 16:39:42 +02:00
swarm_bridge.h feat: happiness scoring pipeline + ESP32 swarm with Cognitum Seed (#285) 2026-03-20 18:46:34 -04:00
wasm_runtime.c fix(firmware): defensive node_id capture prevents runtime clobber (#390) 2026-04-15 13:47:34 -04:00
wasm_runtime.h fix(protocol): resolve 0xC511_0004 magic collision (closes #928) (#931) 2026-06-03 11:56:35 +02:00
wasm_upload.c fix: security hardening — replace fake HMAC, add path traversal protection, OTA auth (ADR-050) 2026-03-06 13:11:04 -05:00
wasm_upload.h feat: complete vendor repos, add edge intelligence and WASM modules 2026-03-02 23:53:25 -05:00