wifi: Rework TX PSD mask tests

This commit is contained in:
Sebastien Deronne
2022-07-20 17:41:48 +02:00
parent 51bbc29921
commit d8f3fa3fe3

View File

@@ -57,20 +57,17 @@ public:
* \param standard selected standard
* \param band selected PHY band
* \param bw bandwidth
* \param maskRefsLeft vector of expected power values and corresponding indexes of generated PSD
* (only start and stop indexes/values given) for left guard bandwidth
* \param maskRefsRight vector of expected power values and corresponding indexes of generated PSD
* (only start and stop indexes/values given) for right guard bandwidth
* \param maskRefs vector of expected power values and corresponding indexes of generated PSD
* (only start and stop indexes/values given)
* \param tol tolerance (in dB)
*/
WifiOfdmMaskSlopesTestCase (const char* str, WifiStandard standard, WifiPhyBand band, uint8_t bw,
IndexPowerVect maskRefsLeft, IndexPowerVect maskRefsRight, double tol);
const IndexPowerVect& maskRefs, double tol);
virtual ~WifiOfdmMaskSlopesTestCase ();
protected:
Ptr<SpectrumValue> m_actualSpectrum; ///< actual spectrum value
IndexPowerVect m_expectedLeftPsd; ///< expected power values for left guard bandwidth
IndexPowerVect m_expectedRightPsd; ///< expected power values for right guard bandwidth
IndexPowerVect m_expectedPsd; ///< expected power values
double m_tolerance; ///< tolerance (in dB)
private:
@@ -90,11 +87,11 @@ private:
};
WifiOfdmMaskSlopesTestCase::WifiOfdmMaskSlopesTestCase (const char* str, WifiStandard standard, WifiPhyBand band, uint8_t bw,
IndexPowerVect maskRefsLeft, IndexPowerVect maskRefsRight, double tol)
const IndexPowerVect& maskRefs, double tol)
: TestCase (std::string ("SpectrumValue ") + str)
{
NS_LOG_FUNCTION (this << str << standard << band << +bw << tol);
NS_ASSERT (maskRefsLeft.size () % 2 == 0 && maskRefsRight.size () % 2 == 0); //start/stop pairs expected
NS_ASSERT (maskRefs.size () % 2 == 0); //start/stop pairs expected
uint16_t freq = 5170 + (bw / 2); // so as to have 5180/5190/5210/5250 for 20/40/80/160
double refTxPowerW = 1; // have to work in dBr when comparing though
m_tolerance = tol; // in dB
@@ -152,20 +149,11 @@ WifiOfdmMaskSlopesTestCase::WifiOfdmMaskSlopesTestCase (const char* str, WifiSta
break;
}
NS_LOG_INFO ("Build expected left PSD");
for (uint32_t i = 0; i < maskRefsLeft.size (); i = i + 2)
NS_LOG_INFO ("Build expected PSD");
for (uint32_t i = 0; i < maskRefs.size (); i = i + 2)
{
InterpolateAndAppendValues (m_expectedLeftPsd, maskRefsLeft[i], maskRefsLeft[i + 1], tol);
InterpolateAndAppendValues (m_expectedPsd, maskRefs[i], maskRefs[i + 1], tol);
}
NS_ASSERT (m_expectedLeftPsd.size () == (m_expectedLeftPsd.back ().first - m_expectedLeftPsd.front ().first + 1));
NS_LOG_INFO ("Build expected right PSD");
for (uint32_t i = 0; i < maskRefsRight.size (); i = i + 2)
{
InterpolateAndAppendValues (m_expectedRightPsd, maskRefsRight[i], maskRefsRight[i + 1], tol);
}
NS_ASSERT (m_expectedRightPsd.size () == (m_expectedRightPsd.back ().first - m_expectedRightPsd.front ().first + 1));
}
WifiOfdmMaskSlopesTestCase::~WifiOfdmMaskSlopesTestCase ()
@@ -173,7 +161,8 @@ WifiOfdmMaskSlopesTestCase::~WifiOfdmMaskSlopesTestCase ()
}
void
WifiOfdmMaskSlopesTestCase::InterpolateAndAppendValues (IndexPowerVect &vect, IndexPowerPair start, IndexPowerPair stop,
WifiOfdmMaskSlopesTestCase::InterpolateAndAppendValues (IndexPowerVect &vect,
IndexPowerPair start, IndexPowerPair stop,
double tol)
{
NS_LOG_FUNCTION (start.first << start.second << stop.first << stop.second);
@@ -209,21 +198,13 @@ WifiOfdmMaskSlopesTestCase::DoRun (void)
maxPowerW = std::max (maxPowerW, *vit);
}
NS_LOG_INFO ("Compare expected left PSD");
for (IndexPowerVect::const_iterator it = m_expectedLeftPsd.begin (); it != m_expectedLeftPsd.end (); it++)
NS_LOG_INFO ("Compare expected PSD");
for (IndexPowerVect::const_iterator it = m_expectedPsd.begin (); it != m_expectedPsd.end (); it++)
{
currentPowerDbr = 10.0 * std::log10 ((*m_actualSpectrum)[it->first] / maxPowerW);
NS_LOG_LOGIC ("For " << it->first << ", expected: " << it->second << " vs obtained: " << currentPowerDbr);
NS_TEST_EXPECT_MSG_EQ_TOL (currentPowerDbr, it->second, m_tolerance,
"Spectrum value mismatch for left guard band (" << it->first << ")");
}
NS_LOG_INFO ("Compare expected right PSD");
for (IndexPowerVect::const_iterator it = m_expectedRightPsd.begin (); it != m_expectedRightPsd.end (); it++)
{
currentPowerDbr = 10.0 * std::log10 ((*m_actualSpectrum)[it->first] / maxPowerW);
NS_LOG_LOGIC ("For " << it->first << ", expected: " << it->second << " vs obtained: " << currentPowerDbr);
NS_TEST_EXPECT_MSG_EQ_TOL (currentPowerDbr, it->second, m_tolerance,
"Spectrum value mismatch for right guard band (" << it->first << ")");
"Spectrum value mismatch for guard band (" << it->first << ")");
}
}
@@ -252,458 +233,488 @@ WifiTransmitMaskTestSuite::WifiTransmitMaskTestSuite ()
NS_LOG_INFO ("Creating WifiTransmitMaskTestSuite");
WifiOfdmMaskSlopesTestCase::IndexPowerVect maskSlopesLeft;
WifiOfdmMaskSlopesTestCase::IndexPowerVect maskSlopesRight;
WifiOfdmMaskSlopesTestCase::IndexPowerVect maskSlopes;
double tol = 0.001; // in dB
// ============================================================================================
// 11p 5MHz
NS_LOG_FUNCTION ("Check slopes for 11p 5MHz");
maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopesLeft.push_back (std::make_pair (31, -28.375)); // Outer band left (stop)
maskSlopesLeft.push_back (std::make_pair (32, -28.000)); // Middle band left (start)
maskSlopesLeft.push_back (std::make_pair (60, -20.276)); // Middle band left (stop)
maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band left (start)
maskSlopesLeft.push_back (std::make_pair (63, -20.0)); // Flat junction band left (stop)
maskSlopesLeft.push_back (std::make_pair (64, -20.0)); // Inner band left (start)
maskSlopesLeft.push_back (std::make_pair (69, -3.333)); // Inner band left (stop)
maskSlopesRight.push_back (std::make_pair (123, -3.333)); // Inner band right (start)
maskSlopesRight.push_back (std::make_pair (128, -20.0)); // Inner band right (stop)
maskSlopesRight.push_back (std::make_pair (129, -20.0)); // Flat junction band right (start)
maskSlopesRight.push_back (std::make_pair (131, -20.0)); // Flat junction band right (stop)
maskSlopesRight.push_back (std::make_pair (132, -20.276)); // Middle band right (start)
maskSlopesRight.push_back (std::make_pair (160, -28.000)); // Middle band right (stop)
maskSlopesRight.push_back (std::make_pair (161, -28.375)); // Outer band right (start)
maskSlopesRight.push_back (std::make_pair (192, -40.0)); // Outer band right (stop)
maskSlopes.clear ();
maskSlopes.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopes.push_back (std::make_pair (31, -28.375)); // Outer band left (stop)
maskSlopes.push_back (std::make_pair (32, -28.000)); // Middle band left (start)
maskSlopes.push_back (std::make_pair (60, -20.276)); // Middle band left (stop)
maskSlopes.push_back (std::make_pair (61, -20.0)); // Flat junction band left (start)
maskSlopes.push_back (std::make_pair (63, -20.0)); // Flat junction band left (stop)
maskSlopes.push_back (std::make_pair (64, -20.0)); // Inner band left (start)
maskSlopes.push_back (std::make_pair (69, -3.333)); // Inner band left (stop)
maskSlopes.push_back (std::make_pair (123, -3.333)); // Inner band right (start)
maskSlopes.push_back (std::make_pair (128, -20.0)); // Inner band right (stop)
maskSlopes.push_back (std::make_pair (129, -20.0)); // Flat junction band right (start)
maskSlopes.push_back (std::make_pair (131, -20.0)); // Flat junction band right (stop)
maskSlopes.push_back (std::make_pair (132, -20.276)); // Middle band right (start)
maskSlopes.push_back (std::make_pair (160, -28.000)); // Middle band right (stop)
maskSlopes.push_back (std::make_pair (161, -28.375)); // Outer band right (start)
maskSlopes.push_back (std::make_pair (192, -40.0)); // Outer band right (stop)
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11p 5MHz", WIFI_STANDARD_80211p, WIFI_PHY_BAND_5GHZ,
5, maskSlopesLeft, maskSlopesRight, tol),
5, maskSlopes, tol),
TestCase::QUICK);
// 11p 10MHz
NS_LOG_FUNCTION ("Check slopes for 11p 10MHz");
maskSlopesLeft.clear ();
maskSlopesRight.clear ();
maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopesLeft.push_back (std::make_pair (31, -28.375)); // Outer band left (stop)
maskSlopesLeft.push_back (std::make_pair (32, -28.000)); // Middle band left (start)
maskSlopesLeft.push_back (std::make_pair (60, -20.276)); // Middle band left (stop)
maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band left (start)
maskSlopesLeft.push_back (std::make_pair (63, -20.0)); // Flat junction band left (stop)
maskSlopesLeft.push_back (std::make_pair (64, -20.0)); // Inner band left (start)
maskSlopesLeft.push_back (std::make_pair (69, -3.333)); // Inner band left (stop)
maskSlopesRight.push_back (std::make_pair (123, -3.333)); // Inner band right (start)
maskSlopesRight.push_back (std::make_pair (128, -20.0)); // Inner band right (stop)
maskSlopesRight.push_back (std::make_pair (129, -20.0)); // Flat junction band right (start)
maskSlopesRight.push_back (std::make_pair (131, -20.0)); // Flat junction band right (stop)
maskSlopesRight.push_back (std::make_pair (132, -20.276)); // Middle band right (start)
maskSlopesRight.push_back (std::make_pair (160, -28.000)); // Middle band right (stop)
maskSlopesRight.push_back (std::make_pair (161, -28.375)); // Outer band right (start)
maskSlopesRight.push_back (std::make_pair (192, -40.0)); // Outer band right (stop)
maskSlopes.clear ();
maskSlopes.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopes.push_back (std::make_pair (31, -28.375)); // Outer band left (stop)
maskSlopes.push_back (std::make_pair (32, -28.000)); // Middle band left (start)
maskSlopes.push_back (std::make_pair (60, -20.276)); // Middle band left (stop)
maskSlopes.push_back (std::make_pair (61, -20.0)); // Flat junction band left (start)
maskSlopes.push_back (std::make_pair (63, -20.0)); // Flat junction band left (stop)
maskSlopes.push_back (std::make_pair (64, -20.0)); // Inner band left (start)
maskSlopes.push_back (std::make_pair (69, -3.333)); // Inner band left (stop)
maskSlopes.push_back (std::make_pair (123, -3.333)); // Inner band right (start)
maskSlopes.push_back (std::make_pair (128, -20.0)); // Inner band right (stop)
maskSlopes.push_back (std::make_pair (129, -20.0)); // Flat junction band right (start)
maskSlopes.push_back (std::make_pair (131, -20.0)); // Flat junction band right (stop)
maskSlopes.push_back (std::make_pair (132, -20.276)); // Middle band right (start)
maskSlopes.push_back (std::make_pair (160, -28.000)); // Middle band right (stop)
maskSlopes.push_back (std::make_pair (161, -28.375)); // Outer band right (start)
maskSlopes.push_back (std::make_pair (192, -40.0)); // Outer band right (stop)
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11p 10MHz", WIFI_STANDARD_80211p, WIFI_PHY_BAND_5GHZ,
10, maskSlopesLeft, maskSlopesRight, tol),
10, maskSlopes, tol),
TestCase::QUICK);
// ============================================================================================
// 11a
NS_LOG_FUNCTION ("Check slopes for 11a");
maskSlopesLeft.clear ();
maskSlopesRight.clear ();
maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopesLeft.push_back (std::make_pair (31, -28.375)); // Outer band left (stop)
maskSlopesLeft.push_back (std::make_pair (32, -28.000)); // Middle band left (start)
maskSlopesLeft.push_back (std::make_pair (60, -20.276)); // Middle band left (stop)
maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band left (start)
maskSlopesLeft.push_back (std::make_pair (63, -20.0)); // Flat junction band left (stop)
maskSlopesLeft.push_back (std::make_pair (64, -20.0)); // Inner band left (start)
maskSlopesLeft.push_back (std::make_pair (69, -3.333)); // Inner band left (stop)
maskSlopesRight.push_back (std::make_pair (123, -3.333)); // Inner band right (start)
maskSlopesRight.push_back (std::make_pair (128, -20.0)); // Inner band right (stop)
maskSlopesRight.push_back (std::make_pair (129, -20.0)); // Flat junction band right (start)
maskSlopesRight.push_back (std::make_pair (131, -20.0)); // Flat junction band right (stop)
maskSlopesRight.push_back (std::make_pair (132, -20.276)); // Middle band right (start)
maskSlopesRight.push_back (std::make_pair (160, -28.000)); // Middle band right (stop)
maskSlopesRight.push_back (std::make_pair (161, -28.375)); // Outer band right (start)
maskSlopesRight.push_back (std::make_pair (192, -40.0)); // Outer band right (stop)
maskSlopes.clear ();
maskSlopes.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopes.push_back (std::make_pair (31, -28.375)); // Outer band left (stop)
maskSlopes.push_back (std::make_pair (32, -28.000)); // Middle band left (start)
maskSlopes.push_back (std::make_pair (60, -20.276)); // Middle band left (stop)
maskSlopes.push_back (std::make_pair (61, -20.0)); // Flat junction band left (start)
maskSlopes.push_back (std::make_pair (63, -20.0)); // Flat junction band left (stop)
maskSlopes.push_back (std::make_pair (64, -20.0)); // Inner band left (start)
maskSlopes.push_back (std::make_pair (69, -3.333)); // Inner band left (stop)
maskSlopes.push_back (std::make_pair (123, -3.333)); // Inner band right (start)
maskSlopes.push_back (std::make_pair (128, -20.0)); // Inner band right (stop)
maskSlopes.push_back (std::make_pair (129, -20.0)); // Flat junction band right (start)
maskSlopes.push_back (std::make_pair (131, -20.0)); // Flat junction band right (stop)
maskSlopes.push_back (std::make_pair (132, -20.276)); // Middle band right (start)
maskSlopes.push_back (std::make_pair (160, -28.000)); // Middle band right (stop)
maskSlopes.push_back (std::make_pair (161, -28.375)); // Outer band right (start)
maskSlopes.push_back (std::make_pair (192, -40.0)); // Outer band right (stop)
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11a", WIFI_STANDARD_80211a, WIFI_PHY_BAND_5GHZ,
20, maskSlopesLeft, maskSlopesRight, tol),
20, maskSlopes, tol),
TestCase::QUICK);
// 11g
NS_LOG_FUNCTION ("Check slopes for 11g");
// same slppes as 11g
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11g", WIFI_STANDARD_80211g, WIFI_PHY_BAND_2_4GHZ,
20, maskSlopesLeft, maskSlopesRight, tol),
20, maskSlopes, tol),
TestCase::QUICK);
// ============================================================================================
// 11n 20MHz @ 2.4GHz
NS_LOG_FUNCTION ("Check slopes for 11n 20MHz @ 2.4GHz");
maskSlopesLeft.clear ();
maskSlopesRight.clear ();
maskSlopesLeft.push_back (std::make_pair (0, -45.000)); // Outer band left (start)
maskSlopesLeft.push_back (std::make_pair (31, -28.531)); // Outer band left (stop)
maskSlopesLeft.push_back (std::make_pair (32, -28.000)); // Middle band left (start)
maskSlopesLeft.push_back (std::make_pair (60, -20.276)); // Middle band left (stop)
maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band left (start)
maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band left (stop)
maskSlopesLeft.push_back (std::make_pair (62, -20.0)); // Inner band left (start)
maskSlopesLeft.push_back (std::make_pair (67, -3.333)); // Inner band left (stop)
maskSlopesRight.push_back (std::make_pair (125, -3.333)); // Inner band right (start)
maskSlopesRight.push_back (std::make_pair (130, -20.0)); // Inner band right (stop)
maskSlopesRight.push_back (std::make_pair (131, -20.0)); // Flat junction band right (start)
maskSlopesRight.push_back (std::make_pair (131, -20.0)); // Flat junction band right (stop)
maskSlopesRight.push_back (std::make_pair (132, -20.276)); // Middle band right (start)
maskSlopesRight.push_back (std::make_pair (160, -28.000)); // Middle band right (stop)
maskSlopesRight.push_back (std::make_pair (161, -28.531)); // Outer band right (start)
maskSlopesRight.push_back (std::make_pair (192, -45.000)); // Outer band right (stop)
maskSlopes.clear ();
maskSlopes.push_back (std::make_pair (0, -45.000)); // Outer band left (start)
maskSlopes.push_back (std::make_pair (31, -28.531)); // Outer band left (stop)
maskSlopes.push_back (std::make_pair (32, -28.000)); // Middle band left (start)
maskSlopes.push_back (std::make_pair (60, -20.276)); // Middle band left (stop)
maskSlopes.push_back (std::make_pair (61, -20.0)); // Flat junction band left (start)
maskSlopes.push_back (std::make_pair (61, -20.0)); // Flat junction band left (stop)
maskSlopes.push_back (std::make_pair (62, -20.0)); // Inner band left (start)
maskSlopes.push_back (std::make_pair (67, -3.333)); // Inner band left (stop)
maskSlopes.push_back (std::make_pair (125, -3.333)); // Inner band right (start)
maskSlopes.push_back (std::make_pair (130, -20.0)); // Inner band right (stop)
maskSlopes.push_back (std::make_pair (131, -20.0)); // Flat junction band right (start)
maskSlopes.push_back (std::make_pair (131, -20.0)); // Flat junction band right (stop)
maskSlopes.push_back (std::make_pair (132, -20.276)); // Middle band right (start)
maskSlopes.push_back (std::make_pair (160, -28.000)); // Middle band right (stop)
maskSlopes.push_back (std::make_pair (161, -28.531)); // Outer band right (start)
maskSlopes.push_back (std::make_pair (192, -45.000)); // Outer band right (stop)
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11n_2.4GHz 20MHz", WIFI_STANDARD_80211n, WIFI_PHY_BAND_2_4GHZ,
20, maskSlopesLeft, maskSlopesRight, tol),
20, maskSlopes, tol),
TestCase::QUICK);
// 11n 20MHz @ 5GHz
NS_LOG_FUNCTION ("Check slopes for 11n 20MHz @ 5GHz");
maskSlopesLeft.clear ();
maskSlopesRight.clear ();
maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopesLeft.push_back (std::make_pair (31, -28.375)); // Outer band left (stop)
maskSlopesLeft.push_back (std::make_pair (32, -28.000)); // Middle band left (start)
maskSlopesLeft.push_back (std::make_pair (60, -20.276)); // Middle band left (stop)
maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band left (start)
maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band left (stop)
maskSlopesLeft.push_back (std::make_pair (62, -20.0)); // Inner band left (start)
maskSlopesLeft.push_back (std::make_pair (67, -3.333)); // Inner band left (stop)
maskSlopesRight.push_back (std::make_pair (125, -3.333)); // Inner band right (start)
maskSlopesRight.push_back (std::make_pair (130, -20.0)); // Inner band right (stop)
maskSlopesRight.push_back (std::make_pair (131, -20.0)); // Flat junction band right (start)
maskSlopesRight.push_back (std::make_pair (131, -20.0)); // Flat junction band right (stop)
maskSlopesRight.push_back (std::make_pair (132, -20.276)); // Middle band right (start)
maskSlopesRight.push_back (std::make_pair (160, -28.000)); // Middle band right (stop)
maskSlopesRight.push_back (std::make_pair (161, -28.375)); // Outer band right (start)
maskSlopesRight.push_back (std::make_pair (192, -40.0)); // Outer band right (stop)
maskSlopes.clear ();
maskSlopes.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopes.push_back (std::make_pair (31, -28.375)); // Outer band left (stop)
maskSlopes.push_back (std::make_pair (32, -28.000)); // Middle band left (start)
maskSlopes.push_back (std::make_pair (60, -20.276)); // Middle band left (stop)
maskSlopes.push_back (std::make_pair (61, -20.0)); // Flat junction band left (start)
maskSlopes.push_back (std::make_pair (61, -20.0)); // Flat junction band left (stop)
maskSlopes.push_back (std::make_pair (62, -20.0)); // Inner band left (start)
maskSlopes.push_back (std::make_pair (67, -3.333)); // Inner band left (stop)
maskSlopes.push_back (std::make_pair (125, -3.333)); // Inner band right (start)
maskSlopes.push_back (std::make_pair (130, -20.0)); // Inner band right (stop)
maskSlopes.push_back (std::make_pair (131, -20.0)); // Flat junction band right (start)
maskSlopes.push_back (std::make_pair (131, -20.0)); // Flat junction band right (stop)
maskSlopes.push_back (std::make_pair (132, -20.276)); // Middle band right (start)
maskSlopes.push_back (std::make_pair (160, -28.000)); // Middle band right (stop)
maskSlopes.push_back (std::make_pair (161, -28.375)); // Outer band right (start)
maskSlopes.push_back (std::make_pair (192, -40.0)); // Outer band right (stop)
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11n_5GHz 20MHz", WIFI_STANDARD_80211n, WIFI_PHY_BAND_5GHZ,
20, maskSlopesLeft, maskSlopesRight, tol),
20, maskSlopes, tol),
TestCase::QUICK);
// 11n 40MHz @ 2.4GHz
NS_LOG_FUNCTION ("Check slopes for 11n 40MHz @ 2.4GHz");
maskSlopesLeft.clear ();
maskSlopesRight.clear ();
maskSlopesLeft.push_back (std::make_pair (0, -45.000)); // Outer band left (start)
maskSlopesLeft.push_back (std::make_pair (63, -28.266)); // Outer band left (stop)
maskSlopesLeft.push_back (std::make_pair (64, -28.000)); // Middle band left (start)
maskSlopesLeft.push_back (std::make_pair (124, -20.131)); // Middle band left (stop)
maskSlopesLeft.push_back (std::make_pair (125, -20.0)); // Flat junction band left (start)
maskSlopesLeft.push_back (std::make_pair (125, -20.0)); // Flat junction band left (stop)
maskSlopesLeft.push_back (std::make_pair (126, -20.0)); // Inner band left (start)
maskSlopesLeft.push_back (std::make_pair (131, -3.333)); // Inner band left (stop)
maskSlopesRight.push_back (std::make_pair (253, -3.333)); // Inner band right (start)
maskSlopesRight.push_back (std::make_pair (258, -20.0)); // Inner band right (stop)
maskSlopesRight.push_back (std::make_pair (259, -20.0)); // Flat junction band right (start)
maskSlopesRight.push_back (std::make_pair (259, -20.0)); // Flat junction band right (stop)
maskSlopesRight.push_back (std::make_pair (260, -20.131)); // Middle band right (start)
maskSlopesRight.push_back (std::make_pair (320, -28.000)); // Middle band right (stop)
maskSlopesRight.push_back (std::make_pair (321, -28.266)); // Outer band right (start)
maskSlopesRight.push_back (std::make_pair (384, -45.000)); // Outer band right (stop)
maskSlopes.clear ();
maskSlopes.push_back (std::make_pair (0, -45.000)); // Outer band left (start)
maskSlopes.push_back (std::make_pair (63, -28.266)); // Outer band left (stop)
maskSlopes.push_back (std::make_pair (64, -28.000)); // Middle band left (start)
maskSlopes.push_back (std::make_pair (124, -20.131)); // Middle band left (stop)
maskSlopes.push_back (std::make_pair (125, -20.0)); // Flat junction band left (start)
maskSlopes.push_back (std::make_pair (125, -20.0)); // Flat junction band left (stop)
maskSlopes.push_back (std::make_pair (126, -20.0)); // Inner band left (start)
maskSlopes.push_back (std::make_pair (131, -3.333)); // Inner band left (stop)
maskSlopes.push_back (std::make_pair (253, -3.333)); // Inner band right (start)
maskSlopes.push_back (std::make_pair (258, -20.0)); // Inner band right (stop)
maskSlopes.push_back (std::make_pair (259, -20.0)); // Flat junction band right (start)
maskSlopes.push_back (std::make_pair (259, -20.0)); // Flat junction band right (stop)
maskSlopes.push_back (std::make_pair (260, -20.131)); // Middle band right (start)
maskSlopes.push_back (std::make_pair (320, -28.000)); // Middle band right (stop)
maskSlopes.push_back (std::make_pair (321, -28.266)); // Outer band right (start)
maskSlopes.push_back (std::make_pair (384, -45.000)); // Outer band right (stop)
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11n_2.4GHz 40MHz", WIFI_STANDARD_80211n, WIFI_PHY_BAND_2_4GHZ,
40, maskSlopesLeft, maskSlopesRight, tol),
40, maskSlopes, tol),
TestCase::QUICK);
// 11n 20MHz @ 5GHz
NS_LOG_FUNCTION ("Check slopes for 11n 40MHz @ 5GHz");
maskSlopesLeft.clear ();
maskSlopesRight.clear ();
maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopesLeft.push_back (std::make_pair (63, -28.188)); // Outer band left (stop)
maskSlopesLeft.push_back (std::make_pair (64, -28.000)); // Middle band left (start)
maskSlopesLeft.push_back (std::make_pair (124, -20.131)); // Middle band left (stop)
maskSlopesLeft.push_back (std::make_pair (125, -20.0)); // Flat junction band left (start)
maskSlopesLeft.push_back (std::make_pair (125, -20.0)); // Flat junction band left (stop)
maskSlopesLeft.push_back (std::make_pair (126, -20.0)); // Inner band left (start)
maskSlopesLeft.push_back (std::make_pair (131, -3.333)); // Inner band left (stop)
maskSlopesRight.push_back (std::make_pair (253, -3.333)); // Inner band right (start)
maskSlopesRight.push_back (std::make_pair (258, -20.0)); // Inner band right (stop)
maskSlopesRight.push_back (std::make_pair (259, -20.0)); // Flat junction band right (start)
maskSlopesRight.push_back (std::make_pair (259, -20.0)); // Flat junction band right (stop)
maskSlopesRight.push_back (std::make_pair (260, -20.131)); // Middle band right (start)
maskSlopesRight.push_back (std::make_pair (320, -28.000)); // Middle band right (stop)
maskSlopesRight.push_back (std::make_pair (321, -28.188)); // Outer band right (start)
maskSlopesRight.push_back (std::make_pair (384, -40.0)); // Outer band right (stop)
maskSlopes.clear ();
maskSlopes.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopes.push_back (std::make_pair (63, -28.188)); // Outer band left (stop)
maskSlopes.push_back (std::make_pair (64, -28.000)); // Middle band left (start)
maskSlopes.push_back (std::make_pair (124, -20.131)); // Middle band left (stop)
maskSlopes.push_back (std::make_pair (125, -20.0)); // Flat junction band left (start)
maskSlopes.push_back (std::make_pair (125, -20.0)); // Flat junction band left (stop)
maskSlopes.push_back (std::make_pair (126, -20.0)); // Inner band left (start)
maskSlopes.push_back (std::make_pair (131, -3.333)); // Inner band left (stop)
maskSlopes.push_back (std::make_pair (253, -3.333)); // Inner band right (start)
maskSlopes.push_back (std::make_pair (258, -20.0)); // Inner band right (stop)
maskSlopes.push_back (std::make_pair (259, -20.0)); // Flat junction band right (start)
maskSlopes.push_back (std::make_pair (259, -20.0)); // Flat junction band right (stop)
maskSlopes.push_back (std::make_pair (260, -20.131)); // Middle band right (start)
maskSlopes.push_back (std::make_pair (320, -28.000)); // Middle band right (stop)
maskSlopes.push_back (std::make_pair (321, -28.188)); // Outer band right (start)
maskSlopes.push_back (std::make_pair (384, -40.0)); // Outer band right (stop)
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11n_5GHz 40MHz", WIFI_STANDARD_80211n, WIFI_PHY_BAND_5GHZ,
40, maskSlopesLeft, maskSlopesRight, tol),
40, maskSlopes, tol),
TestCase::QUICK);
// ============================================================================================
// 11ac 20MHz
NS_LOG_FUNCTION ("Check slopes for 11ac 20MHz");
maskSlopesLeft.clear ();
maskSlopesRight.clear ();
maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopesLeft.push_back (std::make_pair (31, -28.375)); // Outer band left (stop)
maskSlopesLeft.push_back (std::make_pair (32, -28.000)); // Middle band left (start)
maskSlopesLeft.push_back (std::make_pair (60, -20.276)); // Middle band left (stop)
maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band left (start)
maskSlopesLeft.push_back (std::make_pair (61, -20.0)); // Flat junction band left (stop)
maskSlopesLeft.push_back (std::make_pair (62, -20.0)); // Inner band left (start)
maskSlopesLeft.push_back (std::make_pair (67, -3.333)); // Inner band left (stop)
maskSlopesRight.push_back (std::make_pair (125, -3.333)); // Inner band right (start)
maskSlopesRight.push_back (std::make_pair (130, -20.0)); // Inner band right (stop)
maskSlopesRight.push_back (std::make_pair (131, -20.0)); // Flat junction band right (start)
maskSlopesRight.push_back (std::make_pair (131, -20.0)); // Flat junction band right (stop)
maskSlopesRight.push_back (std::make_pair (132, -20.276)); // Middle band right (start)
maskSlopesRight.push_back (std::make_pair (160, -28.000)); // Middle band right (stop)
maskSlopesRight.push_back (std::make_pair (161, -28.375)); // Outer band right (start)
maskSlopesRight.push_back (std::make_pair (192, -40.0)); // Outer band right (stop)
maskSlopes.clear ();
maskSlopes.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopes.push_back (std::make_pair (31, -28.375)); // Outer band left (stop)
maskSlopes.push_back (std::make_pair (32, -28.000)); // Middle band left (start)
maskSlopes.push_back (std::make_pair (60, -20.276)); // Middle band left (stop)
maskSlopes.push_back (std::make_pair (61, -20.0)); // Flat junction band left (start)
maskSlopes.push_back (std::make_pair (61, -20.0)); // Flat junction band left (stop)
maskSlopes.push_back (std::make_pair (62, -20.0)); // Inner band left (start)
maskSlopes.push_back (std::make_pair (67, -3.333)); // Inner band left (stop)
maskSlopes.push_back (std::make_pair (125, -3.333)); // Inner band right (start)
maskSlopes.push_back (std::make_pair (130, -20.0)); // Inner band right (stop)
maskSlopes.push_back (std::make_pair (131, -20.0)); // Flat junction band right (start)
maskSlopes.push_back (std::make_pair (131, -20.0)); // Flat junction band right (stop)
maskSlopes.push_back (std::make_pair (132, -20.276)); // Middle band right (start)
maskSlopes.push_back (std::make_pair (160, -28.000)); // Middle band right (stop)
maskSlopes.push_back (std::make_pair (161, -28.375)); // Outer band right (start)
maskSlopes.push_back (std::make_pair (192, -40.0)); // Outer band right (stop)
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ac 20MHz", WIFI_STANDARD_80211ac, WIFI_PHY_BAND_5GHZ,
20, maskSlopesLeft, maskSlopesRight, tol),
20, maskSlopes, tol),
TestCase::QUICK);
// 11ac 20MHz
NS_LOG_FUNCTION ("Check slopes for 11ac 40MHz");
maskSlopesLeft.clear ();
maskSlopesRight.clear ();
maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopesLeft.push_back (std::make_pair (63, -28.188)); // Outer band left (stop)
maskSlopesLeft.push_back (std::make_pair (64, -28.000)); // Middle band left (start)
maskSlopesLeft.push_back (std::make_pair (124, -20.131)); // Middle band left (stop)
maskSlopesLeft.push_back (std::make_pair (125, -20.0)); // Flat junction band left (start)
maskSlopesLeft.push_back (std::make_pair (125, -20.0)); // Flat junction band left (stop)
maskSlopesLeft.push_back (std::make_pair (126, -20.0)); // Inner band left (start)
maskSlopesLeft.push_back (std::make_pair (131, -3.333)); // Inner band left (stop)
maskSlopesRight.push_back (std::make_pair (253, -3.333)); // Inner band right (start)
maskSlopesRight.push_back (std::make_pair (258, -20.0)); // Inner band right (stop)
maskSlopesRight.push_back (std::make_pair (259, -20.0)); // Flat junction band right (start)
maskSlopesRight.push_back (std::make_pair (259, -20.0)); // Flat junction band right (stop)
maskSlopesRight.push_back (std::make_pair (260, -20.131)); // Middle band right (start)
maskSlopesRight.push_back (std::make_pair (320, -28.000)); // Middle band right (stop)
maskSlopesRight.push_back (std::make_pair (321, -28.188)); // Outer band right (start)
maskSlopesRight.push_back (std::make_pair (384, -40.0)); // Outer band right (stop)
maskSlopes.clear ();
maskSlopes.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopes.push_back (std::make_pair (63, -28.188)); // Outer band left (stop)
maskSlopes.push_back (std::make_pair (64, -28.000)); // Middle band left (start)
maskSlopes.push_back (std::make_pair (124, -20.131)); // Middle band left (stop)
maskSlopes.push_back (std::make_pair (125, -20.0)); // Flat junction band left (start)
maskSlopes.push_back (std::make_pair (125, -20.0)); // Flat junction band left (stop)
maskSlopes.push_back (std::make_pair (126, -20.0)); // Inner band left (start)
maskSlopes.push_back (std::make_pair (131, -3.333)); // Inner band left (stop)
maskSlopes.push_back (std::make_pair (253, -3.333)); // Inner band right (start)
maskSlopes.push_back (std::make_pair (258, -20.0)); // Inner band right (stop)
maskSlopes.push_back (std::make_pair (259, -20.0)); // Flat junction band right (start)
maskSlopes.push_back (std::make_pair (259, -20.0)); // Flat junction band right (stop)
maskSlopes.push_back (std::make_pair (260, -20.131)); // Middle band right (start)
maskSlopes.push_back (std::make_pair (320, -28.000)); // Middle band right (stop)
maskSlopes.push_back (std::make_pair (321, -28.188)); // Outer band right (start)
maskSlopes.push_back (std::make_pair (384, -40.0)); // Outer band right (stop)
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ac 40MHz", WIFI_STANDARD_80211ac, WIFI_PHY_BAND_5GHZ,
40, maskSlopesLeft, maskSlopesRight, tol),
40, maskSlopes, tol),
TestCase::QUICK);
// 11ac 80MHz
NS_LOG_FUNCTION ("Check slopes for 11ac 80MHz");
maskSlopesLeft.clear ();
maskSlopesRight.clear ();
maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopesLeft.push_back (std::make_pair (127, -28.094)); // Outer band left (stop)
maskSlopesLeft.push_back (std::make_pair (128, -28.000)); // Middle band left (start)
maskSlopesLeft.push_back (std::make_pair (252, -20.064)); // Middle band left (stop)
maskSlopesLeft.push_back (std::make_pair (253, -20.0)); // Flat junction band left (start)
maskSlopesLeft.push_back (std::make_pair (253, -20.0)); // Flat junction band left (stop)
maskSlopesLeft.push_back (std::make_pair (254, -20.0)); // Inner band left (start)
maskSlopesLeft.push_back (std::make_pair (259, -3.333)); // Inner band left (stop)
maskSlopesRight.push_back (std::make_pair (509, -3.333)); // Inner band right (start)
maskSlopesRight.push_back (std::make_pair (514, -20.0)); // Inner band right (stop)
maskSlopesRight.push_back (std::make_pair (515, -20.0)); // Flat junction band right (start)
maskSlopesRight.push_back (std::make_pair (515, -20.0)); // Flat junction band right (stop)
maskSlopesRight.push_back (std::make_pair (516, -20.064)); // Middle band right (start)
maskSlopesRight.push_back (std::make_pair (640, -28.000)); // Middle band right (stop)
maskSlopesRight.push_back (std::make_pair (641, -28.094)); // Outer band right (start)
maskSlopesRight.push_back (std::make_pair (768, -40.0)); // Outer band right (stop)
maskSlopes.clear ();
maskSlopes.clear ();
maskSlopes.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopes.push_back (std::make_pair (127, -28.094)); // Outer band left (stop)
maskSlopes.push_back (std::make_pair (128, -28.000)); // Middle band left (start)
maskSlopes.push_back (std::make_pair (252, -20.064)); // Middle band left (stop)
maskSlopes.push_back (std::make_pair (253, -20.0)); // Flat junction band left (start)
maskSlopes.push_back (std::make_pair (253, -20.0)); // Flat junction band left (stop)
maskSlopes.push_back (std::make_pair (254, -20.0)); // Inner band left (start)
maskSlopes.push_back (std::make_pair (259, -3.333)); // Inner band left (stop)
maskSlopes.push_back (std::make_pair (509, -3.333)); // Inner band right (start)
maskSlopes.push_back (std::make_pair (514, -20.0)); // Inner band right (stop)
maskSlopes.push_back (std::make_pair (515, -20.0)); // Flat junction band right (start)
maskSlopes.push_back (std::make_pair (515, -20.0)); // Flat junction band right (stop)
maskSlopes.push_back (std::make_pair (516, -20.064)); // Middle band right (start)
maskSlopes.push_back (std::make_pair (640, -28.000)); // Middle band right (stop)
maskSlopes.push_back (std::make_pair (641, -28.094)); // Outer band right (start)
maskSlopes.push_back (std::make_pair (768, -40.0)); // Outer band right (stop)
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ac 80MHz", WIFI_STANDARD_80211ac, WIFI_PHY_BAND_5GHZ,
80, maskSlopesLeft, maskSlopesRight, tol),
80, maskSlopes, tol),
TestCase::QUICK);
// 11ac 20MHz
NS_LOG_FUNCTION ("Check slopes for 11ac 160MHz");
maskSlopesLeft.clear ();
maskSlopesRight.clear ();
maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopesLeft.push_back (std::make_pair (255, -28.047)); // Outer band left (stop)
maskSlopesLeft.push_back (std::make_pair (256, -28.000)); // Middle band left (start)
maskSlopesLeft.push_back (std::make_pair (508, -20.032)); // Middle band left (stop)
maskSlopesLeft.push_back (std::make_pair (509, -20.0)); // Flat junction band left (start)
maskSlopesLeft.push_back (std::make_pair (509, -20.0)); // Flat junction band left (stop)
maskSlopesLeft.push_back (std::make_pair (510, -20.0)); // Inner band left (start)
maskSlopesLeft.push_back (std::make_pair (515, -3.333)); // Inner band left (stop)
maskSlopesRight.push_back (std::make_pair (1021, -3.333)); // Inner band right (start)
maskSlopesRight.push_back (std::make_pair (1026, -20.0)); // Inner band right (stop)
maskSlopesRight.push_back (std::make_pair (1027, -20.0)); // Flat junction band right (start)
maskSlopesRight.push_back (std::make_pair (1027, -20.0)); // Flat junction band right (stop)
maskSlopesRight.push_back (std::make_pair (1028, -20.032)); // Middle band right (start)
maskSlopesRight.push_back (std::make_pair (1280, -28.000)); // Middle band right (stop)
maskSlopesRight.push_back (std::make_pair (1281, -28.047)); // Outer band right (start)
maskSlopesRight.push_back (std::make_pair (1536, -40.0)); // Outer band right (stop)
maskSlopes.clear ();
maskSlopes.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopes.push_back (std::make_pair (255, -28.047)); // Outer band left (stop)
maskSlopes.push_back (std::make_pair (256, -28.000)); // Middle band left (start)
maskSlopes.push_back (std::make_pair (508, -20.032)); // Middle band left (stop)
maskSlopes.push_back (std::make_pair (509, -20.0)); // Flat junction band left (start)
maskSlopes.push_back (std::make_pair (509, -20.0)); // Flat junction band left (stop)
maskSlopes.push_back (std::make_pair (510, -20.0)); // Inner band left (start)
maskSlopes.push_back (std::make_pair (515, -3.333)); // Inner band left (stop)
maskSlopes.push_back (std::make_pair (1021, -3.333)); // Inner band right (start)
maskSlopes.push_back (std::make_pair (1026, -20.0)); // Inner band right (stop)
maskSlopes.push_back (std::make_pair (1027, -20.0)); // Flat junction band right (start)
maskSlopes.push_back (std::make_pair (1027, -20.0)); // Flat junction band right (stop)
maskSlopes.push_back (std::make_pair (1028, -20.032)); // Middle band right (start)
maskSlopes.push_back (std::make_pair (1280, -28.000)); // Middle band right (stop)
maskSlopes.push_back (std::make_pair (1281, -28.047)); // Outer band right (start)
maskSlopes.push_back (std::make_pair (1536, -40.0)); // Outer band right (stop)
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ac 160MHz", WIFI_STANDARD_80211ac, WIFI_PHY_BAND_5GHZ,
160, maskSlopesLeft, maskSlopesRight, tol),
160, maskSlopes, tol),
TestCase::QUICK);
// ============================================================================================
// 11ax 20MHz @ 2.4GHz
NS_LOG_FUNCTION ("Check slopes for 11ax 20MHz @ 2.4GHz");
maskSlopesLeft.clear ();
maskSlopesRight.clear ();
maskSlopesLeft.push_back (std::make_pair (0, -45.000)); // Outer band left (start)
maskSlopesLeft.push_back (std::make_pair (127, -28.133)); // Outer band left (stop)
maskSlopesLeft.push_back (std::make_pair (128, -28.000)); // Middle band left (start)
maskSlopesLeft.push_back (std::make_pair (252, -20.064)); // Middle band left (stop)
maskSlopesLeft.push_back (std::make_pair (253, -20.0)); // Flat junction band left (start)
maskSlopesLeft.push_back (std::make_pair (255, -20.0)); // Flat junction band left (stop)
maskSlopesLeft.push_back (std::make_pair (256, -20.0)); // Inner band left (start)
maskSlopesLeft.push_back (std::make_pair (261, -3.333)); // Inner band left (stop)
maskSlopesRight.push_back (std::make_pair (507, -3.333)); // Inner band right (start)
maskSlopesRight.push_back (std::make_pair (512, -20.0)); // Inner band right (stop)
maskSlopesRight.push_back (std::make_pair (513, -20.0)); // Flat junction band right (start)
maskSlopesRight.push_back (std::make_pair (515, -20.0)); // Flat junction band right (stop)
maskSlopesRight.push_back (std::make_pair (516, -20.064)); // Middle band right (start)
maskSlopesRight.push_back (std::make_pair (640, -28.000)); // Middle band right (stop)
maskSlopesRight.push_back (std::make_pair (641, -28.133)); // Outer band right (start)
maskSlopesRight.push_back (std::make_pair (768, -45.000)); // Outer band right (stop)
maskSlopes.clear ();
maskSlopes.push_back (std::make_pair (0, -45.000)); // Outer band left (start)
maskSlopes.push_back (std::make_pair (127, -28.133)); // Outer band left (stop)
maskSlopes.push_back (std::make_pair (128, -28.000)); // Middle band left (start)
maskSlopes.push_back (std::make_pair (252, -20.064)); // Middle band left (stop)
maskSlopes.push_back (std::make_pair (253, -20.0)); // Flat junction band left (start)
maskSlopes.push_back (std::make_pair (255, -20.0)); // Flat junction band left (stop)
maskSlopes.push_back (std::make_pair (256, -20.0)); // Inner band left (start)
maskSlopes.push_back (std::make_pair (261, -3.333)); // Inner band left (stop)
maskSlopes.push_back (std::make_pair (262, 0.0)); // allocated band left (start)
maskSlopes.push_back (std::make_pair (382, 0.0)); // allocated band left (stop)
maskSlopes.push_back (std::make_pair (383, -20.0)); // DC band (start)
maskSlopes.push_back (std::make_pair (385, -20.0)); // DC band (stop)
maskSlopes.push_back (std::make_pair (386, 0.0)); // allocated band right (start)
maskSlopes.push_back (std::make_pair (506, 0.0)); // allocated band right (stop)
maskSlopes.push_back (std::make_pair (507, -3.333)); // Inner band right (start)
maskSlopes.push_back (std::make_pair (512, -20.0)); // Inner band right (stop)
maskSlopes.push_back (std::make_pair (513, -20.0)); // Flat junction band right (start)
maskSlopes.push_back (std::make_pair (515, -20.0)); // Flat junction band right (stop)
maskSlopes.push_back (std::make_pair (516, -20.064)); // Middle band right (start)
maskSlopes.push_back (std::make_pair (640, -28.000)); // Middle band right (stop)
maskSlopes.push_back (std::make_pair (641, -28.133)); // Outer band right (start)
maskSlopes.push_back (std::make_pair (768, -45.000)); // Outer band right (stop)
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ax_2.4GHz 20MHz", WIFI_STANDARD_80211ax, WIFI_PHY_BAND_2_4GHZ,
20, maskSlopesLeft, maskSlopesRight, tol),
20, maskSlopes, tol),
TestCase::QUICK);
// 11ax 20MHz @ 5GHz
NS_LOG_FUNCTION ("Check slopes for 11ax 20MHz @ 5GHz");
maskSlopesLeft.clear ();
maskSlopesRight.clear ();
maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopesLeft.push_back (std::make_pair (127, -28.094)); // Outer band left (stop)
maskSlopesLeft.push_back (std::make_pair (128, -28.000)); // Middle band left (start)
maskSlopesLeft.push_back (std::make_pair (252, -20.064)); // Middle band left (stop)
maskSlopesLeft.push_back (std::make_pair (253, -20.0)); // Flat junction band left (start)
maskSlopesLeft.push_back (std::make_pair (255, -20.0)); // Flat junction band left (stop)
maskSlopesLeft.push_back (std::make_pair (256, -20.0)); // Inner band left (start)
maskSlopesLeft.push_back (std::make_pair (261, -3.333)); // Inner band left (stop)
maskSlopesRight.push_back (std::make_pair (507, -3.333)); // Inner band right (start)
maskSlopesRight.push_back (std::make_pair (512, -20.0)); // Inner band right (stop)
maskSlopesRight.push_back (std::make_pair (513, -20.0)); // Flat junction band right (start)
maskSlopesRight.push_back (std::make_pair (515, -20.0)); // Flat junction band right (stop)
maskSlopesRight.push_back (std::make_pair (516, -20.064)); // Middle band right (start)
maskSlopesRight.push_back (std::make_pair (640, -28.000)); // Middle band right (stop)
maskSlopesRight.push_back (std::make_pair (641, -28.094)); // Outer band right (start)
maskSlopesRight.push_back (std::make_pair (768, -40.0)); // Outer band right (stop)
maskSlopes.clear ();
maskSlopes.clear ();
maskSlopes.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopes.push_back (std::make_pair (127, -28.094)); // Outer band left (stop)
maskSlopes.push_back (std::make_pair (128, -28.000)); // Middle band left (start)
maskSlopes.push_back (std::make_pair (252, -20.064)); // Middle band left (stop)
maskSlopes.push_back (std::make_pair (253, -20.0)); // Flat junction band left (start)
maskSlopes.push_back (std::make_pair (255, -20.0)); // Flat junction band left (stop)
maskSlopes.push_back (std::make_pair (256, -20.0)); // Inner band left (start)
maskSlopes.push_back (std::make_pair (261, -3.333)); // Inner band left (stop)
maskSlopes.push_back (std::make_pair (262, 0.0)); // allocated band left (start)
maskSlopes.push_back (std::make_pair (382, 0.0)); // allocated band left (stop)
maskSlopes.push_back (std::make_pair (383, -20.0)); // DC band (start)
maskSlopes.push_back (std::make_pair (385, -20.0)); // DC band (stop)
maskSlopes.push_back (std::make_pair (386, 0.0)); // allocated band right (start)
maskSlopes.push_back (std::make_pair (506, 0.0)); // allocated band right (stop)
maskSlopes.push_back (std::make_pair (507, -3.333)); // Inner band right (start)
maskSlopes.push_back (std::make_pair (512, -20.0)); // Inner band right (stop)
maskSlopes.push_back (std::make_pair (513, -20.0)); // Flat junction band right (start)
maskSlopes.push_back (std::make_pair (515, -20.0)); // Flat junction band right (stop)
maskSlopes.push_back (std::make_pair (516, -20.064)); // Middle band right (start)
maskSlopes.push_back (std::make_pair (640, -28.000)); // Middle band right (stop)
maskSlopes.push_back (std::make_pair (641, -28.094)); // Outer band right (start)
maskSlopes.push_back (std::make_pair (768, -40.0)); // Outer band right (stop)
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ax_5GHz 20MHz", WIFI_STANDARD_80211ax, WIFI_PHY_BAND_5GHZ,
20, maskSlopesLeft, maskSlopesRight, tol),
20, maskSlopes, tol),
TestCase::QUICK);
// 11ax 40MHz @ 2.4GHz
NS_LOG_FUNCTION ("Check slopes for 11ax 40MHz @ 2.4GHz");
maskSlopesLeft.clear ();
maskSlopesRight.clear ();
maskSlopesLeft.push_back (std::make_pair (0, -45.000)); // Outer band left (start)
maskSlopesLeft.push_back (std::make_pair (255, -28.066)); // Outer band left (stop)
maskSlopesLeft.push_back (std::make_pair (256, -28.000)); // Middle band left (start)
maskSlopesLeft.push_back (std::make_pair (505, -20.032)); // Middle band left (stop)
maskSlopesLeft.push_back (std::make_pair (506, -20.0)); // Flat junction band left (start)
maskSlopesLeft.push_back (std::make_pair (510, -20.0)); // Flat junction band left (stop)
maskSlopesLeft.push_back (std::make_pair (511, -20.0)); // Inner band left (start)
maskSlopesLeft.push_back (std::make_pair (523, -1.538)); // Inner band left (stop)
maskSlopesRight.push_back (std::make_pair (1013, -1.538)); // Inner band right (start)
maskSlopesRight.push_back (std::make_pair (1025, -20.0)); // Inner band right (stop)
maskSlopesRight.push_back (std::make_pair (1026, -20.0)); // Flat junction band right (start)
maskSlopesRight.push_back (std::make_pair (1030, -20.0)); // Flat junction band right (stop)
maskSlopesRight.push_back (std::make_pair (1031, -20.032)); // Middle band right (start)
maskSlopesRight.push_back (std::make_pair (1280, -28.000)); // Middle band right (stop)
maskSlopesRight.push_back (std::make_pair (1281, -28.066)); // Outer band right (start)
maskSlopesRight.push_back (std::make_pair (1536, -45.000)); // Outer band right (stop)
maskSlopes.clear ();
maskSlopes.push_back (std::make_pair (0, -45.000)); // Outer band left (start)
maskSlopes.push_back (std::make_pair (255, -28.066)); // Outer band left (stop)
maskSlopes.push_back (std::make_pair (256, -28.000)); // Middle band left (start)
maskSlopes.push_back (std::make_pair (505, -20.032)); // Middle band left (stop)
maskSlopes.push_back (std::make_pair (506, -20.0)); // Flat junction band left (start)
maskSlopes.push_back (std::make_pair (510, -20.0)); // Flat junction band left (stop)
maskSlopes.push_back (std::make_pair (511, -20.0)); // Inner band left (start)
maskSlopes.push_back (std::make_pair (523, -1.538)); // Inner band left (stop)
maskSlopes.push_back (std::make_pair (524, 0.0)); // allocated band left (start)
maskSlopes.push_back (std::make_pair (765, 0.0)); // allocated band left (stop)
maskSlopes.push_back (std::make_pair (766, -20.0)); // DC band (start)
maskSlopes.push_back (std::make_pair (770, -20.0)); // DC band (stop)
maskSlopes.push_back (std::make_pair (771, 0.0)); // allocated band right (start)
maskSlopes.push_back (std::make_pair (1012, 0.0)); // allocated band right (stop)
maskSlopes.push_back (std::make_pair (1013, -1.538)); // Inner band right (start)
maskSlopes.push_back (std::make_pair (1025, -20.0)); // Inner band right (stop)
maskSlopes.push_back (std::make_pair (1026, -20.0)); // Flat junction band right (start)
maskSlopes.push_back (std::make_pair (1030, -20.0)); // Flat junction band right (stop)
maskSlopes.push_back (std::make_pair (1031, -20.032)); // Middle band right (start)
maskSlopes.push_back (std::make_pair (1280, -28.000)); // Middle band right (stop)
maskSlopes.push_back (std::make_pair (1281, -28.066)); // Outer band right (start)
maskSlopes.push_back (std::make_pair (1536, -45.000)); // Outer band right (stop)
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ax_2.4GHz 40MHz", WIFI_STANDARD_80211ax, WIFI_PHY_BAND_2_4GHZ,
40, maskSlopesLeft, maskSlopesRight, tol),
40, maskSlopes, tol),
TestCase::QUICK);
// 11ax 40MHz @ 5GHz
NS_LOG_FUNCTION ("Check slopes for 11ax 40MHz @ 5GHz");
maskSlopesLeft.clear ();
maskSlopesRight.clear ();
maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopesLeft.push_back (std::make_pair (255, -28.047)); // Outer band left (stop)
maskSlopesLeft.push_back (std::make_pair (256, -28.000)); // Middle band left (start)
maskSlopesLeft.push_back (std::make_pair (505, -20.032)); // Middle band left (stop)
maskSlopesLeft.push_back (std::make_pair (506, -20.0)); // Flat junction band left (start)
maskSlopesLeft.push_back (std::make_pair (510, -20.0)); // Flat junction band left (stop)
maskSlopesLeft.push_back (std::make_pair (511, -20.0)); // Inner band left (start)
maskSlopesLeft.push_back (std::make_pair (523, -1.538)); // Inner band left (stop)
maskSlopesRight.push_back (std::make_pair (1013, -1.538)); // Inner band right (start)
maskSlopesRight.push_back (std::make_pair (1025, -20.0)); // Inner band right (stop)
maskSlopesRight.push_back (std::make_pair (1026, -20.0)); // Flat junction band right (start)
maskSlopesRight.push_back (std::make_pair (1030, -20.0)); // Flat junction band right (stop)
maskSlopesRight.push_back (std::make_pair (1031, -20.032)); // Middle band right (start)
maskSlopesRight.push_back (std::make_pair (1280, -28.000)); // Middle band right (stop)
maskSlopesRight.push_back (std::make_pair (1281, -28.047)); // Outer band right (start)
maskSlopesRight.push_back (std::make_pair (1536, -40.0)); // Outer band right (stop)
maskSlopes.clear ();
maskSlopes.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopes.push_back (std::make_pair (255, -28.047)); // Outer band left (stop)
maskSlopes.push_back (std::make_pair (256, -28.000)); // Middle band left (start)
maskSlopes.push_back (std::make_pair (505, -20.032)); // Middle band left (stop)
maskSlopes.push_back (std::make_pair (506, -20.0)); // Flat junction band left (start)
maskSlopes.push_back (std::make_pair (510, -20.0)); // Flat junction band left (stop)
maskSlopes.push_back (std::make_pair (511, -20.0)); // Inner band left (start)
maskSlopes.push_back (std::make_pair (523, -1.538)); // Inner band left (stop)
maskSlopes.push_back (std::make_pair (524, 0.0)); // allocated band left (start)
maskSlopes.push_back (std::make_pair (765, 0.0)); // allocated band left (stop)
maskSlopes.push_back (std::make_pair (766, -20.0)); // DC band (start)
maskSlopes.push_back (std::make_pair (770, -20.0)); // DC band (stop)
maskSlopes.push_back (std::make_pair (771, 0.0)); // allocated band right (start)
maskSlopes.push_back (std::make_pair (1012, 0.0)); // allocated band right (stop)
maskSlopes.push_back (std::make_pair (1013, -1.538)); // Inner band right (start)
maskSlopes.push_back (std::make_pair (1025, -20.0)); // Inner band right (stop)
maskSlopes.push_back (std::make_pair (1026, -20.0)); // Flat junction band right (start)
maskSlopes.push_back (std::make_pair (1030, -20.0)); // Flat junction band right (stop)
maskSlopes.push_back (std::make_pair (1031, -20.032)); // Middle band right (start)
maskSlopes.push_back (std::make_pair (1280, -28.000)); // Middle band right (stop)
maskSlopes.push_back (std::make_pair (1281, -28.047)); // Outer band right (start)
maskSlopes.push_back (std::make_pair (1536, -40.0)); // Outer band right (stop)
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ax_5GHz 40MHz", WIFI_STANDARD_80211ax, WIFI_PHY_BAND_5GHZ,
40, maskSlopesLeft, maskSlopesRight, tol),
40, maskSlopes, tol),
TestCase::QUICK);
// 11ax 80MHz @ 2.4GHz
NS_LOG_FUNCTION ("Check slopes for 11ax 80MHz @ 2.4GHz");
maskSlopesLeft.clear ();
maskSlopesRight.clear ();
maskSlopesLeft.push_back (std::make_pair (0, -45.000)); // Outer band left (start)
maskSlopesLeft.push_back (std::make_pair (511, -28.033)); // Outer band left (stop)
maskSlopesLeft.push_back (std::make_pair (512, -28.000)); // Middle band left (start)
maskSlopesLeft.push_back (std::make_pair (1017, -20.016)); // Middle band left (stop)
maskSlopesLeft.push_back (std::make_pair (1018, -20.0)); // Flat junction band left (start)
maskSlopesLeft.push_back (std::make_pair (1022, -20.0)); // Flat junction band left (stop)
maskSlopesLeft.push_back (std::make_pair (1023, -20.0)); // Inner band left (start)
maskSlopesLeft.push_back (std::make_pair (1035, -1.538)); // Inner band left (stop)
maskSlopesRight.push_back (std::make_pair (2037, -1.538)); // Inner band right (start)
maskSlopesRight.push_back (std::make_pair (2049, -20.0)); // Inner band right (stop)
maskSlopesRight.push_back (std::make_pair (2050, -20.0)); // Flat junction band right (start)
maskSlopesRight.push_back (std::make_pair (2054, -20.0)); // Flat junction band right (stop)
maskSlopesRight.push_back (std::make_pair (2055, -20.016)); // Middle band right (start)
maskSlopesRight.push_back (std::make_pair (2560, -28.000)); // Middle band right (stop)
maskSlopesRight.push_back (std::make_pair (2561, -28.033)); // Outer band right (start)
maskSlopesRight.push_back (std::make_pair (3072, -45.000)); // Outer band right (stop)
maskSlopes.clear ();
maskSlopes.push_back (std::make_pair (0, -45.000)); // Outer band left (start)
maskSlopes.push_back (std::make_pair (511, -28.033)); // Outer band left (stop)
maskSlopes.push_back (std::make_pair (512, -28.000)); // Middle band left (start)
maskSlopes.push_back (std::make_pair (1017, -20.016)); // Middle band left (stop)
maskSlopes.push_back (std::make_pair (1018, -20.0)); // Flat junction band left (start)
maskSlopes.push_back (std::make_pair (1022, -20.0)); // Flat junction band left (stop)
maskSlopes.push_back (std::make_pair (1023, -20.0)); // Inner band left (start)
maskSlopes.push_back (std::make_pair (1035, -1.538)); // Inner band left (stop)
maskSlopes.push_back (std::make_pair (1036, 0.0)); // allocated band left (start)
maskSlopes.push_back (std::make_pair (1533, 0.0)); // allocated band left (stop)
maskSlopes.push_back (std::make_pair (1534, -20.0)); // DC band (start)
maskSlopes.push_back (std::make_pair (1538, -20.0)); // DC band (stop)
maskSlopes.push_back (std::make_pair (1539, 0.0)); // allocated band right (start)
maskSlopes.push_back (std::make_pair (2036, 0.0)); // allocated band right (stop)
maskSlopes.push_back (std::make_pair (2037, -1.538)); // Inner band right (start)
maskSlopes.push_back (std::make_pair (2049, -20.0)); // Inner band right (stop)
maskSlopes.push_back (std::make_pair (2050, -20.0)); // Flat junction band right (start)
maskSlopes.push_back (std::make_pair (2054, -20.0)); // Flat junction band right (stop)
maskSlopes.push_back (std::make_pair (2055, -20.016)); // Middle band right (start)
maskSlopes.push_back (std::make_pair (2560, -28.000)); // Middle band right (stop)
maskSlopes.push_back (std::make_pair (2561, -28.033)); // Outer band right (start)
maskSlopes.push_back (std::make_pair (3072, -45.000)); // Outer band right (stop)
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ax_2.4GHz 80MHz", WIFI_STANDARD_80211ax, WIFI_PHY_BAND_2_4GHZ,
80, maskSlopesLeft, maskSlopesRight, tol),
80, maskSlopes, tol),
TestCase::QUICK);
// 11ax 80MHz @ 5GHz
NS_LOG_FUNCTION ("Check slopes for 11ax 80MHz @ 5GHz");
maskSlopesLeft.clear ();
maskSlopesRight.clear ();
maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopesLeft.push_back (std::make_pair (511, -28.023)); // Outer band left (stop)
maskSlopesLeft.push_back (std::make_pair (512, -28.000)); // Middle band left (start)
maskSlopesLeft.push_back (std::make_pair (1017, -20.016)); // Middle band left (stop)
maskSlopesLeft.push_back (std::make_pair (1018, -20.0)); // Flat junction band left (start)
maskSlopesLeft.push_back (std::make_pair (1022, -20.0)); // Flat junction band left (stop)
maskSlopesLeft.push_back (std::make_pair (1023, -20.0)); // Inner band left (start)
maskSlopesLeft.push_back (std::make_pair (1035, -1.538)); // Inner band left (stop)
maskSlopesRight.push_back (std::make_pair (2037, -1.538)); // Inner band right (start)
maskSlopesRight.push_back (std::make_pair (2049, -20.0)); // Inner band right (stop)
maskSlopesRight.push_back (std::make_pair (2050, -20.0)); // Flat junction band right (start)
maskSlopesRight.push_back (std::make_pair (2054, -20.0)); // Flat junction band right (stop)
maskSlopesRight.push_back (std::make_pair (2055, -20.016)); // Middle band right (start)
maskSlopesRight.push_back (std::make_pair (2560, -28.000)); // Middle band right (stop)
maskSlopesRight.push_back (std::make_pair (2561, -28.023)); // Outer band right (start)
maskSlopesRight.push_back (std::make_pair (3072, -40.0)); // Outer band right (stop)
maskSlopes.clear ();
maskSlopes.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopes.push_back (std::make_pair (511, -28.023)); // Outer band left (stop)
maskSlopes.push_back (std::make_pair (512, -28.000)); // Middle band left (start)
maskSlopes.push_back (std::make_pair (1017, -20.016)); // Middle band left (stop)
maskSlopes.push_back (std::make_pair (1018, -20.0)); // Flat junction band left (start)
maskSlopes.push_back (std::make_pair (1022, -20.0)); // Flat junction band left (stop)
maskSlopes.push_back (std::make_pair (1023, -20.0)); // Inner band left (start)
maskSlopes.push_back (std::make_pair (1035, -1.538)); // Inner band left (stop)
maskSlopes.push_back (std::make_pair (1036, 0.0)); // allocated band left (start)
maskSlopes.push_back (std::make_pair (1533, 0.0)); // allocated band left (stop)
maskSlopes.push_back (std::make_pair (1534, -20.0)); // DC band (start)
maskSlopes.push_back (std::make_pair (1538, -20.0)); // DC band (stop)
maskSlopes.push_back (std::make_pair (1539, 0.0)); // allocated band right (start)
maskSlopes.push_back (std::make_pair (2036, 0.0)); // allocated band right (stop)
maskSlopes.push_back (std::make_pair (2037, -1.538)); // Inner band right (start)
maskSlopes.push_back (std::make_pair (2049, -20.0)); // Inner band right (stop)
maskSlopes.push_back (std::make_pair (2050, -20.0)); // Flat junction band right (start)
maskSlopes.push_back (std::make_pair (2054, -20.0)); // Flat junction band right (stop)
maskSlopes.push_back (std::make_pair (2055, -20.016)); // Middle band right (start)
maskSlopes.push_back (std::make_pair (2560, -28.000)); // Middle band right (stop)
maskSlopes.push_back (std::make_pair (2561, -28.023)); // Outer band right (start)
maskSlopes.push_back (std::make_pair (3072, -40.0)); // Outer band right (stop)
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ax_5GHz 80MHz", WIFI_STANDARD_80211ax, WIFI_PHY_BAND_5GHZ,
80, maskSlopesLeft, maskSlopesRight, tol),
80, maskSlopes, tol),
TestCase::QUICK);
// 11ax 160MHz @ 2.4GHz -> not enough space so skip
// 11ax 160MHz @ 5GHz
NS_LOG_FUNCTION ("Check slopes for 11ax 160MHz @ 5GHz");
maskSlopesLeft.clear ();
maskSlopesRight.clear ();
maskSlopesLeft.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopesLeft.push_back (std::make_pair (1023, -28.012)); // Outer band left (stop)
maskSlopesLeft.push_back (std::make_pair (1024, -28.000)); // Middle band left (start)
maskSlopesLeft.push_back (std::make_pair (2041, -20.008)); // Middle band left (stop)
maskSlopesLeft.push_back (std::make_pair (2042, -20.0)); // Flat junction band left (start)
maskSlopesLeft.push_back (std::make_pair (2046, -20.0)); // Flat junction band left (stop)
maskSlopesLeft.push_back (std::make_pair (2047, -20.0)); // Inner band left (start)
maskSlopesLeft.push_back (std::make_pair (2059, -1.538)); // Inner band left (stop)
maskSlopesRight.push_back (std::make_pair (4085, -1.538)); // Inner band right (start)
maskSlopesRight.push_back (std::make_pair (4097, -20.0)); // Inner band right (stop)
maskSlopesRight.push_back (std::make_pair (4098, -20.0)); // Flat junction band right (start)
maskSlopesRight.push_back (std::make_pair (4102, -20.0)); // Flat junction band right (stop)
maskSlopesRight.push_back (std::make_pair (4103, -20.008)); // Middle band right (start)
maskSlopesRight.push_back (std::make_pair (5120, -28.000)); // Middle band right (stop)
maskSlopesRight.push_back (std::make_pair (5121, -28.012)); // Outer band right (start)
maskSlopesRight.push_back (std::make_pair (6144, -40.0)); // Outer band right (stop)
maskSlopes.clear ();
maskSlopes.push_back (std::make_pair (0, -40.0)); // Outer band left (start)
maskSlopes.push_back (std::make_pair (1023, -28.012)); // Outer band left (stop)
maskSlopes.push_back (std::make_pair (1024, -28.000)); // Middle band left (start)
maskSlopes.push_back (std::make_pair (2041, -20.008)); // Middle band left (stop)
maskSlopes.push_back (std::make_pair (2042, -20.0)); // Flat junction band left (start)
maskSlopes.push_back (std::make_pair (2046, -20.0)); // Flat junction band left (stop)
maskSlopes.push_back (std::make_pair (2047, -20.0)); // Inner band left (start)
maskSlopes.push_back (std::make_pair (2059, -1.538)); // Inner band left (stop)
maskSlopes.push_back (std::make_pair (2060, 0.0)); // first 80 MHz allocated band left (start)
maskSlopes.push_back (std::make_pair (2557, 0.0)); // first 80 MHz allocated band left (stop)
maskSlopes.push_back (std::make_pair (2558, -20.0)); // first 80 MHz DC band (start)
maskSlopes.push_back (std::make_pair (2562, -20.0)); // first 80 MHz DC band (stop)
maskSlopes.push_back (std::make_pair (2563, 0.0)); // first 80 MHz allocated band right (start)
maskSlopes.push_back (std::make_pair (3060, 0.0)); // first 80 MHz allocated band right (stop)
maskSlopes.push_back (std::make_pair (3061, -20.0)); // gap between 80 MHz bands (start)
maskSlopes.push_back (std::make_pair (3083, -20.0)); // gap between 80 MHz bands (start)
maskSlopes.push_back (std::make_pair (3084, 0.0)); // second 80 MHz allocated band left (start)
maskSlopes.push_back (std::make_pair (3581, 0.0)); // second 80 MHz allocated band left (stop)
maskSlopes.push_back (std::make_pair (3582, -20.0)); // second 80 MHz DC band (start)
maskSlopes.push_back (std::make_pair (3586, -20.0)); // second 80 MHz DC band (stop)
maskSlopes.push_back (std::make_pair (3587, 0.0)); // second 80 MHz allocated band right (start)
maskSlopes.push_back (std::make_pair (4084, 0.0)); // second 80 MHz allocated band right (stop)
maskSlopes.push_back (std::make_pair (4085, -1.538)); // Inner band right (start)
maskSlopes.push_back (std::make_pair (4097, -20.0)); // Inner band right (stop)
maskSlopes.push_back (std::make_pair (4098, -20.0)); // Flat junction band right (start)
maskSlopes.push_back (std::make_pair (4102, -20.0)); // Flat junction band right (stop)
maskSlopes.push_back (std::make_pair (4103, -20.008)); // Middle band right (start)
maskSlopes.push_back (std::make_pair (5120, -28.000)); // Middle band right (stop)
maskSlopes.push_back (std::make_pair (5121, -28.012)); // Outer band right (start)
maskSlopes.push_back (std::make_pair (6144, -40.0)); // Outer band right (stop)
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11ax_5GHz 160MHz", WIFI_STANDARD_80211ax, WIFI_PHY_BAND_5GHZ,
160, maskSlopesLeft, maskSlopesRight, tol),
160, maskSlopes, tol),
TestCase::QUICK);
maskSlopesLeft.clear ();
maskSlopesRight.clear ();
}