Details Regarding "Received packet radio metadata header"
Posted: Thu Mar 01, 2018 1:35 am
Hi,
I have been looking at the following structure in sniffer's API:
typedef struct {
signed rssi:8; /**< signal intensity of packet */
unsigned rate:5; /**< data rate */
unsigned :1; /**< reserve */
unsigned sig_mode:2; /**< 0:is not 11n packet; 1:is 11n packet */
unsigned :16; /**< reserve */
unsigned mcs:7; /**< if is 11n packet, shows the modulation(range from 0 to 76) */
unsigned cwb:1; /**< if is 11n packet, shows if is HT40 packet or not */
unsigned :16; /**< reserve */
unsigned smoothing:1; /**< reserve */
unsigned not_sounding:1; /**< reserve */
unsigned :1; /**< reserve */
unsigned aggregation:1; /**< Aggregation */
unsigned stbc:2; /**< STBC */
unsigned fec_coding:1; /**< Flag is set for 11n packets which are LDPC */
unsigned sgi:1; /**< SGI */
unsigned noise_floor:8; /**< noise floor */
unsigned ampdu_cnt:8; /**< ampdu cnt */
unsigned channel:4; /**< which channel this packet in */
unsigned :12; /**< reserve */
unsigned timestamp:32; /**< timestamp */
unsigned :32; /**< reserve */
unsigned :32; /**< reserve */
unsigned sig_len:12; /**< length of packet */
unsigned :12; /**< reserve */
unsigned rx_state:8; /**< rx state */
} wifi_pkt_rx_ctrl_t;
I have some questions which probably can only be answered by ESPRESSIF developers themselves.
I looked everywhere for detailed documentation regarding the values in this structure, no luck!
The ones I'm interested in are: Timestamp, and Channel. The questions:
1-What is the accuracy of the timestamp? Seconds? Milliseconds?
2-What is this timestamp based off? Epoch?
3-When exactly does this timestamp gets associated with the incoming packet?
4-Does the radio use the system-time to generate this timestamp at the time it captures the packet?
Now regarding the channel, Is this value just showing the channel the radio has been sniffing on? Or does it indicate if it's getting it from a different channel (in case of the channel width leak).
Please include as much details as possible.
Thanks!
I have been looking at the following structure in sniffer's API:
typedef struct {
signed rssi:8; /**< signal intensity of packet */
unsigned rate:5; /**< data rate */
unsigned :1; /**< reserve */
unsigned sig_mode:2; /**< 0:is not 11n packet; 1:is 11n packet */
unsigned :16; /**< reserve */
unsigned mcs:7; /**< if is 11n packet, shows the modulation(range from 0 to 76) */
unsigned cwb:1; /**< if is 11n packet, shows if is HT40 packet or not */
unsigned :16; /**< reserve */
unsigned smoothing:1; /**< reserve */
unsigned not_sounding:1; /**< reserve */
unsigned :1; /**< reserve */
unsigned aggregation:1; /**< Aggregation */
unsigned stbc:2; /**< STBC */
unsigned fec_coding:1; /**< Flag is set for 11n packets which are LDPC */
unsigned sgi:1; /**< SGI */
unsigned noise_floor:8; /**< noise floor */
unsigned ampdu_cnt:8; /**< ampdu cnt */
unsigned channel:4; /**< which channel this packet in */
unsigned :12; /**< reserve */
unsigned timestamp:32; /**< timestamp */
unsigned :32; /**< reserve */
unsigned :32; /**< reserve */
unsigned sig_len:12; /**< length of packet */
unsigned :12; /**< reserve */
unsigned rx_state:8; /**< rx state */
} wifi_pkt_rx_ctrl_t;
I have some questions which probably can only be answered by ESPRESSIF developers themselves.
I looked everywhere for detailed documentation regarding the values in this structure, no luck!
The ones I'm interested in are: Timestamp, and Channel. The questions:
1-What is the accuracy of the timestamp? Seconds? Milliseconds?
2-What is this timestamp based off? Epoch?
3-When exactly does this timestamp gets associated with the incoming packet?
4-Does the radio use the system-time to generate this timestamp at the time it captures the packet?
Now regarding the channel, Is this value just showing the channel the radio has been sniffing on? Or does it indicate if it's getting it from a different channel (in case of the channel width leak).
Please include as much details as possible.
Thanks!