18#ifndef PROTOCORE_WIFI_SNIFFER_H
19#define PROTOCORE_WIFI_SNIFFER_H
25#if PC_ENABLE_WIFI_SNIFFER
30 static constexpr uint8_t WIFI_TYPE_MGMT = 0;
31 static constexpr uint8_t WIFI_TYPE_CTRL = 1;
32 static constexpr uint8_t WIFI_TYPE_DATA = 2;
33 static constexpr uint8_t WIFI_TYPE_EXT = 3;
59bool pc_wifi_parse(
const uint8_t *frame,
size_t len, WifiFrame *out);
72void pc_wifi_stats_reset(WifiStats *s);
75void pc_wifi_stats_add(WifiStats *s,
const WifiFrame *f);
81bool pc_wifi_should_roam(int8_t cur_rssi, int8_t cand_rssi, uint8_t hysteresis_db);
101void pc_wifi_scan_init(WifiScan *s, uint8_t first, uint8_t last, uint16_t dwell_ms, uint32_t now_ms);
104bool pc_wifi_scan_due(
const WifiScan *s, uint32_t now_ms);
110uint8_t pc_wifi_scan_next(WifiScan *s, uint32_t now_ms);
115struct WifiChannelSurvey
119 uint8_t best_bssid[6];
123#define PC_WIFI_RSSI_NONE (-128)
134void pc_wifi_survey_reset(WifiSurvey *s, uint8_t first, uint8_t count);
137void pc_wifi_survey_add(WifiSurvey *s, uint8_t channel, int8_t rssi,
const WifiFrame *f);
140const WifiChannelSurvey *pc_wifi_survey_get(
const WifiSurvey *s, uint8_t channel);
146bool pc_wifi_survey_best(
const WifiSurvey *s, uint8_t exclude_channel, uint8_t *out_channel, int8_t *out_rssi);
170bool pc_wifi_sniffer_begin(uint8_t first_chan, uint8_t last_chan, uint16_t dwell_ms);
173void pc_wifi_sniffer_tick(
void);
176void pc_wifi_sniffer_end(
void);
179const WifiStats *pc_wifi_sniffer_stats(
void);
182const WifiSurvey *pc_wifi_sniffer_survey(
void);
185const WifiScan *pc_wifi_sniffer_scan(
void);
User-facing configuration for ProtoCore.
#define PC_WIFI_SNIFFER_MAX_CHANNELS
Channels tracked by the WiFi sniffer's per-channel survey (PC_WIFI_SNIFFER_MAX_CHANNELS).