LEFT | RIGHT |
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ | 1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
2 /* | 2 /* |
3 * Copyright (c) 2017 Orange Labs | 3 * Copyright (c) 2017 Orange Labs |
4 * | 4 * |
5 * This program is free software; you can redistribute it and/or modify | 5 * This program is free software; you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License version 2 as | 6 * it under the terms of the GNU General Public License version 2 as |
7 * published by the Free Software Foundation; | 7 * published by the Free Software Foundation; |
8 * | 8 * |
9 * This program is distributed in the hope that it will be useful, | 9 * This program is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 */ | 86 */ |
87 static void InterpolateAndAppendValues (IndexPowerVect &vect, IndexPowerPair s
tart, IndexPowerPair stop, | 87 static void InterpolateAndAppendValues (IndexPowerVect &vect, IndexPowerPair s
tart, IndexPowerPair stop, |
88 double tol); | 88 double tol); |
89 }; | 89 }; |
90 | 90 |
91 WifiOfdmMaskSlopesTestCase::WifiOfdmMaskSlopesTestCase (const char* str, WifiPhy
Standard standard, uint8_t bw, | 91 WifiOfdmMaskSlopesTestCase::WifiOfdmMaskSlopesTestCase (const char* str, WifiPhy
Standard standard, uint8_t bw, |
92 IndexPowerVect maskRefsL
eft, IndexPowerVect maskRefsRight, | 92 IndexPowerVect maskRefsL
eft, IndexPowerVect maskRefsRight, |
93 double tol) | 93 double tol) |
94 : TestCase (std::string ("SpectrumValue ") + str) | 94 : TestCase (std::string ("SpectrumValue ") + str) |
95 { | 95 { |
96 NS_LOG_FUNCTION (this << str << standard << (uint16_t)bw << tol); | 96 NS_LOG_FUNCTION (this << str << standard << +bw << tol); |
97 NS_ASSERT (maskRefsLeft.size () % 2 == 0 && maskRefsRight.size () % 2 == 0); /
/start/stop pairs expected | 97 NS_ASSERT (maskRefsLeft.size () % 2 == 0 && maskRefsRight.size () % 2 == 0); /
/start/stop pairs expected |
98 uint16_t freq = 5170 + (bw / 2); // so as to have 5180/5190/5210/5250 for 20/4
0/80/160 | 98 uint16_t freq = 5170 + (bw / 2); // so as to have 5180/5190/5210/5250 for 20/4
0/80/160 |
99 double refTxPowerW = 1; // have to work in dBr when comparing though | 99 double refTxPowerW = 1; // have to work in dBr when comparing though |
100 m_tolerance = tol; // in dB | 100 m_tolerance = tol; // in dB |
101 | 101 |
102 switch (standard) | 102 switch (standard) |
103 { | 103 { |
104 case WIFI_PHY_STANDARD_80211_5MHZ: | 104 case WIFI_PHY_STANDARD_80211_5MHZ: |
105 NS_ASSERT (bw == 5); | 105 NS_ASSERT (bw == 5); |
106 freq = 5860; | 106 freq = 5860; |
107 m_actualSpectrum = WifiSpectrumValueHelper::CreateOfdmTxPowerSpectralDensi
ty (freq, bw, refTxPowerW, bw); | 107 m_actualSpectrum = WifiSpectrumValueHelper::CreateOfdmTxPowerSpectralDensi
ty (freq, bw, refTxPowerW, 5); |
108 break; | 108 break; |
109 case WIFI_PHY_STANDARD_80211_10MHZ: | 109 case WIFI_PHY_STANDARD_80211_10MHZ: |
110 NS_ASSERT (bw == 10); | 110 NS_ASSERT (bw == 10); |
111 freq = 5860; | 111 freq = 5860; |
112 m_actualSpectrum = WifiSpectrumValueHelper::CreateOfdmTxPowerSpectralDensi
ty (freq, bw, refTxPowerW, bw); | 112 m_actualSpectrum = WifiSpectrumValueHelper::CreateOfdmTxPowerSpectralDensi
ty (freq, bw, refTxPowerW, 10); |
113 break; | 113 break; |
114 | 114 |
115 // 11g and 11a | 115 // 11g and 11a |
116 case WIFI_PHY_STANDARD_80211g: | 116 case WIFI_PHY_STANDARD_80211g: |
117 freq = 2412; | 117 freq = 2412; |
118 // no break on purpose | 118 // no break on purpose |
119 case WIFI_PHY_STANDARD_80211a: | 119 case WIFI_PHY_STANDARD_80211a: |
120 case WIFI_PHY_STANDARD_holland: | 120 case WIFI_PHY_STANDARD_holland: |
121 NS_ASSERT (bw == 20); | 121 NS_ASSERT (bw == 20); |
122 m_actualSpectrum = WifiSpectrumValueHelper::CreateOfdmTxPowerSpectralDensi
ty (freq, bw, refTxPowerW, bw); | 122 m_actualSpectrum = WifiSpectrumValueHelper::CreateOfdmTxPowerSpectralDensi
ty (freq, bw, refTxPowerW, 20); |
123 break; | 123 break; |
124 | 124 |
125 // 11n | 125 // 11n |
126 case WIFI_PHY_STANDARD_80211n_2_4GHZ: | 126 case WIFI_PHY_STANDARD_80211n_2_4GHZ: |
127 freq = 2402 + (bw / 2); //so as to have 2412/2422 for 20/40 | 127 freq = 2402 + (bw / 2); //so as to have 2412/2422 for 20/40 |
128 // no break on purpose | 128 // no break on purpose |
129 case WIFI_PHY_STANDARD_80211n_5GHZ: | 129 case WIFI_PHY_STANDARD_80211n_5GHZ: |
130 NS_ASSERT (bw == 20 || bw == 40); | 130 NS_ASSERT (bw == 20 || bw == 40); |
131 m_actualSpectrum = WifiSpectrumValueHelper::CreateHtOfdmTxPowerSpectralDen
sity (freq, bw, refTxPowerW, bw); | 131 m_actualSpectrum = WifiSpectrumValueHelper::CreateHtOfdmTxPowerSpectralDen
sity (freq, bw, refTxPowerW, 20); |
132 break; | 132 break; |
133 | 133 |
134 // 11ac | 134 // 11ac |
135 case WIFI_PHY_STANDARD_80211ac: | 135 case WIFI_PHY_STANDARD_80211ac: |
136 NS_ASSERT (bw == 20 || bw == 40 || bw == 80 || bw == 160); | 136 NS_ASSERT (bw == 20 || bw == 40 || bw == 80 || bw == 160); |
137 m_actualSpectrum = WifiSpectrumValueHelper::CreateHtOfdmTxPowerSpectralDen
sity (freq, bw, refTxPowerW, bw); | 137 m_actualSpectrum = WifiSpectrumValueHelper::CreateHtOfdmTxPowerSpectralDen
sity (freq, bw, refTxPowerW, 20); |
138 break; | 138 break; |
139 | 139 |
140 // 11ax | 140 // 11ax |
141 case WIFI_PHY_STANDARD_80211ax_2_4GHZ: | 141 case WIFI_PHY_STANDARD_80211ax_2_4GHZ: |
142 NS_ASSERT (bw != 160); // not enough space in 2.4 GHz bands | 142 NS_ASSERT (bw != 160); // not enough space in 2.4 GHz bands |
143 freq = 2402 + (bw / 2); //so as to have 2412/2422 for 20/40 | 143 freq = 2402 + (bw / 2); //so as to have 2412/2422 for 20/40 |
144 // no break on purpose | 144 // no break on purpose |
145 case WIFI_PHY_STANDARD_80211ax_5GHZ: | 145 case WIFI_PHY_STANDARD_80211ax_5GHZ: |
146 NS_ASSERT (bw == 20 || bw == 40 || bw == 80 || bw == 160); | 146 NS_ASSERT (bw == 20 || bw == 40 || bw == 80 || bw == 160); |
147 m_actualSpectrum = WifiSpectrumValueHelper::CreateHeOfdmTxPowerSpectralDen
sity (freq, bw, refTxPowerW, bw); | 147 m_actualSpectrum = WifiSpectrumValueHelper::CreateHeOfdmTxPowerSpectralDen
sity (freq, bw, refTxPowerW, 20); |
148 break; | 148 break; |
149 | 149 |
150 // other | 150 // other |
151 default: | 151 default: |
152 NS_FATAL_ERROR ("Standard unknown or non-OFDM"); | 152 NS_FATAL_ERROR ("Standard unknown or non-OFDM"); |
153 break; | 153 break; |
154 } | 154 } |
155 | 155 |
156 NS_LOG_INFO ("Build expected left PSD"); | 156 NS_LOG_INFO ("Build expected left PSD"); |
157 for (uint32_t i = 0; i < maskRefsLeft.size (); i = i + 2) | 157 for (uint32_t i = 0; i < maskRefsLeft.size (); i = i + 2) |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 // LogComponentEnable ("WifiTransmitMaskTestSuite", logLevel); | 251 // LogComponentEnable ("WifiTransmitMaskTestSuite", logLevel); |
252 // LogComponentEnable ("WifiSpectrumValueHelper", logLevel); | 252 // LogComponentEnable ("WifiSpectrumValueHelper", logLevel); |
253 | 253 |
254 NS_LOG_INFO ("Creating WifiTransmitMaskTestSuite"); | 254 NS_LOG_INFO ("Creating WifiTransmitMaskTestSuite"); |
255 | 255 |
256 WifiOfdmMaskSlopesTestCase::IndexPowerVect maskSlopesLeft; | 256 WifiOfdmMaskSlopesTestCase::IndexPowerVect maskSlopesLeft; |
257 WifiOfdmMaskSlopesTestCase::IndexPowerVect maskSlopesRight; | 257 WifiOfdmMaskSlopesTestCase::IndexPowerVect maskSlopesRight; |
258 double tol = 0.001; // in dB | 258 double tol = 0.001; // in dB |
259 | 259 |
260 // ===========================================================================
================= | 260 // ===========================================================================
================= |
261 /* TODO: uncomment these two test cases once bug #2813 has been solved (otherwis
e will surely fail) | |
262 // 11 5MHz | 261 // 11 5MHz |
263 NS_LOG_FUNCTION ("Check slopes for 11 5MHz"); | 262 NS_LOG_FUNCTION ("Check slopes for 11 5MHz"); |
264 maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (star
t) | 263 maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (star
t) |
265 maskSlopesLeft.push_back (std::make_pair (31, -28.375)); // Outer band left (s
top) | 264 maskSlopesLeft.push_back (std::make_pair (31, -28.375)); // Outer band left (s
top) |
266 maskSlopesLeft.push_back (std::make_pair (32, -28.000)); // Middle band left (
start) | 265 maskSlopesLeft.push_back (std::make_pair (32, -28.000)); // Middle band left (
start) |
267 maskSlopesLeft.push_back (std::make_pair (60, -20.276)); // Middle band left (
stop) | 266 maskSlopesLeft.push_back (std::make_pair (60, -20.276)); // Middle band left (
stop) |
268 maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band l
eft (start) | 267 maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band l
eft (start) |
269 maskSlopesLeft.push_back (std::make_pair (63, -20.0)); // Flat junction band l
eft (stop) | 268 maskSlopesLeft.push_back (std::make_pair (63, -20.0)); // Flat junction band l
eft (stop) |
270 maskSlopesLeft.push_back (std::make_pair (64, -20.0)); // Inner band left (sta
rt) | 269 maskSlopesLeft.push_back (std::make_pair (64, -20.0)); // Inner band left (sta
rt) |
271 maskSlopesLeft.push_back (std::make_pair (69, -3.333)); // Inner band left (st
op) | 270 maskSlopesLeft.push_back (std::make_pair (69, -3.333)); // Inner band left (st
op) |
(...skipping 25 matching lines...) Expand all Loading... |
297 maskSlopesRight.push_back (std::make_pair (128, -20.0)); // Inner band right (
stop) | 296 maskSlopesRight.push_back (std::make_pair (128, -20.0)); // Inner band right (
stop) |
298 maskSlopesRight.push_back (std::make_pair (129, -20.0)); // Flat junction band
right (start) | 297 maskSlopesRight.push_back (std::make_pair (129, -20.0)); // Flat junction band
right (start) |
299 maskSlopesRight.push_back (std::make_pair (131, -20.0)); // Flat junction band
right (stop) | 298 maskSlopesRight.push_back (std::make_pair (131, -20.0)); // Flat junction band
right (stop) |
300 maskSlopesRight.push_back (std::make_pair (132, -20.276)); // Middle band righ
t (start) | 299 maskSlopesRight.push_back (std::make_pair (132, -20.276)); // Middle band righ
t (start) |
301 maskSlopesRight.push_back (std::make_pair (160, -28.000)); // Middle band righ
t (stop) | 300 maskSlopesRight.push_back (std::make_pair (160, -28.000)); // Middle band righ
t (stop) |
302 maskSlopesRight.push_back (std::make_pair (161, -28.375)); // Outer band right
(start) | 301 maskSlopesRight.push_back (std::make_pair (161, -28.375)); // Outer band right
(start) |
303 maskSlopesRight.push_back (std::make_pair (192, -40.0)); // Outer band right (
stop) | 302 maskSlopesRight.push_back (std::make_pair (192, -40.0)); // Outer band right (
stop) |
304 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11 10MHz", WIFI_PHY_STANDARD_802
11_10MHZ, 10, | 303 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11 10MHz", WIFI_PHY_STANDARD_802
11_10MHZ, 10, |
305 maskSlopesLeft, maskSlopesRight,
tol), | 304 maskSlopesLeft, maskSlopesRight,
tol), |
306 TestCase::QUICK); | 305 TestCase::QUICK); |
307 */ | 306 |
308 | 307 |
309 // ===========================================================================
================= | 308 // ===========================================================================
================= |
310 // 11a | 309 // 11a |
311 NS_LOG_FUNCTION ("Check slopes for 11a"); | 310 NS_LOG_FUNCTION ("Check slopes for 11a"); |
312 maskSlopesLeft.clear (); | 311 maskSlopesLeft.clear (); |
313 maskSlopesRight.clear (); | 312 maskSlopesRight.clear (); |
314 maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (star
t) | 313 maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (star
t) |
315 maskSlopesLeft.push_back (std::make_pair (31, -28.375)); // Outer band left (s
top) | 314 maskSlopesLeft.push_back (std::make_pair (31, -28.375)); // Outer band left (s
top) |
316 maskSlopesLeft.push_back (std::make_pair (32, -28.000)); // Middle band left (
start) | 315 maskSlopesLeft.push_back (std::make_pair (32, -28.000)); // Middle band left (
start) |
317 maskSlopesLeft.push_back (std::make_pair (60, -20.276)); // Middle band left (
stop) | 316 maskSlopesLeft.push_back (std::make_pair (60, -20.276)); // Middle band left (
stop) |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
392 maskSlopesRight.push_back (std::make_pair (161, -28.375)); // Outer band right
(start) | 391 maskSlopesRight.push_back (std::make_pair (161, -28.375)); // Outer band right
(start) |
393 maskSlopesRight.push_back (std::make_pair (192, -40.0)); // Outer band right (
stop) | 392 maskSlopesRight.push_back (std::make_pair (192, -40.0)); // Outer band right (
stop) |
394 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11n_5GHz 20MHz", WIFI_PHY_STANDA
RD_80211n_5GHZ, 20, | 393 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11n_5GHz 20MHz", WIFI_PHY_STANDA
RD_80211n_5GHZ, 20, |
395 maskSlopesLeft, maskSlopesRight,
tol), | 394 maskSlopesLeft, maskSlopesRight,
tol), |
396 TestCase::QUICK); | 395 TestCase::QUICK); |
397 | 396 |
398 // 11n 40MHz @ 2.4GHz | 397 // 11n 40MHz @ 2.4GHz |
399 NS_LOG_FUNCTION ("Check slopes for 11n 40MHz @ 2.4GHz "); | 398 NS_LOG_FUNCTION ("Check slopes for 11n 40MHz @ 2.4GHz "); |
400 maskSlopesLeft.clear (); | 399 maskSlopesLeft.clear (); |
401 maskSlopesRight.clear (); | 400 maskSlopesRight.clear (); |
402 maskSlopesLeft.push_back (std::make_pair (0, -45.000)); // Outer band left (st
art) | 401 // Outer band left+right is out of considered truncated mask |
403 maskSlopesLeft.push_back (std::make_pair (63, -28.266)); // Outer band left (s
top) | 402 maskSlopesLeft.push_back (std::make_pair (0, -28.000)); // Middle band left (s
tart) |
404 maskSlopesLeft.push_back (std::make_pair (64, -28.000)); // Middle band left (
start) | 403 maskSlopesLeft.push_back (std::make_pair (60, -20.131)); // Middle band left (
stop) |
405 maskSlopesLeft.push_back (std::make_pair (124, -20.131)); // Middle band left
(stop) | 404 maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band l
eft (start) |
406 maskSlopesLeft.push_back (std::make_pair (125, -20.0)); // Flat junction band
left (start) | 405 maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band l
eft (stop) |
407 maskSlopesLeft.push_back (std::make_pair (125, -20.0)); // Flat junction band
left (stop) | 406 maskSlopesLeft.push_back (std::make_pair (62, -20.0)); // Inner band left (sta
rt) |
408 maskSlopesLeft.push_back (std::make_pair (126, -20.0)); // Inner band left (st
art) | 407 maskSlopesLeft.push_back (std::make_pair (67, -3.333)); // Inner band left (st
op) |
409 maskSlopesLeft.push_back (std::make_pair (131, -3.333)); // Inner band left (s
top) | 408 maskSlopesRight.push_back (std::make_pair (189, -3.333)); // Inner band right
(start) |
410 maskSlopesRight.push_back (std::make_pair (253, -3.333)); // Inner band right
(start) | 409 maskSlopesRight.push_back (std::make_pair (194, -20.0)); // Inner band right (
stop) |
411 maskSlopesRight.push_back (std::make_pair (258, -20.0)); // Inner band right (
stop) | 410 maskSlopesRight.push_back (std::make_pair (195, -20.0)); // Flat junction band
right (start) |
412 maskSlopesRight.push_back (std::make_pair (259, -20.0)); // Flat junction band
right (start) | 411 maskSlopesRight.push_back (std::make_pair (195, -20.0)); // Flat junction band
right (stop) |
413 maskSlopesRight.push_back (std::make_pair (259, -20.0)); // Flat junction band
right (stop) | 412 maskSlopesRight.push_back (std::make_pair (196, -20.131)); // Middle band righ
t (start) |
414 maskSlopesRight.push_back (std::make_pair (260, -20.131)); // Middle band righ
t (start) | 413 maskSlopesRight.push_back (std::make_pair (256, -28.000)); // Middle band righ
t (stop) |
415 maskSlopesRight.push_back (std::make_pair (320, -28.000)); // Middle band righ
t (stop) | |
416 maskSlopesRight.push_back (std::make_pair (321, -28.266)); // Outer band right
(start) | |
417 maskSlopesRight.push_back (std::make_pair (384, -45.000)); // Outer band right
(stop) | |
418 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11n_2.4GHz 40MHz", WIFI_PHY_STAN
DARD_80211n_2_4GHZ, 40, | 414 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11n_2.4GHz 40MHz", WIFI_PHY_STAN
DARD_80211n_2_4GHZ, 40, |
419 maskSlopesLeft, maskSlopesRight,
tol), | 415 maskSlopesLeft, maskSlopesRight,
tol), |
420 TestCase::QUICK); | 416 TestCase::QUICK); |
421 | 417 |
422 // 11n 20MHz @ 5GHz | 418 // 11n 20MHz @ 5GHz |
423 NS_LOG_FUNCTION ("Check slopes for 11n 40MHz @ 5GHz"); | 419 NS_LOG_FUNCTION ("Check slopes for 11n 40MHz @ 5GHz"); |
424 maskSlopesLeft.clear (); | 420 maskSlopesLeft.clear (); |
425 maskSlopesRight.clear (); | 421 maskSlopesRight.clear (); |
426 maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (star
t) | 422 // Outer band left+right is out of considered truncated mask |
427 maskSlopesLeft.push_back (std::make_pair (63, -28.188)); // Outer band left (s
top) | 423 maskSlopesLeft.push_back (std::make_pair (0, -28.000)); // Middle band left (s
tart) |
428 maskSlopesLeft.push_back (std::make_pair (64, -28.000)); // Middle band left (
start) | 424 maskSlopesLeft.push_back (std::make_pair (60, -20.131)); // Middle band left (
stop) |
429 maskSlopesLeft.push_back (std::make_pair (124, -20.131)); // Middle band left
(stop) | 425 maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band l
eft (start) |
430 maskSlopesLeft.push_back (std::make_pair (125, -20.0)); // Flat junction band
left (start) | 426 maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band l
eft (stop) |
431 maskSlopesLeft.push_back (std::make_pair (125, -20.0)); // Flat junction band
left (stop) | 427 maskSlopesLeft.push_back (std::make_pair (62, -20.0)); // Inner band left (sta
rt) |
432 maskSlopesLeft.push_back (std::make_pair (126, -20.0)); // Inner band left (st
art) | 428 maskSlopesLeft.push_back (std::make_pair (67, -3.333)); // Inner band left (st
op) |
433 maskSlopesLeft.push_back (std::make_pair (131, -3.333)); // Inner band left (s
top) | 429 maskSlopesRight.push_back (std::make_pair (189, -3.333)); // Inner band right
(start) |
434 maskSlopesRight.push_back (std::make_pair (253, -3.333)); // Inner band right
(start) | 430 maskSlopesRight.push_back (std::make_pair (194, -20.0)); // Inner band right (
stop) |
435 maskSlopesRight.push_back (std::make_pair (258, -20.0)); // Inner band right (
stop) | 431 maskSlopesRight.push_back (std::make_pair (195, -20.0)); // Flat junction band
right (start) |
436 maskSlopesRight.push_back (std::make_pair (259, -20.0)); // Flat junction band
right (start) | 432 maskSlopesRight.push_back (std::make_pair (195, -20.0)); // Flat junction band
right (stop) |
437 maskSlopesRight.push_back (std::make_pair (259, -20.0)); // Flat junction band
right (stop) | 433 maskSlopesRight.push_back (std::make_pair (196, -20.131)); // Middle band righ
t (start) |
438 maskSlopesRight.push_back (std::make_pair (260, -20.131)); // Middle band righ
t (start) | 434 maskSlopesRight.push_back (std::make_pair (256, -28.000)); // Middle band righ
t (stop) |
439 maskSlopesRight.push_back (std::make_pair (320, -28.000)); // Middle band righ
t (stop) | |
440 maskSlopesRight.push_back (std::make_pair (321, -28.188)); // Outer band right
(start) | |
441 maskSlopesRight.push_back (std::make_pair (384, -40.0)); // Outer band right (
stop) | |
442 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11n_5GHz 40MHz", WIFI_PHY_STANDA
RD_80211n_5GHZ, 40, | 435 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11n_5GHz 40MHz", WIFI_PHY_STANDA
RD_80211n_5GHZ, 40, |
443 maskSlopesLeft, maskSlopesRight,
tol), | 436 maskSlopesLeft, maskSlopesRight,
tol), |
444 TestCase::QUICK); | 437 TestCase::QUICK); |
445 | 438 |
446 | 439 |
447 // ===========================================================================
================= | 440 // ===========================================================================
================= |
448 // 11ac 20MHz | 441 // 11ac 20MHz |
449 NS_LOG_FUNCTION ("Check slopes for 11ac 20MHz"); | 442 NS_LOG_FUNCTION ("Check slopes for 11ac 20MHz"); |
450 maskSlopesLeft.clear (); | 443 maskSlopesLeft.clear (); |
451 maskSlopesRight.clear (); | 444 maskSlopesRight.clear (); |
(...skipping 14 matching lines...) Expand all Loading... |
466 maskSlopesRight.push_back (std::make_pair (161, -28.375)); // Outer band right
(start) | 459 maskSlopesRight.push_back (std::make_pair (161, -28.375)); // Outer band right
(start) |
467 maskSlopesRight.push_back (std::make_pair (192, -40.0)); // Outer band right (
stop) | 460 maskSlopesRight.push_back (std::make_pair (192, -40.0)); // Outer band right (
stop) |
468 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ac 20MHz", WIFI_PHY_STANDARD_8
0211ac, 20, | 461 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ac 20MHz", WIFI_PHY_STANDARD_8
0211ac, 20, |
469 maskSlopesLeft, maskSlopesRight,
tol), | 462 maskSlopesLeft, maskSlopesRight,
tol), |
470 TestCase::QUICK); | 463 TestCase::QUICK); |
471 | 464 |
472 // 11ac 20MHz | 465 // 11ac 20MHz |
473 NS_LOG_FUNCTION ("Check slopes for 11ac 40MHz"); | 466 NS_LOG_FUNCTION ("Check slopes for 11ac 40MHz"); |
474 maskSlopesLeft.clear (); | 467 maskSlopesLeft.clear (); |
475 maskSlopesRight.clear (); | 468 maskSlopesRight.clear (); |
476 maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (star
t) | 469 // Outer band left+right is out of considered truncated mask |
477 maskSlopesLeft.push_back (std::make_pair (63, -28.188)); // Outer band left (s
top) | 470 maskSlopesLeft.push_back (std::make_pair (0, -28.000)); // Middle band left (s
tart) |
478 maskSlopesLeft.push_back (std::make_pair (64, -28.000)); // Middle band left (
start) | 471 maskSlopesLeft.push_back (std::make_pair (60, -20.131)); // Middle band left (
stop) |
479 maskSlopesLeft.push_back (std::make_pair (124, -20.131)); // Middle band left
(stop) | 472 maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band l
eft (start) |
480 maskSlopesLeft.push_back (std::make_pair (125, -20.0)); // Flat junction band
left (start) | 473 maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band l
eft (stop) |
481 maskSlopesLeft.push_back (std::make_pair (125, -20.0)); // Flat junction band
left (stop) | 474 maskSlopesLeft.push_back (std::make_pair (62, -20.0)); // Inner band left (sta
rt) |
482 maskSlopesLeft.push_back (std::make_pair (126, -20.0)); // Inner band left (st
art) | 475 maskSlopesLeft.push_back (std::make_pair (67, -3.333)); // Inner band left (st
op) |
483 maskSlopesLeft.push_back (std::make_pair (131, -3.333)); // Inner band left (s
top) | 476 maskSlopesRight.push_back (std::make_pair (189, -3.333)); // Inner band right
(start) |
484 maskSlopesRight.push_back (std::make_pair (253, -3.333)); // Inner band right
(start) | 477 maskSlopesRight.push_back (std::make_pair (194, -20.0)); // Inner band right (
stop) |
485 maskSlopesRight.push_back (std::make_pair (258, -20.0)); // Inner band right (
stop) | 478 maskSlopesRight.push_back (std::make_pair (195, -20.0)); // Flat junction band
right (start) |
486 maskSlopesRight.push_back (std::make_pair (259, -20.0)); // Flat junction band
right (start) | 479 maskSlopesRight.push_back (std::make_pair (195, -20.0)); // Flat junction band
right (stop) |
487 maskSlopesRight.push_back (std::make_pair (259, -20.0)); // Flat junction band
right (stop) | 480 maskSlopesRight.push_back (std::make_pair (196, -20.131)); // Middle band righ
t (start) |
488 maskSlopesRight.push_back (std::make_pair (260, -20.131)); // Middle band righ
t (start) | 481 maskSlopesRight.push_back (std::make_pair (256, -28.000)); // Middle band righ
t (stop) |
489 maskSlopesRight.push_back (std::make_pair (320, -28.000)); // Middle band righ
t (stop) | |
490 maskSlopesRight.push_back (std::make_pair (321, -28.188)); // Outer band right
(start) | |
491 maskSlopesRight.push_back (std::make_pair (384, -40.0)); // Outer band right (
stop) | |
492 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ac 40MHz", WIFI_PHY_STANDARD_8
0211ac, 40, | 482 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ac 40MHz", WIFI_PHY_STANDARD_8
0211ac, 40, |
493 maskSlopesLeft, maskSlopesRight,
tol), | 483 maskSlopesLeft, maskSlopesRight,
tol), |
494 TestCase::QUICK); | 484 TestCase::QUICK); |
495 | 485 |
496 // 11ac 80MHz | 486 // 11ac 80MHz |
497 NS_LOG_FUNCTION ("Check slopes for 11ac 80MHz"); | 487 NS_LOG_FUNCTION ("Check slopes for 11ac 80MHz"); |
498 maskSlopesLeft.clear (); | 488 maskSlopesLeft.clear (); |
499 maskSlopesRight.clear (); | 489 maskSlopesRight.clear (); |
500 maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (star
t) | 490 // Outer band left+right is out of considered truncated mask |
501 maskSlopesLeft.push_back (std::make_pair (127, -28.094)); // Outer band left (
stop) | 491 maskSlopesLeft.push_back (std::make_pair (0, -23.904)); // Middle band left (s
tart) -> truncated |
502 maskSlopesLeft.push_back (std::make_pair (128, -28.000)); // Middle band left
(start) | 492 maskSlopesLeft.push_back (std::make_pair (60, -20.064)); // Middle band left (
stop) |
503 maskSlopesLeft.push_back (std::make_pair (252, -20.064)); // Middle band left
(stop) | 493 maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band l
eft (start) |
504 maskSlopesLeft.push_back (std::make_pair (253, -20.0)); // Flat junction band
left (start) | 494 maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band l
eft (stop) |
505 maskSlopesLeft.push_back (std::make_pair (253, -20.0)); // Flat junction band
left (stop) | 495 maskSlopesLeft.push_back (std::make_pair (62, -20.0)); // Inner band left (sta
rt) |
506 maskSlopesLeft.push_back (std::make_pair (254, -20.0)); // Inner band left (st
art) | 496 maskSlopesLeft.push_back (std::make_pair (67, -3.333)); // Inner band left (st
op) |
507 maskSlopesLeft.push_back (std::make_pair (259, -3.333)); // Inner band left (s
top) | 497 maskSlopesRight.push_back (std::make_pair (317, -3.333)); // Inner band right
(start) |
508 maskSlopesRight.push_back (std::make_pair (509, -3.333)); // Inner band right
(start) | 498 maskSlopesRight.push_back (std::make_pair (322, -20.0)); // Inner band right (
stop) |
509 maskSlopesRight.push_back (std::make_pair (514, -20.0)); // Inner band right (
stop) | 499 maskSlopesRight.push_back (std::make_pair (323, -20.0)); // Flat junction band
right (start) |
510 maskSlopesRight.push_back (std::make_pair (515, -20.0)); // Flat junction band
right (start) | 500 maskSlopesRight.push_back (std::make_pair (323, -20.0)); // Flat junction band
right (stop) |
511 maskSlopesRight.push_back (std::make_pair (515, -20.0)); // Flat junction band
right (stop) | 501 maskSlopesRight.push_back (std::make_pair (324, -20.064)); // Middle band righ
t (start) |
512 maskSlopesRight.push_back (std::make_pair (516, -20.064)); // Middle band righ
t (start) | 502 maskSlopesRight.push_back (std::make_pair (384, -23.904)); // Middle band righ
t (stop) -> truncated |
513 maskSlopesRight.push_back (std::make_pair (640, -28.000)); // Middle band righ
t (stop) | |
514 maskSlopesRight.push_back (std::make_pair (641, -28.094)); // Outer band right
(start) | |
515 maskSlopesRight.push_back (std::make_pair (768, -40.0)); // Outer band right (
stop) | |
516 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ac 80MHz", WIFI_PHY_STANDARD_8
0211ac, 80, | 503 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ac 80MHz", WIFI_PHY_STANDARD_8
0211ac, 80, |
517 maskSlopesLeft, maskSlopesRight,
tol), | 504 maskSlopesLeft, maskSlopesRight,
tol), |
518 TestCase::QUICK); | 505 TestCase::QUICK); |
519 | 506 |
520 // 11ac 20MHz | 507 // 11ac 20MHz |
521 NS_LOG_FUNCTION ("Check slopes for 11ac 160MHz"); | 508 NS_LOG_FUNCTION ("Check slopes for 11ac 160MHz"); |
522 maskSlopesLeft.clear (); | 509 maskSlopesLeft.clear (); |
523 maskSlopesRight.clear (); | 510 maskSlopesRight.clear (); |
524 maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (star
t) | 511 // Outer band left+right is out of considered truncated mask |
525 maskSlopesLeft.push_back (std::make_pair (255, -28.047)); // Outer band left (
stop) | 512 maskSlopesLeft.push_back (std::make_pair (0, -21.929)); // Middle band left (s
tart) -> truncated |
526 maskSlopesLeft.push_back (std::make_pair (256, -28.000)); // Middle band left
(start) | 513 maskSlopesLeft.push_back (std::make_pair (60, -20.032)); // Middle band left (
stop) |
527 maskSlopesLeft.push_back (std::make_pair (508, -20.032)); // Middle band left
(stop) | 514 maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band l
eft (start) |
528 maskSlopesLeft.push_back (std::make_pair (509, -20.0)); // Flat junction band
left (start) | 515 maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band l
eft (stop) |
529 maskSlopesLeft.push_back (std::make_pair (509, -20.0)); // Flat junction band
left (stop) | 516 maskSlopesLeft.push_back (std::make_pair (62, -20.0)); // Inner band left (sta
rt) |
530 maskSlopesLeft.push_back (std::make_pair (510, -20.0)); // Inner band left (st
art) | 517 maskSlopesLeft.push_back (std::make_pair (67, -3.333)); // Inner band left (st
op) |
531 maskSlopesLeft.push_back (std::make_pair (515, -3.333)); // Inner band left (s
top) | 518 maskSlopesRight.push_back (std::make_pair (573, -3.333)); // Inner band right
(start) |
532 maskSlopesRight.push_back (std::make_pair (1021, -3.333)); // Inner band right
(start) | 519 maskSlopesRight.push_back (std::make_pair (578, -20.0)); // Inner band right (
stop) |
533 maskSlopesRight.push_back (std::make_pair (1026, -20.0)); // Inner band right
(stop) | 520 maskSlopesRight.push_back (std::make_pair (579, -20.0)); // Flat junction band
right (start) |
534 maskSlopesRight.push_back (std::make_pair (1027, -20.0)); // Flat junction ban
d right (start) | 521 maskSlopesRight.push_back (std::make_pair (579, -20.0)); // Flat junction band
right (stop) |
535 maskSlopesRight.push_back (std::make_pair (1027, -20.0)); // Flat junction ban
d right (stop) | 522 maskSlopesRight.push_back (std::make_pair (580, -20.032)); // Middle band righ
t (start) |
536 maskSlopesRight.push_back (std::make_pair (1028, -20.032)); // Middle band rig
ht (start) | 523 maskSlopesRight.push_back (std::make_pair (640, -21.929)); // Middle band righ
t (stop) -> truncated |
537 maskSlopesRight.push_back (std::make_pair (1280, -28.000)); // Middle band rig
ht (stop) | |
538 maskSlopesRight.push_back (std::make_pair (1281, -28.047)); // Outer band righ
t (start) | |
539 maskSlopesRight.push_back (std::make_pair (1536, -40.0)); // Outer band right
(stop) | |
540 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ac 160MHz", WIFI_PHY_STANDARD_
80211ac, 160, | 524 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ac 160MHz", WIFI_PHY_STANDARD_
80211ac, 160, |
541 maskSlopesLeft, maskSlopesRight,
tol), | 525 maskSlopesLeft, maskSlopesRight,
tol), |
542 TestCase::QUICK); | 526 TestCase::QUICK); |
543 | 527 |
544 | 528 |
545 // ===========================================================================
================= | 529 // ===========================================================================
================= |
546 // 11ax 20MHz @ 2.4GHz | 530 // 11ax 20MHz @ 2.4GHz |
547 NS_LOG_FUNCTION ("Check slopes for 11ax 20MHz @ 2.4GHz "); | 531 NS_LOG_FUNCTION ("Check slopes for 11ax 20MHz @ 2.4GHz "); |
548 maskSlopesLeft.clear (); | 532 maskSlopesLeft.clear (); |
549 maskSlopesRight.clear (); | 533 maskSlopesRight.clear (); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
588 maskSlopesRight.push_back (std::make_pair (641, -28.094)); // Outer band right
(start) | 572 maskSlopesRight.push_back (std::make_pair (641, -28.094)); // Outer band right
(start) |
589 maskSlopesRight.push_back (std::make_pair (768, -40.0)); // Outer band right (
stop) | 573 maskSlopesRight.push_back (std::make_pair (768, -40.0)); // Outer band right (
stop) |
590 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ax_5GHz 20MHz", WIFI_PHY_STAND
ARD_80211ax_5GHZ, 20, | 574 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ax_5GHz 20MHz", WIFI_PHY_STAND
ARD_80211ax_5GHZ, 20, |
591 maskSlopesLeft, maskSlopesRight,
tol), | 575 maskSlopesLeft, maskSlopesRight,
tol), |
592 TestCase::QUICK); | 576 TestCase::QUICK); |
593 | 577 |
594 // 11ax 40MHz @ 2.4GHz | 578 // 11ax 40MHz @ 2.4GHz |
595 NS_LOG_FUNCTION ("Check slopes for 11ax 40MHz @ 2.4GHz "); | 579 NS_LOG_FUNCTION ("Check slopes for 11ax 40MHz @ 2.4GHz "); |
596 maskSlopesLeft.clear (); | 580 maskSlopesLeft.clear (); |
597 maskSlopesRight.clear (); | 581 maskSlopesRight.clear (); |
598 maskSlopesLeft.push_back (std::make_pair (0, -45.000)); // Outer band left (st
art) | 582 // Outer band left+right is out of considered truncated mask |
599 maskSlopesLeft.push_back (std::make_pair (255, -28.066)); // Outer band left (
stop) | 583 maskSlopesLeft.push_back (std::make_pair (0, -28.000)); // Middle band left (s
tart) |
600 maskSlopesLeft.push_back (std::make_pair (256, -28.000)); // Middle band left
(start) | 584 maskSlopesLeft.push_back (std::make_pair (249, -20.032)); // Middle band left
(stop) |
601 maskSlopesLeft.push_back (std::make_pair (505, -20.032)); // Middle band left
(stop) | 585 maskSlopesLeft.push_back (std::make_pair (250, -20.0)); // Flat junction band
left (start) |
602 maskSlopesLeft.push_back (std::make_pair (506, -20.0)); // Flat junction band
left (start) | 586 maskSlopesLeft.push_back (std::make_pair (254, -20.0)); // Flat junction band
left (stop) |
603 maskSlopesLeft.push_back (std::make_pair (510, -20.0)); // Flat junction band
left (stop) | 587 maskSlopesLeft.push_back (std::make_pair (255, -20.0)); // Inner band left (st
art) |
604 maskSlopesLeft.push_back (std::make_pair (511, -20.0)); // Inner band left (st
art) | 588 maskSlopesLeft.push_back (std::make_pair (267, -1.538)); // Inner band left (s
top) |
605 maskSlopesLeft.push_back (std::make_pair (523, -1.538)); // Inner band left (s
top) | 589 maskSlopesRight.push_back (std::make_pair (757, -1.538)); // Inner band right
(start) |
606 maskSlopesRight.push_back (std::make_pair (1013, -1.538)); // Inner band right
(start) | 590 maskSlopesRight.push_back (std::make_pair (769, -20.0)); // Inner band right (
stop) |
607 maskSlopesRight.push_back (std::make_pair (1025, -20.0)); // Inner band right
(stop) | 591 maskSlopesRight.push_back (std::make_pair (770, -20.0)); // Flat junction band
right (start) |
608 maskSlopesRight.push_back (std::make_pair (1026, -20.0)); // Flat junction ban
d right (start) | 592 maskSlopesRight.push_back (std::make_pair (774, -20.0)); // Flat junction band
right (stop) |
609 maskSlopesRight.push_back (std::make_pair (1030, -20.0)); // Flat junction ban
d right (stop) | 593 maskSlopesRight.push_back (std::make_pair (775, -20.032)); // Middle band righ
t (start) |
610 maskSlopesRight.push_back (std::make_pair (1031, -20.032)); // Middle band rig
ht (start) | 594 maskSlopesRight.push_back (std::make_pair (1024, -28.000)); // Middle band rig
ht (stop) |
611 maskSlopesRight.push_back (std::make_pair (1280, -28.000)); // Middle band rig
ht (stop) | |
612 maskSlopesRight.push_back (std::make_pair (1281, -28.066)); // Outer band righ
t (start) | |
613 maskSlopesRight.push_back (std::make_pair (1536, -45.000)); // Outer band righ
t (stop) | |
614 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ax_2.4GHz 40MHz", WIFI_PHY_STA
NDARD_80211ax_2_4GHZ, 40, | 595 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ax_2.4GHz 40MHz", WIFI_PHY_STA
NDARD_80211ax_2_4GHZ, 40, |
615 maskSlopesLeft, maskSlopesRight,
tol), | 596 maskSlopesLeft, maskSlopesRight,
tol), |
616 TestCase::QUICK); | 597 TestCase::QUICK); |
617 | 598 |
618 // 11ax 40MHz @ 5GHz | 599 // 11ax 40MHz @ 5GHz |
619 NS_LOG_FUNCTION ("Check slopes for 11ax 40MHz @ 5GHz"); | 600 NS_LOG_FUNCTION ("Check slopes for 11ax 40MHz @ 5GHz"); |
620 maskSlopesLeft.clear (); | 601 maskSlopesLeft.clear (); |
621 maskSlopesRight.clear (); | 602 maskSlopesRight.clear (); |
622 maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (star
t) | 603 // Outer band left+right is out of considered truncated mask |
623 maskSlopesLeft.push_back (std::make_pair (255, -28.047)); // Outer band left (
stop) | 604 maskSlopesLeft.push_back (std::make_pair (0, -28.000)); // Middle band left (s
tart) |
624 maskSlopesLeft.push_back (std::make_pair (256, -28.000)); // Middle band left
(start) | 605 maskSlopesLeft.push_back (std::make_pair (249, -20.032)); // Middle band left
(stop) |
625 maskSlopesLeft.push_back (std::make_pair (505, -20.032)); // Middle band left
(stop) | 606 maskSlopesLeft.push_back (std::make_pair (250, -20.0)); // Flat junction band
left (start) |
626 maskSlopesLeft.push_back (std::make_pair (506, -20.0)); // Flat junction band
left (start) | 607 maskSlopesLeft.push_back (std::make_pair (254, -20.0)); // Flat junction band
left (stop) |
627 maskSlopesLeft.push_back (std::make_pair (510, -20.0)); // Flat junction band
left (stop) | 608 maskSlopesLeft.push_back (std::make_pair (255, -20.0)); // Inner band left (st
art) |
628 maskSlopesLeft.push_back (std::make_pair (511, -20.0)); // Inner band left (st
art) | 609 maskSlopesLeft.push_back (std::make_pair (267, -1.538)); // Inner band left (s
top) |
629 maskSlopesLeft.push_back (std::make_pair (523, -1.538)); // Inner band left (s
top) | 610 maskSlopesRight.push_back (std::make_pair (757, -1.538)); // Inner band right
(start) |
630 maskSlopesRight.push_back (std::make_pair (1013, -1.538)); // Inner band right
(start) | 611 maskSlopesRight.push_back (std::make_pair (769, -20.0)); // Inner band right (
stop) |
631 maskSlopesRight.push_back (std::make_pair (1025, -20.0)); // Inner band right
(stop) | 612 maskSlopesRight.push_back (std::make_pair (770, -20.0)); // Flat junction band
right (start) |
632 maskSlopesRight.push_back (std::make_pair (1026, -20.0)); // Flat junction ban
d right (start) | 613 maskSlopesRight.push_back (std::make_pair (774, -20.0)); // Flat junction band
right (stop) |
633 maskSlopesRight.push_back (std::make_pair (1030, -20.0)); // Flat junction ban
d right (stop) | 614 maskSlopesRight.push_back (std::make_pair (775, -20.032)); // Middle band righ
t (start) |
634 maskSlopesRight.push_back (std::make_pair (1031, -20.032)); // Middle band rig
ht (start) | 615 maskSlopesRight.push_back (std::make_pair (1024, -28.000)); // Middle band rig
ht (stop) |
635 maskSlopesRight.push_back (std::make_pair (1280, -28.000)); // Middle band rig
ht (stop) | |
636 maskSlopesRight.push_back (std::make_pair (1281, -28.047)); // Outer band righ
t (start) | |
637 maskSlopesRight.push_back (std::make_pair (1536, -40.0)); // Outer band right
(stop) | |
638 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ax_5GHz 40MHz", WIFI_PHY_STAND
ARD_80211ax_5GHZ, 40, | 616 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ax_5GHz 40MHz", WIFI_PHY_STAND
ARD_80211ax_5GHZ, 40, |
639 maskSlopesLeft, maskSlopesRight,
tol), | 617 maskSlopesLeft, maskSlopesRight,
tol), |
640 TestCase::QUICK); | 618 TestCase::QUICK); |
641 | 619 |
642 // 11ax 80MHz @ 2.4GHz | 620 // 11ax 80MHz @ 2.4GHz |
643 NS_LOG_FUNCTION ("Check slopes for 11ax 80MHz @ 2.4GHz "); | 621 NS_LOG_FUNCTION ("Check slopes for 11ax 80MHz @ 2.4GHz "); |
644 maskSlopesLeft.clear (); | 622 maskSlopesLeft.clear (); |
645 maskSlopesRight.clear (); | 623 maskSlopesRight.clear (); |
646 maskSlopesLeft.push_back (std::make_pair (0, -45.000)); // Outer band left (st
art) | 624 // Outer band left+right is out of considered truncated mask |
647 maskSlopesLeft.push_back (std::make_pair (511, -28.033)); // Outer band left (
stop) | 625 maskSlopesLeft.push_back (std::make_pair (0, -23.953)); // Middle band left (s
tart) -> truncated |
648 maskSlopesLeft.push_back (std::make_pair (512, -28.000)); // Middle band left
(start) | 626 maskSlopesLeft.push_back (std::make_pair (249, -20.016)); // Middle band left
(stop) |
649 maskSlopesLeft.push_back (std::make_pair (1017, -20.016)); // Middle band left
(stop) | 627 maskSlopesLeft.push_back (std::make_pair (250, -20.0)); // Flat junction band
left (start) |
650 maskSlopesLeft.push_back (std::make_pair (1018, -20.0)); // Flat junction band
left (start) | 628 maskSlopesLeft.push_back (std::make_pair (254, -20.0)); // Flat junction band
left (stop) |
651 maskSlopesLeft.push_back (std::make_pair (1022, -20.0)); // Flat junction band
left (stop) | 629 maskSlopesLeft.push_back (std::make_pair (255, -20.0)); // Inner band left (st
art) |
652 maskSlopesLeft.push_back (std::make_pair (1023, -20.0)); // Inner band left (s
tart) | 630 maskSlopesLeft.push_back (std::make_pair (267, -1.538)); // Inner band left (s
top) |
653 maskSlopesLeft.push_back (std::make_pair (1035, -1.538)); // Inner band left (
stop) | 631 maskSlopesRight.push_back (std::make_pair (1269, -1.538)); // Inner band right
(start) |
654 maskSlopesRight.push_back (std::make_pair (2037, -1.538)); // Inner band right
(start) | 632 maskSlopesRight.push_back (std::make_pair (1281, -20.0)); // Inner band right
(stop) |
655 maskSlopesRight.push_back (std::make_pair (2049, -20.0)); // Inner band right
(stop) | 633 maskSlopesRight.push_back (std::make_pair (1282, -20.0)); // Flat junction ban
d right (start) |
656 maskSlopesRight.push_back (std::make_pair (2050, -20.0)); // Flat junction ban
d right (start) | 634 maskSlopesRight.push_back (std::make_pair (1286, -20.0)); // Flat junction ban
d right (stop) |
657 maskSlopesRight.push_back (std::make_pair (2054, -20.0)); // Flat junction ban
d right (stop) | 635 maskSlopesRight.push_back (std::make_pair (1287, -20.016)); // Middle band rig
ht (start) |
658 maskSlopesRight.push_back (std::make_pair (2055, -20.016)); // Middle band rig
ht (start) | 636 maskSlopesRight.push_back (std::make_pair (1536, -23.953)); // Middle band rig
ht (stop) -> truncated |
659 maskSlopesRight.push_back (std::make_pair (2560, -28.000)); // Middle band rig
ht (stop) | |
660 maskSlopesRight.push_back (std::make_pair (2561, -28.033)); // Outer band righ
t (start) | |
661 maskSlopesRight.push_back (std::make_pair (3072, -45.000)); // Outer band righ
t (stop) | |
662 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ax_2.4GHz 80MHz", WIFI_PHY_STA
NDARD_80211ax_2_4GHZ, 80, | 637 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ax_2.4GHz 80MHz", WIFI_PHY_STA
NDARD_80211ax_2_4GHZ, 80, |
663 maskSlopesLeft, maskSlopesRight,
tol), | 638 maskSlopesLeft, maskSlopesRight,
tol), |
664 TestCase::QUICK); | 639 TestCase::QUICK); |
665 | 640 |
666 // 11ax 80MHz @ 5GHz | 641 // 11ax 80MHz @ 5GHz |
667 NS_LOG_FUNCTION ("Check slopes for 11ax 80MHz @ 5GHz"); | 642 NS_LOG_FUNCTION ("Check slopes for 11ax 80MHz @ 5GHz"); |
668 maskSlopesLeft.clear (); | 643 maskSlopesLeft.clear (); |
669 maskSlopesRight.clear (); | 644 maskSlopesRight.clear (); |
670 maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (star
t) | 645 // Outer band left+right is out of considered truncated mask |
671 maskSlopesLeft.push_back (std::make_pair (511, -28.023)); // Outer band left (
stop) | 646 maskSlopesLeft.push_back (std::make_pair (0, -23.953)); // Middle band left (s
tart) -> truncated |
672 maskSlopesLeft.push_back (std::make_pair (512, -28.000)); // Middle band left
(start) | 647 maskSlopesLeft.push_back (std::make_pair (249, -20.016)); // Middle band left
(stop) |
673 maskSlopesLeft.push_back (std::make_pair (1017, -20.016)); // Middle band left
(stop) | 648 maskSlopesLeft.push_back (std::make_pair (250, -20.0)); // Flat junction band
left (start) |
674 maskSlopesLeft.push_back (std::make_pair (1018, -20.0)); // Flat junction band
left (start) | 649 maskSlopesLeft.push_back (std::make_pair (254, -20.0)); // Flat junction band
left (stop) |
675 maskSlopesLeft.push_back (std::make_pair (1022, -20.0)); // Flat junction band
left (stop) | 650 maskSlopesLeft.push_back (std::make_pair (255, -20.0)); // Inner band left (st
art) |
676 maskSlopesLeft.push_back (std::make_pair (1023, -20.0)); // Inner band left (s
tart) | 651 maskSlopesLeft.push_back (std::make_pair (267, -1.538)); // Inner band left (s
top) |
677 maskSlopesLeft.push_back (std::make_pair (1035, -1.538)); // Inner band left (
stop) | 652 maskSlopesRight.push_back (std::make_pair (1269, -1.538)); // Inner band right
(start) |
678 maskSlopesRight.push_back (std::make_pair (2037, -1.538)); // Inner band right
(start) | 653 maskSlopesRight.push_back (std::make_pair (1281, -20.0)); // Inner band right
(stop) |
679 maskSlopesRight.push_back (std::make_pair (2049, -20.0)); // Inner band right
(stop) | 654 maskSlopesRight.push_back (std::make_pair (1282, -20.0)); // Flat junction ban
d right (start) |
680 maskSlopesRight.push_back (std::make_pair (2050, -20.0)); // Flat junction ban
d right (start) | 655 maskSlopesRight.push_back (std::make_pair (1286, -20.0)); // Flat junction ban
d right (stop) |
681 maskSlopesRight.push_back (std::make_pair (2054, -20.0)); // Flat junction ban
d right (stop) | 656 maskSlopesRight.push_back (std::make_pair (1287, -20.016)); // Middle band rig
ht (start) |
682 maskSlopesRight.push_back (std::make_pair (2055, -20.016)); // Middle band rig
ht (start) | 657 maskSlopesRight.push_back (std::make_pair (1536, -23.953)); // Middle band rig
ht (stop) -> truncated |
683 maskSlopesRight.push_back (std::make_pair (2560, -28.000)); // Middle band rig
ht (stop) | |
684 maskSlopesRight.push_back (std::make_pair (2561, -28.023)); // Outer band righ
t (start) | |
685 maskSlopesRight.push_back (std::make_pair (3072, -40.0)); // Outer band right
(stop) | |
686 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ax_5GHz 80MHz", WIFI_PHY_STAND
ARD_80211ax_5GHZ, 80, | 658 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ax_5GHz 80MHz", WIFI_PHY_STAND
ARD_80211ax_5GHZ, 80, |
687 maskSlopesLeft, maskSlopesRight,
tol), | 659 maskSlopesLeft, maskSlopesRight,
tol), |
688 TestCase::QUICK); | 660 TestCase::QUICK); |
689 | 661 |
690 // 11ax 160MHz @ 2.4GHz -> not enough space so skip | 662 // 11ax 160MHz @ 2.4GHz -> not enough space so skip |
691 | 663 |
692 // 11ax 160MHz @ 5GHz | 664 // 11ax 160MHz @ 5GHz |
693 NS_LOG_FUNCTION ("Check slopes for 11ax 160MHz @ 5GHz"); | 665 NS_LOG_FUNCTION ("Check slopes for 11ax 160MHz @ 5GHz"); |
694 maskSlopesLeft.clear (); | 666 maskSlopesLeft.clear (); |
695 maskSlopesRight.clear (); | 667 maskSlopesRight.clear (); |
696 maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (star
t) | 668 // Outer band left+right is out of considered truncated mask |
697 maskSlopesLeft.push_back (std::make_pair (1023, -28.012)); // Outer band left
(stop) | 669 maskSlopesLeft.push_back (std::make_pair (0, -21.965)); // Middle band left (s
tart) -> truncated |
698 maskSlopesLeft.push_back (std::make_pair (1024, -28.000)); // Middle band left
(start) | 670 maskSlopesLeft.push_back (std::make_pair (249, -20.008)); // Middle band left
(stop) |
699 maskSlopesLeft.push_back (std::make_pair (2041, -20.008)); // Middle band left
(stop) | 671 maskSlopesLeft.push_back (std::make_pair (250, -20.0)); // Flat junction band
left (start) |
700 maskSlopesLeft.push_back (std::make_pair (2042, -20.0)); // Flat junction band
left (start) | 672 maskSlopesLeft.push_back (std::make_pair (254, -20.0)); // Flat junction band
left (stop) |
701 maskSlopesLeft.push_back (std::make_pair (2046, -20.0)); // Flat junction band
left (stop) | 673 maskSlopesLeft.push_back (std::make_pair (255, -20.0)); // Inner band left (st
art) |
702 maskSlopesLeft.push_back (std::make_pair (2047, -20.0)); // Inner band left (s
tart) | 674 maskSlopesLeft.push_back (std::make_pair (267, -1.538)); // Inner band left (s
top) |
703 maskSlopesLeft.push_back (std::make_pair (2059, -1.538)); // Inner band left (
stop) | 675 maskSlopesRight.push_back (std::make_pair (2293, -1.538)); // Inner band right
(start) |
704 maskSlopesRight.push_back (std::make_pair (4085, -1.538)); // Inner band right
(start) | 676 maskSlopesRight.push_back (std::make_pair (2305, -20.0)); // Inner band right
(stop) |
705 maskSlopesRight.push_back (std::make_pair (4097, -20.0)); // Inner band right
(stop) | 677 maskSlopesRight.push_back (std::make_pair (2306, -20.0)); // Flat junction ban
d right (start) |
706 maskSlopesRight.push_back (std::make_pair (4098, -20.0)); // Flat junction ban
d right (start) | 678 maskSlopesRight.push_back (std::make_pair (2310, -20.0)); // Flat junction ban
d right (stop) |
707 maskSlopesRight.push_back (std::make_pair (4102, -20.0)); // Flat junction ban
d right (stop) | 679 maskSlopesRight.push_back (std::make_pair (2311, -20.008)); // Middle band rig
ht (start) |
708 maskSlopesRight.push_back (std::make_pair (4103, -20.008)); // Middle band rig
ht (start) | 680 maskSlopesRight.push_back (std::make_pair (2560, -21.965)); // Middle band rig
ht (stop) -> truncated |
709 maskSlopesRight.push_back (std::make_pair (5120, -28.000)); // Middle band rig
ht (stop) | |
710 maskSlopesRight.push_back (std::make_pair (5121, -28.012)); // Outer band righ
t (start) | |
711 maskSlopesRight.push_back (std::make_pair (6144, -40.0)); // Outer band right
(stop) | |
712 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ax_5GHz 160MHz", WIFI_PHY_STAN
DARD_80211ax_5GHZ, 160, | 681 AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ax_5GHz 160MHz", WIFI_PHY_STAN
DARD_80211ax_5GHZ, 160, |
713 maskSlopesLeft, maskSlopesRight,
tol), | 682 maskSlopesLeft, maskSlopesRight,
tol), |
714 TestCase::QUICK); | 683 TestCase::QUICK); |
715 | 684 |
716 } | 685 } |
LEFT | RIGHT |