アットウィキロゴ

送信プロセス一つ一つ丁寧に追っていく

アプリスタート

→StartSending()→ScheduleNextTx()→{送信Bit/データ生成BitRate後に}SendPacket()

↑再び実行 ↓予め設定されたgap time(1sとか) 

StopSending()

 

SendPacket()→{パケットを作って}UANのSendPacket

→UANTransducerHd:Transmit()(多分電気から音に変換するmodulation)→UANChannel:TxPacket()

→{delay後}UANTransduderHd:EndTx 

 

UANChannel:TxPacket() チャネルに登録されているデバイスリストから送信ノードを同定して、自分以外のノードをすべて受信ノードと仮定して、伝搬遅延、PDP(パケット遅延なんとか)、受信電力を計算。

その後、Simulator::ScheduleWithContext(dstNodeId, delay,&UanChannel::SendUp,略)

でdelay後にUanChannel::SendUpを実行している。sendupは

「m_devList[i].second->Receive (packet, rxPowerDb, txMode, pdp);」

を実行して、(おそらく)受信ノードがパケットの受信をしている。

delayは、受信ノードから送信ノードへの伝搬時間を意味し、伝搬モデルがidealであれば、下記の関数で計算していて、音速を1500m/sに固定して計算していることが分かる。

60 Time

62 {
63 returnSeconds(a->GetDistanceFrom(b) / 1500.0);
64 }
 
思ったこと(1月18日):無線だからブロードキャストしていると考えていいんですね。
思ったこと(1月20日):無線だからではなくて、指向性のない球面波を仮定しているということだと思われる。

================================================

試行錯誤の過程

「164  UanDeviceList::const_iterator i =m_devList.begin ();

165 for(; i !=m_devList.end (); i++)
166  {
167 if(src != i->second)
168  {
169 NS_LOG_DEBUG("Scheduling "<< i->first->GetMac ()->GetAddress ());
170 Ptr<MobilityModel>rcvrMobility = i->first->GetNode ()->GetObject<MobilityModel> ();」

m_devListは、UanDeviceList型で、UANChannelのprivate変数。

メモ:

iterator 反復子或はイテレータ。コンテナの要素をポイントする型。
const_iterator

反復子。但し対象要素を const として扱う。constだと値を書き換えられないみたい。

メモ:http://d.hatena.ne.jp/yutakikuchi/20120502/1335961309

firstは要素のキー、secondは要素の値です。

参考:http://www.geocities.jp/ky_webid/cpp/library/010.html

================================================

最終更新:2013年01月20日 14:38