我將以INET - > examples-> manetrouting-> dynamicNodeCreation爲例來回答我的問題。當我在omnet中運行這個例子時,initialize(運行時)後的第一個事件是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)
這裏均勻是OMNET定義均勻分佈函數,並給出了隨機值,beaconInterval是後的時間哪個下一個超級幀將啓動,信標定時器是一個消息,該函數爲所有節點(分別由它們自己的mgmt模塊)安排一個隨機時間發送信標,因此無論哪個設備通過這個統一函數獲得最低值,都將啓動信標發送。其他設備應相應遵循。
N如果我想以預先安排的方式發送信標,那麼我會在同一模塊中的handleTimer函數中進行更改,因爲它爲下一個事件提供scheduleAt()函數。
我只是想知道,在INET框架中,大多數情況下,當退後定時器變爲-1時,將授予下一次通信機會。該功能在mac.cc文件中實現。因此,一旦節點完成信標傳輸並且所有其他節點接收到數據或噪聲,則所有節點都會通過mac.cc啓動一個隨機回退定時器,然後獲勝者(最早獲得-1計數器)開始傳輸。 – Peter
親愛的彼得,如果你認爲你的評論是正確的,或者在你的問題結尾添加評論作爲補充,或者使用選項來回答你自己的問題。 – user4786271
hi @ user4786271,這裏我想說的是關於INET的mac moulde中的隨機退避過程。但後來我實現了一個全新的方法。我在mac層之上創建了一個新模塊,並且在完好階段中,我使用了類似這樣的東西: - scheduleAt(simTime()+ uniform(0,beaconInterval),beaconTimer)''。這裏統一是一個Omnet定義的均勻分佈函數,並給出一個隨機值,beaconInterval是下一個超幀將啓動的時間,beaconTimer是一個定時器消息。 – Peter