レイヤーツリーネット NWK_LAYERED
シンプルな中継ネットワークを実装したネットワークビヘイビアです。
現時点での実装では、このビヘイビアはレイヤーツリーネットの親機で受信を行うためのものです。親機からの送信や中継器、子機の利用は実装されていません。
以下のように setup()
中で初期化します。NWK_LAYERED::ROLE_PARENT
として親機としてのロールを割り当てます。
パケットの受信が行われたときは、NWK_SIMPLE
と同様に on_rx_packet()
が呼び出されます。
rx
はパケット情報をラップしたクラスです。内部的には _get_network_type()
の処理用の内部フラグを設定する以外はパケット情報等の加工は行っていません。
つまりtsRxDataApp*
を返すrx.get_psRxDataApp()
を参照すれば、TWENET C ライブラリと同様のパケット情報が得られます。packet_rx
はこの情報にアクセスするためのいくつかの手続きが定義されていますが、得られる情報に変わりはありません。
NWK_SIMPLE
との併用NWK_SIMPLE
と併用する場合は、the_twelite.network
にNWK_LAYERED
を、the_twelite.newwork2
にNWK_SIMPLE
を割り当てます。
各パケット種別は上記のように .get_network_type()
により判別します。
mwx::NETWORK::LAYERED
: そのままパケット情報を参照します。
mwx::NETWORK::SIMPLE
: NWK_SIMPLE
の処理に倣います。
mwx::NETWORK::NONE
: ネットワーク処理や重複パケットの処理など一切が行われません。例えば App_Twelite 標準アプリケーションの場合、例えば1送信ごとに再送を含め3パケットずつ送出されます。この際、すべてのパケットの受信が成功した場合on_rx_packt()
が3回呼び出されることになります。通常は、3回受信できたからと言って2回目、3回目のデータは必要ありません。こういった重複パケットの処理を追加する必要があります。
実例はAct_SamplesのRcv_Univsl
を参照してください。TWELITE PAL, Act_samples, App_Twelite といった無線チャネルとアプリケーションIDが同一だが、種別の違うパケットの受信処理しています。さらに App_Twelite のために重複チェッカーの処理も用意しています。