20 #ifndef WIFI_REMOTE_STATION_MANAGER_H
21 #define WIFI_REMOTE_STATION_MANAGER_H
25 #include "ns3/mac48-address.h"
26 #include "ns3/traced-callback.h"
27 #include "ns3/packet.h"
28 #include "ns3/object.h"
29 #include "ns3/nstime.h"
30 #include "wifi-mode.h"
34 struct WifiRemoteStation;
35 struct WifiRemoteStationState;
84 static TypeId GetTypeId (
void);
91 uint32_t GetMaxSsrc (
void)
const;
92 uint32_t GetMaxSlrc (
void)
const;
93 uint32_t GetRtsCtsThreshold (
void)
const;
94 uint32_t GetFragmentationThreshold (
void)
const;
95 void SetMaxSsrc (uint32_t maxSsrc);
96 void SetMaxSlrc (uint32_t maxSlrc);
97 void SetRtsCtsThreshold (uint32_t threshold);
98 void SetFragmentationThreshold (uint32_t threshold);
110 WifiMode GetDefaultMode (
void)
const;
111 uint32_t GetNBasicModes (
void)
const;
112 WifiMode GetBasicMode (uint32_t i)
const;
114 WifiMode GetNonUnicastMode (
void)
const;
185 double ctsSnr,
WifiMode ctsMode,
double rtsSnr);
191 double ackSnr,
WifiMode ackMode,
double dataSnr);
383 double ctsSnr,
WifiMode ctsMode,
double rtsSnr) = 0;
385 double ackSnr,
WifiMode ackMode,
double dataSnr) = 0;
397 void DoSetFragmentationThreshold (uint32_t threshold);
398 uint32_t DoGetFragmentationThreshold (
void)
const;
401 typedef std::vector <WifiRemoteStation *> Stations;
402 typedef std::vector <WifiRemoteStationState *> StationStates;
404 StationStates m_states;
430 uint32_t m_rtsCtsThreshold;
431 uint32_t m_fragmentationThreshold;
433 double m_avgSlrcCoefficient;
bool NeedDataRetransmission(Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet)
WifiMode GetCtsMode(Mac48Address address, WifiMode rtsMode)
void ReportDataFailed(Mac48Address address, const WifiMacHeader *header)
forward calls to a chain of CallbackAn ns3::TracedCallback has almost exactly the same API as a norma...
Time m_memoryTime
averaging coefficient depends on the memory time
bool IsLastFragment(Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fragmentNumber)
TracedCallback< Mac48Address > m_macTxFinalRtsFailed
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
virtual bool DoNeedRts(WifiRemoteStation *station, Ptr< const Packet > packet, bool normally)
Tid independent remote station statistics.
double m_failAvg
moving percentage of failed frames
TracedCallback< Mac48Address > m_macTxFinalDataFailed
virtual bool DoNeedDataRetransmission(WifiRemoteStation *station, Ptr< const Packet > packet, bool normally)
Time m_lastUpdate
when last update has occured
void ReportFinalDataFailed(Mac48Address address, const WifiMacHeader *header)
double CalculateAveragingCoefficient()
Calculate averaging coefficient for frame error rate. Depends on time of the last update...
void ReportRtsFailed(Mac48Address address, const WifiMacHeader *header)
virtual bool DoNeedRtsRetransmission(WifiRemoteStation *station, Ptr< const Packet > packet, bool normally)
void NotifyTxSuccess(uint32_t retryCounter)
Updates average frame error rate when data or RTS was transmitted successfully.
hold a list of per-remote-station state.
WifiMode GetControlAnswerMode(Mac48Address address, WifiMode reqMode)
WifiModeList m_bssBasicRateSet
void ReportDataOk(Mac48Address address, const WifiMacHeader *header, double ackSnr, WifiMode ackMode, double dataSnr)
virtual WifiMode DoGetRtsMode(WifiRemoteStation *station)=0
uint32_t GetFragmentOffset(Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fragmentNumber)
void PrepareForQueue(Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fullPacketSize)
void AddSupportedMode(Mac48Address address, WifiMode mode)
WifiModeList m_operationalRateSet
uint32_t GetFragmentSize(Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fragmentNumber)
TracedCallback< Mac48Address > m_macTxRtsFailed
virtual bool IsLowLatency(void) const =0
std::vector< WifiMode > WifiModeList
void ReportRtsOk(Mac48Address address, const WifiMacHeader *header, double ctsSnr, WifiMode ctsMode, double rtsSnr)
WifiMode GetDataMode(Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fullPacketSize)
TracedCallback< Mac48Address > m_macTxDataFailed
double GetFrameErrorRate() const
Returns frame error rate (probability that frame is corrupted due to transmission error)...
virtual bool DoNeedFragmentation(WifiRemoteStation *station, Ptr< const Packet > packet, bool normally)
void NotifyTxFailed()
Updates average frame error rate when final data or RTS has failed.
WifiMode GetRtsMode(Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet)
virtual WifiMode DoGetDataMode(WifiRemoteStation *station, uint32_t size)=0
virtual void DoDispose(void)
WifiMode GetAckMode(Mac48Address address, WifiMode dataMode)
void ReportRxOk(Mac48Address address, const WifiMacHeader *header, double rxSnr, WifiMode txMode)
bool NeedFragmentation(Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet)
bool NeedRtsRetransmission(Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet)
a base class which provides memory management and object aggregation
bool NeedRts(Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet)
a unique identifier for an interface.
void ReportFinalRtsFailed(Mac48Address address, const WifiMacHeader *header)
hold per-remote-station state.
virtual WifiRemoteStation * DoCreateStation(void) const =0