アプリスタート
→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
================================================
試行錯誤の過程
「164 UanDeviceList::const_iterator i =m_devList.begin ();
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
================================================