A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
aarf-wifi-manager.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2005,2006 INRIA
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
7 */
8
9#ifndef AARF_WIFI_MANAGER_H
10#define AARF_WIFI_MANAGER_H
11
12#include "ns3/traced-value.h"
13#include "ns3/wifi-remote-station-manager.h"
14
15namespace ns3
16{
17
18/**
19 * @brief AARF Rate control algorithm
20 * @ingroup wifi
21 *
22 * This class implements the AARF rate control algorithm which
23 * was initially described in <i>IEEE 802.11 Rate Adaptation:
24 * A Practical Approach</i>, by M. Lacage, M.H. Manshaei, and
25 * T. Turletti.
26 *
27 * This RAA does not support HT modes and will error
28 * exit if the user tries to configure this RAA with a Wi-Fi MAC
29 * that supports 802.11n or higher.
30 */
32{
33 public:
34 /**
35 * @brief Get the type ID.
36 * @return the object TypeId
37 */
38 static TypeId GetTypeId();
40 ~AarfWifiManager() override;
41
42 private:
43 void DoInitialize() override;
44 WifiRemoteStation* DoCreateStation() const override;
45 void DoReportRxOk(WifiRemoteStation* station, double rxSnr, WifiMode txMode) override;
49 double ctsSnr,
51 double rtsSnr) override;
53 double ackSnr,
55 double dataSnr,
57 uint8_t dataNss) override;
62
63 uint32_t m_minTimerThreshold; ///< minimum timer threshold
64 uint32_t m_minSuccessThreshold; ///< minimum success threshold
65 double m_successK; ///< Multiplication factor for the success threshold
66 uint32_t m_maxSuccessThreshold; ///< maximum success threshold
67 double m_timerK; ///< Multiplication factor for the timer threshold
68
69 TracedValue<uint64_t> m_currentRate; //!< Trace rate changes
70};
71
72} // namespace ns3
73
74#endif /* AARF_WIFI_MANAGER_H */
AARF Rate control algorithm.
void DoReportRtsOk(WifiRemoteStation *station, double ctsSnr, WifiMode ctsMode, double rtsSnr) override
This method is a pure virtual method that must be implemented by the sub-class.
uint32_t m_minSuccessThreshold
minimum success threshold
void DoReportDataOk(WifiRemoteStation *station, double ackSnr, WifiMode ackMode, double dataSnr, MHz_u dataChannelWidth, uint8_t dataNss) override
This method is a pure virtual method that must be implemented by the sub-class.
WifiRemoteStation * DoCreateStation() const override
WifiTxVector DoGetRtsTxVector(WifiRemoteStation *station) override
void DoReportFinalDataFailed(WifiRemoteStation *station) override
This method is a pure virtual method that must be implemented by the sub-class.
WifiTxVector DoGetDataTxVector(WifiRemoteStation *station, MHz_u allowedWidth) override
void DoInitialize() override
Initialize() implementation.
void DoReportFinalRtsFailed(WifiRemoteStation *station) override
This method is a pure virtual method that must be implemented by the sub-class.
double m_successK
Multiplication factor for the success threshold.
void DoReportDataFailed(WifiRemoteStation *station) override
It is important to realize that "recovery" mode starts after failure of the first transmission after ...
double m_timerK
Multiplication factor for the timer threshold.
void DoReportRtsFailed(WifiRemoteStation *station) override
This method is a pure virtual method that must be implemented by the sub-class.
static TypeId GetTypeId()
Get the type ID.
uint32_t m_maxSuccessThreshold
maximum success threshold
void DoReportRxOk(WifiRemoteStation *station, double rxSnr, WifiMode txMode) override
This method is a pure virtual method that must be implemented by the sub-class.
uint32_t m_minTimerThreshold
minimum timer threshold
TracedValue< uint64_t > m_currentRate
Trace rate changes.
Trace classes with value semantics.
a unique identifier for an interface.
Definition type-id.h:49
represent a single transmission mode
Definition wifi-mode.h:40
hold a list of per-remote-station state.
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
Definition ptr.h:436
Every class exported by the ns3 library is enclosed in the ns3 namespace.
hold per-remote-station state.