22 #include "ns3/assert.h"
24 #include "ns3/uinteger.h"
25 #include "ns3/trace-source-accessor.h"
26 #define Min(a,b) ((a < b) ? a : b)
64 .AddConstructor<AparfWifiManager> ()
65 .AddAttribute (
"SuccessThreshold 1",
66 "The minimum number of successful transmissions in \"High\" state to try a new power or rate.",
69 MakeUintegerChecker<uint32_t> ())
70 .AddAttribute (
"SuccessThreshold 2",
71 "The minimum number of successful transmissions in \"Low\" state to try a new power or rate.",
74 MakeUintegerChecker<uint32_t> ())
75 .AddAttribute (
"FailThreshold",
76 "The minimum number of failed transmissions to try a new power or rate.",
79 MakeUintegerChecker<uint32_t> ())
80 .AddAttribute (
"PowerThreshold",
81 "The maximum number of power changes.",
84 MakeUintegerChecker<uint32_t> ())
85 .AddAttribute (
"Power decrement step",
86 "Step size for decrement the power.",
89 MakeUintegerChecker<uint32_t> ())
90 .AddAttribute (
"Power increment step",
91 "Step size for increment the power.",
94 MakeUintegerChecker<uint32_t> ())
95 .AddAttribute (
"Rate decrement step",
96 "Step size for decrement the rate.",
99 MakeUintegerChecker<uint32_t> ())
100 .AddAttribute (
"Rate increment step",
101 "Step size for increment the rate.",
104 MakeUintegerChecker<uint32_t> ())
105 .AddTraceSource (
"PowerChange",
106 "The transmission power has change",
108 "ns3::AparfWifiManager::PowerChangeTracedCallback")
109 .AddTraceSource (
"RateChange",
110 "The transmission rate has change",
112 "ns3::AparfWifiManager::RateChangeTracedCallback")
148 <<
", power=" << (
int)station->
m_power);
181 <<
", power=" << (
int)station->
m_power);
uint32_t m_succesMax2
The minimum number of successful transmissions in "Low" state to try a new power or rate...
uint32_t GetNSupported(const WifiRemoteStation *station) const
Return the number of modes supported by the given station.
uint32_t m_nSuccess
Number of successful transmission attempts.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
virtual void DoReportRxOk(WifiRemoteStation *station, double rxSnr, WifiMode txMode)
This method is a pure virtual method that must be implemented by the sub-class.
APARF Power and rate control algorithm.
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
virtual void DoReportRtsFailed(WifiRemoteStation *station)
This method is a pure virtual method that must be implemented by the sub-class.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
uint32_t m_rateInc
Step size for increment the rate.
static TypeId GetTypeId(void)
Register this type.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Mac48Address m_address
Mac48Address of the remote station.
AparfWifiManager::State m_aparfState
The estimated state of the channel.
uint32_t m_failThreshold
The minimum number of failed transmissions to try a new power or rate.
uint32_t m_successThreshold
The minimum number of successful transmissions to try a new power or rate.
virtual void SetupPhy(Ptr< WifiPhy > phy)
Set up PHY associated with this device since it is the object that knows the full set of transmit rat...
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
uint32_t GetNumberOfReceiveAntennas(const WifiRemoteStation *station) const
Return the number of receive antenna the station has.
uint32_t m_powerDec
Step size for decrement the power.
WifiMode GetSupported(const WifiRemoteStation *station, uint32_t i) const
Return whether mode associated with the specified station at the specified index. ...
WifiRemoteStationState * m_state
Remote station state.
bool m_initialized
For initializing variables.
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
Create a TraceSourceAccessor which will control access to the underlying trace source.
uint32_t m_rateDec
Step size for decrement the rate.
uint32_t m_powerInc
Step size for increment the power.
bool GetStbc(const WifiRemoteStation *station) const
Return whether the given station supports space-time block coding (STBC).
int64x64_t Min(const int64x64_t &a, const int64x64_t &b)
Minimum.
virtual void DoReportRtsOk(WifiRemoteStation *station, double ctsSnr, WifiMode ctsMode, double rtsSnr)
This method is a pure virtual method that must be implemented by the sub-class.
TracedCallback< uint32_t, Mac48Address > m_rateChange
The trace source fired when the transmission rate change.
virtual WifiTxVector DoGetDataTxVector(WifiRemoteStation *station, uint32_t size)
Hold an unsigned integer type.
uint32_t m_nFailed
Number of failed transmission attempts.
void CheckInit(AparfWifiRemoteStation *station)
Check for initializations.
virtual void DoReportDataOk(WifiRemoteStation *station, double ackSnr, WifiMode ackMode, double dataSnr)
This method is a pure virtual method that must be implemented by the sub-class.
virtual WifiRemoteStation * DoCreateStation(void) const
hold a list of per-remote-station state.
virtual bool IsLowLatency(void) const
uint32_t m_nSupported
Number of supported rates by the remote station.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
virtual void SetupPhy(Ptr< WifiPhy > phy)
Set up PHY associated with this device since it is the object that knows the full set of transmit rat...
WifiModeList m_operationalRateSet
This member is the list of WifiMode objects that comprise the OperationalRateSet parameter for this r...
Hold per-remote-station state for APARF Wifi manager.
uint32_t m_failMax
The minimum number of failed transmissions to try a new power or rate.
uint32_t m_rateCrit
Critical rate.
virtual void DoReportFinalRtsFailed(WifiRemoteStation *station)
This method is a pure virtual method that must be implemented by the sub-class.
bool GetShortGuardInterval(const WifiRemoteStation *station) const
Return whether the given station supports short guard interval.
virtual void DoReportFinalDataFailed(WifiRemoteStation *station)
This method is a pure virtual method that must be implemented by the sub-class.
State
Enumeration of the possible states of the channel.
virtual WifiTxVector DoGetRtsTxVector(WifiRemoteStation *station)
virtual void DoReportDataFailed(WifiRemoteStation *station)
This method is a pure virtual method that must be implemented by the sub-class.
uint32_t m_nPower
Number of power levels.
uint32_t m_succesMax1
The minimum number of successful transmissions in "High" state to try a new power or rate...
uint8_t GetDefaultTxPowerLevel(void) const
uint32_t m_powerMax
The maximum number of power changes.
uint32_t GetLongRetryCount(const WifiRemoteStation *station) const
Return the long retry limit of the given station.
virtual uint32_t GetNTxPower(void) const =0
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
uint32_t m_pCount
Number of power changes.
TracedCallback< uint8_t, Mac48Address > m_powerChange
The trace source fired when the transmission power change.
uint32_t GetShortRetryCount(const WifiRemoteStation *station) const
Return the short retry limit of the given station.
uint32_t GetNumberOfTransmitAntennas(void)
uint32_t m_rate
Current rate.
Ptr< const AttributeAccessor > MakeUintegerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
hold per-remote-station state.
virtual ~AparfWifiManager()
uint8_t m_power
Current power.