そのため、当社では大規模なロボット工学プロジェクトの一環として、ワイヤレス (WiFi) ルーターとして機能する小さな組み込み Linux システムを用意しました。それほど重要ではありませんが、1 枚のカードが 5.8 GHz ワイヤレス A に設定され (他のものと干渉しないようにするため)、もう 1 枚の特別なカードは 900 MHz で 3 km の範囲を実現します。
Our control tablets connect on the 5.8, and the packets are relayed to the robot on the 900MHz. As such, both the tablet and the robots use the router box as an access point, so we are running hostapd. As part of our user interface, we want to collect RSSI (signal strength/noise/etc) information from different components of the system and display it all.
ロボット (Linux も実行) は、/proc/net/wireless を読み取り、読み取った数値を制御タブレットに送信することでこれを行います。ただし、ルーター ボックスでは、カードが AP モード (hostapd 実行) 用に構成されている場合、/proc/net/wireless には両方のインターフェイスの行がありますが、すべての値は 0 です。
iw ステーション ダンプを実行すると、いくつかの RSSI 番号が出力されますが、この出力を grep する必要はありません。私は(IMHO)かなり有能なCプログラマーです(リアルタイムカーネルを作成しました)。カーネルからこの情報を取得する最良の方法は何だろうと思っています。私は WEXT ioctl インターフェースの使用について少し知っていますが、API が廃止され、新しいワイヤレス構成/管理システムが段階的に導入されていることを最近知りました。
組み込み Linux のインストールを最新の状態に維持していないため、WEXT を使用するものを作成することはできません。ただし、誰かが新しい API がどうなるかについてのチュートリアル/リソースを教えてくれれば、ありがたいです。または、 /proc/net/wireless を hostapd でうまく動作させる方法があれば、私もそれを採用します:P