scanningstation.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 SCANNINGSTATION_H
  19. #define SCANNINGSTATION_H
  20. #include "packet.h"
  21. class ScanningStation;
  22. LIST_HEAD (scanningStation, ScanningStation);
  23. /**
  24.  * Contains information about a scanning station and 
  25.  * helps to determine if it is in a scanning or interleaving
  26.  * time.
  27.  */
  28. class ScanningStation
  29. {
  30.  public:
  31.   /**
  32.    * Create an data object with the given attributes
  33.    * @param nodeid The node 
  34.    * @param duration The scanning duration
  35.    * @param start The frame at which the scanning start
  36.    * @param interleaving The interleaving interval
  37.    * @param iteration The number of iterations
  38.    */
  39.   ScanningStation (int nodeid, int duration, int start, int interleaving, int iteration);
  40.   /**
  41.    * Determines if the node is currently scanning
  42.    * @param frame The current frame
  43.    */
  44.   bool isScanning (int frame);
  45.   /**
  46.    * Return the node id 
  47.    */
  48.   int getNodeId () { return nodeid_; }
  49.   // Chain element to the list
  50.   inline void insert_entry_head(struct scanningStation *head) {
  51.     LIST_INSERT_HEAD(head, this, link);
  52.   }
  53.   
  54.   // Chain element to the list
  55.   inline void insert_entry(ScanningStation *elem) {
  56.     LIST_INSERT_AFTER(elem, this, link);
  57.   }
  58.   // Return next element in the chained list
  59.   ScanningStation* next_entry(void) const { return link.le_next; }
  60.   // Remove the entry from the list
  61.   inline void remove_entry() { 
  62.     LIST_REMOVE(this, link); 
  63.   }
  64.  protected:
  65.   /**
  66.    * Pointer to next in the list
  67.    */
  68.   LIST_ENTRY(ScanningStation) link;
  69.   //LIST_ENTRY(ScanningStation); //for magic draw
  70.  private:
  71.   /**
  72.    * Duration of scanning allocation in frames
  73.    */
  74.   int duration_;
  75.   
  76.   /**
  77.    * Start frame (absolute)
  78.    */
  79.   int start_frame_;
  80.   /**
  81.    * interleaving in frames
  82.    */
  83.   int interleaving_;
  84.   /**
  85.    * number of iterations
  86.    */
  87.   int iteration_;
  88.   /**
  89.    * The node that is scanning
  90.    */
  91.   int nodeid_;
  92. };
  93. #endif