wifi: Streamline creation of WifiMode in PhyEntity classes
This commit is contained in:
committed by
Rediet
parent
0f55b15678
commit
bbfa0bce10
@@ -262,24 +262,14 @@ DsssPhy::GetDsssRatesBpsList (void)
|
||||
WifiMode
|
||||
DsssPhy::GetDsssRate1Mbps (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("DsssRate1Mbps",
|
||||
WIFI_MOD_CLASS_DSSS,
|
||||
true,
|
||||
WIFI_CODE_RATE_UNDEFINED,
|
||||
2);
|
||||
static WifiMode mode = CreateDsssMode ("DsssRate1Mbps", WIFI_MOD_CLASS_DSSS);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
DsssPhy::GetDsssRate2Mbps (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("DsssRate2Mbps",
|
||||
WIFI_MOD_CLASS_DSSS,
|
||||
true,
|
||||
WIFI_CODE_RATE_UNDEFINED,
|
||||
4);
|
||||
static WifiMode mode = CreateDsssMode ("DsssRate2Mbps", WIFI_MOD_CLASS_DSSS);
|
||||
return mode;
|
||||
}
|
||||
|
||||
@@ -289,27 +279,33 @@ DsssPhy::GetDsssRate2Mbps (void)
|
||||
WifiMode
|
||||
DsssPhy::GetDsssRate5_5Mbps (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("DsssRate5_5Mbps",
|
||||
WIFI_MOD_CLASS_HR_DSSS,
|
||||
true,
|
||||
WIFI_CODE_RATE_UNDEFINED,
|
||||
16);
|
||||
static WifiMode mode = CreateDsssMode ("DsssRate5_5Mbps", WIFI_MOD_CLASS_HR_DSSS);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
DsssPhy::GetDsssRate11Mbps (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("DsssRate11Mbps",
|
||||
WIFI_MOD_CLASS_HR_DSSS,
|
||||
true,
|
||||
WIFI_CODE_RATE_UNDEFINED,
|
||||
256);
|
||||
static WifiMode mode = CreateDsssMode ("DsssRate11Mbps", WIFI_MOD_CLASS_HR_DSSS);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
DsssPhy::CreateDsssMode (std::string uniqueName,
|
||||
WifiModulationClass modClass)
|
||||
{
|
||||
// Check whether uniqueName is in lookup table
|
||||
const auto it = m_dsssModulationLookupTable.find (uniqueName);
|
||||
NS_ASSERT_MSG (it != m_dsssModulationLookupTable.end (), "DSSS or HR/DSSS mode cannot be created because it is not in the lookup table!");
|
||||
NS_ASSERT_MSG (modClass == WIFI_MOD_CLASS_DSSS || modClass == WIFI_MOD_CLASS_HR_DSSS, "DSSS or HR/DSSS mode must be either WIFI_MOD_CLASS_DSSS or WIFI_MOD_CLASS_HR_DSSS!");
|
||||
|
||||
return WifiModeFactory::CreateWifiMode (uniqueName,
|
||||
modClass,
|
||||
true,
|
||||
GetCodeRate (uniqueName),
|
||||
GetConstellationSize (uniqueName));
|
||||
}
|
||||
|
||||
WifiCodeRate
|
||||
DsssPhy::GetCodeRate (const std::string& name)
|
||||
{
|
||||
|
||||
@@ -195,6 +195,17 @@ private:
|
||||
*/
|
||||
PhyFieldRxStatus EndReceiveHeader (Ptr<Event> event);
|
||||
|
||||
/**
|
||||
* Create a DSSS or HR/DSSS mode from a unique name, the unique name
|
||||
* must already be contained inside ModulationLookupTable.
|
||||
* This method binds all the callbacks used by WifiMode.
|
||||
*
|
||||
* \param uniqueName the unique name of the WifiMode
|
||||
* \param modClass the modulation class of the WifiMode, must be either WIFI_MOD_CLASS_DSSS or WIFI_MOD_CLASS_HR_DSSS
|
||||
* \return the DSSS or HR/DSSS WifiMode
|
||||
*/
|
||||
static WifiMode CreateDsssMode (std::string uniqueName, WifiModulationClass modClass);
|
||||
|
||||
static const PpduFormats m_dsssPpduFormats; //!< DSSS and HR/DSSS PPDU formats
|
||||
|
||||
static const ModulationLookupTable m_dsssModulationLookupTable; //!< lookup table to retrieve code rate and constellation size corresponding to a unique name of modulation
|
||||
|
||||
@@ -138,99 +138,73 @@ ErpOfdmPhy::GetErpOfdmRatesBpsList (void)
|
||||
WifiMode
|
||||
ErpOfdmPhy::GetErpOfdmRate6Mbps (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("ErpOfdmRate6Mbps",
|
||||
WIFI_MOD_CLASS_ERP_OFDM,
|
||||
true,
|
||||
WIFI_CODE_RATE_1_2,
|
||||
2);
|
||||
static WifiMode mode = CreateErpOfdmMode ("ErpOfdmRate6Mbps", true);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
ErpOfdmPhy::GetErpOfdmRate9Mbps (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("ErpOfdmRate9Mbps",
|
||||
WIFI_MOD_CLASS_ERP_OFDM,
|
||||
false,
|
||||
WIFI_CODE_RATE_3_4,
|
||||
2);
|
||||
static WifiMode mode = CreateErpOfdmMode ("ErpOfdmRate9Mbps", false);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
ErpOfdmPhy::GetErpOfdmRate12Mbps (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("ErpOfdmRate12Mbps",
|
||||
WIFI_MOD_CLASS_ERP_OFDM,
|
||||
true,
|
||||
WIFI_CODE_RATE_1_2,
|
||||
4);
|
||||
static WifiMode mode = CreateErpOfdmMode ("ErpOfdmRate12Mbps", true);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
ErpOfdmPhy::GetErpOfdmRate18Mbps (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("ErpOfdmRate18Mbps",
|
||||
WIFI_MOD_CLASS_ERP_OFDM,
|
||||
false,
|
||||
WIFI_CODE_RATE_3_4,
|
||||
4);
|
||||
static WifiMode mode = CreateErpOfdmMode ("ErpOfdmRate18Mbps", false);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
ErpOfdmPhy::GetErpOfdmRate24Mbps (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("ErpOfdmRate24Mbps",
|
||||
WIFI_MOD_CLASS_ERP_OFDM,
|
||||
true,
|
||||
WIFI_CODE_RATE_1_2,
|
||||
16);
|
||||
static WifiMode mode = CreateErpOfdmMode ("ErpOfdmRate24Mbps", true);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
ErpOfdmPhy::GetErpOfdmRate36Mbps (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("ErpOfdmRate36Mbps",
|
||||
WIFI_MOD_CLASS_ERP_OFDM,
|
||||
false,
|
||||
WIFI_CODE_RATE_3_4,
|
||||
16);
|
||||
static WifiMode mode = CreateErpOfdmMode ("ErpOfdmRate36Mbps", false);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
ErpOfdmPhy::GetErpOfdmRate48Mbps (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("ErpOfdmRate48Mbps",
|
||||
WIFI_MOD_CLASS_ERP_OFDM,
|
||||
false,
|
||||
WIFI_CODE_RATE_2_3,
|
||||
64);
|
||||
static WifiMode mode = CreateErpOfdmMode ("ErpOfdmRate48Mbps", false);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
ErpOfdmPhy::GetErpOfdmRate54Mbps (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("ErpOfdmRate54Mbps",
|
||||
WIFI_MOD_CLASS_ERP_OFDM,
|
||||
false,
|
||||
WIFI_CODE_RATE_3_4,
|
||||
64);
|
||||
static WifiMode mode = CreateErpOfdmMode ("ErpOfdmRate54Mbps", false);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
ErpOfdmPhy::CreateErpOfdmMode (std::string uniqueName, bool isMandatory)
|
||||
{
|
||||
// Check whether uniqueName is in lookup table
|
||||
const auto it = m_erpOfdmModulationLookupTable.find (uniqueName);
|
||||
NS_ASSERT_MSG (it != m_erpOfdmModulationLookupTable.end (), "ERP-OFDM mode cannot be created because it is not in the lookup table!");
|
||||
|
||||
return WifiModeFactory::CreateWifiMode (uniqueName,
|
||||
WIFI_MOD_CLASS_ERP_OFDM,
|
||||
isMandatory,
|
||||
GetCodeRate (uniqueName),
|
||||
GetConstellationSize (uniqueName));
|
||||
}
|
||||
|
||||
WifiCodeRate
|
||||
ErpOfdmPhy::GetCodeRate (const std::string& name)
|
||||
{
|
||||
|
||||
@@ -198,6 +198,17 @@ private:
|
||||
Time GetPreambleDuration (WifiTxVector txVector) const override;
|
||||
Time GetHeaderDuration (WifiTxVector txVector) const override;
|
||||
|
||||
/**
|
||||
* Create an ERP-OFDM mode from a unique name, the unique name
|
||||
* must already be contained inside ModulationLookupTable.
|
||||
* This method binds all the callbacks used by WifiMode.
|
||||
*
|
||||
* \param uniqueName the unique name of the WifiMode
|
||||
* \param isMandatory whether the WifiMode is mandatory
|
||||
* \return the ERP-OFDM WifiMode
|
||||
*/
|
||||
static WifiMode CreateErpOfdmMode (std::string uniqueName, bool isMandatory);
|
||||
|
||||
static const ModulationLookupTable m_erpOfdmModulationLookupTable; //!< lookup table to retrieve code rate and constellation size corresponding to a unique name of modulation
|
||||
}; //class ErpOfdmPhy
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ HePhy::BuildModeList (void)
|
||||
for (uint8_t index = 0; index <= m_maxSupportedMcsIndexPerSs; ++index)
|
||||
{
|
||||
NS_LOG_LOGIC ("Add HeMcs" << +index << " to list");
|
||||
m_modeList.emplace_back (GetHeMcs (index));
|
||||
m_modeList.emplace_back (CreateHeMcs (index));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -978,100 +978,35 @@ HePhy::GetHeMcs (uint8_t index)
|
||||
}
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HePhy::GetHeMcs0 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HeMcs0", 0, WIFI_MOD_CLASS_HE);
|
||||
return mcs;
|
||||
}
|
||||
#define GET_HE_MCS(x) \
|
||||
WifiMode \
|
||||
HePhy::GetHeMcs ## x (void) \
|
||||
{ \
|
||||
static WifiMode mcs = CreateHeMcs (x); \
|
||||
return mcs; \
|
||||
} \
|
||||
|
||||
GET_HE_MCS (0);
|
||||
GET_HE_MCS (1);
|
||||
GET_HE_MCS (2);
|
||||
GET_HE_MCS (3);
|
||||
GET_HE_MCS (4);
|
||||
GET_HE_MCS (5);
|
||||
GET_HE_MCS (6);
|
||||
GET_HE_MCS (7);
|
||||
GET_HE_MCS (8);
|
||||
GET_HE_MCS (9);
|
||||
GET_HE_MCS (10);
|
||||
GET_HE_MCS (11);
|
||||
#undef GET_HE_MCS
|
||||
|
||||
WifiMode
|
||||
HePhy::GetHeMcs1 (void)
|
||||
HePhy::CreateHeMcs (uint8_t index)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HeMcs1", 1, WIFI_MOD_CLASS_HE);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HePhy::GetHeMcs2 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HeMcs2", 2, WIFI_MOD_CLASS_HE);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HePhy::GetHeMcs3 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HeMcs3", 3, WIFI_MOD_CLASS_HE);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HePhy::GetHeMcs4 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HeMcs4", 4, WIFI_MOD_CLASS_HE);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HePhy::GetHeMcs5 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HeMcs5", 5, WIFI_MOD_CLASS_HE);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HePhy::GetHeMcs6 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HeMcs6", 6, WIFI_MOD_CLASS_HE);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HePhy::GetHeMcs7 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HeMcs7", 7, WIFI_MOD_CLASS_HE);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HePhy::GetHeMcs8 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HeMcs8", 8, WIFI_MOD_CLASS_HE);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HePhy::GetHeMcs9 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HeMcs9", 9, WIFI_MOD_CLASS_HE);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HePhy::GetHeMcs10 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HeMcs10", 10, WIFI_MOD_CLASS_HE);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HePhy::GetHeMcs11 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HeMcs11", 11, WIFI_MOD_CLASS_HE);
|
||||
return mcs;
|
||||
NS_ASSERT_MSG (index <= 11, "HeMcs index must be <= 11!");
|
||||
return WifiModeFactory::CreateWifiMcs ("HeMcs" + std::to_string (index),
|
||||
index,
|
||||
WIFI_MOD_CLASS_HE);
|
||||
}
|
||||
|
||||
WifiCodeRate
|
||||
|
||||
@@ -386,13 +386,22 @@ protected:
|
||||
std::map <uint16_t /* STA-ID */, EventId> m_beginOfdmaPayloadRxEvents; //!< the beginning of the OFDMA payload reception events (indexed by STA-ID)
|
||||
|
||||
EndOfHeSigACallback m_endOfHeSigACallback; //!< end of HE-SIG-A callback
|
||||
|
||||
private:
|
||||
// Inherited
|
||||
virtual void BuildModeList (void) override;
|
||||
uint8_t GetNumberBccEncoders (WifiTxVector txVector) const override;
|
||||
virtual Time GetSymbolDuration (WifiTxVector txVector) const override;
|
||||
|
||||
/**
|
||||
* Create and return the HE MCS corresponding to
|
||||
* the provided index.
|
||||
* This method binds all the callbacks used by WifiMode.
|
||||
*
|
||||
* \param index the index of the MCS
|
||||
* \return an HE MCS
|
||||
*/
|
||||
static WifiMode CreateHeMcs (uint8_t index);
|
||||
|
||||
static const PpduFormats m_hePpduFormats; //!< HE PPDU formats
|
||||
}; //class HePhy
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ HtPhy::BuildModeList (void)
|
||||
for (uint8_t i = 0; i <= m_maxSupportedMcsIndexPerSs; ++i)
|
||||
{
|
||||
NS_LOG_LOGIC ("Add HtMcs" << +index << " to list");
|
||||
m_modeList.emplace_back (GetHtMcs (index));
|
||||
m_modeList.emplace_back (CreateHtMcs (index));
|
||||
++index;
|
||||
}
|
||||
index = 8 * nss;
|
||||
@@ -539,260 +539,55 @@ HtPhy::GetHtMcs (uint8_t index)
|
||||
}
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs0 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs0", 0, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
#define GET_HT_MCS(x) \
|
||||
WifiMode \
|
||||
HtPhy::GetHtMcs ## x (void) \
|
||||
{ \
|
||||
static WifiMode mcs = CreateHtMcs (x); \
|
||||
return mcs; \
|
||||
} \
|
||||
|
||||
GET_HT_MCS (0);
|
||||
GET_HT_MCS (1);
|
||||
GET_HT_MCS (2);
|
||||
GET_HT_MCS (3);
|
||||
GET_HT_MCS (4);
|
||||
GET_HT_MCS (5);
|
||||
GET_HT_MCS (6);
|
||||
GET_HT_MCS (7);
|
||||
GET_HT_MCS (8);
|
||||
GET_HT_MCS (9);
|
||||
GET_HT_MCS (10);
|
||||
GET_HT_MCS (11);
|
||||
GET_HT_MCS (12);
|
||||
GET_HT_MCS (13);
|
||||
GET_HT_MCS (14);
|
||||
GET_HT_MCS (15);
|
||||
GET_HT_MCS (16);
|
||||
GET_HT_MCS (17);
|
||||
GET_HT_MCS (18);
|
||||
GET_HT_MCS (19);
|
||||
GET_HT_MCS (20);
|
||||
GET_HT_MCS (21);
|
||||
GET_HT_MCS (22);
|
||||
GET_HT_MCS (23);
|
||||
GET_HT_MCS (24);
|
||||
GET_HT_MCS (25);
|
||||
GET_HT_MCS (26);
|
||||
GET_HT_MCS (27);
|
||||
GET_HT_MCS (28);
|
||||
GET_HT_MCS (29);
|
||||
GET_HT_MCS (30);
|
||||
GET_HT_MCS (31);
|
||||
#undef GET_HT_MCS
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs1 (void)
|
||||
HtPhy::CreateHtMcs (uint8_t index)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs1", 1, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs2 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs2", 2, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs3 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs3", 3, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs4 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs4", 4, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs5 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs5", 5, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs6 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs6", 6, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs7 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs7", 7, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs8 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs8", 8, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs9 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs9", 9, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs10 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs10", 10, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs11 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs11", 11, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs12 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs12", 12, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs13 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs13", 13, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs14 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs14", 14, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs15 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs15", 15, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs16 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs16", 16, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs17 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs17", 17, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs18 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs18", 18, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs19 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs19", 19, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs20 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs20", 20, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs21 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs21", 21, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs22 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs22", 22, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs23 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs23", 23, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs24 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs24", 24, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs25 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs25", 25, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs26 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs26", 26, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs27 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs27", 27, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs28 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs28", 28, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs29 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs29", 29, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs30 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs30", 30, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
HtPhy::GetHtMcs31 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("HtMcs31", 31, WIFI_MOD_CLASS_HT);
|
||||
return mcs;
|
||||
NS_ASSERT_MSG (index <= 31, "HtMcs index must be <= 31!");
|
||||
return WifiModeFactory::CreateWifiMcs ("HtMcs" + std::to_string (index),
|
||||
index,
|
||||
WIFI_MOD_CLASS_HT);
|
||||
}
|
||||
|
||||
WifiCodeRate
|
||||
|
||||
@@ -528,6 +528,16 @@ private:
|
||||
*/
|
||||
PhyFieldRxStatus EndReceiveHtSig (Ptr<Event> event);
|
||||
|
||||
/**
|
||||
* Return the HT MCS corresponding to
|
||||
* the provided index.
|
||||
* This method binds all the callbacks used by WifiMode.
|
||||
*
|
||||
* \param index the index of the MCS
|
||||
* \return an HT MCS
|
||||
*/
|
||||
static WifiMode CreateHtMcs (uint8_t index);
|
||||
|
||||
uint8_t m_maxSupportedNss; //!< Maximum supported number of spatial streams (used to build HT MCS indices)
|
||||
|
||||
static const PpduFormats m_htPpduFormats; //!< HT PPDU formats
|
||||
|
||||
@@ -455,96 +455,56 @@ OfdmPhy::GetOfdmRatesBpsList (void)
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate6Mbps (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate6Mbps",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
true,
|
||||
WIFI_CODE_RATE_1_2,
|
||||
2);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate6Mbps", true);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate9Mbps (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate9Mbps",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
false,
|
||||
WIFI_CODE_RATE_3_4,
|
||||
2);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate9Mbps", false);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate12Mbps (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate12Mbps",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
true,
|
||||
WIFI_CODE_RATE_1_2,
|
||||
4);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate12Mbps", true);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate18Mbps (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate18Mbps",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
false,
|
||||
WIFI_CODE_RATE_3_4,
|
||||
4);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate18Mbps", false);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate24Mbps (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate24Mbps",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
true,
|
||||
WIFI_CODE_RATE_1_2,
|
||||
16);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate24Mbps", true);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate36Mbps (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate36Mbps",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
false,
|
||||
WIFI_CODE_RATE_3_4,
|
||||
16);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate36Mbps", false);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate48Mbps (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate48Mbps",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
false,
|
||||
WIFI_CODE_RATE_2_3,
|
||||
64);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate48Mbps", false);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate54Mbps (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate54Mbps",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
false,
|
||||
WIFI_CODE_RATE_3_4,
|
||||
64);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate54Mbps", false);
|
||||
return mode;
|
||||
}
|
||||
|
||||
@@ -554,96 +514,56 @@ OfdmPhy::GetOfdmRate54Mbps (void)
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate3MbpsBW10MHz (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate3MbpsBW10MHz",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
true,
|
||||
WIFI_CODE_RATE_1_2,
|
||||
2);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate3MbpsBW10MHz", true);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate4_5MbpsBW10MHz (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate4_5MbpsBW10MHz",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
false,
|
||||
WIFI_CODE_RATE_3_4,
|
||||
2);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate4_5MbpsBW10MHz", false);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate6MbpsBW10MHz (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate6MbpsBW10MHz",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
true,
|
||||
WIFI_CODE_RATE_1_2,
|
||||
4);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate6MbpsBW10MHz", true);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate9MbpsBW10MHz (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate9MbpsBW10MHz",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
false,
|
||||
WIFI_CODE_RATE_3_4,
|
||||
4);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate9MbpsBW10MHz", false);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate12MbpsBW10MHz (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate12MbpsBW10MHz",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
true,
|
||||
WIFI_CODE_RATE_1_2,
|
||||
16);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate12MbpsBW10MHz", true);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate18MbpsBW10MHz (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate18MbpsBW10MHz",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
false,
|
||||
WIFI_CODE_RATE_3_4,
|
||||
16);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate18MbpsBW10MHz", false);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate24MbpsBW10MHz (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate24MbpsBW10MHz",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
false,
|
||||
WIFI_CODE_RATE_2_3,
|
||||
64);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate24MbpsBW10MHz", false);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate27MbpsBW10MHz (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate27MbpsBW10MHz",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
false,
|
||||
WIFI_CODE_RATE_3_4,
|
||||
64);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate27MbpsBW10MHz", false);
|
||||
return mode;
|
||||
}
|
||||
|
||||
@@ -653,99 +573,73 @@ OfdmPhy::GetOfdmRate27MbpsBW10MHz (void)
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate1_5MbpsBW5MHz (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate1_5MbpsBW5MHz",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
true,
|
||||
WIFI_CODE_RATE_1_2,
|
||||
2);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate1_5MbpsBW5MHz", true);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate2_25MbpsBW5MHz (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate2_25MbpsBW5MHz",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
false,
|
||||
WIFI_CODE_RATE_3_4,
|
||||
2);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate2_25MbpsBW5MHz", false);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate3MbpsBW5MHz (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate3MbpsBW5MHz",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
true,
|
||||
WIFI_CODE_RATE_1_2,
|
||||
4);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate3MbpsBW5MHz", true);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate4_5MbpsBW5MHz (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate4_5MbpsBW5MHz",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
false,
|
||||
WIFI_CODE_RATE_3_4,
|
||||
4);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate4_5MbpsBW5MHz", false);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate6MbpsBW5MHz (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate6MbpsBW5MHz",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
true,
|
||||
WIFI_CODE_RATE_1_2,
|
||||
16);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate6MbpsBW5MHz", true);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate9MbpsBW5MHz (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate9MbpsBW5MHz",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
false,
|
||||
WIFI_CODE_RATE_3_4,
|
||||
16);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate9MbpsBW5MHz", false);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate12MbpsBW5MHz (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate12MbpsBW5MHz",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
false,
|
||||
WIFI_CODE_RATE_2_3,
|
||||
64);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate12MbpsBW5MHz", false);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::GetOfdmRate13_5MbpsBW5MHz (void)
|
||||
{
|
||||
static WifiMode mode =
|
||||
WifiModeFactory::CreateWifiMode ("OfdmRate13_5MbpsBW5MHz",
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
false,
|
||||
WIFI_CODE_RATE_3_4,
|
||||
64);
|
||||
static WifiMode mode = CreateOfdmMode ("OfdmRate13_5MbpsBW5MHz", false);
|
||||
return mode;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
OfdmPhy::CreateOfdmMode (std::string uniqueName, bool isMandatory)
|
||||
{
|
||||
// Check whether uniqueName is in lookup table
|
||||
const auto it = m_ofdmModulationLookupTable.find (uniqueName);
|
||||
NS_ASSERT_MSG (it != m_ofdmModulationLookupTable.end (), "OFDM mode cannot be created because it is not in the lookup table!");
|
||||
|
||||
return WifiModeFactory::CreateWifiMode (uniqueName,
|
||||
WIFI_MOD_CLASS_OFDM,
|
||||
isMandatory,
|
||||
GetCodeRate (uniqueName),
|
||||
GetConstellationSize (uniqueName));
|
||||
}
|
||||
|
||||
WifiCodeRate
|
||||
OfdmPhy::GetCodeRate (const std::string& name)
|
||||
{
|
||||
|
||||
@@ -426,6 +426,17 @@ protected:
|
||||
double codingRate);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Create an OFDM mode from a unique name, the unique name
|
||||
* must already be contained inside ModulationLookupTable.
|
||||
* This method binds all the callbacks used by WifiMode.
|
||||
*
|
||||
* \param uniqueName the unique name of the WifiMode
|
||||
* \param isMandatory whether the WifiMode is mandatory
|
||||
* \return the OFDM WifiMode
|
||||
*/
|
||||
static WifiMode CreateOfdmMode (std::string uniqueName, bool isMandatory);
|
||||
|
||||
static const PpduFormats m_ofdmPpduFormats; //!< OFDM PPDU formats
|
||||
|
||||
static const ModulationLookupTable m_ofdmModulationLookupTable; //!< lookup table to retrieve code rate and constellation size corresponding to a unique name of modulation
|
||||
|
||||
@@ -95,7 +95,7 @@ VhtPhy::BuildModeList (void)
|
||||
for (uint8_t index = 0; index <= m_maxSupportedMcsIndexPerSs; ++index)
|
||||
{
|
||||
NS_LOG_LOGIC ("Add VhtMcs" << +index << " to list");
|
||||
m_modeList.emplace_back (GetVhtMcs (index));
|
||||
m_modeList.emplace_back (CreateVhtMcs (index));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -355,84 +355,33 @@ VhtPhy::GetVhtMcs (uint8_t index)
|
||||
}
|
||||
}
|
||||
|
||||
WifiMode
|
||||
VhtPhy::GetVhtMcs0 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("VhtMcs0", 0, WIFI_MOD_CLASS_VHT);
|
||||
return mcs;
|
||||
}
|
||||
#define GET_VHT_MCS(x) \
|
||||
WifiMode \
|
||||
VhtPhy::GetVhtMcs ## x (void) \
|
||||
{ \
|
||||
static WifiMode mcs = CreateVhtMcs (x); \
|
||||
return mcs; \
|
||||
} \
|
||||
|
||||
GET_VHT_MCS (0);
|
||||
GET_VHT_MCS (1);
|
||||
GET_VHT_MCS (2);
|
||||
GET_VHT_MCS (3);
|
||||
GET_VHT_MCS (4);
|
||||
GET_VHT_MCS (5);
|
||||
GET_VHT_MCS (6);
|
||||
GET_VHT_MCS (7);
|
||||
GET_VHT_MCS (8);
|
||||
GET_VHT_MCS (9);
|
||||
#undef GET_VHT_MCS
|
||||
|
||||
WifiMode
|
||||
VhtPhy::GetVhtMcs1 (void)
|
||||
VhtPhy::CreateVhtMcs (uint8_t index)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("VhtMcs1", 1, WIFI_MOD_CLASS_VHT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
VhtPhy::GetVhtMcs2 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("VhtMcs2", 2, WIFI_MOD_CLASS_VHT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
VhtPhy::GetVhtMcs3 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("VhtMcs3", 3, WIFI_MOD_CLASS_VHT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
VhtPhy::GetVhtMcs4 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("VhtMcs4", 4, WIFI_MOD_CLASS_VHT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
VhtPhy::GetVhtMcs5 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("VhtMcs5", 5, WIFI_MOD_CLASS_VHT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
VhtPhy::GetVhtMcs6 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("VhtMcs6", 6, WIFI_MOD_CLASS_VHT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
VhtPhy::GetVhtMcs7 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("VhtMcs7", 7, WIFI_MOD_CLASS_VHT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
VhtPhy::GetVhtMcs8 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("VhtMcs8", 8, WIFI_MOD_CLASS_VHT);
|
||||
return mcs;
|
||||
}
|
||||
|
||||
WifiMode
|
||||
VhtPhy::GetVhtMcs9 (void)
|
||||
{
|
||||
static WifiMode mcs =
|
||||
WifiModeFactory::CreateWifiMcs ("VhtMcs9", 9, WIFI_MOD_CLASS_VHT);
|
||||
return mcs;
|
||||
NS_ASSERT_MSG (index <= 9, "VhtMcs index must be <= 9!");
|
||||
return WifiModeFactory::CreateWifiMcs ("VhtMcs" + std::to_string (index),
|
||||
index,
|
||||
WIFI_MOD_CLASS_VHT);
|
||||
}
|
||||
|
||||
WifiCodeRate
|
||||
|
||||
@@ -316,6 +316,16 @@ private:
|
||||
// Inherited
|
||||
virtual void BuildModeList (void) override;
|
||||
|
||||
/**
|
||||
* Return the VHT MCS corresponding to
|
||||
* the provided index.
|
||||
* This method binds all the callbacks used by WifiMode.
|
||||
*
|
||||
* \param index the index of the MCS
|
||||
* \return a VHT MCS
|
||||
*/
|
||||
static WifiMode CreateVhtMcs (uint8_t index);
|
||||
|
||||
/**
|
||||
* Typedef for storing exceptions in the number of BCC encoders for VHT MCSs
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user