メイン Link (MAC) Layer Settings IEEE802.15.4にてビーコンを送信している送信先ノードIDの取得 | 投稿するにはまず登録を |
題名 | 投稿者 | 日時 |
---|---|---|
IEEE802.15.4にてビーコンを送信している送信先ノードIDの取得 | kouki | 2012/5/24 12:30 |
Re: IEEE802.15.4にてビーコンを送信している送信先ノードIDの取得 | hiro | 2012/5/24 12:52 |
» Re: IEEE802.15.4にてビーコンを送信している送信先ノードIDの取得 | kouki | 2012/5/24 15:22 |
Re: IEEE802.15.4にてビーコンを送信している送信先ノードIDの取得 | hiro | 2012/5/24 15:41 |
Re: IEEE802.15.4にてビーコンを送信している送信先ノードIDの取得 | kouki | 2012/5/24 20:55 |
Re: IEEE802.15.4にてビーコンを送信している送信先ノードIDの取得 | hiro | 2012/5/25 13:27 |
Re: IEEE802.15.4にてビーコンを送信している送信先ノードIDの取得 | hiro | 2012/5/25 14:13 |
Re: IEEE802.15.4にてビーコンを送信している送信先ノードIDの取得 | kouki | 2012/5/28 16:34 |
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
kouki | 投稿日時: 2012/5/24 15:22 |
新米 登録日: 2012/3/16 居住地: 投稿: 4 |
Re: IEEE802.15.4にてビーコンを送信している送信先ノードIDの取得 hiroさんありがとうございます。
ご解答を参考にさせていただき、APIを見つつ以下のようにプログラムを追加しました。 NetworkForwardingTableRow* row; row = (NetworkForwardingTableRow*) node->networkData.networkVar; NodeAddress nextHopAddr; nextHopAddr = row->nextHopAddress; MAPPING_GetNodeIdFromInterfaceAddress(node, nextHopAddr); printf("NodeID = %ld , NextHopNodeID = %ld\n",node->nodeId,nextHopAddr); このようにMac802_15_4BeaconTxHandler内に追加したのですが、 nextHopAddrは全てのノードにおいて0と表示されました。 ネットワークトポロジーはリニア型で、 1⇒2⇒3⇒4⇒5というように繋がっているので、 NodeID = 1 , NextHopNodeID = 2 NodeID = 2 , NextHopNodeID = 3 NodeID = 3 , NextHopNodeID = 4 NodeID = 4 , NextHopNodeID = 5 と出力されるのが正しいのですが、そうはなりませんでした。 また、ノード1がPAN COORで2,3,4がCOOR、5がDEVICEで5から1へCBRでデータ送信をしています。 デバイス間は離して、ノード1の無線通信範囲内にノード2以外は入らないようにするということをし、他のノードでも同様に配置しています。 ここで思ったのですが、まずIEEE802.15.4において親ノードがビーコンを ブロードキャストで送信し、それに対して子ノードがユニキャストで 返事をして、受け取ったビーコンの長さに応じてデータの送受信 を互いに開始するということを繰り返します。 そしてMac802_15_4BeaconTxHandlerはTxとあるように、ビーコンの 送信側の処理なのですが、このときビーコン送信側はブロードキャスト で自分の無線通信範囲内のノードのみにビーコンを送るので、 nextHopAddressではなく、宛先アドレスのdestAddressではないかと 思いました。 そこで以下のように改変しました。 NetworkForwardingTableRow* row; row = (NetworkForwardingTableRow*) node->networkData.networkVar; NodeAddress destAddr; destAddr = row->destAddress; MAPPING_GetNodeIdFromInterfaceAddress(node, destAddr); printf("NodeID = %ld , DestNodeID = %ld\n",node->nodeId,destAddr); そうしたら出力結果は Current Sim Time[s] = 0.000000000 Real Time[s] = 1 Completed 0% NodeID = 1 , DestNodeID = 0 NodeID = 1 , DestNodeID = 0 NodeID = 1 , DestNodeID = 0 NodeID = 1 , DestNodeID = 0 NodeID = 1 , DestNodeID = 0 NodeID = 1 , DestNodeID = 0 NodeID = 1 , DestNodeID = 0 NodeID = 1 , DestNodeID = 0 NodeID = 1 , DestNodeID = 0 NodeID = 1 , DestNodeID = 0 NodeID = 2 , DestNodeID = 0 NodeID = 1 , DestNodeID = 0 NodeID = 2 , DestNodeID = 0 NodeID = 1 , DestNodeID = 0 NodeID = 2 , DestNodeID = 0 NodeID = 1 , DestNodeID = 0 NodeID = 2 , DestNodeID = 0 NodeID = 3 , DestNodeID = 0 NodeID = 1 , DestNodeID = 0 NodeID = 2 , DestNodeID = 0 NodeID = 3 , DestNodeID = 0 NodeID = 1 , DestNodeID = 0 NodeID = 2 , DestNodeID = 0 NodeID = 3 , DestNodeID = 0 NodeID = 1 , DestNodeID = 0 NodeID = 2 , DestNodeID = 0 NodeID = 3 , DestNodeID = 0 NodeID = 1 , DestNodeID = 0 NodeID = 2 , DestNodeID = 0 NodeID = 3 , DestNodeID = 0 NodeID = 1 , DestNodeID = 0 NodeID = 2 , DestNodeID = 0 NodeID = 3 , DestNodeID = 0 NodeID = 1 , DestNodeID = 0 NodeID = 2 , DestNodeID = 0 NodeID = 3 , DestNodeID = 0 NodeID = 1 , DestNodeID = 0 中略 NodeID = 2 , DestNodeID = 33 NodeID = 3 , DestNodeID = 53 NodeID = 4 , DestNodeID = 52 NodeID = 1 , DestNodeID = 17 NodeID = 2 , DestNodeID = 33 NodeID = 3 , DestNodeID = 53 NodeID = 4 , DestNodeID = 52 NodeID = 1 , DestNodeID = 17 NodeID = 2 , DestNodeID = 33 NodeID = 3 , DestNodeID = 53 NodeID = 4 , DestNodeID = 52 NodeID = 1 , DestNodeID = 17 NodeID = 2 , DestNodeID = 33 NodeID = 3 , DestNodeID = 53 NodeID = 4 , DestNodeID = 52 NodeID = 1 , DestNodeID = 17 NodeID = 2 , DestNodeID = 33 NodeID = 3 , DestNodeID = 53 NodeID = 4 , DestNodeID = 52 NodeID = 1 , DestNodeID = 17 NodeID = 2 , DestNodeID = 33 NodeID = 3 , DestNodeID = 53 NodeID = 4 , DestNodeID = 52 NodeID = 1 , DestNodeID = 18 NodeID = 2 , DestNodeID = 34 NodeID = 3 , DestNodeID = 53 中略 NodeID = 1 , DestNodeID = 21 NodeID = 2 , DestNodeID = 46 NodeID = 3 , DestNodeID = 74 NodeID = 4 , DestNodeID = 86 NodeID = 1 , DestNodeID = 21 NodeID = 2 , DestNodeID = 46 NodeID = 3 , DestNodeID = 74 NodeID = 4 , DestNodeID = 86 NodeID = 1 , DestNodeID = 21 NodeID = 2 , DestNodeID = 46 NodeID = 3 , DestNodeID = 74 NodeID = 4 , DestNodeID = 86 NodeID = 1 , DestNodeID = 21 NodeID = 2 , DestNodeID = 46 NodeID = 3 , DestNodeID = 74 NodeID = 4 , DestNodeID = 86 NodeID = 1 , DestNodeID = 21 NodeID = 2 , DestNodeID = 46 NodeID = 3 , DestNodeID = 74 NodeID = 4 , DestNodeID = 86 NodeID = 1 , DestNodeID = 21 NodeID = 2 , DestNodeID = 46 NodeID = 3 , DestNodeID = 74 となりました。 最初は全てのノードでDestNodeIDが0となり、0から徐々に増えていき 最終的には NodeID = 1 , DestNodeID = 21 NodeID = 2 , DestNodeID = 46 NodeID = 3 , DestNodeID = 74 NodeID = 4 , DestNodeID = 86 となりました。 こうなった理由や正しい値を出す方法を探しておりますが、 引き続きご教示頂けるとありがたいです。 |
フラット表示 | 前のトピック | 次のトピック |