Japan QualNet Community Forums Japan QualNet Community Forums
Welcome Guest 
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/19:1/1
2024/05/18:20/24

2024/03/20より399/1409
人気モジュール
No.1: フォーラム 1
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット1

No.1:どっかの巡回ロボット1

日曜日からの合計
メイン
   Link (MAC) Layer Protocol Implementation & Model Development
     PHY_SetTransmissionChannelの使い方について
投稿するにはまず登録を

題名 投稿者 日時
   PHY_SetTransmissionChannelの使い方について C2913 2013/6/24 15:39
     Re: PHY_SetTransmissionChannelの使い方について hiro 2013/6/30 16:28
     » Re: PHY_SetTransmissionChannelの使い方について C2913 2013/7/1 21:34
         Re: PHY_SetTransmissionChannelの使い方について hiro 2013/7/2 11:24
           Re: PHY_SetTransmissionChannelの使い方について C2913 2013/7/2 11:40
             Re: PHY_SetTransmissionChannelの使い方について hiro 2013/7/2 16:12
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
C2913
投稿日時: 2013/7/1 21:34
新米
登録日: 2013/6/24
居住地:
投稿: 3
Re: PHY_SetTransmissionChannelの使い方について
※改変したコードを添付させていただきました.

Hiro様,ご返信くださいまして誠にありがとうございました.
また,情報が少なすぎ大変失礼いたしました.
#お力になって頂けますと,非常に助かります.ご助言くださいますよう
#お願い申し上げます.

実装しようと思っていますは,RTS-CTS-DATA-ACKを通常,同じチャネルで送受信するMACを変更し,DATA-ACKをRTS-CTSとは別チャネルで送信するMACです.

全てのチャネルは全チャネルをListenableに,ただし,ListeningとTransmittingのチャネルを0にしておきます.(Transmittingは設定せずとも,最も若いListening Channelが設定されるようですが.)

さて,まず,送信端末はチャネル0でRTSを送信します.そのとき,RTSには,MESSAGE_AddInfoによって,int型の整数を入れます.(xとします.)
その整数は,Listenableな複数のChannel番号からランダムに1を
選んでいます.

受信端末はRTS受信後に,その中から整数xをMESSAGE_ReturnInfoで取り出します.
(もちろん,printfにて正しく取り出していることを確認済みです.)
受信端末はその後,CTS返信を行いますが,その完了後に,チャネルxがListeningでなければ,まずStartListeningします.
#併せて,xをPHY_setTransmissionchannelしますが,しなくてもエラー終了の状態は変わりません.

CTSを受信完了した送信端末は,xをstartlisteningし,次にxをSetTransmissionchannelし,DATAの送信を開始します.
その後,Qualnetは停止します(詳細はもう少し下で書かせて頂きます).

つまり,送受信端末はどちらも,CTS返信完了後,CTS受信完了後に共に,同じチャネルをListening,SetTransmissionChannelすると停止してしまうという具合です.

ただし,おかしなことに,どちらか一方のみが,チャネルxにListening,Transmissionchannelに移動しただけでは,Qualnetは停止しません.(当然,相手端末は反応してくれなくなりますが,何度も,繰り返し相手端末に問い合わせる送信を返事も無いまま繰り返しますが,設定したシミュレーション時間終了まで実行できます.)

どこもエラーは出ずにいきなりシミュレータが止まるので,コードが公開されていないPhy部分のエラーだと思い,バージョンも,5.2,6.1と変えてみましたが,上記の動作は全く同じです.

さて,チャネル変更後に動作を確認した関数呼び出しは以下の通りです.
#全て呼び出しの前後でprintfを挿入し呼び出し,復帰を確認しています.
#また,併せてgetsimtime(node)でメッセージのシミュレーション時間に矛盾が
#無いことも確認しています.
1)チャネル変更後にDATA送信前に送信端末が,MacDot11ProcessMyFrame()の中で, MacDot11StationTransmitDataFrame()を呼ぶ.
2) MacDot11StationStartTransmittingPacketが呼ばれる.
3)PHY_StartTransmittingSignalが呼ばれる.
4)Phy802_11StartTransmittingSignalが呼ばれる
ここまで追えたのですが,ここから先はコードが提供されておらず,追えていません.

送受信同時に同じチャネルに遷移せずにどちらか一方のみの遷移では問題なく動作する
というのも,合点がいかず困惑しております.

なお,現在は送受信端末2台のみで動かしていますので,余計な干渉は周辺から
飛んで来ていないと思います.


何か,お気づきの点がございましたら,どうぞ,ご教示くださいますようお願い申し上げます.
c2913改変.zip
フラット表示 前のトピック | 次のトピック
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT