38     .SetGroupName (
"Wifi")
 
   51   double z = std::sqrt (snr);
 
   52   double ber = 0.5 * erfc (z);
 
   59   double z = std::sqrt (snr / 2.0);
 
   60   double ber = 0.5 * erfc (z);
 
   67   double z = std::sqrt (snr / (5.0 * 2.0));
 
   68   double ber = 0.75 * 0.5 * erfc (z);
 
   69   NS_LOG_INFO (
"16-Qam" << 
" snr=" << snr << 
" ber=" << ber);
 
   75   double z = std::sqrt (snr / (21.0 * 2.0));
 
   76   double ber = 7.0 / 12.0 * 0.5 * erfc (z);
 
   77   NS_LOG_INFO (
"64-Qam" << 
" snr=" << snr << 
" ber=" << ber);
 
   82                                    uint32_t bValue)
 const 
   90   pe = std::min (pe, 1.0);
 
   91   double pms = std::pow (1 - pe, (
double)nbits);
 
   96                                    uint32_t bValue)
 const 
  104   pe = std::min (pe, 1.0);
 
  105   double pms = std::pow (1 - pe, (
double)nbits);
 
  111   double D = std::sqrt (4.0 * p * (1.0 - p));
 
  116       pe = 0.5 * ( 36.0 * std::pow (D, 10)
 
  117                    + 211.0 * std::pow (D, 12)
 
  118                    + 1404.0 * std::pow (D, 14)
 
  119                    + 11633.0 * std::pow (D, 16)
 
  120                    + 77433.0 * std::pow (D, 18)
 
  121                    + 502690.0 * std::pow (D, 20)
 
  122                    + 3322763.0 * std::pow (D, 22)
 
  123                    + 21292910.0 * std::pow (D, 24)
 
  124                    + 134365911.0 * std::pow (D, 26)
 
  127   else if (bValue == 2)
 
  130       pe = 1.0 / (2.0 * bValue) *
 
  131         ( 3.0 * std::pow (D, 6)
 
  132           + 70.0 * std::pow (D, 7)
 
  133           + 285.0 * std::pow (D, 8)
 
  134           + 1276.0 * std::pow (D, 9)
 
  135           + 6160.0 * std::pow (D, 10)
 
  136           + 27128.0 * std::pow (D, 11)
 
  137           + 117019.0 * std::pow (D, 12)
 
  138           + 498860.0 * std::pow (D, 13)
 
  139           + 2103891.0 * std::pow (D, 14)
 
  140           + 8784123.0 * std::pow (D, 15)
 
  143   else if (bValue == 3)
 
  146       pe = 1.0 / (2.0 * bValue) *
 
  147         ( 42.0 * std::pow (D, 5)
 
  148           + 201.0 * std::pow (D, 6)
 
  149           + 1492.0 * std::pow (D, 7)
 
  150           + 10469.0 * std::pow (D, 8)
 
  151           + 62935.0 * std::pow (D, 9)
 
  152           + 379644.0 * std::pow (D, 10)
 
  153           + 2253373.0 * std::pow (D, 11)
 
  154           + 13073811.0 * std::pow (D, 12)
 
  155           + 75152755.0 * std::pow (D, 13)
 
  156           + 428005675.0 * std::pow (D, 14)
 
  159   else if (bValue == 5)
 
  163       pe = 1.0 / (2.0 * bValue) *
 
  164         ( 92.0 * std::pow (D, 4.0)
 
  165           + 528.0 * std::pow (D, 5.0)
 
  166           + 8694.0 * std::pow (D, 6.0)
 
  167           + 79453.0 * std::pow (D, 7.0)
 
  168           + 792114.0 * std::pow (D, 8.0)
 
  169           + 7375573.0 * std::pow (D, 9.0)
 
  170           + 67884974.0 * std::pow (D, 10.0)
 
  171           + 610875423.0 * std::pow (D, 11.0)
 
  172           + 5427275376.0 * std::pow (D, 12.0)
 
  173           + 47664215639.0 * std::pow (D, 13.0)
 
  185                                     uint32_t bValue)
 const 
  193   pe = std::min (pe, 1.0);
 
  194   double pms = std::pow (1 - pe, static_cast<double> (nbits));
 
  199                                     uint32_t bValue)
 const 
  207   pe = std::min (pe, 1.0);
 
  208   double pms = std::pow (1 - pe, static_cast<double> (nbits));
 
double GetQpskBer(double snr) const 
Return BER of QPSK at the given SNR. 
static double GetDsssDqpskCck11SuccessRate(double sinr, uint32_t nbits)
Return the chunk success rate of the differential encoded QPSK for 11Mbps data rate. 
static TypeId GetTypeId(void)
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system. 
enum WifiModulationClass GetModulationClass() const 
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name. 
static double GetDsssDqpskSuccessRate(double sinr, uint32_t nbits)
Return the chunk success rate of the differential encoded QPSK. 
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO. 
double GetFec64QamBer(double snr, uint32_t nbits, uint32_t bValue) const 
Return BER of QAM64 at the given SNR after applying FEC. 
double GetFec16QamBer(double snr, uint32_t nbits, uint32_t bValue) const 
Return BER of QAM16 at the given SNR after applying FEC. 
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
the interface for Wifi's error models 
double CalculatePe(double p, uint32_t bValue) const 
Return the coded BER for the given p and b. 
enum WifiCodeRate GetCodeRate(void) const 
double Get16QamBer(double snr) const 
Return BER of QAM16 at the given SNR. 
A model for the error rate for different modulations. 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
uint8_t GetConstellationSize(void) const 
double GetFecQpskBer(double snr, uint32_t nbits, uint32_t bValue) const 
Return BER of QPSK at the given SNR after applying FEC. 
double Get64QamBer(double snr) const 
Return BER of QAM64 at the given SNR. 
static double GetDsssDqpskCck5_5SuccessRate(double sinr, uint32_t nbits)
Return the chunk success rate of the differential encoded QPSK for 5.5Mbps data rate. 
double GetFecBpskBer(double snr, uint32_t nbits, uint32_t bValue) const 
Return BER of BPSK at the given SNR after applying FEC. 
static double GetDsssDbpskSuccessRate(double sinr, uint32_t nbits)
Return the chunk success rate of the differential BPSK. 
a unique identifier for an interface. 
uint64_t GetDataRate(void) const 
TypeId SetParent(TypeId tid)
DSSS PHY (Clause 15) and HR/DSSS PHY (Clause 18) 
virtual double GetChunkSuccessRate(WifiMode mode, double snr, uint32_t nbits) const 
A pure virtual method that must be implemented in the subclass. 
double GetBpskBer(double snr) const 
Return BER of BPSK at the given SNR.