24 #include "ns3/nist-error-rate-model.h"
25 #include "ns3/yans-error-rate-model.h"
26 #include "ns3/dsss-error-rate-model.h"
27 #include "ns3/wifi-phy.h"
28 #include "ns3/wifi-utils.h"
29 #include "ns3/table-based-error-rate-model.h"
30 #include "ns3/he-phy.h"
41 double noisePowerDbw = -100.5522786 + 7;
43 double sinrDb = rssDbw - noisePowerDbw;
45 return pow (10.0, sinrDb / 10.0);
61 void DoRun (
void)
override;
65 :
TestCase (
"WifiErrorRateModel test case DSSS")
77 uint64_t size = (1024 + 40 + 14) * 8;
82 value = DsssErrorRateModel::GetDsssDbpskSuccessRate (
FromRss (-105.0), size);
84 value = DsssErrorRateModel::GetDsssDbpskSuccessRate (
FromRss (-100.0), size);
86 value = DsssErrorRateModel::GetDsssDbpskSuccessRate (
FromRss (-99.0), size);
88 value = DsssErrorRateModel::GetDsssDbpskSuccessRate (
FromRss (-98.0), size);
90 value = DsssErrorRateModel::GetDsssDbpskSuccessRate (
FromRss (-97.0), size);
92 value = DsssErrorRateModel::GetDsssDbpskSuccessRate (
FromRss (-96.0), size);
94 value = DsssErrorRateModel::GetDsssDbpskSuccessRate (
FromRss (-95.0), size);
96 value = DsssErrorRateModel::GetDsssDbpskSuccessRate (
FromRss (-90.0), size);
101 value = DsssErrorRateModel::GetDsssDqpskSuccessRate (
FromRss (-96.0), size);
103 value = DsssErrorRateModel::GetDsssDqpskSuccessRate (
FromRss (-95.0), size);
105 value = DsssErrorRateModel::GetDsssDqpskSuccessRate (
FromRss (-94.0), size);
107 value = DsssErrorRateModel::GetDsssDqpskSuccessRate (
FromRss (-93.0), size);
109 value = DsssErrorRateModel::GetDsssDqpskSuccessRate (
FromRss (-92.0), size);
111 value = DsssErrorRateModel::GetDsssDqpskSuccessRate (
FromRss (-91.0), size);
113 value = DsssErrorRateModel::GetDsssDqpskSuccessRate (
FromRss (-90.0), size);
115 value = DsssErrorRateModel::GetDsssDqpskSuccessRate (
FromRss (-89.0), size);
120 value = DsssErrorRateModel::GetDsssDqpskCck5_5SuccessRate (
FromRss (-94.0), size);
122 value = DsssErrorRateModel::GetDsssDqpskCck5_5SuccessRate (
FromRss (-93.0), size);
124 value = DsssErrorRateModel::GetDsssDqpskCck5_5SuccessRate (
FromRss (-92.0), size);
126 value = DsssErrorRateModel::GetDsssDqpskCck5_5SuccessRate (
FromRss (-91.0), size);
128 value = DsssErrorRateModel::GetDsssDqpskCck5_5SuccessRate (
FromRss (-90.0), size);
130 value = DsssErrorRateModel::GetDsssDqpskCck5_5SuccessRate (
FromRss (-89.0), size);
132 value = DsssErrorRateModel::GetDsssDqpskCck5_5SuccessRate (
FromRss (-88.0), size);
134 value = DsssErrorRateModel::GetDsssDqpskCck5_5SuccessRate (
FromRss (-87.0), size);
138 value = DsssErrorRateModel::GetDsssDqpskCck11SuccessRate (
FromRss (-91.0), size);
140 value = DsssErrorRateModel::GetDsssDqpskCck11SuccessRate (
FromRss (-90.0), size);
142 value = DsssErrorRateModel::GetDsssDqpskCck11SuccessRate (
FromRss (-89.0), size);
144 value = DsssErrorRateModel::GetDsssDqpskCck11SuccessRate (
FromRss (-88.0), size);
146 value = DsssErrorRateModel::GetDsssDqpskCck11SuccessRate (
FromRss (-87.0), size);
148 value = DsssErrorRateModel::GetDsssDqpskCck11SuccessRate (
FromRss (-86.0), size);
150 value = DsssErrorRateModel::GetDsssDqpskCck11SuccessRate (
FromRss (-85.0), size);
152 value = DsssErrorRateModel::GetDsssDqpskCck11SuccessRate (
FromRss (-84.0), size);
170 void DoRun (
void)
override;
174 :
TestCase (
"WifiErrorRateModel test case NIST")
185 uint32_t frameSize = 2000;
302 using InterferenceHelper::InterferenceHelper;
303 using InterferenceHelper::CalculatePayloadChunkSuccessRate;
304 using InterferenceHelper::CalculateSnr;
320 void DoRun (
void)
override;
324 :
TestCase (
"WifiErrorRateModel test case MIMO")
337 WifiMode mode = HtPhy::GetHtMcs0 ();
351 double initialSnr = 4.0;
357 double sisoChunkSuccess = chunkSuccess;
464 {std::make_pair (0, 1458), {
604 {std::make_pair (0, 32), {
744 {std::make_pair (0, 1000), {
884 {std::make_pair (0, 1), {
1024 {std::make_pair (0, 2000), {
1164 {std::make_pair (7, 1500), {
1304 {std::make_pair (8, 1500), {
1465 void DoRun (
void)
override;
1474 m_testName (testName),
1496 for (
double snr = -4; snr <= 30; snr += 0.25)
1498 double expectedValue = 0;
1509 auto itValue = it->second.find (snr);
1510 if (itValue != it->second.end ())
1512 expectedValue = itValue->second;
1525 NS_LOG_INFO (
m_testName <<
": snr=" << snr <<
"dB per=" << per <<
" expectedPER=" << expectedValue);
1543 :
TestSuite (
"wifi-error-rate-models", UNIT)