src/devices/wifi/onoe-wifi-manager.h
changeset 6065 0f012e7d9128
parent 2962 39f72ca0ba8e
child 6339 84cbcc1a3f16
equal deleted inserted replaced
6064:ddec96840ebd 6065:0f012e7d9128
    23 #include "wifi-remote-station-manager.h"
    23 #include "wifi-remote-station-manager.h"
    24 #include "ns3/nstime.h"
    24 #include "ns3/nstime.h"
    25 
    25 
    26 namespace ns3 {
    26 namespace ns3 {
    27 
    27 
       
    28 class OnoeWifiRemoteStation;
       
    29 
    28 /**
    30 /**
    29  * \brief an implementation of rate control algorithm developed 
    31  * \brief an implementation of rate control algorithm developed 
    30  *        by Atsushi Onoe
    32  *        by Atsushi Onoe
    31  *
    33  *
    32  * This algorithm is well known because it has been used as the default
    34  * This algorithm is well known because it has been used as the default
    40   static TypeId GetTypeId (void);
    42   static TypeId GetTypeId (void);
    41 
    43 
    42   OnoeWifiManager ();
    44   OnoeWifiManager ();
    43 
    45 
    44 private:
    46 private:
    45   friend class OnoeWifiRemoteStation;
    47   // overriden from base class
    46   virtual WifiRemoteStation *CreateStation (void);
    48   virtual class WifiRemoteStation *DoCreateStation (void) const;
       
    49   virtual void DoReportRxOk (WifiRemoteStation *station, 
       
    50                              double rxSnr, WifiMode txMode);
       
    51   virtual void DoReportRtsFailed (WifiRemoteStation *station);
       
    52   virtual void DoReportDataFailed (WifiRemoteStation *station);
       
    53   virtual void DoReportRtsOk (WifiRemoteStation *station,
       
    54                               double ctsSnr, WifiMode ctsMode, double rtsSnr);
       
    55   virtual void DoReportDataOk (WifiRemoteStation *station,
       
    56                                double ackSnr, WifiMode ackMode, double dataSnr);
       
    57   virtual void DoReportFinalRtsFailed (WifiRemoteStation *station);
       
    58   virtual void DoReportFinalDataFailed (WifiRemoteStation *station);
       
    59   virtual WifiMode DoGetDataMode (WifiRemoteStation *station, uint32_t size);
       
    60   virtual WifiMode DoGetRtsMode (WifiRemoteStation *station);
       
    61   virtual bool IsLowLatency (void) const;
       
    62 
       
    63   void UpdateRetry (OnoeWifiRemoteStation *station);
       
    64   void UpdateMode (OnoeWifiRemoteStation *station);
    47 
    65 
    48   Time m_updatePeriod;
    66   Time m_updatePeriod;
    49   uint32_t m_addCreditThreshold;
    67   uint32_t m_addCreditThreshold;
    50   uint32_t m_raiseThreshold;
    68   uint32_t m_raiseThreshold;
    51 };
    69 };
    52 
    70 
    53 class OnoeWifiRemoteStation : public WifiRemoteStation
       
    54 {
       
    55 public:
       
    56   OnoeWifiRemoteStation (Ptr<OnoeWifiManager> stations);
       
    57 
       
    58   virtual ~OnoeWifiRemoteStation ();
       
    59 
       
    60 protected:
       
    61   virtual void DoReportRxOk (double rxSnr, WifiMode txMode);
       
    62   virtual void DoReportRtsFailed (void);
       
    63   virtual void DoReportDataFailed (void);
       
    64   virtual void DoReportRtsOk (double ctsSnr, WifiMode ctsMode, double rtsSnr);
       
    65   virtual void DoReportDataOk (double ackSnr, WifiMode ackMode, double dataSnr);
       
    66   virtual void DoReportFinalRtsFailed (void);
       
    67   virtual void DoReportFinalDataFailed (void);
       
    68 
       
    69 private:
       
    70   virtual Ptr<WifiRemoteStationManager> GetManager (void) const;
       
    71   virtual WifiMode DoGetDataMode (uint32_t size);
       
    72   virtual WifiMode DoGetRtsMode (void);
       
    73 
       
    74   void UpdateRetry (void);
       
    75   void UpdateMode (void);
       
    76 
       
    77   Ptr<OnoeWifiManager> m_stations;
       
    78   Time m_nextModeUpdate;
       
    79   uint32_t m_shortRetry;
       
    80   uint32_t m_longRetry;
       
    81   uint32_t m_tx_ok;
       
    82   uint32_t m_tx_err;
       
    83   uint32_t m_tx_retr;
       
    84   uint32_t m_tx_upper;
       
    85   uint32_t m_txrate;
       
    86 };
       
    87 
       
    88 } // namespace ns3
    71 } // namespace ns3
    89 
    72 
    90 #endif /* ONOE_WIFI_MANAGER_H */
    73 #endif /* ONOE_WIFI_MANAGER_H */