|
A Discrete-Event Network Simulator
|
API
|
Go to the documentation of this file.
38 .SetGroupName (
"Wifi")
52 double EbNo = snr * signalSpread / phyRate;
53 double z = std::sqrt (EbNo);
54 double ber = 0.5 * erfc (z);
63 double EbNo = snr * signalSpread / phyRate;
64 double z = std::sqrt ((1.5 * log2 (m) * EbNo) / (m - 1.0));
65 double z1 = ((1.0 - 1.0 / std::sqrt (m)) * erfc (z));
66 double z2 = 1 - std::pow ((1 - z1), 2);
67 double ber = z2 / log2 (m);
68 NS_LOG_INFO (
"Qam m=" << m <<
" rate=" << phyRate <<
" snr=" << snr <<
" ber=" << ber);
95 unsigned int dstart = (d + 1) / 2;
96 unsigned int dend = d;
99 for (
unsigned int i = dstart; i < dend; i++)
110 unsigned int dstart = d / 2 + 1;
111 unsigned int dend = d;
114 for (
unsigned int i = dstart; i < dend; i++)
118 pd += 0.5 *
Binomial (d / 2, ber, d);
141 uint32_t signalSpread, uint64_t phyRate,
142 uint32_t dFree, uint32_t adFree)
const
144 NS_LOG_FUNCTION (
this << snr << nbits << signalSpread << phyRate << dFree << adFree);
145 double ber =
GetBpskBer (snr, signalSpread, phyRate);
151 double pmu = adFree * pd;
153 double pms = std::pow (1 - pmu, nbits);
159 uint32_t signalSpread,
161 uint32_t m, uint32_t dFree,
162 uint32_t adFree, uint32_t adFreePlusOne)
const
164 NS_LOG_FUNCTION (
this << snr << nbits << signalSpread << phyRate << m << dFree << adFree << adFreePlusOne);
165 double ber =
GetQamBer (snr, m, signalSpread, phyRate);
172 double pmu = adFree * pd;
175 pmu += adFreePlusOne * pd;
177 double pms = std::pow (1 - pmu, nbits);
184 NS_LOG_FUNCTION (
this << mode << txVector << snr << nbits << +numRxAntennas << field << staId);
a unique identifier for an interface.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
double GetBpskBer(double snr, uint32_t signalSpread, uint64_t phyRate) const
Return BER of BPSK with the given parameters.
Model the error rate for different modulations.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
@ WIFI_MOD_CLASS_ERP_OFDM
ERP-OFDM (18.4)
const uint16_t WIFI_CODE_RATE_5_6
5/6 coding rate
Every class exported by the ns3 library is enclosed in the ns3 namespace.
WifiCodeRate GetCodeRate(void) const
WifiModulationClass GetModulationClass() const
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
double CalculatePd(double ber, unsigned int d) const
double DoGetChunkSuccessRate(WifiMode mode, const WifiTxVector &txVector, double snr, uint64_t nbits, uint8_t numRxAntennas, WifiPpduField field, uint16_t staId) const override
A pure virtual method that must be implemented in the subclass.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
double CalculatePdEven(double ber, unsigned int d) const
represent a single transmission mode
double GetFecBpskBer(double snr, uint64_t nbits, uint32_t signalSpread, uint64_t phyRate, uint32_t dFree, uint32_t adFree) const
double GetFecQamBer(double snr, uint64_t nbits, uint32_t signalSpread, uint64_t phyRate, uint32_t m, uint32_t dfree, uint32_t adFree, uint32_t adFreePlusOne) const
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
const uint16_t WIFI_CODE_RATE_2_3
2/3 coding rate
the interface for Wifi's error models
uint16_t GetChannelWidth(void) const
uint64_t GetPhyRate(uint16_t channelWidth, uint16_t guardInterval, uint8_t nss) const
WifiPpduField
The type of PPDU field (grouped for convenience)
bool IsMu(void) const
Return true if this TX vector is used for a multi-user transmission.
double CalculatePdOdd(double ber, unsigned int d) const
const uint16_t WIFI_CODE_RATE_1_2
1/2 coding rate
double GetQamBer(double snr, unsigned int m, uint32_t signalSpread, uint64_t phyRate) const
Return BER of QAM-m with the given parameters.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
double Binomial(uint32_t k, double p, uint32_t n) const
Return Binomial distribution for a given k, p, and n.
uint32_t Factorial(uint32_t k) const
Return k!
static TypeId GetTypeId(void)
Get the type ID.
WifiMode GetMode(uint16_t staId=SU_STA_ID) const
If this TX vector is associated with an SU PPDU, return the selected payload transmission mode.
uint16_t GetConstellationSize(void) const