I have a question considering the CSI Data Reception functionality. Please kindly be patient with me as I am new to WiFi modulation specific topics.
The documentation specifically denotes that the registered CSI callback function is called after CSI data has been received. Here are a couple of assertions I have about workings of CSI; Please kindly correct me if I understood something wrong.
- As I am aware, CSI data is generated for every single received packet in a manner specified by the `wifi_csi_config_t` provided in the respective configuration API, the specifics of CSI data (HT / non-HT, HT20/HT40, LLTF, LTF etc.) solely depends on received packet (e.g. for figuring out the contents of the passed CSI data buffer, the user must evaluate for secondary channel location and received packet modulation characteristics like HT/non-HT etc.)
- ESP32 supports a single packet demodulation path (SISO), but additionally, multiple antennae can be configured to be switched between automatically based on an algorithm which selects the best antenna.
- CSI data is generated for every OFDM transmission burst (e.g. for each single PSDU)
- CSI data callback is only generated in promiscuous mode
- We can enable promiscuous mode in AP mode while maintaining a maximum of 4 STA connections simultaneously
- Each transmitted packet results in a single, contiguous PSDU which is transmitted in a single OFDM burst?
- The documentation says that the CSI data callback is called whenever CSI data becomes available;
https://docs.espressif.com/projects/esp ... csi_cb_tPv
How does the procedure look like in detail? This is my understanding:Register the RX callback function of CSI data.
Each time a CSI data is received, the callback function will be called.Code: Select all
Timestamp - Step 1 - OFDM burst start detection at demodulator 2 - OFDM burst LTF transmission end 3 - PSDU transmission end 4 - WiFi interrupt 4.1 - In WiFi thread: 5 - Copy from WiFi static buffer to dynamic buffer 6 - User CSI callback 7 - User procmiscuous mode callback
- Is there any condition in which CSI callback may not get called?
- Is the order of CSI callback and user promiscuous callback always the same?
- Does CSI callback get called for each packet?
- Does CSI callback get called as often as promiscuous mode callback?
- Does WiFi thread copy CSI information, or is WiFi Demodulator packet reception blocked by CSI data callback processing?