gpt4 book ai didi

c - 使用hostapd在linux中以编程方式无线接口(interface)RSSI(信号强度)编号?

转载 作者:太空狗 更新时间:2023-10-29 11:19:27 26 4
gpt4 key购买 nike

因此,作为我们公司大型机器人项目的一部分,我们有一个小型嵌入式 Linux 系统充当无线 (WiFi) 路由器。这并不重要,但它有一张卡配置为 5.8 GHz 无线 A(以防止它干扰其他东西)和另一张 900MHz 的特殊卡,让我们能够达到约 3 公里的范围。

我们的控制平板电脑在 5.8 上连接,数据包在 900MHz 上中继到机器人。因此,平板电脑和机器人都使用路由器盒作为接入点,因此我们正在运行 hostapd。作为我们用户界面的一部分,我们希望从系统的不同组件收集 RSSI(信号强度/噪声/等)信息并将其全部显示出来。

机器人(也运行 linux)通过读取/proc/net/wireless 然后将它读取的数字发送到控制平板电脑来完成此操作。但是,在路由器盒上,如果卡配置为 AP 模式(运行 hostapd),/proc/net/wireless 有两个接口(interface)的线路,但所有值都是 0。

如果我执行 iw 站转储,它会吐出一些 RSSI 数字,但我真的不想求助于 grepping 这个输出。我(恕我直言)是一个相当称职的 C 程序员(我编写了一个实时内核),我想知道从内核获取此信息的最佳方法是什么。我知道一点关于使用 WEXT ioctl 接口(interface)的知识,但是我最近发现 API 已被弃用,并且正在逐步采用新的无线配置/管理系统。

我可以不用写一些使用 WEXT 的东西,因为我们没有让我们的嵌入式 Linux 安装更新到最前沿。但是,如果有人可以为我指出新 API 的教程/资源,我将不胜感激。或者,如果有一种方法可以使/proc/net/wireless 与 hostapd 一起很好地工作,我也会接受它 :P

最佳答案

SIOCGIWSTATS 会为您提供来自 /proc/net/wireless

的统计数据

include/linux/wireless.h

#define SIOCGIWSTATS    0x8B0F          /* Get /proc/net/wireless stats */
/* SIOCGIWSTATS is strictly used between user space and the kernel, and
* is never passed to the driver (i.e. the driver will never see it). */

但是,要直接从驱动程序获取 RSSI 值,您需要使用 ioctl特定于您的 wifi 驱动程序。

例如 Broadcom 有一个宏 WLC_GET_RSSI 可以在 SIOCDEVPRIVATE 中使用。有关更多信息,请参阅 OpenWRT 源代码( https://dev.openwrt.org/browser/trunk/package/broadcom-wl/src?rev=15242 )

关于c - 使用hostapd在linux中以编程方式无线接口(interface)RSSI(信号强度)编号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19550357/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com