ns-2.28/mac/mac-802_16-timers.h

Go to the documentation of this file.
00001 /*****************************************************************************
00002  *
00003  *      12/17/02
00004  *      Nitin Shrivastav                        
00005  *      
00006  *      This file contains Timer class definitions. 
00007  *
00008  ****************************************************************************/
00012 #ifndef ns_mac_802_16timers_h
00013 #define ns_mac_802_16timers_h
00014 
00015 //#include "mac-802_16.h"
00016 
00017 /*=======================CLASS DEFINITIONS============================*/
00018 
00019 /*========================TIMER CLASSES===============================*/
00020 
00021 class Mac802_16;
00022 
00023 /*************************************************************************
00024 Base class for all the timer classes
00025 *************************************************************************/
00027 class Mac802_16Timer : public Handler 
00028 {
00029  public: 
00030   Mac802_16Timer(Mac802_16* m) : mac(m)  
00031     {
00032       busy_ =  paused_ = 0; stime = rtime = 0.0; 
00033     }
00034     
00035     virtual void handle(Event *e) {} ;
00036     
00037     void start(Packet *e, double time);
00038     virtual void stop(Packet *e);
00039     
00040     inline int busy(void) 
00041       { 
00042         return busy_; 
00043       }
00044     
00045     inline double expire(void) 
00046       {
00047         return((stime + rtime) - Scheduler::instance().clock());
00048       }
00049     
00050  protected:
00051     Mac802_16   *mac;
00052     int         busy_;
00053     int         paused_;
00054     Event       intr;
00055     double      stime;  // start time
00056     double      rtime;  // remaining time
00057 };
00058 
00059 /*=================== Timers common to BS & SS =======================*/
00060 
00061 /*************************************************************************
00062  Timers to control packet sending and receiving time.
00063 *************************************************************************/
00065 class RxPkt802_16Timer : public Mac802_16Timer 
00066 {
00067  public:
00068   RxPkt802_16Timer(Mac802_16 *m) : Mac802_16Timer(m) {}
00069     
00070     void handle(Event *e);
00071 };
00072 
00073 /*************************************************************************
00074 
00075 *************************************************************************/
00076 class TxPkt802_16Timer : public Mac802_16Timer 
00077 {  
00078  public:
00079   TxPkt802_16Timer(Mac802_16 *m) : Mac802_16Timer(m) {}
00080     
00081     void handle(Event *e);
00082 };
00083 
00084 /*==================== End Timers common to BS & SS ==================*/
00085 
00086 
00087 
00088 /*======================== BS timers================================= */
00089 
00090 /*************************************************************************
00091 
00092 *************************************************************************/
00093 class BsTxPkt802_16Timer : public Mac802_16Timer 
00094 {
00095   
00096  public:
00097   BsTxPkt802_16Timer(Mac802_16 *m) : Mac802_16Timer(m) {}
00098     
00099     void handle(Event *e);
00100 };
00101 
00102 /*************************************************************************
00103 Timers to schedule transmition of MAPS.
00104 *************************************************************************/
00106 class Map802_16Timer : public Mac802_16Timer 
00107 {
00108  public:
00109   Map802_16Timer(Mac802_16 *m) : Mac802_16Timer(m) {}
00110     
00111     void handle(Event *e);
00112 };
00113 
00114 /*************************************************************************
00115 Timers to schedule transmition of Management messages
00116 *************************************************************************/
00118 class BsUcd802_16Timer : public Mac802_16Timer 
00119 {
00120  public:
00121   BsUcd802_16Timer(Mac802_16 *m) : Mac802_16Timer(m) {}
00122     
00123     void handle(Event *e);
00124 };
00125 
00126 /*************************************************************************
00127 
00128 *************************************************************************/
00129 class BsRng802_16Timer : public Mac802_16Timer 
00130 {
00131  public:
00132   BsRng802_16Timer(Mac802_16 *m) : Mac802_16Timer(m) {}
00133   
00134     void handle(Event *e);
00135 };
00136 
00137 /*************************************************************************
00138 
00139 *************************************************************************/
00140 class BsSync802_16Timer : public Mac802_16Timer 
00141 {
00142  public:
00143   BsSync802_16Timer(Mac802_16 *m) : Mac802_16Timer(m) {}
00144     
00145     void handle(Event *e);
00146 };
00147 
00148 //#ifdef RATE_CONTROL//---------------------------------------------------
00149 /*************************************************************************
00150 
00151 *************************************************************************/
00152 class BsToken802_16Timer : public Mac802_16Timer 
00153 {
00154  public:
00155   BsToken802_16Timer(Mac802_16 *m) : Mac802_16Timer(m) {}
00156     
00157     void handle(Event *e);
00158 };
00159 //#endif//----------------------------------------------------------------
00160 
00161 /*************************************************************************
00162 
00163 *************************************************************************/
00164 class BsServiceFlowSendTimer: public Mac802_16Timer 
00165 {
00166  public:
00167   BsServiceFlowSendTimer(Mac802_16 *m) : Mac802_16Timer(m) {}
00168     
00169     void handle(Event *e);
00170 };
00171 
00172 
00173 /*************************************************************************
00174 Window used to control the provision of the minimum BW requested by
00175 rtPS and nrtPS services.
00176 *************************************************************************/
00179 class BsUplinkSchedWindowTimer: public Mac802_16Timer
00180 {
00181  public:
00182   BsUplinkSchedWindowTimer(Mac802_16 *m) : Mac802_16Timer(m) {}
00183 
00184   void handle(Event *e);
00185 };
00186 
00187 
00188 /*======================== END BS timers============================= */
00189 
00190 
00191 /*======================== SS timers=================================== */
00192 
00193 /*************************************************************************
00194 Timers to schedule transmition of Management messages
00195 *************************************************************************/
00197 class SSRng802_16Timer : public Mac802_16Timer 
00198 {
00199  public:
00200   SSRng802_16Timer(Mac802_16 *m) : Mac802_16Timer(m) {}
00201     
00202     void handle(Event *e);
00203 };
00204 
00205 /*************************************************************************
00206 SEND timer..(per service-flow timer) 
00207 *************************************************************************/
00209 class SSServiceFlowSendTimer : public Mac802_16Timer 
00210 {
00211  public:
00212   SSServiceFlowSendTimer(Mac802_16 *m) : Mac802_16Timer(m) {}
00213     
00214     void handle(Event *e);
00215 };
00216 
00217 /*************************************************************************
00218 REQUEST timer..(per service-flow timer)
00219 *************************************************************************/
00221 class SSServiceFlowRequestTimer : public Mac802_16Timer 
00222 {
00223  public:
00224   SSServiceFlowRequestTimer(Mac802_16 *m) : Mac802_16Timer(m) {}
00225     
00226     void handle(Event *e);
00227 };
00228 
00229 /*======================== End SS timers=================================== */
00230 
00231 #endif /* __mac_802_16timers_h__ */

Generated on Fri Feb 8 16:42:33 2008 for WiMAX by  doxygen 1.5.1