因此,作为我们公司大型机器人项目的一部分,我们有一个小型嵌入式 Linux 系统充当无线 (WiFi) 路由器。这并不重要,但它有一张配置为 5.8 GHz 无线 A 的卡(以防止它干扰其他事物)和另一张 900MHz 的特殊卡,可以为我们提供约 3 公里的范围。
我们的控制平板电脑连接到 5.8,数据包在 900MHz 上中继到机器人。因此,平板电脑和机器人都使用路由器盒作为接入点,因此我们正在运行 hostapd。作为我们用户界面的一部分,我们希望从系统的不同组件中收集 RSSI(信号强度/噪声/等)信息并将其全部显示出来。
机器人(也运行 linux)通过读取 /proc/net/wireless 然后将读取的数字发送到控制平板电脑来执行此操作。但是,在路由器上,如果网卡配置为 AP 模式(hostapd 运行),/proc/net/wireless 两个接口都有线路,但所有值均为 0。
如果我进行 iw 站转储,它会吐出一些 RSSI 数字,但我真的不想求助于 grepping 的输出。我(恕我直言)是一个相当有竞争力的 C 程序员(我写了一个实时内核),我想知道从内核获取这些信息的最佳方法是什么。我对使用 WEXT ioctl 接口有所了解,但是我最近发现 API 已被弃用,并且正在逐步采用新的无线配置/管理系统。
我可以写一些使用 WEXT 的东西,因为我们没有让我们的嵌入式 linux 安装更新到最前沿。但是,如果有人可以为我提供有关新 API 的教程/资源,我将不胜感激。或者,如果有一种方法可以使 /proc/net/wireless 与 hostapd 很好地工作,我也会接受:P