私の質問に答えるために、INET ->examples->manetrouting->dynamicNodeCreation の例を取り上げます。この例を omnet で実行すると、(実行時に) 初期化した後の最初のイベントは fixhost の 'beaconTimer' です (私の場合は meshtest.fixhost2[4].wlan[0].magmt です) したがって、基本的には mgmt で始まりますサブモジュール。(実行時に任意の単一ノードの階層を確認すると、次のようになります:- Delayunit -> wlan0 で、wlan0 では再び mgmt->mac->radio。mgmt のコードは、inet->source->linklayer- で記述されています。 >ieee80211->mgmt->Ieee80211MgmtAP.cc
このクラスの初期化関数には、コード行がありますscheduleAt(simTime()+uniform(0,beaconInterval) , beaconTimer)
。ここで、uniform は Omnet で定義された一様分布関数で、ランダムな値を与えます。beaconInterval は次のスーパー フレームが開始するまでの時間で、beaconTimer はメッセージです。この関数は、すべてのノードのビーコンを送信するためのランダムな時間をスケジュールします (それぞれ独自の mgmt モジュールによって)。したがって、この一様関数によって値が最も低いデバイスがビーコンの送信を開始します。他のデバイスはそれに応じて従う必要があります。
事前にスケジュールされた方法でビーコンを送信する場合は、次のイベントの scheduleAt() 関数を提供するのと同じモジュールで handleTimer 関数を変更します。