ワイヤレス センサー ネットワークに関するプロジェクト用のソフトウェアを作成しています。現在、さまざまなパケットをネットワークに注入することに関心があります。
IRIS モートに TinyOS-2.1.2 がインストールされた MIB520 インターフェイス ボードを使用しています。sdk/c/sf のさまざまなユーティリティと、net.tinyos.sf.* および net.tinyos.tools.* Java パッケージのツールを試しました。
私がこれまでに試したこと:
モートにインストールされた apps/BaseStation と apps/BaseStation15.4 を使用しており、代わりに apps/test/TestSerial でフラッシュしています。USB 経由でモートから送信されたデータの読み取りに問題はありません。net.tinyos.tools.SerialForwarder または sdk/c/f または net.tinyos.tools * のユーティリティを使用して、問題なく読み取ることができます。
しかし、PC からモートへのデータ送信に関しては、何も機能していないようです。net.tinyos.tools.Send、serialsend.c、sf.c、および sfsend.c を使用しました。 SerialForwarderはしばらくするとエラー メッセージをスローしますが、C ユーティリティは「no ack」エラーをスローします。
TinyOS wiki と SO で回答を検索した後、「ack」メッセージを送信するモートに問題がある可能性があると考えました。ここで提案されているように、正当なパケットを生成してモートに送信する方法を探していました。
wiki の記事に従って、適切な TEP を見つけ、そこにリストされているビットを使用しました (「7e 40 09 00 be ef 05 7d 5d 06 01 02 03 04 05 7e」)。
Wireshark を使用して、データをモートに送信した USB をスニッフィングしたところ、同じビットがモートに送信されたことがわかりました。私の理論は、送信した入力をモートが認識しないか、ユーティリティの使い方が間違っているというものです。とにかく、この特定のイベントは決してトリガーされません:
event message_t* UartReceive.receive(message_t* bufPtr, void* payload, uint8_t len) {
call Leds.led0On();
return bufPtr;
}
私の質問は、PC からモートにデータを送信するにはどうすればよいですか? おそらく、私が見落としていたすぐに使用できるユーティリティがいくつかありますか? BaseStation15.4 の手順に従っていますが、行き詰っています。
編集:
BaseStation/README.txt より 「BaseStation は、そのメッセージが無線リンクへの配信のために正常にエンキューされた場合にのみ、シリアル リンクを介して到着したメッセージを確認します。」それは、serialsend.c の「no ack」と SerialForwarder.java の「write failed」を説明します。
しかし、UartReceive.receive() イベントは、本体を (BaseStation で) クリアし、LED トグルのみを残した後でも、決してトリガーされません。