mac802_16timer.cc
上传用户:hzie11
上传日期:2013-10-07
资源大小:1487k
文件大小:6k
- /* 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 CIDsn", 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 %dn", channel_);
- mac->setChannel (channel_);
- }