feat(adr-018): ESP32-S3 firmware, Rust aggregator, and live CSI pipeline
Complete end-to-end WiFi CSI capture pipeline verified on real hardware: - ESP32-S3 firmware: WiFi STA + promiscuous mode CSI collection, ADR-018 binary serialization, UDP streaming at ~20 Hz - Rust aggregator CLI binary (clap): receives UDP frames, parses with Esp32CsiParser, prints per-frame summary (node, seq, rssi, amp) - UDP aggregator module with per-node sequence tracking and drop detection - CsiFrame bridge to detection pipeline (amplitude/phase/SNR conversion) - Python ESP32 binary parser with UDP reader - Presence detection confirmed: motion score 10/10 from live CSI variance Hardware verified: ESP32-S3-DevKitC-1 (CP2102, MAC 3C:0F:02:EC:C2:28), Docker ESP-IDF v5.2 build, esptool 5.1.0 flash, 20 Rust + 6 Python tests pass. Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
34
firmware/esp32-csi-node/main/stream_sender.h
Normal file
34
firmware/esp32-csi-node/main/stream_sender.h
Normal file
@@ -0,0 +1,34 @@
|
||||
/**
|
||||
* @file stream_sender.h
|
||||
* @brief UDP stream sender for CSI frames.
|
||||
*/
|
||||
|
||||
#ifndef STREAM_SENDER_H
|
||||
#define STREAM_SENDER_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
|
||||
/**
|
||||
* Initialize the UDP sender.
|
||||
* Creates a UDP socket targeting the configured aggregator.
|
||||
*
|
||||
* @return 0 on success, -1 on error.
|
||||
*/
|
||||
int stream_sender_init(void);
|
||||
|
||||
/**
|
||||
* Send a serialized CSI frame over UDP.
|
||||
*
|
||||
* @param data Frame data buffer.
|
||||
* @param len Length of data to send.
|
||||
* @return Number of bytes sent, or -1 on error.
|
||||
*/
|
||||
int stream_sender_send(const uint8_t *data, size_t len);
|
||||
|
||||
/**
|
||||
* Close the UDP sender socket.
|
||||
*/
|
||||
void stream_sender_deinit(void);
|
||||
|
||||
#endif /* STREAM_SENDER_H */
|
||||
Reference in New Issue
Block a user