📄 mac802_16timer.cc
字号:
/* This software was developed at the National Institute of Standards and * Technology by employees of the Federal Government in the course of * their official duties. Pursuant to title 17 Section 105 of the United * States Code this software is not subject to copyright protection and * is in the public domain. * NIST assumes no responsibility whatsoever for its use by other parties, * and makes no guarantees, expressed or implied, about its quality, * reliability, or any other characteristic. * <BR> * We would appreciate acknowledgement if the software is used. * <BR> * NIST ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION AND * DISCLAIM ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING * FROM THE USE OF THIS SOFTWARE. * </PRE></P> * @author rouil */#include "mac802_16timer.h"#include "mac802_16.h"#include "scheduling/wimaxscheduler.h"/* * Starts a timer for the given duration * @param time The timer duration */void WimaxTimer::start(double time){ Scheduler &s = Scheduler::instance(); assert(busy_ == 0); busy_ = 1; paused_ = 0; stime = s.clock(); rtime = time; assert(rtime >= 0.0); s.schedule(this, &intr, rtime); //schedule the event}/* * Stop the timer */void WimaxTimer::stop(void){ Scheduler &s = Scheduler::instance(); assert(busy_); if(paused_ == 0) s.cancel(&intr); //cancel the event busy_ = 0; paused_ = 0; stime = 0.0; rtime = 0.0;}void WimaxTimer::pause(void){ Scheduler &s = Scheduler::instance(); assert(busy_ && ! paused_); paused_ = 1; rtime -= s.clock()-stime; assert(rtime >= 0.0); s.cancel(&intr);}void WimaxTimer::resume(void){ Scheduler &s = Scheduler::instance(); assert(busy_ && paused_); paused_ = 0; stime = s.clock(); assert(rtime >= 0.0); s.schedule(this, &intr, rtime );}/* * Handling function for WimaxFrameTimer * @param e The event that occured */void WimaxRxTimer::handle(Event *e){ busy_ = 0; paused_ = 0; stime = 0.0; rtime = 0.0; mac->receive ();}/* * Handling function for WimaxFrameTimer * @param e The event that occured */void WimaxT1Timer::handle(Event *e){ busy_ = 0; paused_ = 0; stime = 0.0; rtime = 0.0; mac->getScheduler()->expire(WimaxT1TimerID);}/* * Handling function for WimaxFrameTimer * @param e The event that occured */void WimaxT2Timer::handle(Event *e){ busy_ = 0; paused_ = 0; stime = 0.0; rtime = 0.0; mac->getScheduler()->expire(WimaxT2TimerID);}/* * Handling function for WimaxT3Timer * @param e The event that occured */void WimaxT3Timer::handle(Event *e){ busy_ = 0; paused_ = 0; stime = 0.0; rtime = 0.0; mac->getScheduler()->expire(WimaxT3TimerID);}/* * Handling function for WimaxT6Timer * @param e The event that occured */void WimaxT6Timer::handle(Event *e){ busy_ = 0; paused_ = 0; stime = 0.0; rtime = 0.0; mac->getScheduler()->expire(WimaxT6TimerID);}/* * Handling function for WimaxT12Timer * @param e The event that occured */void WimaxT12Timer::handle(Event *e){ busy_ = 0; paused_ = 0; stime = 0.0; rtime = 0.0; mac->getScheduler()->expire(WimaxT12TimerID);}/* * Handling function for WimaxT17Timer * @param e The event that occured */void WimaxT17Timer::handle(Event *e){ busy_ = 0; paused_ = 0; stime = 0.0; rtime = 0.0; /** The node did not send a registration: release and * age out Basic and Primary CIDs */ PeerNode * peer = mac->getPeerNode (peerIndex_); mac->debug ("At %f in Mac %d did not register on time...release CIDs\n", NOW, mac->addr(),peerIndex_); mac->removePeerNode (peer);}/* * Handling function for WimaxT21Timer * @param e The event that occured */void WimaxT21Timer::handle(Event *e){ busy_ = 0; paused_ = 0; stime = 0.0; rtime = 0.0; mac->getScheduler()->expire(WimaxT21TimerID);}/* * Handling function for WimaxFrameTimer * @param e The event that occured */void WimaxLostDLMAPTimer::handle(Event *e){ busy_ = 0; paused_ = 0; stime = 0.0; rtime = 0.0; mac->getScheduler()->expire(WimaxLostDLMAPTimerID);}/* * Handling function for WimaxFrameTimer * @param e The event that occured */void WimaxLostULMAPTimer::handle(Event *e){ busy_ = 0; paused_ = 0; stime = 0.0; rtime = 0.0; mac->getScheduler()->expire(WimaxLostULMAPTimerID);}/* * Handling function for WimaxDCDTimer * @param e The event that occured */void WimaxDCDTimer::handle(Event *e){ busy_ = 0; paused_ = 0; stime = 0.0; rtime = 0.0; mac->getScheduler()->expire(WimaxDCDTimerID);}/* * Handling function for WimaxUCDTimer * @param e The event that occured */void WimaxUCDTimer::handle(Event *e){ busy_ = 0; paused_ = 0; stime = 0.0; rtime = 0.0; mac->getScheduler()->expire(WimaxUCDTimerID);}/* * Handling function for WimaxScanIntervalTimer * @param e The event that occured */void WimaxScanIntervalTimer::handle(Event *e){ busy_ = 0; paused_ = 0; stime = 0.0; rtime = 0.0; mac->getScheduler()->expire(WimaxScanIntervalTimerID);}/* * Handling function for WimaxT44Timer * @param e The event that occured */void WimaxT44Timer::handle(Event *e){ busy_ = 0; paused_ = 0; stime = 0.0; rtime = 0.0; mac->getScheduler()->expire(WimaxT44TimerID);}/* * Handling function for WimaxMobNbrAdvTimer * @param e The event that occured */void WimaxMobNbrAdvTimer::handle(Event *e){ busy_ = 0; paused_ = 0; stime = 0.0; rtime = 0.0; mac->getScheduler()->expire(WimaxMobNbrAdvTimerID);}/* * Handling function for WimaxRdvTimer * @param e The event that occured */void WimaxRdvTimer::handle(Event *e){ busy_ = 0; paused_ = 0; stime = 0.0; rtime = 0.0; mac->getScheduler()->expire(WimaxRdvTimerID); printf ("Rdv timeout going to channel %d\n", channel_); mac->setChannel (channel_);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -