A model for the error rate for different modulations. More...
#include "nist-error-rate-model.h"
Public Member Functions | |
NistErrorRateModel () | |
Public Member Functions inherited from ns3::ErrorRateModel | |
virtual int64_t | AssignStreams (int64_t stream) |
Assign a fixed random variable stream number to the random variables used by this model. More... | |
double | CalculateSnr (const WifiTxVector &txVector, double ber) const |
double | GetChunkSuccessRate (WifiMode mode, const WifiTxVector &txVector, double snr, uint64_t nbits, uint8_t numRxAntennas=1, WifiPpduField field=WIFI_PPDU_FIELD_DATA, uint16_t staId=SU_STA_ID) const |
This method returns the probability that the given 'chunk' of the packet will be successfully received by the PHY. More... | |
virtual bool | IsAwgn () const |
Public Member Functions inherited from ns3::Object | |
Object () | |
Constructor. More... | |
~Object () override | |
Destructor. More... | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. More... | |
void | Dispose () |
Dispose of this Object. More... | |
AggregateIterator | GetAggregateIterator () const |
Get an iterator to the Objects aggregated to this one. More... | |
TypeId | GetInstanceTypeId () const override |
Get the most derived TypeId for this Object. More... | |
template<typename T > | |
Ptr< T > | GetObject () const |
Get a pointer to the requested aggregated Object. More... | |
template<> | |
Ptr< Object > | GetObject () const |
Specialization of () for objects of type ns3::Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. More... | |
template<> | |
Ptr< Object > | GetObject (TypeId tid) const |
Specialization of (TypeId tid) for objects of type ns3::Object. More... | |
void | Initialize () |
Invoke DoInitialize on all Objects aggregated to this one. More... | |
bool | IsInitialized () const |
Check if the object has been initialized. More... | |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount () | |
Default constructor. More... | |
SimpleRefCount (const SimpleRefCount &o[[maybe_unused]]) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount () const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o[[maybe_unused]]) |
Assignment operator. More... | |
void | Ref () const |
Increment the reference count. More... | |
void | Unref () const |
Decrement the reference count. More... | |
Public Member Functions inherited from ns3::ObjectBase | |
virtual | ~ObjectBase () |
Virtual destructor. More... | |
void | GetAttribute (std::string name, AttributeValue &value) const |
Get the value of an attribute, raising fatal errors if unsuccessful. More... | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising errors. More... | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. More... | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. More... | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. More... | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. More... | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. More... | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. More... | |
Static Public Member Functions | |
static TypeId | GetTypeId () |
Get the type ID. More... | |
Static Public Member Functions inherited from ns3::ErrorRateModel | |
static TypeId | GetTypeId () |
Get the type ID. More... | |
Static Public Member Functions inherited from ns3::Object | |
static TypeId | GetTypeId () |
Register this type. More... | |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId () |
Get the type ID. More... | |
Private Member Functions | |
double | CalculatePe (double p, uint8_t bValue) const |
Return the coded BER for the given p and b. More... | |
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. More... | |
double | GetBpskBer (double snr) const |
Return BER of BPSK at the given SNR. More... | |
uint8_t | GetBValue (WifiCodeRate codeRate) const |
Return the bValue such that coding rate = bValue / (bValue + 1). More... | |
double | GetFecBpskBer (double snr, uint64_t nbits, uint8_t bValue) const |
Return BER of BPSK at the given SNR after applying FEC. More... | |
double | GetFecQamBer (uint16_t constellationSize, double snr, uint64_t nbits, uint8_t bValue) const |
Return BER of QAM for a given constellation size at the given SNR after applying FEC. More... | |
double | GetFecQpskBer (double snr, uint64_t nbits, uint8_t bValue) const |
Return BER of QPSK at the given SNR after applying FEC. More... | |
double | GetQamBer (uint16_t constellationSize, double snr) const |
Return BER of QAM for a given constellation size at the given SNR. More... | |
double | GetQpskBer (double snr) const |
Return BER of QPSK at the given SNR. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
Copy an Object. More... | |
virtual void | DoDispose () |
Destructor implementation. More... | |
virtual void | DoInitialize () |
Initialize() implementation. More... | |
virtual void | NotifyNewAggregate () |
Notify all Objects aggregated to this one of a new Object being aggregated. More... | |
Protected Member Functions inherited from ns3::ObjectBase | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. More... | |
virtual void | NotifyConstructionCompleted () |
Notifier called once the ObjectBase is fully constructed. More... | |
Related Functions inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
A model for the error rate for different modulations.
For OFDM modulation, the model description and validation can be found in http://www.nsnam.org/~pei/80211ofdm.pdf. For DSSS modulations (802.11b), the model uses the DsssErrorRateModel.
Definition at line 37 of file nist-error-rate-model.h.
ns3::NistErrorRateModel::NistErrorRateModel | ( | ) |
Definition at line 47 of file nist-error-rate-model.cc.
|
private |
Return the coded BER for the given p and b.
p | the SNR ratio (in linear scale) |
bValue | such that coding rate = bValue / (bValue + 1) |
Definition at line 115 of file nist-error-rate-model.cc.
References NS_ASSERT, and NS_LOG_FUNCTION.
Referenced by GetFecBpskBer(), GetFecQamBer(), and GetFecQpskBer().
|
overrideprivatevirtual |
A pure virtual method that must be implemented in the subclass.
mode | the Wi-Fi mode applicable to this chunk |
txVector | TXVECTOR of the overall transmission |
snr | the SNR of the chunk |
nbits | the number of bits in this chunk |
numRxAntennas | the number of active RX antennas |
field | the PPDU field to which the chunk belongs to |
staId | the station ID for MU |
Implements ns3::ErrorRateModel.
Definition at line 205 of file nist-error-rate-model.cc.
References GetBValue(), ns3::WifiMode::GetCodeRate(), ns3::WifiMode::GetConstellationSize(), GetFecBpskBer(), GetFecQamBer(), GetFecQpskBer(), ns3::WifiMode::GetModulationClass(), NS_LOG_FUNCTION, and ns3::WIFI_MOD_CLASS_ERP_OFDM.
|
private |
Return BER of BPSK at the given SNR.
snr | SNR ratio (in linear scale) |
Definition at line 52 of file nist-error-rate-model.cc.
References NS_LOG_FUNCTION, and NS_LOG_INFO.
Referenced by GetFecBpskBer().
|
private |
Return the bValue such that coding rate = bValue / (bValue + 1).
codeRate | the coding rate |
Definition at line 184 of file nist-error-rate-model.cc.
References NS_FATAL_ERROR, ns3::WIFI_CODE_RATE_1_2, ns3::WIFI_CODE_RATE_2_3, ns3::WIFI_CODE_RATE_3_4, ns3::WIFI_CODE_RATE_5_6, and ns3::WIFI_CODE_RATE_UNDEFINED.
Referenced by DoGetChunkSuccessRate().
|
private |
Return BER of BPSK at the given SNR after applying FEC.
snr | SNR ratio (in linear scale) |
nbits | the number of bits in the chunk |
bValue | the bValue such that coding rate = bValue / (bValue + 1) |
Definition at line 85 of file nist-error-rate-model.cc.
References CalculatePe(), GetBpskBer(), min, and NS_LOG_FUNCTION.
Referenced by DoGetChunkSuccessRate().
|
private |
Return BER of QAM for a given constellation size at the given SNR after applying FEC.
constellationSize | the constellation size (M) |
snr | SNR ratio (in linear scale) |
nbits | the number of bits in the chunk |
bValue | the bValue such that coding rate = bValue / (bValue + 1) |
Definition at line 166 of file nist-error-rate-model.cc.
References CalculatePe(), GetQamBer(), min, and NS_LOG_FUNCTION.
Referenced by DoGetChunkSuccessRate().
|
private |
Return BER of QPSK at the given SNR after applying FEC.
snr | SNR ratio (in linear scale) |
nbits | the number of bits in the chunk |
bValue | the bValue such that coding rate = bValue / (bValue + 1) |
Definition at line 100 of file nist-error-rate-model.cc.
References CalculatePe(), GetQpskBer(), min, and NS_LOG_FUNCTION.
Referenced by DoGetChunkSuccessRate().
|
private |
Return BER of QAM for a given constellation size at the given SNR.
constellationSize | the constellation size (M) |
snr | SNR ratio (in linear scale) |
Definition at line 72 of file nist-error-rate-model.cc.
References NS_ASSERT, NS_LOG_FUNCTION, and NS_LOG_INFO.
Referenced by GetFecQamBer().
|
private |
Return BER of QPSK at the given SNR.
snr | SNR ratio (in linear scale) |
Definition at line 62 of file nist-error-rate-model.cc.
References NS_LOG_FUNCTION, and NS_LOG_INFO.
Referenced by GetFecQpskBer().
|
static |
Get the type ID.
Definition at line 38 of file nist-error-rate-model.cc.
References ns3::TypeId::SetParent().