A Discrete-Event Network Simulator
API
aparf-wifi-manager.cc
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2014 Universidad de la República - Uruguay
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Matias Richart <mrichart@fing.edu.uy>
19  */
20 
21 #include "ns3/log.h"
22 #include "ns3/uinteger.h"
23 #include "ns3/data-rate.h"
24 #include "aparf-wifi-manager.h"
25 #include "ns3/wifi-phy.h"
26 
27 #define Min(a,b) ((a < b) ? a : b)
28 
29 namespace ns3 {
30 
31 NS_LOG_COMPONENT_DEFINE ("AparfWifiManager");
32 
39 struct
41 {
42  uint32_t m_nSuccess;
43  uint32_t m_nFailed;
44  uint32_t m_pCount;
45  uint32_t m_successThreshold;
46  uint32_t m_failThreshold;
47  uint8_t m_prevRateIndex;
48  uint8_t m_rateIndex;
49  uint8_t m_critRateIndex;
50  uint8_t m_prevPowerLevel;
51  uint8_t m_powerLevel;
52  uint8_t m_nSupported;
55 };
56 
58 
59 TypeId
61 {
62  static TypeId tid = TypeId ("ns3::AparfWifiManager")
64  .SetGroupName ("Wifi")
65  .AddConstructor<AparfWifiManager> ()
66  .AddAttribute ("SuccessThreshold1",
67  "The minimum number of successful transmissions in \"High\" state to try a new power or rate.",
68  UintegerValue (3),
70  MakeUintegerChecker<uint32_t> ())
71  .AddAttribute ("SuccessThreshold2",
72  "The minimum number of successful transmissions in \"Low\" state to try a new power or rate.",
73  UintegerValue (10),
75  MakeUintegerChecker<uint32_t> ())
76  .AddAttribute ("FailThreshold",
77  "The minimum number of failed transmissions to try a new power or rate.",
78  UintegerValue (1),
80  MakeUintegerChecker<uint32_t> ())
81  .AddAttribute ("PowerThreshold",
82  "The maximum number of power changes.",
83  UintegerValue (10),
85  MakeUintegerChecker<uint32_t> ())
86  .AddAttribute ("PowerDecrementStep",
87  "Step size for decrement the power.",
88  UintegerValue (1),
90  MakeUintegerChecker<uint8_t> ())
91  .AddAttribute ("PowerIncrementStep",
92  "Step size for increment the power.",
93  UintegerValue (1),
95  MakeUintegerChecker<uint8_t> ())
96  .AddAttribute ("RateDecrementStep",
97  "Step size for decrement the rate.",
98  UintegerValue (1),
100  MakeUintegerChecker<uint8_t> ())
101  .AddAttribute ("RateIncrementStep",
102  "Step size for increment the rate.",
103  UintegerValue (1),
105  MakeUintegerChecker<uint8_t> ())
106  .AddTraceSource ("PowerChange",
107  "The transmission power has change",
109  "ns3::WifiRemoteStationManager::PowerChangeTracedCallback")
110  .AddTraceSource ("RateChange",
111  "The transmission rate has change",
113  "ns3::WifiRemoteStationManager::RateChangeTracedCallback")
114  ;
115  return tid;
116 }
117 
119 {
120  NS_LOG_FUNCTION (this);
121 }
122 
124 {
125  NS_LOG_FUNCTION (this);
126 }
127 
128 void
130 {
131  NS_LOG_FUNCTION (this << phy);
132  m_minPower = 0;
133  m_maxPower = phy->GetNTxPower () - 1;
135 }
136 
137 void
139 {
140  NS_LOG_FUNCTION (this);
141  if (GetHtSupported ())
142  {
143  NS_FATAL_ERROR ("WifiRemoteStationManager selected does not support HT rates");
144  }
145  if (GetVhtSupported ())
146  {
147  NS_FATAL_ERROR ("WifiRemoteStationManager selected does not support VHT rates");
148  }
149  if (GetHeSupported ())
150  {
151  NS_FATAL_ERROR ("WifiRemoteStationManager selected does not support HE rates");
152  }
153 }
154 
157 {
158  NS_LOG_FUNCTION (this);
160 
161  station->m_successThreshold = m_succesMax1;
162  station->m_failThreshold = m_failMax;
163  station->m_nSuccess = 0;
164  station->m_nFailed = 0;
165  station->m_pCount = 0;
167  station->m_initialized = false;
168 
169  NS_LOG_DEBUG ("create station=" << station << ", rate=" << +station->m_rateIndex
170  << ", power=" << +station->m_powerLevel);
171 
172  return station;
173 }
174 
175 void
177 {
178  if (!station->m_initialized)
179  {
180  station->m_nSupported = GetNSupported (station);
181  station->m_rateIndex = station->m_nSupported - 1;
182  station->m_prevRateIndex = station->m_nSupported - 1;
183  station->m_powerLevel = m_maxPower;
184  station->m_prevPowerLevel = m_maxPower;
185  station->m_critRateIndex = 0;
186  WifiMode mode = GetSupported (station, station->m_rateIndex);
187  uint16_t channelWidth = GetChannelWidth (station);
188  DataRate rate = DataRate (mode.GetDataRate (channelWidth));
189  double power = GetPhy ()->GetPowerDbm (m_maxPower);
190  m_powerChange (power, power, station->m_state->m_address);
191  m_rateChange (rate, rate, station->m_state->m_address);
192  station->m_initialized = true;
193  }
194 }
195 
197 {
198  NS_LOG_FUNCTION (this << station);
199 }
200 
202 {
203  NS_LOG_FUNCTION (this << st);
204  AparfWifiRemoteStation *station = static_cast<AparfWifiRemoteStation*> (st);
205  CheckInit (station);
206  station->m_nFailed++;
207  station->m_nSuccess = 0;
208  NS_LOG_DEBUG ("station=" << station << ", rate=" << station->m_rateIndex
209  << ", power=" << (int)station->m_powerLevel);
210 
211  if (station->m_aparfState == AparfWifiManager::Low)
212  {
214  station->m_successThreshold = m_succesMax1;
215  }
216  else if (station->m_aparfState == AparfWifiManager::Spread)
217  {
219  station->m_successThreshold = m_succesMax2;
220  }
221 
222  if (station->m_nFailed == station->m_failThreshold)
223  {
224  station->m_nFailed = 0;
225  station->m_nSuccess = 0;
226  station->m_pCount = 0;
227  if (station->m_powerLevel == m_maxPower)
228  {
229  station->m_critRateIndex = station->m_rateIndex;
230  if (station->m_rateIndex != 0)
231  {
232  NS_LOG_DEBUG ("station=" << station << " dec rate");
233  station->m_rateIndex -= m_rateDec;
234  }
235  }
236  else
237  {
238  NS_LOG_DEBUG ("station=" << station << " inc power");
239  station->m_powerLevel += m_powerInc;
240  }
241  }
242 }
243 
244 void
246 {
247  NS_LOG_FUNCTION (this << station << rxSnr << txMode);
248 }
249 
250 void
252  WifiMode ctsMode, double rtsSnr)
253 {
254  NS_LOG_FUNCTION (this << station << ctsSnr << ctsMode << rtsSnr);
255 }
256 
257 void
259  double dataSnr, uint16_t dataChannelWidth, uint8_t dataNss)
260 {
261  NS_LOG_FUNCTION (this << st << ackSnr << ackMode << dataSnr << dataChannelWidth << +dataNss);
262  AparfWifiRemoteStation *station = static_cast<AparfWifiRemoteStation*> (st);
263  CheckInit (station);
264  station->m_nSuccess++;
265  station->m_nFailed = 0;
266  NS_LOG_DEBUG ("station=" << station << " data ok success=" << station->m_nSuccess << ", rate=" << +station->m_rateIndex << ", power=" << +station->m_powerLevel);
267 
268  if ((station->m_aparfState == AparfWifiManager::High) && (station->m_nSuccess >= station->m_successThreshold))
269  {
271  }
272  else if ((station->m_aparfState == AparfWifiManager::Low) && (station->m_nSuccess >= station->m_successThreshold))
273  {
275  }
276  else if (station->m_aparfState == AparfWifiManager::Spread)
277  {
279  station->m_successThreshold = m_succesMax1;
280  }
281 
282  if (station->m_nSuccess == station->m_successThreshold)
283  {
284  station->m_nSuccess = 0;
285  station->m_nFailed = 0;
286  if (station->m_rateIndex == (station->m_state->m_operationalRateSet.size () - 1))
287  {
288  if (station->m_powerLevel != m_minPower)
289  {
290  NS_LOG_DEBUG ("station=" << station << " dec power");
291  station->m_powerLevel -= m_powerDec;
292  }
293  }
294  else
295  {
296  if (station->m_critRateIndex == 0)
297  {
298  if (station->m_rateIndex != (station->m_state->m_operationalRateSet.size () - 1))
299  {
300  NS_LOG_DEBUG ("station=" << station << " inc rate");
301  station->m_rateIndex += m_rateInc;
302  }
303  }
304  else
305  {
306  if (station->m_pCount == m_powerMax)
307  {
308  station->m_powerLevel = m_maxPower;
309  station->m_rateIndex = station->m_critRateIndex;
310  station->m_pCount = 0;
311  station->m_critRateIndex = 0;
312  }
313  else
314  {
315  if (station->m_powerLevel != m_minPower)
316  {
317  station->m_powerLevel -= m_powerDec;
318  station->m_pCount++;
319  }
320  }
321  }
322  }
323  }
324 }
325 
326 void
328 {
329  NS_LOG_FUNCTION (this << station);
330 }
331 
332 void
334 {
335  NS_LOG_FUNCTION (this << station);
336 }
337 
340 {
341  NS_LOG_FUNCTION (this << st);
342  AparfWifiRemoteStation *station = static_cast<AparfWifiRemoteStation*> (st);
343  uint16_t channelWidth = GetChannelWidth (station);
344  if (channelWidth > 20 && channelWidth != 22)
345  {
346  channelWidth = 20;
347  }
348  CheckInit (station);
349  WifiMode mode = GetSupported (station, station->m_rateIndex);
350  DataRate rate = DataRate (mode.GetDataRate (channelWidth));
351  DataRate prevRate = DataRate (GetSupported (station, station->m_prevRateIndex).GetDataRate (channelWidth));
352  double power = GetPhy ()->GetPowerDbm (station->m_powerLevel);
353  double prevPower = GetPhy ()->GetPowerDbm (station->m_prevPowerLevel);
354  if (station->m_prevPowerLevel != station->m_powerLevel)
355  {
356  m_powerChange (prevPower, power, station->m_state->m_address);
357  station->m_prevPowerLevel = station->m_powerLevel;
358  }
359  if (station->m_prevRateIndex != station->m_rateIndex)
360  {
361  m_rateChange (prevRate, rate, station->m_state->m_address);
362  station->m_prevRateIndex = station->m_rateIndex;
363  }
364  return WifiTxVector (mode, station->m_powerLevel, GetPreambleForTransmission (mode.GetModulationClass (), GetShortPreambleEnabled ()), 800, 1, 1, 0, channelWidth, GetAggregation (station));
365 }
366 
369 {
370  NS_LOG_FUNCTION (this << st);
373  AparfWifiRemoteStation *station = static_cast<AparfWifiRemoteStation*> (st);
374  uint16_t channelWidth = GetChannelWidth (station);
375  if (channelWidth > 20 && channelWidth != 22)
376  {
377  channelWidth = 20;
378  }
379  WifiTxVector rtsTxVector;
380  WifiMode mode;
381  if (GetUseNonErpProtection () == false)
382  {
383  mode = GetSupported (station, 0);
384  }
385  else
386  {
387  mode = GetNonErpSupported (station, 0);
388  }
389  rtsTxVector = WifiTxVector (mode, GetDefaultTxPowerLevel (), GetPreambleForTransmission (mode.GetModulationClass (), GetShortPreambleEnabled ()), 800, 1, 1, 0, channelWidth, GetAggregation (station));
390  return rtsTxVector;
391 }
392 
393 } //namespace ns3
ns3::AparfWifiRemoteStation::m_nFailed
uint32_t m_nFailed
Number of failed transmission attempts.
Definition: aparf-wifi-manager.cc:43
ns3::AparfWifiManager::DoGetDataTxVector
WifiTxVector DoGetDataTxVector(WifiRemoteStation *station) override
Definition: aparf-wifi-manager.cc:339
ns3::TypeId
a unique identifier for an interface.
Definition: type-id.h:59
ns3::WifiRemoteStationManager::GetDefaultTxPowerLevel
uint8_t GetDefaultTxPowerLevel(void) const
Definition: wifi-remote-station-manager.cc:1206
NS_LOG_COMPONENT_DEFINE
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition: log.h:205
ns3::AparfWifiManager::DoReportDataFailed
void DoReportDataFailed(WifiRemoteStation *station) override
This method is a pure virtual method that must be implemented by the sub-class.
Definition: aparf-wifi-manager.cc:201
ns3::AparfWifiRemoteStation::m_nSupported
uint8_t m_nSupported
Number of supported rates by the remote station.
Definition: aparf-wifi-manager.cc:52
NS_OBJECT_ENSURE_REGISTERED
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Definition: object-base.h:45
ns3::AparfWifiManager::DoGetRtsTxVector
WifiTxVector DoGetRtsTxVector(WifiRemoteStation *station) override
Definition: aparf-wifi-manager.cc:368
ns3::AparfWifiRemoteStation
Hold per-remote-station state for APARF Wifi manager.
Definition: aparf-wifi-manager.cc:41
ns3::AparfWifiManager::m_minPower
uint8_t m_minPower
Minimal power level.
Definition: aparf-wifi-manager.h:105
ns3::WifiRemoteStationManager::GetUseNonErpProtection
bool GetUseNonErpProtection(void) const
Return whether the device supports protection of non-ERP stations.
Definition: wifi-remote-station-manager.cc:1051
ns3::AparfWifiManager::Low
@ Low
Definition: aparf-wifi-manager.h:64
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::AparfWifiManager::Spread
@ Spread
Definition: aparf-wifi-manager.h:65
ns3::WifiRemoteStationManager::GetSupported
WifiMode GetSupported(const WifiRemoteStation *station, uint8_t i) const
Return whether mode associated with the specified station at the specified index.
Definition: wifi-remote-station-manager.cc:1635
ns3::AparfWifiRemoteStation::m_prevPowerLevel
uint8_t m_prevPowerLevel
Power level of the previous transmission.
Definition: aparf-wifi-manager.cc:50
ns3::WifiMode::GetModulationClass
WifiModulationClass GetModulationClass() const
Definition: wifi-mode.cc:159
ns3::AparfWifiManager::High
@ High
Definition: aparf-wifi-manager.h:63
ns3::AparfWifiManager::m_rateChange
TracedCallback< DataRate, DataRate, Mac48Address > m_rateChange
The trace source fired when the transmission rate changes.
Definition: aparf-wifi-manager.h:119
ns3::WifiRemoteStationManager
hold a list of per-remote-station state.
Definition: wifi-remote-station-manager.h:121
ns3::WifiRemoteStationManager::GetHtSupported
bool GetHtSupported(void) const
Return whether the device has HT capability support enabled.
Definition: wifi-remote-station-manager.cc:232
ns3::AparfWifiRemoteStation::m_pCount
uint32_t m_pCount
Number of power changes.
Definition: aparf-wifi-manager.cc:44
ns3::WifiRemoteStationManager::GetVhtSupported
bool GetVhtSupported(void) const
Return whether the device has VHT capability support enabled.
Definition: wifi-remote-station-manager.cc:244
ns3::WifiRemoteStationManager::GetNSupported
uint8_t GetNSupported(const WifiRemoteStation *station) const
Return the number of modes supported by the given station.
Definition: wifi-remote-station-manager.cc:1743
ns3::WifiTxVector
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
Definition: wifi-tx-vector.h:71
ns3::AparfWifiManager::~AparfWifiManager
virtual ~AparfWifiManager()
Definition: aparf-wifi-manager.cc:123
ns3::AparfWifiManager::GetTypeId
static TypeId GetTypeId(void)
Register this type.
Definition: aparf-wifi-manager.cc:60
ns3::WifiPhy::GetPowerDbm
double GetPowerDbm(uint8_t power) const
Get the power of the given power level in dBm.
Definition: wifi-phy.cc:840
ns3::AparfWifiManager::m_succesMax2
uint32_t m_succesMax2
The minimum number of successful transmissions in "Low" state to try a new power or rate.
Definition: aparf-wifi-manager.h:92
ns3::TypeId::SetParent
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Definition: type-id.cc:923
ns3::WifiRemoteStationManager::GetShortPreambleEnabled
bool GetShortPreambleEnabled(void) const
Return whether the device uses short PHY preambles.
Definition: wifi-remote-station-manager.cc:226
ns3::MakeTraceSourceAccessor
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
Create a TraceSourceAccessor which will control access to the underlying trace source.
Definition: trace-source-accessor.h:202
ns3::AparfWifiManager::DoReportRtsFailed
void DoReportRtsFailed(WifiRemoteStation *station) override
This method is a pure virtual method that must be implemented by the sub-class.
Definition: aparf-wifi-manager.cc:196
ns3::AparfWifiManager::DoReportFinalDataFailed
void DoReportFinalDataFailed(WifiRemoteStation *station) override
This method is a pure virtual method that must be implemented by the sub-class.
Definition: aparf-wifi-manager.cc:333
ns3::WifiRemoteStationManager::GetPhy
Ptr< WifiPhy > GetPhy(void) const
Return the WifiPhy.
Definition: wifi-remote-station-manager.cc:1731
ns3::AparfWifiManager::DoReportDataOk
void DoReportDataOk(WifiRemoteStation *station, double ackSnr, WifiMode ackMode, double dataSnr, uint16_t dataChannelWidth, uint8_t dataNss) override
This method is a pure virtual method that must be implemented by the sub-class.
Definition: aparf-wifi-manager.cc:258
ns3::Ptr< WifiPhy >
NS_FATAL_ERROR
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
Definition: fatal-error.h:165
ns3::DataRate
Class for representing data rates.
Definition: data-rate.h:89
ns3::AparfWifiManager::m_maxPower
uint8_t m_maxPower
Maximal power level.
Definition: aparf-wifi-manager.h:110
ns3::WifiMode
represent a single transmission mode
Definition: wifi-mode.h:48
ns3::AparfWifiRemoteStation::m_nSuccess
uint32_t m_nSuccess
Number of successful transmission attempts.
Definition: aparf-wifi-manager.cc:42
ns3::AparfWifiManager::m_powerMax
uint32_t m_powerMax
The maximum number of power changes.
Definition: aparf-wifi-manager.h:94
ns3::AparfWifiRemoteStation::m_prevRateIndex
uint8_t m_prevRateIndex
Rate index of the previous transmission.
Definition: aparf-wifi-manager.cc:47
ns3::AparfWifiManager::DoCreateStation
WifiRemoteStation * DoCreateStation(void) const override
Definition: aparf-wifi-manager.cc:156
ns3::AparfWifiRemoteStation::m_rateIndex
uint8_t m_rateIndex
Current rate index.
Definition: aparf-wifi-manager.cc:48
ns3::WifiRemoteStationManager::SetupPhy
virtual void SetupPhy(const Ptr< WifiPhy > phy)
Set up PHY associated with this device since it is the object that knows the full set of transmit rat...
Definition: wifi-remote-station-manager.cc:142
ns3::AparfWifiManager::State
State
Enumeration of the possible states of the channel.
Definition: aparf-wifi-manager.h:62
ns3::AparfWifiRemoteStation::m_critRateIndex
uint8_t m_critRateIndex
Critical rate.
Definition: aparf-wifi-manager.cc:49
ns3::AparfWifiRemoteStation::m_powerLevel
uint8_t m_powerLevel
Current power level.
Definition: aparf-wifi-manager.cc:51
ns3::AparfWifiManager::m_rateDec
uint8_t m_rateDec
Step size for decrement the rate.
Definition: aparf-wifi-manager.h:98
ns3::AparfWifiManager::m_powerChange
TracedCallback< double, double, Mac48Address > m_powerChange
The trace source fired when the transmission power changes.
Definition: aparf-wifi-manager.h:115
ns3::GetPreambleForTransmission
WifiPreamble GetPreambleForTransmission(WifiModulationClass modulation, bool useShortPreamble)
Return the preamble to be used for the transmission.
Definition: wifi-phy-common.cc:87
ns3::WifiRemoteStation
hold per-remote-station state.
Definition: wifi-remote-station-manager.h:62
ns3::WifiRemoteStationManager::GetAggregation
bool GetAggregation(const WifiRemoteStation *station) const
Return whether the given station supports A-MPDU.
Definition: wifi-remote-station-manager.cc:1707
NS_LOG_DEBUG
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
Definition: log.h:273
ns3::TracedValueCallback::DataRate
void(* DataRate)(DataRate oldValue, DataRate newValue)
TracedValue callback signature for DataRate.
Definition: data-rate.h:329
ns3::WifiRemoteStation::m_state
WifiRemoteStationState * m_state
Remote station state.
Definition: wifi-remote-station-manager.h:63
ns3::WifiRemoteStationManager::GetNonErpSupported
WifiMode GetNonErpSupported(const WifiRemoteStation *station, uint8_t i) const
Return whether non-ERP mode associated with the specified station at the specified index.
Definition: wifi-remote-station-manager.cc:1649
ns3::AparfWifiManager::m_succesMax1
uint32_t m_succesMax1
The minimum number of successful transmissions in "High" state to try a new power or rate.
Definition: aparf-wifi-manager.h:91
ns3::AparfWifiRemoteStation::m_aparfState
AparfWifiManager::State m_aparfState
The estimated state of the channel.
Definition: aparf-wifi-manager.cc:54
ns3::AparfWifiManager::DoReportFinalRtsFailed
void DoReportFinalRtsFailed(WifiRemoteStation *station) override
This method is a pure virtual method that must be implemented by the sub-class.
Definition: aparf-wifi-manager.cc:327
ns3::AparfWifiManager::DoReportRtsOk
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.
Definition: aparf-wifi-manager.cc:251
NS_LOG_FUNCTION
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
Definition: log-macros-enabled.h:244
ns3::AparfWifiRemoteStation::m_failThreshold
uint32_t m_failThreshold
The minimum number of failed transmissions to try a new power or rate.
Definition: aparf-wifi-manager.cc:46
ns3::AparfWifiManager::m_failMax
uint32_t m_failMax
The minimum number of failed transmissions to try a new power or rate.
Definition: aparf-wifi-manager.h:93
ns3::AparfWifiRemoteStation::m_successThreshold
uint32_t m_successThreshold
The minimum number of successful transmissions to try a new power or rate.
Definition: aparf-wifi-manager.cc:45
aparf-wifi-manager.h
ns3::UintegerValue
Hold an unsigned integer type.
Definition: uinteger.h:44
ns3::WifiRemoteStationState::m_operationalRateSet
WifiModeList m_operationalRateSet
This member is the list of WifiMode objects that comprise the OperationalRateSet parameter for this r...
Definition: wifi-remote-station-manager.h:93
ns3::AparfWifiRemoteStation::m_initialized
bool m_initialized
For initializing variables.
Definition: aparf-wifi-manager.cc:53
ns3::AparfWifiManager::DoInitialize
void DoInitialize(void) override
Initialize() implementation.
Definition: aparf-wifi-manager.cc:138
ns3::AparfWifiManager::SetupPhy
void SetupPhy(const Ptr< WifiPhy > phy) override
Set up PHY associated with this device since it is the object that knows the full set of transmit rat...
Definition: aparf-wifi-manager.cc:129
ns3::WifiRemoteStationState::m_address
Mac48Address m_address
Mac48Address of the remote station.
Definition: wifi-remote-station-manager.h:95
ns3::WifiRemoteStationManager::GetChannelWidth
uint16_t GetChannelWidth(const WifiRemoteStation *station) const
Return the channel width supported by the station.
Definition: wifi-remote-station-manager.cc:1683
ns3::WifiMode::GetDataRate
uint64_t GetDataRate(uint16_t channelWidth, uint16_t guardInterval, uint8_t nss) const
Definition: wifi-mode.cc:100
ns3::MakeUintegerAccessor
Ptr< const AttributeAccessor > MakeUintegerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
Definition: uinteger.h:45
ns3::AparfWifiManager::m_powerInc
uint8_t m_powerInc
Step size for increment the power.
Definition: aparf-wifi-manager.h:95
ns3::AparfWifiManager::m_rateInc
uint8_t m_rateInc
Step size for increment the rate.
Definition: aparf-wifi-manager.h:97
ns3::AparfWifiManager::AparfWifiManager
AparfWifiManager()
Definition: aparf-wifi-manager.cc:118
ns3::AparfWifiManager::CheckInit
void CheckInit(AparfWifiRemoteStation *station)
Check for initializations.
Definition: aparf-wifi-manager.cc:176
ns3::WifiRemoteStationManager::GetHeSupported
bool GetHeSupported(void) const
Return whether the device has HE capability support enabled.
Definition: wifi-remote-station-manager.cc:256
third.phy
phy
Definition: third.py:93
ns3::AparfWifiManager::m_powerDec
uint8_t m_powerDec
Step size for decrement the power.
Definition: aparf-wifi-manager.h:96
ns3::AparfWifiManager
APARF Power and rate control algorithm.
Definition: aparf-wifi-manager.h:46
ns3::AparfWifiManager::DoReportRxOk
void DoReportRxOk(WifiRemoteStation *station, double rxSnr, WifiMode txMode) override
This method is a pure virtual method that must be implemented by the sub-class.
Definition: aparf-wifi-manager.cc:245