framemap.h
上传用户:hzie11
上传日期:2013-10-07
资源大小:1487k
文件大小:3k
源码类别:

网络

开发平台:

C/C++

  1. /* This software was developed at the National Institute of Standards and
  2.  * Technology by employees of the Federal Government in the course of
  3.  * their official duties. Pursuant to title 17 Section 105 of the United
  4.  * States Code this software is not subject to copyright protection and
  5.  * is in the public domain.
  6.  * NIST assumes no responsibility whatsoever for its use by other parties,
  7.  * and makes no guarantees, expressed or implied, about its quality,
  8.  * reliability, or any other characteristic.
  9.  * <BR>
  10.  * We would appreciate acknowledgement if the software is used.
  11.  * <BR>
  12.  * NIST ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION AND
  13.  * DISCLAIM ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING
  14.  * FROM THE USE OF THIS SOFTWARE.
  15.  * </PRE></P>
  16.  * @author  rouil
  17.  */
  18. #ifndef FRAMEMAP_H
  19. #define FRAMEMAP_H
  20. #include "subframe.h"
  21. #include "mac802_16.h"
  22. /**
  23.  * This class contains the datastructure to describe a frame
  24.  */
  25. class FrameMap
  26. {
  27.  public:
  28.   /*
  29.    * Creates a map of the frame
  30.    * @param mac Pointer to the mac layer
  31.    */
  32.   FrameMap (Mac802_16 *mac);
  33.   /**
  34.    * Compute and return the DCD frame
  35.    */
  36.   Packet* getDCD( );
  37.   /**
  38.    * Compute the DL_MAP packet based on the information contained in the structure
  39.    */
  40.   Packet* getDL_MAP( );
  41.   /**
  42.    * Compute and return the UCD frame
  43.    */
  44.   Packet* getUCD( );
  45.   /**
  46.    * Compute and return the UL_MAP frame
  47.    */
  48.   Packet* getUL_MAP( );
  49.   /**
  50.    * Return the attached mac
  51.    * @return the mac
  52.    */
  53.   inline Mac802_16 * getMac () { return mac_; }
  54.   /**
  55.    * Return the DL subframe
  56.    * @return the DL subframe
  57.    */
  58.   inline DlSubFrame * getDlSubframe () { return &dlsubframe_; }
  59.   /**
  60.    * Return the UL subframe
  61.    * @return the UL subframe
  62.    */
  63.   inline UlSubFrame * getUlSubframe () { return &ulsubframe_; }
  64.   /**
  65.    * Parse a DL_MAP message and create the data structure
  66.    * @param frame The DL frame information
  67.    */
  68.   void parseDLMAPframe (mac802_16_dl_map_frame *frame);
  69.   /**
  70.    * Parse a DCD message and create the data structure
  71.    * @param frame The DL frame information
  72.    */
  73.   void parseDCDframe (mac802_16_dcd_frame *frame);
  74.   /**
  75.    * Parse a UL_MAP message and create the data structure
  76.    * @param frame The UL frame information
  77.    */
  78.   void parseULMAPframe (mac802_16_ul_map_frame *frame);
  79.   /**
  80.    * Parse a UCD message and create the data structure
  81.    * @param frame The DL frame information
  82.    */
  83.   void parseUCDframe (mac802_16_ucd_frame *frame);
  84.   /**
  85.    * Set the start time of the frame
  86.    */
  87.   inline void setStarttime (double time) { starttime_ = time; }
  88.   /**
  89.    * Return the time the frame started
  90.    * @return The time the frame started
  91.    */
  92.   inline double getStarttime () { return starttime_; }
  93. private:
  94.   /**
  95.    * The mac layer
  96.    */
  97.   Mac802_16 *mac_;
  98.   /**
  99.    * The frame duration
  100.    */
  101.   double duration_;
  102.   
  103.   /**
  104.    * Time the frame started. Used for synchronization
  105.    */
  106.   double starttime_;
  107.   /**
  108.    * The number of PS required to switch from receiver to transmitter
  109.    */
  110.   int rtg_;
  111.   
  112.   /**
  113.    * The number of PS required to switch from sender to receiver
  114.    */
  115.   int ttg_;
  116.   
  117.   /**
  118.    * The downlink subframe
  119.    */
  120.   DlSubFrame dlsubframe_;
  121.   /**
  122.    * The uplink subframe
  123.    */
  124.   UlSubFrame ulsubframe_;
  125. };
  126. #endif