wifi: Add standard, band, preambles, modulation classes and coding rates for 802.11ad

This commit is contained in:
Sébastien Deronne
2021-11-06 15:31:10 +01:00
committed by Sebastien Deronne
parent a2acfafb25
commit 417658e961
4 changed files with 55 additions and 0 deletions

View File

@@ -37,6 +37,8 @@ enum WifiPhyBand
WIFI_PHY_BAND_5GHZ,
/** The 6 GHz band */
WIFI_PHY_BAND_6GHZ,
/** The 60 GHz band */
WIFI_PHY_BAND_60GHZ,
/** Unspecified */
WIFI_PHY_BAND_UNSPECIFIED
};
@@ -58,6 +60,8 @@ inline std::ostream& operator<< (std::ostream& os, WifiPhyBand band)
return (os << "5GHz");
case WIFI_PHY_BAND_6GHZ:
return (os << "6GHz");
case WIFI_PHY_BAND_60GHZ:
return (os << "60GHz");
default:
return (os << "INVALID");
}

View File

@@ -102,6 +102,18 @@ GetPreambleForTransmission (WifiModulationClass modulation, bool useShortPreambl
{
return WIFI_PREAMBLE_HE_SU;
}
else if (modulation == WIFI_MOD_CLASS_DMG_CTRL)
{
return WIFI_PREAMBLE_DMG_CTRL;
}
else if (modulation == WIFI_MOD_CLASS_DMG_SC)
{
return WIFI_PREAMBLE_DMG_SC;
}
else if (modulation == WIFI_MOD_CLASS_DMG_OFDM)
{
return WIFI_PREAMBLE_DMG_OFDM;
}
else if (modulation == WIFI_MOD_CLASS_VHT)
{
return WIFI_PREAMBLE_VHT_SU;

View File

@@ -60,6 +60,14 @@ const uint16_t WIFI_CODE_RATE_1_2 = 1; //!< 1/2 coding rate
const uint16_t WIFI_CODE_RATE_2_3 = 2; //!< 2/3 coding rate
const uint16_t WIFI_CODE_RATE_3_4 = 3; //!< 3/4 coding rate
const uint16_t WIFI_CODE_RATE_5_6 = 4; //!< 5/6 coding rate
const uint16_t WIFI_CODE_RATE_5_8 = 5; //!< 5/8 coding rate
const uint16_t WIFI_CODE_RATE_13_16 = 6; //!< 13/16 coding rate
const uint16_t WIFI_CODE_RATE_1_4 = 7; //!< 1/4 coding rate
const uint16_t WIFI_CODE_RATE_13_28 = 8; //!< 13/28 coding rate
const uint16_t WIFI_CODE_RATE_13_21 = 9; //!< 13/21 coding rate
const uint16_t WIFI_CODE_RATE_52_63 = 10; //!< 52/63 coding rate
const uint16_t WIFI_CODE_RATE_13_14 = 11; //!< 13/14 coding rate
const uint16_t WIFI_CODE_RATE_7_8 = 12; //!< 7/8 coding rate
/**
* \ingroup wifi
@@ -72,6 +80,9 @@ enum WifiPreamble
WIFI_PREAMBLE_HT_MF,
WIFI_PREAMBLE_VHT_SU,
WIFI_PREAMBLE_VHT_MU,
WIFI_PREAMBLE_DMG_CTRL,
WIFI_PREAMBLE_DMG_SC,
WIFI_PREAMBLE_DMG_OFDM,
WIFI_PREAMBLE_HE_SU,
WIFI_PREAMBLE_HE_ER_SU,
WIFI_PREAMBLE_HE_MU,
@@ -101,6 +112,12 @@ inline std::ostream& operator<< (std::ostream &os, const WifiPreamble &preamble)
return (os << "VHT_SU");
case WIFI_PREAMBLE_VHT_MU:
return (os << "VHT_MU");
case WIFI_PREAMBLE_DMG_CTRL:
return (os << "DMG_CTRL");
case WIFI_PREAMBLE_DMG_SC:
return (os << "DMG_SC");
case WIFI_PREAMBLE_DMG_OFDM:
return (os << "DMG_OFDM");
case WIFI_PREAMBLE_HE_SU:
return (os << "HE_SU");
case WIFI_PREAMBLE_HE_ER_SU:
@@ -136,6 +153,10 @@ enum WifiModulationClass
WIFI_MOD_CLASS_OFDM, //!< OFDM (Clause 17)
WIFI_MOD_CLASS_HT, //!< HT (Clause 19)
WIFI_MOD_CLASS_VHT, //!< VHT (Clause 22)
WIFI_MOD_CLASS_DMG_CTRL, //!< DMG (Clause 21)
WIFI_MOD_CLASS_DMG_OFDM, //!< DMG (Clause 21)
WIFI_MOD_CLASS_DMG_SC, //!< DMG (Clause 21)
WIFI_MOD_CLASS_DMG_LP_SC,//!< DMG (Clause 21)
WIFI_MOD_CLASS_HE, //!< HE (Clause 27)
WIFI_MOD_CLASS_EHT //!< EHT (Clause 36)
};
@@ -163,6 +184,14 @@ inline std::ostream& operator<< (std::ostream &os, const WifiModulationClass &mo
return (os << "HT");
case WIFI_MOD_CLASS_VHT:
return (os << "VHT");
case WIFI_MOD_CLASS_DMG_CTRL:
return (os << "DMG_CTRL");
case WIFI_MOD_CLASS_DMG_OFDM:
return (os << "DMG_OFDM");
case WIFI_MOD_CLASS_DMG_SC:
return (os << "DMG_SC");
case WIFI_MOD_CLASS_DMG_LP_SC:
return (os << "DMG_LP_SC");
case WIFI_MOD_CLASS_HE:
return (os << "HE");
case WIFI_MOD_CLASS_EHT:

View File

@@ -41,6 +41,7 @@ enum WifiStandard
WIFI_STANDARD_80211p,
WIFI_STANDARD_80211n,
WIFI_STANDARD_80211ac,
WIFI_STANDARD_80211ad,
WIFI_STANDARD_80211ax,
WIFI_STANDARD_80211be
};
@@ -68,6 +69,8 @@ inline std::ostream& operator<< (std::ostream& os, WifiStandard standard)
return (os << "802.11n");
case WIFI_STANDARD_80211ac:
return (os << "802.11ac");
case WIFI_STANDARD_80211ad:
return (os << "802.11ad");
case WIFI_STANDARD_80211ax:
return (os << "802.11ax");
case WIFI_STANDARD_80211be:
@@ -89,6 +92,7 @@ const std::map<WifiStandard, std::list<WifiPhyBand>> wifiStandards =
{ WIFI_STANDARD_80211p, { WIFI_PHY_BAND_5GHZ } },
{ WIFI_STANDARD_80211n, { WIFI_PHY_BAND_2_4GHZ, WIFI_PHY_BAND_5GHZ } },
{ WIFI_STANDARD_80211ac, { WIFI_PHY_BAND_5GHZ } },
{ WIFI_STANDARD_80211ad, { WIFI_PHY_BAND_60GHZ } },
{ WIFI_STANDARD_80211ax, { WIFI_PHY_BAND_2_4GHZ, WIFI_PHY_BAND_5GHZ, WIFI_PHY_BAND_6GHZ } },
{ WIFI_STANDARD_80211be, { WIFI_PHY_BAND_2_4GHZ, WIFI_PHY_BAND_5GHZ, WIFI_PHY_BAND_6GHZ } }
};
@@ -146,6 +150,8 @@ inline uint16_t GetMaximumChannelWidth (WifiStandard standard)
case WIFI_STANDARD_80211ax:
case WIFI_STANDARD_80211be:
return 160;
case WIFI_STANDARD_80211ad:
return 2160;
default:
NS_ABORT_MSG ("Unknown standard: " << standard);
return 0;
@@ -169,6 +175,8 @@ inline uint16_t GetDefaultChannelWidth (WifiStandard standard, WifiPhyBand band)
return 10;
case WIFI_STANDARD_80211ac:
return 80;
case WIFI_STANDARD_80211ad:
return 2160;
case WIFI_STANDARD_80211ax:
case WIFI_STANDARD_80211be:
return (band == WIFI_PHY_BAND_2_4GHZ ? 20 : 80);
@@ -193,6 +201,8 @@ inline WifiPhyBand GetDefaultPhyBand (WifiStandard standard)
case WIFI_STANDARD_80211ax:
case WIFI_STANDARD_80211be:
return WIFI_PHY_BAND_5GHZ;
case WIFI_STANDARD_80211ad:
return WIFI_PHY_BAND_60GHZ;
default:
return WIFI_PHY_BAND_2_4GHZ;
}