⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mac802_16timer.h

📁 This documentation is based on the following versions:- pre-release of the wimax model developed by
💻 H
字号:
/* 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 */#ifndef MAC802_16TIMER_H#define MAC802_16TIMER_H#include "scheduler.h"/** Define the ID for each timer **/enum timer_id {  WimaxFrameTimerID,  WimaxRxTimerID,  WimaxDCDTimerID,  WimaxUCDTimerID,  WimaxRngIntTimerID,  WimaxLostDLMAPTimerID,  WimaxLostULMAPTimerID,  WimaxT1TimerID,  WimaxT2TimerID,  WimaxT3TimerID,  WimaxT6TimerID,  WimaxT9TimerID,  WimaxT12TimerID,  WimaxT16TimerID,  WimaxT17TimerID,  WimaxT21TimerID,  WimaxT44TimerID,  //mobility extension  WimaxMobNbrAdvTimerID,  WimaxScanIntervalTimerID,  WimaxRdvTimerID};class Mac802_16;/** * Super class for timers used in wimax  */class WimaxTimer : public Handler {public:	WimaxTimer(Mac802_16* m) : mac(m) {		busy_ = paused_ = 0; stime = rtime = 0.0;	}	virtual void handle(Event *e) = 0;	virtual void start(double time);	virtual void stop(void);	void pause(void); /*{ assert(0); }*/	void resume(void);/* { assert(0); }*/	inline int busy(void) { return busy_; }	inline int paused(void) { return paused_; }	inline double expire(void) {		return ((stime + rtime) - Scheduler::instance().clock());	}protected:	Mac802_16	*mac;	int		busy_;	int		paused_;	Event		intr;	double		stime;	// start time	double		rtime;	// remaining time};/** Timer for receiving a packet */class WimaxRxTimer : public WimaxTimer { public:  WimaxRxTimer(Mac802_16 *m) : WimaxTimer(m) {}    void	handle(Event *e);};/** Timer for DCD interval */class WimaxDCDTimer : public WimaxTimer { public:  WimaxDCDTimer(Mac802_16 *m) : WimaxTimer(m) {}    void	handle(Event *e);};/** Timer for UCD interval */class WimaxUCDTimer : public WimaxTimer { public:  WimaxUCDTimer(Mac802_16 *m) : WimaxTimer(m) {}    void	handle(Event *e);};/** Timer for initial ranging regions interval */class WimaxRngIntTimer : public WimaxTimer { public:  WimaxRngIntTimer(Mac802_16 *m) : WimaxTimer(m) {}    void	handle(Event *e);};/** Timer for Lost DL-MAP interval */class WimaxLostDLMAPTimer : public WimaxTimer { public:  WimaxLostDLMAPTimer(Mac802_16 *m) : WimaxTimer(m) {}    void	handle(Event *e);};/** Timer for Lost UL-MAP interval */class WimaxLostULMAPTimer : public WimaxTimer { public:  WimaxLostULMAPTimer(Mac802_16 *m) : WimaxTimer(m) {}    void	handle(Event *e);};/** Timer for T1 : wait for DCD timeout */class WimaxT1Timer : public WimaxTimer { public:  WimaxT1Timer(Mac802_16 *m) : WimaxTimer(m) {}    void	handle(Event *e);};/** Timer for T2 : wait for broadcast ranging timeout */class WimaxT2Timer : public WimaxTimer { public:  WimaxT2Timer(Mac802_16 *m) : WimaxTimer(m) {}    void	handle(Event *e);};/** Timer for T3 : ranging response timeout */class WimaxT3Timer : public WimaxTimer { public:  WimaxT3Timer(Mac802_16 *m) : WimaxTimer(m) {}    void	handle(Event *e);};/** Timer for T6 : wait for registration response */class WimaxT6Timer : public WimaxTimer { public:  WimaxT6Timer(Mac802_16 *m) : WimaxTimer(m) {}    void	handle(Event *e);};/** Timer for T9 : registration timeout */class WimaxT9Timer : public WimaxTimer { public:  WimaxT9Timer(Mac802_16 *m) : WimaxTimer(m) {}    void	handle(Event *e);};/** Timer for T12 : wait for UCD descriptor */class WimaxT12Timer : public WimaxTimer { public:  WimaxT12Timer(Mac802_16 *m) : WimaxTimer(m) {}    void	handle(Event *e);};/** Timer for T16 : wait for bw request grant */class WimaxT16Timer : public WimaxTimer { public:  WimaxT16Timer(Mac802_16 *m) : WimaxTimer(m) {}    void	handle(Event *e);};/** Timer for T17 : wait for SS to register */class WimaxT17Timer : public WimaxTimer { public:  WimaxT17Timer(Mac802_16 *m, int peerIndex) : WimaxTimer(m) { peerIndex_ = peerIndex;}    void	handle(Event *e); private:  int peerIndex_;};/** Timer for T21 : time the station searches for DL-MAP on a channel */class WimaxT21Timer : public WimaxTimer { public:  WimaxT21Timer(Mac802_16 *m) : WimaxTimer(m) {}    void	handle(Event *e);};/** Timer for T44 : wait for BS to send MOB_SCN-REP */class WimaxT44Timer : public WimaxTimer { public:  WimaxT44Timer(Mac802_16 *m) : WimaxTimer(m) {}    void	handle(Event *e);};/** Timer for scan interval : timer for scanning */class WimaxScanIntervalTimer : public WimaxTimer { public:  WimaxScanIntervalTimer(Mac802_16 *m) : WimaxTimer(m) {}    void	handle(Event *e);};/** Timer for neighbor advertisement interval */class WimaxMobNbrAdvTimer : public WimaxTimer { public:  WimaxMobNbrAdvTimer(Mac802_16 *m) : WimaxTimer(m) {}    void	handle(Event *e);};/** Timer for rendez-vous with target BSs */class WimaxRdvTimer : public WimaxTimer { public:  WimaxRdvTimer(Mac802_16 *m, int channel) : WimaxTimer(m)     {      channel_ = channel;    }    void	handle(Event *e); private:  int channel_;};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -