wifi-densepose/firmware/esp32-csi-node/main/Kconfig.projbuild

132 lines
4.1 KiB
Plaintext

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