22 #include "ns3/assert.h" 
   23 #include "ns3/double.h" 
   26 #define Min(a,b) ((a < b) ? a : b) 
   48     .AddConstructor<IdealWifiManager> ()
 
   49     .AddAttribute (
"BerThreshold",
 
   50                    "The maximum Bit Error Rate acceptable at any transmission mode",
 
   53                    MakeDoubleChecker<double> ())
 
   69   for (uint32_t i = 0; i < nModes; i++)
 
   83       if (mode == i->second)
 
  122                                  double ctsSnr, 
WifiMode ctsMode, 
double rtsSnr)
 
  129                                   double ackSnr, 
WifiMode ackMode, 
double dataSnr)
 
  150   double maxThreshold = 0.0;
 
  156       if (threshold > maxThreshold
 
  157           && threshold < station->m_lastSnr)
 
  159           maxThreshold = threshold;
 
  172   double maxThreshold = 0.0;
 
  178       if (threshold > maxThreshold
 
  179           && threshold < station->m_lastSnr)
 
  181           maxThreshold = threshold;
 
virtual void DoReportFinalDataFailed(WifiRemoteStation *station)
This method is a pure virtual method that must be implemented by the sub-class. 
uint32_t GetNSupported(const WifiRemoteStation *station) const 
Return the number of modes supported by the given station. 
virtual bool IsLowLatency(void) const 
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register the class in the ns-3 factory. 
virtual void DoReportFinalRtsFailed(WifiRemoteStation *station)
This method is a pure virtual method that must be implemented by the sub-class. 
double GetSnrThreshold(WifiMode mode) const 
Return the minimum SNR needed to successfully transmit data with this mode at the specified BER...
virtual uint32_t GetNModes(void) const =0
The WifiPhy::GetNModes() and WifiPhy::GetMode() methods are used (e.g., by a WifiRemoteStationManager...
virtual void SetupPhy(Ptr< WifiPhy > phy)
Set up PHY associated with this device since it is the object that knows the full set of transmit rat...
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
virtual double CalculateSnr(WifiMode txMode, double ber) const =0
virtual void DoReportRtsOk(WifiRemoteStation *station, double ctsSnr, WifiMode ctsMode, double rtsSnr)
This method is a pure virtual method that must be implemented by the sub-class. 
hold per-remote-station state for Ideal Wifi manager. 
virtual void SetupPhy(Ptr< WifiPhy > phy)
Set up PHY associated with this device since it is the object that knows the full set of transmit rat...
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
uint32_t GetNumberOfReceiveAntennas(const WifiRemoteStation *station) const 
Return the number of receive antenna the station has. 
WifiMode GetSupported(const WifiRemoteStation *station, uint32_t i) const 
Return whether mode associated with the specified station at the specified index. ...
virtual void DoReportRxOk(WifiRemoteStation *station, double rxSnr, WifiMode txMode)
This method is a pure virtual method that must be implemented by the sub-class. 
bool GetStbc(const WifiRemoteStation *station) const 
Return whether the given station supports space-time block coding (STBC). 
int64x64_t Min(const int64x64_t &a, const int64x64_t &b)
Minimum. 
static TypeId GetTypeId(void)
double m_ber
The maximum Bit Error Rate acceptable at any transmission mode. 
WifiMode GetBasicMode(uint32_t i) const 
Return a basic mode from the set of basic modes. 
Thresholds m_thresholds
List of WifiMode and the minimum SNR pair. 
hold a list of per-remote-station state. 
virtual void DoReportDataOk(WifiRemoteStation *station, double ackSnr, WifiMode ackMode, double dataSnr)
This method is a pure virtual method that must be implemented by the sub-class. 
virtual WifiRemoteStation * DoCreateStation(void) const 
virtual WifiMode GetMode(uint32_t mode) const =0
The WifiPhy::GetNModes() and WifiPhy::GetMode() methods are used (e.g., by a WifiRemoteStationManager...
bool GetShortGuardInterval(const WifiRemoteStation *station) const 
Return whether the given station supports short guard interval. 
virtual WifiTxVector DoGetDataTxVector(WifiRemoteStation *station, uint32_t size)
virtual WifiTxVector DoGetRtsTxVector(WifiRemoteStation *station)
uint8_t GetDefaultTxPowerLevel(void) const 
uint32_t GetNBasicModes(void) const 
Return the number of basic modes we support. 
uint32_t GetLongRetryCount(const WifiRemoteStation *station) const 
Return the long retry limit of the given station. 
WifiMode GetDefaultMode(void) const 
Return the default transmission mode. 
Ideal rate control algorithmThis class implements an 'ideal' rate control algorithm similar to RBAR i...
uint32_t GetShortRetryCount(const WifiRemoteStation *station) const 
Return the short retry limit of the given station. 
virtual ~IdealWifiManager()
uint32_t GetNumberOfTransmitAntennas(void)
virtual void DoReportDataFailed(WifiRemoteStation *station)
This method is a pure virtual method that must be implemented by the sub-class. 
double m_lastSnr
SNR of last packet sent to the remote station. 
Hold a floating point type. 
void AddModeSnrThreshold(WifiMode mode, double snr)
Adds a pair of WifiMode and the minimum SNR for that given mode to the list. 
a unique identifier for an interface. 
virtual void DoReportRtsFailed(WifiRemoteStation *station)
This method is a pure virtual method that must be implemented by the sub-class. 
TypeId SetParent(TypeId tid)
hold per-remote-station state.