Wi-Fi 模式

[English]

ESP32-C3 Wi-Fi AP 通用场景

下图为 AP 模式下的宏观场景,其中包含不同阶段的具体描述:

AP 模式下 Wi-Fi 事件场景示例

Wi-Fi Sniffer 模式

Wi-Fi Sniffer 模式可以通过 esp_wifi_set_promiscuous() 使能。如果使能 Sniffer 模式, 可以 向应用程序转储以下数据包。

  • 802.11 管理帧

  • 802.11 数据帧,包括 MPDU、AMPDU、AMSDU 等

  • 802.11 MIMO 帧,Sniffer 模式仅转储 MIMO 帧的长度。

  • 802.11 控制帧

  • 802.11 CRC 错误帧

不可以 向应用程序转储以下数据包。

  • 802.11 其它错误帧

对于 Sniffer 模式 可以 转储的帧,应用程序可以另外使用 esp_wifi_set_promiscuous_filter()esp_wifi_set_promiscuous_ctrl_filter() 决定筛选哪些特定类型的数据包。应用程序默认筛选所有 802.11 数据和管理帧。如果你想要筛选 802.11 控制帧,esp_wifi_set_promiscuous_filter() 中的 filter 参数需要包含 “WIFI_PROMIS_FILTER_MASK_CTRL” 类型, 如果你想进一步区分 802.11 控制帧,那么调用 esp_wifi_set_promiscuous_ctrl_filter()

可以在 WIFI_MODE_NULL、WIFI_MODE_STA、WIFI_MODE_AP、WIFI_MODE_APSTA 等 Wi-Fi 模式下使能 Wi-Fi Sniffer 模式。也就是说,当 station 连接到 AP,或者 AP 有 Wi-Fi 连接时,就可以使能。请注意,Sniffer 模式对 station/AP Wi-Fi 连接的吞吐量有 很大影响。通常,除非有特别原因,当 station/AP Wi-Fi 连接出现大量流量,不应使能。

该模式下还应注意回调函数 wifi_promiscuous_cb_t 的使用。该回调将直接在 Wi-Fi 驱动程序任务中进行,所以如果应用程序需处理大量过滤的数据包,建议在回调中向应用程序任务发布一个事件,把真正的工作推迟到应用程序任务中完成。


此文档对您有帮助吗?