30 * This class implements the AARF rate control algorithm which |
30 * This class implements the AARF rate control algorithm which |
31 * was initially described in <i>IEEE 802.11 Rate Adaptation: |
31 * was initially described in <i>IEEE 802.11 Rate Adaptation: |
32 * A Practical Approach</i>, by M. Lacage, M.H. Manshaei, and |
32 * A Practical Approach</i>, by M. Lacage, M.H. Manshaei, and |
33 * T. Turletti. |
33 * T. Turletti. |
34 */ |
34 */ |
35 class AarfWifiManager : public ArfWifiManager |
35 class AarfWifiManager : public WifiRemoteStationManager |
36 { |
36 { |
37 public: |
37 public: |
38 static TypeId GetTypeId (void); |
38 static TypeId GetTypeId (void); |
39 AarfWifiManager (); |
39 AarfWifiManager (); |
40 virtual ~AarfWifiManager (); |
40 virtual ~AarfWifiManager (); |
41 private: |
41 private: |
42 friend class AarfWifiRemoteStation; |
42 // overriden from base class |
43 virtual class WifiRemoteStation *CreateStation (void); |
43 virtual class WifiRemoteStation *DoCreateStation (void) const; |
|
44 virtual void DoReportRxOk (WifiRemoteStation *station, |
|
45 double rxSnr, WifiMode txMode); |
|
46 virtual void DoReportRtsFailed (WifiRemoteStation *station); |
|
47 virtual void DoReportDataFailed (WifiRemoteStation *station); |
|
48 virtual void DoReportRtsOk (WifiRemoteStation *station, |
|
49 double ctsSnr, WifiMode ctsMode, double rtsSnr); |
|
50 virtual void DoReportDataOk (WifiRemoteStation *station, |
|
51 double ackSnr, WifiMode ackMode, double dataSnr); |
|
52 virtual void DoReportFinalRtsFailed (WifiRemoteStation *station); |
|
53 virtual void DoReportFinalDataFailed (WifiRemoteStation *station); |
|
54 virtual WifiMode DoGetDataMode (WifiRemoteStation *station, uint32_t size); |
|
55 virtual WifiMode DoGetRtsMode (WifiRemoteStation *station); |
|
56 virtual bool IsLowLatency (void) const; |
|
57 |
44 uint32_t m_minTimerThreshold; |
58 uint32_t m_minTimerThreshold; |
45 uint32_t m_minSuccessThreshold; |
59 uint32_t m_minSuccessThreshold; |
46 double m_successK; |
60 double m_successK; |
47 uint32_t m_maxSuccessThreshold; |
61 uint32_t m_maxSuccessThreshold; |
48 double m_timerK; |
62 double m_timerK; |
49 }; |
63 }; |
50 |
64 |
51 class AarfWifiRemoteStation : public ArfWifiRemoteStation |
|
52 { |
|
53 public: |
|
54 AarfWifiRemoteStation (Ptr<AarfWifiManager> stations); |
|
55 virtual ~AarfWifiRemoteStation (); |
|
56 |
|
57 private: |
|
58 virtual void ReportRecoveryFailure (void); |
|
59 virtual void ReportFailure (void); |
|
60 virtual Ptr<WifiRemoteStationManager> GetManager (void) const; |
|
61 |
|
62 Ptr<AarfWifiManager> m_manager; |
|
63 }; |
|
64 |
|
65 } // namespace ns3 |
65 } // namespace ns3 |
66 |
66 |
67 |
67 |
68 #endif /* AARF_WIFI_MANAGER_H */ |
68 #endif /* AARF_WIFI_MANAGER_H */ |