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