22 #include "ns3/nist-error-rate-model.h" 23 #include "ns3/dsss-error-rate-model.h" 24 #include "ns3/wifi-phy.h" 25 #include "ns3/wifi-utils.h" 34 double noisePowerDbw = -100.5522786 + 7;
36 double sinrDb = rssDbw - noisePowerDbw;
38 return pow (10.0, sinrDb / 10.0);
54 virtual void DoRun (
void);
58 :
TestCase (
"WifiErrorRateModel test case DSSS")
71 uint64_t size = (1024 + 40 + 14) * 8;
76 value = DsssErrorRateModel::GetDsssDbpskSuccessRate (
FromRss (-105.0), size);
78 value = DsssErrorRateModel::GetDsssDbpskSuccessRate (
FromRss (-100.0), size);
80 value = DsssErrorRateModel::GetDsssDbpskSuccessRate (
FromRss (-99.0), size);
82 value = DsssErrorRateModel::GetDsssDbpskSuccessRate (
FromRss (-98.0), size);
84 value = DsssErrorRateModel::GetDsssDbpskSuccessRate (
FromRss (-97.0), size);
86 value = DsssErrorRateModel::GetDsssDbpskSuccessRate (
FromRss (-96.0), size);
88 value = DsssErrorRateModel::GetDsssDbpskSuccessRate (
FromRss (-95.0), size);
90 value = DsssErrorRateModel::GetDsssDbpskSuccessRate (
FromRss (-90.0), size);
95 value = DsssErrorRateModel::GetDsssDqpskSuccessRate (
FromRss (-96.0), size);
97 value = DsssErrorRateModel::GetDsssDqpskSuccessRate (
FromRss (-95.0), size);
99 value = DsssErrorRateModel::GetDsssDqpskSuccessRate (
FromRss (-94.0), size);
101 value = DsssErrorRateModel::GetDsssDqpskSuccessRate (
FromRss (-93.0), size);
103 value = DsssErrorRateModel::GetDsssDqpskSuccessRate (
FromRss (-92.0), size);
105 value = DsssErrorRateModel::GetDsssDqpskSuccessRate (
FromRss (-91.0), size);
107 value = DsssErrorRateModel::GetDsssDqpskSuccessRate (
FromRss (-90.0), size);
109 value = DsssErrorRateModel::GetDsssDqpskSuccessRate (
FromRss (-89.0), size);
114 value = DsssErrorRateModel::GetDsssDqpskCck5_5SuccessRate (
FromRss (-94.0), size);
116 value = DsssErrorRateModel::GetDsssDqpskCck5_5SuccessRate (
FromRss (-93.0), size);
118 value = DsssErrorRateModel::GetDsssDqpskCck5_5SuccessRate (
FromRss (-92.0), size);
120 value = DsssErrorRateModel::GetDsssDqpskCck5_5SuccessRate (
FromRss (-91.0), size);
122 value = DsssErrorRateModel::GetDsssDqpskCck5_5SuccessRate (
FromRss (-90.0), size);
124 value = DsssErrorRateModel::GetDsssDqpskCck5_5SuccessRate (
FromRss (-89.0), size);
126 value = DsssErrorRateModel::GetDsssDqpskCck5_5SuccessRate (
FromRss (-88.0), size);
128 value = DsssErrorRateModel::GetDsssDqpskCck5_5SuccessRate (
FromRss (-87.0), size);
132 value = DsssErrorRateModel::GetDsssDqpskCck11SuccessRate (
FromRss (-91.0), size);
134 value = DsssErrorRateModel::GetDsssDqpskCck11SuccessRate (
FromRss (-90.0), size);
136 value = DsssErrorRateModel::GetDsssDqpskCck11SuccessRate (
FromRss (-89.0), size);
138 value = DsssErrorRateModel::GetDsssDqpskCck11SuccessRate (
FromRss (-88.0), size);
140 value = DsssErrorRateModel::GetDsssDqpskCck11SuccessRate (
FromRss (-87.0), size);
142 value = DsssErrorRateModel::GetDsssDqpskCck11SuccessRate (
FromRss (-86.0), size);
144 value = DsssErrorRateModel::GetDsssDqpskCck11SuccessRate (
FromRss (-85.0), size);
146 value = DsssErrorRateModel::GetDsssDqpskCck11SuccessRate (
FromRss (-84.0), size);
164 virtual void DoRun (
void);
168 :
TestCase (
"WifiErrorRateModel test case NIST")
180 uint32_t FrameSize = 2000;
297 using InterferenceHelper::InterferenceHelper;
298 using InterferenceHelper::CalculateChunkSuccessRate;
299 using InterferenceHelper::CalculateSnr;
315 virtual void DoRun (
void);
319 :
TestCase (
"WifiErrorRateModel test case MIMO")
332 WifiMode mode = WifiPhy::GetHtMcs0 ();
346 double initialSnr = 4.0;
352 double sisoChunkSuccess = chunkSuccess;
466 :
TestSuite (
"wifi-error-rate-models", UNIT)
Simulation virtual time values and global simulation resolution.
Smart pointer class similar to boost::intrusive_ptr.
void SetNumberOfReceiveAntennas(uint8_t rx)
Set the number of RX antennas in the receiver corresponding to this interference helper.
WifiErrorRateModelsTestCaseNist()
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
static WifiErrorRateModelsTestSuite wifiErrorRateModelsTestSuite
the test suite
void SetChannelWidth(uint16_t channelWidth)
Sets the selected channelWidth (in MHz)
handles interference calculations
virtual void DoRun(void)
Implementation to actually run this TestCase.
virtual void DoRun(void)
Implementation to actually run this TestCase.
void SetErrorRateModel(const Ptr< ErrorRateModel > rate)
Set the error rate model for this interference helper.
Time MilliSeconds(uint64_t value)
Construct a Time in the indicated unit.
double FromRss(double rssDbw)
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
double CalculateChunkSuccessRate(double snir, Time duration, WifiMode mode, WifiTxVector txVector) const
Calculate the success rate of the chunk given the SINR, duration, and Wi-Fi mode. ...
virtual ~WifiErrorRateModelsTestCaseNist()
void AddTestCase(TestCase *testCase, TestDuration duration=QUICK)
Add an individual child TestCase to this test suite.
#define NS_TEST_ASSERT_MSG_EQ_TOL(actual, limit, tol, msg)
Test that actual and expected (limit) values are equal to plus or minus some tolerance and report and...
void SetNss(uint8_t nss)
Sets the number of Nss refer to IEEE 802.11n Table 20-28 for explanation and range.
virtual ~WifiErrorRateModelsTestCaseDsss()
Every class exported by the ns3 library is enclosed in the ns3 namespace.
double CalculateSnr(Ptr< Event > event) const
Calculate the SNIR for the event (starting from now until the event end).
void SetTxPowerLevel(uint8_t powerlevel)
Sets the selected transmission power level.
void SetNTx(uint8_t nTx)
Sets the number of TX antennas.
double DbToRatio(double dB)
Convert from dB to ratio.
double RatioToDb(double ratio)
Convert from ratio to dB.
void SetMode(WifiMode mode)
Sets the selected payload transmission mode.
Wifi Error Rate Models Test Case MIMO.
virtual void DoRun(void)
Implementation to actually run this TestCase.
WifiErrorRateModelsTestCaseMimo()
void SetNoiseFigure(double value)
Set the noise figure.
Wifi Error Rate Models Test Case Nist.
WifiErrorRateModelsTestCaseDsss()
double GetChunkSuccessRate(WifiMode mode, WifiTxVector txVector, double snr, uint64_t nbits) const
A pure virtual method that must be implemented in the subclass.
WifiErrorRateModelsTestSuite()
Wifi Error Rate Models Test Suite.
#define NS_TEST_ASSERT_MSG_GT(actual, limit, msg)
Test that an actual value is greater than a limit and report and abort if not.
Wifi Error Rate Models Test Case Dsss.
virtual ~WifiErrorRateModelsTestCaseMimo()