profile.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 PROFILE_H
  19. #define PROFILE_H
  20. #include "ofdmphy.h"
  21. class SubFrame;
  22. class Profile;
  23. LIST_HEAD (profile, Profile);
  24. /**
  25.  * This class contains information about burst such as modulation, frequency...
  26.  */
  27. class Profile
  28. {
  29.  public:
  30.   /**
  31.    * Creates a profile with the given frequency and encoding
  32.    * @param f The frequency information for the profile
  33.    * @param enc The encoding type
  34.    */
  35.   Profile (SubFrame *subframe, int f, Ofdm_mod_rate enc);
  36.   /**
  37.    * Set the IUC number for this profile
  38.    * @param iuc The IUC number for this profile
  39.    */
  40.   void setIUC( int iuc );
  41.   /**
  42.    * Return the frequency in unit of kHz
  43.    * @return the frequency
  44.    */
  45.   int getIUC();
  46.   /**
  47.    * Return the encoding type
  48.    * @return the encoding type
  49.    */
  50.   Ofdm_mod_rate getEncoding( );
  51.   /**
  52.    * Return the frequency in unit of kHz
  53.    * @return the frequency
  54.    */
  55.   int getFrequency( );
  56.   /**
  57.    * Set the encoding type
  58.    * @param enc the encoding type
  59.    */
  60.   void setEncoding( Ofdm_mod_rate enc );
  61.   /**
  62.    * Set the frequency in unit of kHz
  63.    * @param f the frequency
  64.    */
  65.   void setFrequency( int f );
  66.   // Chain element to the list
  67.   inline void insert_entry(struct profile *head) {
  68.     LIST_INSERT_HEAD(head, this, link);
  69.   }
  70.   
  71.   // Return next element in the chained list
  72.   Profile* next_entry(void) const { return link.le_next; }
  73.   // Remove the entry from the list
  74.   inline void remove_entry() { 
  75.     LIST_REMOVE(this, link); 
  76.   }
  77.  private:
  78.   /**
  79.    * The type of modulation used by the burst
  80.    */
  81.   Ofdm_mod_rate encoding_;
  82.   
  83.   /**
  84.    * The downlink frequency in kHz
  85.    */
  86.   int frequency_;
  87.   
  88.   /**
  89.    * The Interval Usage Code for the profile
  90.    */
  91.   int iuc_;
  92.   /**
  93.    * The subframe containing this profile
  94.    * Used to inform configuration change
  95.    */
  96.   SubFrame *subframe_;
  97.   
  98.   /*
  99.    * Pointer to next in the list
  100.    */
  101.   LIST_ENTRY(Profile) link;
  102.   //LIST_ENTRY(Profile); //for magic draw
  103.   
  104. };
  105. #endif