A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
arf-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 ARF_WIFI_MANAGER_H
10#define ARF_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 * @ingroup wifi
20 * @brief ARF Rate control algorithm
21 *
22 * This class implements the so-called ARF algorithm which was
23 * initially described in <i>WaveLAN-II: A High-performance wireless
24 * LAN for the unlicensed band</i>, by A. Kamerman and L. Monteban. in
25 * Bell Lab Technical Journal, pages 118-133, Summer 1997.
26 *
27 * This implementation differs from the initial description in that it
28 * uses a packet-based timer rather than a time-based timer as described
29 * in XXX (I cannot find back the original paper which described how
30 * the time-based timer could be easily replaced with a packet-based
31 * timer.)
32 *
33 * This RAA does not support HT modes and will error
34 * exit if the user tries to configure this RAA with a Wi-Fi MAC
35 * that supports 802.11n or higher.
36 */
38{
39 public:
40 /**
41 * @brief Get the type ID.
42 * @return the object TypeId
43 */
44 static TypeId GetTypeId();
46 ~ArfWifiManager() override;
47
48 private:
49 void DoInitialize() override;
50 WifiRemoteStation* DoCreateStation() const override;
51 void DoReportRxOk(WifiRemoteStation* station, double rxSnr, WifiMode txMode) override;
55 double ctsSnr,
57 double rtsSnr) override;
59 double ackSnr,
61 double dataSnr,
63 uint8_t dataNss) override;
68
69 uint32_t m_timerThreshold; ///< timer threshold
70 uint32_t m_successThreshold; ///< success threshold
71
72 TracedValue<uint64_t> m_currentRate; //!< Trace rate changes
73};
74
75} // namespace ns3
76
77#endif /* ARF_WIFI_MANAGER_H */
ARF Rate control algorithm.
static TypeId GetTypeId()
Get the type ID.
void DoReportFinalRtsFailed(WifiRemoteStation *station) override
This method is a pure virtual method that must be implemented by the sub-class.
void DoReportRtsFailed(WifiRemoteStation *station) 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 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.
uint32_t m_successThreshold
success threshold
void DoInitialize() override
Initialize() implementation.
WifiTxVector DoGetDataTxVector(WifiRemoteStation *station, MHz_u allowedWidth) override
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_timerThreshold
timer threshold
void DoReportFinalDataFailed(WifiRemoteStation *station) override
This method is a pure virtual method that must be implemented by the sub-class.
void DoReportRxOk(WifiRemoteStation *station, double rxSnr, WifiMode txMode) override
This method is a pure virtual method that must be implemented by the sub-class.
void DoReportDataFailed(WifiRemoteStation *station) override
It is important to realize that "recovery" mode starts after failure of the first transmission after ...
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.