所以,我们在公司的一个大型机器人项目中使用了一个小型嵌入式 Linux 系统作为无线(WiFi)路由器。虽然这并不重要,但是它有一张卡片被配置为 5.8 GHz 无线 A(以避免与其他设备干扰),另外一张特殊的卡片则使用 900MHz 进行通讯,使得我们可以获得约 3 公里的范围。
我们的控制平板连接到 5.8GHz,然后将数据包中继到机器人上的 900MHz。因此,平板电脑和机器人都将路由器盒子作为接入点,并运行 hostapd。作为用户界面的一部分,我们希望从系统的不同组件收集 RSSI(信号强度/噪声等)信息并显示出来。
机器人(也运行 Linux)通过读取 /proc/net/wireless 并将其读取的数字发送到控制平板来实现此目标。然而,在路由器盒子上,如果卡片配置为 AP 模式(hostapd 运行),则 /proc/net/wireless 将会显示两个接口的行,但所有值都为 0。
如果我执行 iw station dump,它会输出一些 RSSI 数字,但我真的不想使用 grep 来过滤它的输出。我的 C 编程技能相当不错(我已经编写了一个实时内核),因此我想知道从内核获取这些信息的最佳方法是什么。我了解一些关于使用 WEXT ioctl 接口的知识,但我最近发现该 API 已过时,新的无线配置/管理系统正在逐步推出。
我可以通过编写使用 WEXT 的程序来完成这个任务,因为我们不会将嵌入式 Linux 安装程序更新到最新的版本。然而,如果有人可以向我指出新的 API 的教程/资源,我会非常感激。或者,如果有一种使 /proc/net/wireless 与 hostapd 很好地协作的方法,我也会采纳 :P
我们的控制平板连接到 5.8GHz,然后将数据包中继到机器人上的 900MHz。因此,平板电脑和机器人都将路由器盒子作为接入点,并运行 hostapd。作为用户界面的一部分,我们希望从系统的不同组件收集 RSSI(信号强度/噪声等)信息并显示出来。
机器人(也运行 Linux)通过读取 /proc/net/wireless 并将其读取的数字发送到控制平板来实现此目标。然而,在路由器盒子上,如果卡片配置为 AP 模式(hostapd 运行),则 /proc/net/wireless 将会显示两个接口的行,但所有值都为 0。
如果我执行 iw station dump,它会输出一些 RSSI 数字,但我真的不想使用 grep 来过滤它的输出。我的 C 编程技能相当不错(我已经编写了一个实时内核),因此我想知道从内核获取这些信息的最佳方法是什么。我了解一些关于使用 WEXT ioctl 接口的知识,但我最近发现该 API 已过时,新的无线配置/管理系统正在逐步推出。
我可以通过编写使用 WEXT 的程序来完成这个任务,因为我们不会将嵌入式 Linux 安装程序更新到最新的版本。然而,如果有人可以向我指出新的 API 的教程/资源,我会非常感激。或者,如果有一种使 /proc/net/wireless 与 hostapd 很好地协作的方法,我也会采纳 :P