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"
36 struct WifiRemoteStation;
37 struct WifiRemoteStationState;
207 double ctsSnr,
WifiMode ctsMode,
double rtsSnr);
213 double ackSnr,
WifiMode ackMode,
double dataSnr);
480 double ctsSnr,
WifiMode ctsMode,
double rtsSnr) = 0;
482 double ackSnr,
WifiMode ackMode,
double dataSnr) = 0;
498 typedef std::vector <WifiRemoteStation *>
Stations;
virtual uint8_t DoGetAckTxNss(Mac48Address address, WifiMode ackMode)
uint32_t GetNSupported(const WifiRemoteStation *station) const
WifiMcsList m_bssBasicMcsSet
keep track of time values and allow control of global simulation resolution
virtual uint8_t DoGetAckTxNess(Mac48Address address, WifiMode ackMode)
uint32_t GetNFragments(const WifiMacHeader *header, Ptr< const Packet > packet)
void SetDefaultTxPowerLevel(uint8_t txPower)
std::vector< WifiRemoteStationState * > StationStates
bool GetGreenfieldSupported(Mac48Address address) const
bool m_shortGuardInterval
uint32_t m_rtsCtsThreshold
bool NeedDataRetransmission(Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet)
uint8_t GetDefaultMcs(void) const
void RecordWaitAssocTxOk(Mac48Address address)
virtual void DoReportRtsFailed(WifiRemoteStation *station)=0
WifiMode m_nonUnicastMode
void ReportDataFailed(Mac48Address address, const WifiMacHeader *header)
virtual uint8_t DoGetBlockAckTxNss(Mac48Address address, WifiMode blockAckMode)
forward calls to a chain of CallbackAn ns3::TracedCallback has almost exactly the same API as a norma...
uint32_t GetMaxSsrc(void) const
virtual bool DoGetAckTxGuardInterval(Mac48Address address, WifiMode ackMode)
WifiTxVector GetCtsTxVector(Mac48Address address, WifiMode rtsMode)
virtual uint8_t DoGetBlockAckTxNess(Mac48Address address, WifiMode blockAckMode)
enum ns3::WifiRemoteStationState::@90 m_state
WifiMode GetNonUnicastMode(void) const
uint32_t m_fragmentationThreshold
The Ht Capabilities Information ElementThis class knows how to serialise and deserialise the Ht Capab...
uint8_t m_defaultTxPowerLevel
uint8_t GetMcsSupported(const WifiRemoteStation *station, uint32_t i) const
bool GetGreenfield(const WifiRemoteStation *station) const
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
bool IsBrandNew(Mac48Address address) const
virtual void SetupPhy(Ptr< WifiPhy > phy)
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)
uint32_t GetNumberOfReceiveAntennas(const WifiRemoteStation *station) const
Tid independent remote station statistics.
WifiMode GetSupported(const WifiRemoteStation *station, uint32_t i) const
WifiRemoteStationState * LookupState(Mac48Address address) const
WifiRemoteStationState * m_state
double m_failAvg
moving percentage of failed frames
WifiTxVector GetCtsToSelfTxVector(const WifiMacHeader *header, Ptr< const Packet > packet)
void RecordDisassociated(Mac48Address address)
TracedCallback< Mac48Address > m_macTxFinalDataFailed
WifiRemoteStationManager()
bool GetStbc(const WifiRemoteStation *station) const
virtual bool DoNeedDataRetransmission(WifiRemoteStation *station, Ptr< const Packet > packet, bool normally)
virtual bool DoGetAckTxStbc(Mac48Address address, WifiMode ackMode)
virtual WifiTxVector DoGetDataTxVector(WifiRemoteStation *station, uint32_t size)=0
Time m_lastUpdate
when last update has occured
void ReportFinalDataFailed(Mac48Address address, const WifiMacHeader *header)
void SetRtsCtsThreshold(uint32_t threshold)
virtual void DoReportRtsOk(WifiRemoteStation *station, double ctsSnr, WifiMode ctsMode, double rtsSnr)=0
WifiRemoteStation * Lookup(Mac48Address address, uint8_t tid) const
double CalculateAveragingCoefficient()
Calculate averaging coefficient for frame error rate. Depends on time of the last update...
virtual bool DoGetCtsTxGuardInterval(Mac48Address address, WifiMode ctsMode)
virtual void DoReportRxOk(WifiRemoteStation *station, double rxSnr, WifiMode txMode)=0
void ReportRtsFailed(Mac48Address address, const WifiMacHeader *header)
virtual bool DoNeedRtsRetransmission(WifiRemoteStation *station, Ptr< const Packet > packet, bool normally)
virtual void DoReportDataFailed(WifiRemoteStation *station)=0
void RecordGotAssocTxFailed(Mac48Address address)
WifiMode GetBasicMode(uint32_t i) const
uint32_t GetFragmentationThreshold(void) const
void AddStationHtCapabilities(Mac48Address from, HtCapabilities htcapabilities)
WifiRemoteStationInfo GetInfo(Mac48Address address)
void SetMaxSsrc(uint32_t maxSsrc)
uint32_t GetRtsCtsThreshold(void) const
void NotifyTxSuccess(uint32_t retryCounter)
Updates average frame error rate when data or RTS was transmitted successfully.
uint32_t DoGetFragmentationThreshold(void) const
std::vector< uint8_t > WifiMcsList
WifiMcsList m_operationalMcsSet
hold a list of per-remote-station state.
WifiMode GetControlAnswerMode(Mac48Address address, WifiMode reqMode)
uint32_t GetNBasicMcs(void) const
virtual uint8_t DoGetCtsTxNss(Mac48Address address, WifiMode ctsMode)
WifiModeList m_bssBasicRateSet
void ReportDataOk(Mac48Address address, const WifiMacHeader *header, double ackSnr, WifiMode ackMode, double dataSnr)
void SetHtSupported(bool enable)
virtual uint8_t DoGetAckTxPowerLevel(Mac48Address address, WifiMode ackMode)
uint32_t GetFragmentOffset(Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fragmentNumber)
bool IsWaitAssocTxOk(Mac48Address address) const
void PrepareForQueue(Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fullPacketSize)
WifiTxVector DoGetCtsToSelfTxVector(void)
void AddSupportedMode(Mac48Address address, WifiMode mode)
WifiModeList m_operationalRateSet
uint32_t GetFragmentSize(Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fragmentNumber)
void DoSetFragmentationThreshold(uint32_t threshold)
void AddBasicMode(WifiMode mode)
TracedCallback< Mac48Address > m_macTxRtsFailed
bool IsAssociated(Mac48Address address) const
virtual bool IsLowLatency(void) const =0
std::vector< WifiMode > WifiModeList
bool GetShortGuardInterval(const WifiRemoteStation *station) const
void ReportRtsOk(Mac48Address address, const WifiMacHeader *header, double ctsSnr, WifiMode ctsMode, double rtsSnr)
TracedCallback< Mac48Address > m_macTxDataFailed
double GetFrameErrorRate() const
Returns frame error rate (probability that frame is corrupted due to transmission error)...
bool HasHtSupported(void) const
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.
bool NeedCtsToSelf(WifiTxVector txVector)
uint8_t GetDefaultTxPowerLevel(void) const
void SetMaxSlrc(uint32_t maxSlrc)
uint32_t GetNBasicModes(void) const
uint32_t GetLongRetryCount(const WifiRemoteStation *station) const
void AddSupportedMcs(Mac48Address address, uint8_t mcs)
static TypeId GetTypeId(void)
virtual bool DoGetCtsTxStbc(Mac48Address address, WifiMode ctsMode)
uint32_t GetNMcsSupported(const WifiRemoteStation *station) const
WifiMode GetDefaultMode(void) const
virtual ~WifiRemoteStationManager()
uint8_t GetBasicMcs(uint32_t i) const
void SetFragmentationThreshold(uint32_t threshold)
virtual bool DoGetBlockAckTxGuardInterval(Mac48Address address, WifiMode blockAckMode)
virtual void DoDispose(void)
WifiTxVector GetDataTxVector(Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fullPacketSize)
void ReportRxOk(Mac48Address address, const WifiMacHeader *header, double rxSnr, WifiMode txMode)
bool NeedFragmentation(Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet)
void AddBasicMcs(uint8_t mcs)
virtual bool DoGetBlockAckTxStbc(Mac48Address address, WifiMode blockAckMode)
bool NeedRtsRetransmission(Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet)
uint32_t GetShortRetryCount(const WifiRemoteStation *station) const
uint32_t GetNumberOfTransmitAntennas(void)
virtual uint8_t DoGetCtsTxNess(Mac48Address address, WifiMode ctsMode)
WifiTxVector GetRtsTxVector(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)
WifiTxVector GetBlockAckTxVector(Mac48Address address, WifiMode dataMode)
virtual uint8_t DoGetCtsTxPowerLevel(Mac48Address address, WifiMode ctsMode)
uint32_t GetMaxSlrc(void) const
virtual void DoReportFinalDataFailed(WifiRemoteStation *station)=0
virtual WifiTxVector DoGetRtsTxVector(WifiRemoteStation *station)=0
a unique identifier for an interface.
void ReportFinalRtsFailed(Mac48Address address, const WifiMacHeader *header)
WifiTxVector GetAckTxVector(Mac48Address address, WifiMode dataMode)
WifiRemoteStationInfo m_info
virtual void DoReportFinalRtsFailed(WifiRemoteStation *station)=0
hold per-remote-station state.
virtual WifiRemoteStation * DoCreateStation(void) const =0
void RecordGotAssocTxOk(Mac48Address address)
virtual uint8_t DoGetBlockAckTxPowerLevel(Mac48Address address, WifiMode blockAckMode)
virtual void DoReportDataOk(WifiRemoteStation *station, double ackSnr, WifiMode ackMode, double dataSnr)=0
std::vector< WifiRemoteStation * > Stations