※ 引述《meby (p)》之銘言:
: 請問各位ns2的高手
: 如果我想在ns2中決定每個節點不同的醒睡排程
: ex node1 每10秒醒來一次 其他時間維持省電模式
: node2 每7秒醒來一次 其他時間為持省電模式
: 應該要如何才能做到
: 我已經被這個看似很簡單的問題困擾很久了
: 麻煩各位高手給我一些提示 謝謝
你可以用Timer的方式處理
在node commnad start的地方呼叫timer,讓他啟動
在timer的event handler
void WakeTimer::handle(Event*) {
// 這邊設定wake up function
// 執行要做的事情
// 執行完畢就進入省電
// 設定呼叫的間隔時間
double wake_interval;
if(index == 1) {
wake_interval = 10;
} else if(index == 2 ) {
wake_interval = 7;
}
// 設定scheduler,呼叫自己
Scheduler::instance().schedule(this, &intr, wake_interval);
}
-
相關的timer的問題,你可以參考mac/mac-802_11.{h,cc},個人覺得802.11的timer寫的蠻經典的
不過他的timer跨了好幾個source file,可能會比較難懂
看看aodv/aodv.{h,cc}的timer也是能懂得timer該怎麼用的