menu "CSI Node Configuration" config CSI_NODE_ID int "Node ID (0-255)" default 1 range 0 255 help Unique identifier for this ESP32 CSI node. config CSI_TARGET_IP string "Aggregator IP address" default "192.168.1.100" help IP address of the UDP aggregator host. config CSI_TARGET_PORT int "Aggregator UDP port" default 5005 range 1024 65535 help UDP port the aggregator listens on. config CSI_WIFI_SSID string "WiFi SSID" default "wifi-densepose" help SSID of the WiFi network to connect to. config CSI_WIFI_PASSWORD string "WiFi Password" default "" help Password for the WiFi network. Leave empty for open networks. config CSI_WIFI_CHANNEL int "WiFi Channel (1-13)" default 6 range 1 13 help WiFi channel to listen on for CSI data. config CSI_FILTER_MAC string "CSI source MAC filter (AA:BB:CC:DD:EE:FF or empty)" default "" help When set to a valid MAC address (e.g. "AA:BB:CC:DD:EE:FF"), only CSI frames from that transmitter are processed. All other frames are silently dropped. This prevents signal mixing in multi-AP environments. Leave empty to accept CSI from all transmitters. Can be overridden at runtime via NVS key "filter_mac" (6-byte blob) without reflashing. endmenu menu "Edge Intelligence (ADR-039)" config EDGE_TIER int "Edge processing tier (0=off, 1=phase/stats, 2=vitals)" default 0 range 0 3 help Controls the level of on-device CSI processing: 0 = Disabled. Raw CSI frames are streamed unchanged (default). This preserves full backward compatibility. 1 = Phase sanitization + Welford statistics + top-K subcarrier selection + delta compression. Runs on Core 1. 2 = All of Tier 1, plus presence detection, vital signs extraction (breathing/heart rate), motion scoring, and fall detection. Sends vitals packets over UDP. 3 = Reserved for future ML inference tier. config EDGE_PRESENCE_THRESH int "Presence detection threshold (0-65535)" default 50 range 0 65535 depends on EDGE_TIER > 0 help Amplitude variance threshold for presence detection. Higher = less sensitive. Values below threshold/2 indicate empty room; values above threshold indicate motion. config EDGE_FALL_THRESH int "Fall detection threshold (0-65535)" default 500 range 0 65535 depends on EDGE_TIER > 0 help Minimum variance spike (scaled by 100) required for fall detection. The actual threshold is also gated by 5-sigma above the running mean, whichever is higher. config EDGE_VITAL_WINDOW int "Vital signs window (frames, 60-600)" default 300 range 60 600 depends on EDGE_TIER > 0 help Number of phase history samples used for vital signs estimation. At 20 Hz CSI rate, 300 frames = 15 seconds. Larger windows give more stable estimates but respond more slowly to changes. config EDGE_VITAL_INTERVAL int "Vitals packet send interval (ms)" default 1000 range 100 60000 depends on EDGE_TIER > 0 help How often to send a vitals summary packet over UDP. 1000 ms (1 Hz) is recommended for real-time dashboards. Increase to reduce network bandwidth. config EDGE_SUBK_COUNT int "Top-K subcarrier count (1-192)" default 32 range 1 192 depends on EDGE_TIER > 0 help Number of highest-variance subcarriers to select for downstream processing (vital signs, delta compression). 32 is a good default for HT20 (64 subcarriers). Increase for HT40 (128 subcarriers). endmenu