完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我想构建一个应用程序来测量 WiFi 信道负载。这需要计算接收到的数据包的空中时间。我的做法是:
1. 将ESP32配置为混杂模式,开启接收各种数据包。 2. 在rx回调中,获取包速率和包长度。 3. 使用速率和长度,计算 tx 时间,并添加前导码:air_time = length * 8 / rate + 192 us。 例如,如果我以 1 Mbps 的速度接收到一个 1000 字节的数据包,则传输时间为: air_time = 1000 * 8 / 1e6 + 192e-6 = 8192 us。 我的问题是我不知道如何获得数据包速率。目前我检查wifi_pkt_rx_ctrl_t数据并执行以下操作: 1. 如果数据包是 802.11n (sig_mode == 1),获取带宽(20 或 40 MHz)、SGI 和 MCS,进行解码。 2. 如果数据包是 802.11bg (sig_mode == 0),则使用速率字段。 问题出在第 2 步。我在速率字段上遇到两个问题: 1. wifi_pkt_rx_ctrl_t::rate 是如何解释的?它是以 500 kbps 为单位的比特率吗(例如,速率 22 表示 11 Mbps)?或者我应该使用wifi_phy_rate_t枚举来解释它(例如速率 3 是 11 Mbps)? 2. 独立于我如何解释这个字段,我在我所做的捕获中有不一致的值。例如,我没有看到以 1 Mbps 传输的帧,应该有很多,因为当我使用运行 Wireshark 的 PC 进行捕获时,我看到的主要是信标帧。 |
|
相关推荐
1个回答
|
|
仔细查看捕获后,看起来速率使用wifi_phy_rate_t,但确认会很好。
|
|
|
|
只有小组成员才能发言,加入小组>>
1153 浏览 1 评论
584浏览 6评论
480浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
465浏览 5评论
466浏览 4评论
441浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 01:33 , Processed in 0.811943 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号