wifi, wave: Remove 5 MHz and 10 MHz standard and introduce 802.11p standard instead

This commit is contained in:
Sebastien Deronne
2020-05-25 09:04:57 +02:00
parent 27bebf4c6d
commit 4e72e64f43
16 changed files with 148 additions and 154 deletions

View File

@@ -62,13 +62,9 @@ WifiPhyStandard ConvertStringToStandard (std::string version)
{
standard = WIFI_PHY_STANDARD_80211g;
}
else if (version == "80211_10MHZ")
else if (version == "80211p")
{
standard = WIFI_PHY_STANDARD_80211_10MHZ;
}
else if (version == "80211_5MHZ")
{
standard = WIFI_PHY_STANDARD_80211_5MHZ;
standard = WIFI_PHY_STANDARD_80211p;
}
else if (version == "holland")
{
@@ -106,7 +102,7 @@ int main (int argc, char *argv[])
CommandLine cmd (__FILE__);
cmd.AddValue ("simulationTime", "Simulation time in seconds", simulationTime);
cmd.AddValue ("apVersion", "The standard version used by the AP: 80211a, 80211b, 80211g, 80211_10MHZ, 80211_5MHZ, holland, 80211n_2_4GHZ, 80211n_5GHZ or 80211ac", apVersion);
cmd.AddValue ("apVersion", "The standard version used by the AP: 80211a, 80211b, 80211g, 80211p, holland, 80211n_2_4GHZ, 80211n_5GHZ or 80211ac", apVersion);
cmd.AddValue ("staVersion", "The standard version used by the station: 80211a, 80211b, 80211g, 80211_10MHZ, 80211_5MHZ, holland, 80211n_2_4GHZ, 80211n_5GHZ or 80211ac", staVersion);
cmd.AddValue ("apRaa", "Rate adaptation algorithm used by the AP", apRaa);
cmd.AddValue ("staRaa", "Rate adaptation algorithm used by the station", staRaa);

View File

@@ -412,7 +412,7 @@ WaveHelper::Install (const WifiPhyHelper &phyHelper, const WifiMacHelper &macHe
for (uint32_t j = 0; j != m_physNumber; ++j)
{
Ptr<WifiPhy> phy = phyHelper.Create (node, device);
phy->ConfigureStandard (WIFI_PHY_STANDARD_80211_10MHZ);
phy->ConfigureStandard (WIFI_PHY_STANDARD_80211p);
phy->SetChannelNumber (ChannelManager::GetCch ());
device->AddPhy (phy);
}
@@ -424,8 +424,8 @@ WaveHelper::Install (const WifiPhyHelper &phyHelper, const WifiMacHelper &macHe
Ptr<OcbWifiMac> ocbMac = DynamicCast<OcbWifiMac> (wifiMac);
// we use WaveMacLow to replace original MacLow
ocbMac->EnableForWave (device);
ocbMac->SetWifiRemoteStationManager ( m_stationManager.Create<WifiRemoteStationManager> ());
ocbMac->ConfigureStandard (WIFI_PHY_STANDARD_80211_10MHZ);
ocbMac->SetWifiRemoteStationManager (m_stationManager.Create<WifiRemoteStationManager> ());
ocbMac->ConfigureStandard (WIFI_PHY_STANDARD_80211p);
// Install ack policy selector
BooleanValue qosSupported;
PointerValue ptr;

View File

@@ -42,7 +42,7 @@ Wifi80211pHelper
Wifi80211pHelper::Default (void)
{
Wifi80211pHelper helper;
helper.SetStandard (WIFI_PHY_STANDARD_80211_10MHZ);
helper.SetStandard (WIFI_PHY_STANDARD_80211p);
helper.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
"DataMode", StringValue ("OfdmRate6MbpsBW10MHz"),
"ControlMode",StringValue ("OfdmRate6MbpsBW10MHz"),
@@ -53,13 +53,13 @@ Wifi80211pHelper::Default (void)
void
Wifi80211pHelper::SetStandard (enum WifiPhyStandard standard)
{
if ((standard == WIFI_PHY_STANDARD_80211a) || (standard == WIFI_PHY_STANDARD_80211_10MHZ))
if (standard == WIFI_PHY_STANDARD_80211p)
{
WifiHelper::SetStandard (standard);
}
else
{
NS_FATAL_ERROR ("802.11p only use 802.11 standard with 10MHz or 20MHz");
NS_FATAL_ERROR ("wrong standard selected!");
}
}

View File

@@ -374,8 +374,7 @@ void
OcbWifiMac::ConfigureStandard (enum WifiPhyStandard standard)
{
NS_LOG_FUNCTION (this << standard);
NS_ASSERT ((standard == WIFI_PHY_STANDARD_80211_10MHZ)
|| (standard == WIFI_PHY_STANDARD_80211a));
NS_ASSERT (standard == WIFI_PHY_STANDARD_80211p);
uint32_t cwmin = 15;
uint32_t cwmax = 1023;

View File

@@ -260,7 +260,7 @@ OcbWifiMacTestCase::ConfigureApStaMode (Ptr<Node> static_node, Ptr<Node> mobile_
wifiApMac.SetType ("ns3::ApWifiMac","Ssid", SsidValue (ssid));
WifiHelper wifi;
wifi.SetStandard (WIFI_PHY_STANDARD_80211_10MHZ);
wifi.SetStandard (WIFI_PHY_STANDARD_80211p);
wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
"DataMode", StringValue ("OfdmRate6MbpsBW10MHz"),
"ControlMode",StringValue ("OfdmRate6MbpsBW10MHz"));
@@ -279,7 +279,7 @@ OcbWifiMacTestCase::ConfigureAdhocMode (Ptr<Node> static_node, Ptr<Node> mobile_
wifiMac.SetType ("ns3::AdhocWifiMac");
WifiHelper wifi;
wifi.SetStandard (WIFI_PHY_STANDARD_80211_10MHZ);
wifi.SetStandard (WIFI_PHY_STANDARD_80211p);
wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
"DataMode", StringValue ("OfdmRate6MbpsBW10MHz"),
"ControlMode",StringValue ("OfdmRate6MbpsBW10MHz"));

View File

@@ -30,7 +30,7 @@
// By default, the 802.11a standard using IdealWifiManager is plotted. Several command line
// arguments can change the following options:
// --wifiManager (Aarf, Aarfcd, Amrr, Arf, Cara, Ideal, Minstrel, MinstrelHt, Onoe, Rraa)
// --standard (802.11a, 802.11b, 802.11g, 802.11n-5GHz, 802.11n-2.4GHz, 802.11ac, 802.11-holland, 802.11-10MHz, 802.11-5MHz)
// --standard (802.11a, 802.11b, 802.11g, 802.11n-5GHz, 802.11n-2.4GHz, 802.11ac, 802.11-holland, 802.11p-10MHz, 802.11p-5MHz)
// --serverShortGuardInterval and --clientShortGuardInterval (for 802.11n/ac)
// --serverNss and --clientNss (for 802.11n/ac)
// --serverChannelWidth and --clientChannelWidth (for 802.11n/ac)
@@ -186,7 +186,7 @@ int main (int argc, char *argv[])
cmd.AddValue ("clientNss", "Set nss of the client (valid only for 802.11n or ac)", clientNss);
cmd.AddValue ("serverShortGuardInterval", "Set short guard interval of the server (802.11n/ac/ax) in nanoseconds", serverShortGuardInterval);
cmd.AddValue ("clientShortGuardInterval", "Set short guard interval of the client (802.11n/ac/ax) in nanoseconds", clientShortGuardInterval);
cmd.AddValue ("standard", "Set standard (802.11a, 802.11b, 802.11g, 802.11n-5GHz, 802.11n-2.4GHz, 802.11ac, 802.11-holland, 802.11-10MHz, 802.11-5MHz, 802.11ax-5GHz, 802.11ax-2.4GHz)", standard);
cmd.AddValue ("standard", "Set standard (802.11a, 802.11b, 802.11g, 802.11n-5GHz, 802.11n-2.4GHz, 802.11ac, 802.11-holland, 802.11p-10MHz, 802.11p-5MHz, 802.11ax-5GHz, 802.11ax-2.4GHz)", standard);
cmd.AddValue ("wifiManager", "Set wifi rate manager (Aarf, Aarfcd, Amrr, Arf, Cara, Ideal, Minstrel, MinstrelHt, Onoe, Rraa)", wifiManager);
cmd.AddValue ("infrastructure", "Use infrastructure instead of adhoc", infrastructure);
cmd.Parse (argc,argv);
@@ -253,8 +253,8 @@ int main (int argc, char *argv[])
serverStandards.push_back (StandardInfo ("802.11n-2.4GHz", WIFI_PHY_STANDARD_80211n_2_4GHZ, serverChannelWidth, 3, 30, 0, 35, 80 * channelRateFactor));
serverStandards.push_back (StandardInfo ("802.11ac", WIFI_PHY_STANDARD_80211ac, serverChannelWidth, 5, 50, 0, 55, 120 * channelRateFactor));
serverStandards.push_back (StandardInfo ("802.11-holland", WIFI_PHY_STANDARD_holland, 20, 3, 27, 0, 30, 60));
serverStandards.push_back (StandardInfo ("802.11-10MHz", WIFI_PHY_STANDARD_80211_10MHZ, 10, 3, 27, 0, 30, 60));
serverStandards.push_back (StandardInfo ("802.11-5MHz", WIFI_PHY_STANDARD_80211_5MHZ, 5, 3, 27, 0, 30, 60));
serverStandards.push_back (StandardInfo ("802.11p-10MHz", WIFI_PHY_STANDARD_80211p, 10, 3, 27, 0, 30, 60));
serverStandards.push_back (StandardInfo ("802.11p-5MHz", WIFI_PHY_STANDARD_80211p, 5, 3, 27, 0, 30, 60));
serverStandards.push_back (StandardInfo ("802.11ax-5GHz", WIFI_PHY_STANDARD_80211ax_5GHZ, serverChannelWidth, 5, 55, 0, 60, 120 * channelRateFactor));
serverStandards.push_back (StandardInfo ("802.11ax-2.4GHz", WIFI_PHY_STANDARD_80211ax_2_4GHZ, serverChannelWidth, 5, 55, 0, 60, 120 * channelRateFactor));
@@ -265,8 +265,8 @@ int main (int argc, char *argv[])
clientStandards.push_back (StandardInfo ("802.11n-2.4GHz", WIFI_PHY_STANDARD_80211n_2_4GHZ, clientChannelWidth, 3, 30, 0, 35, 80 * channelRateFactor));
clientStandards.push_back (StandardInfo ("802.11ac", WIFI_PHY_STANDARD_80211ac, clientChannelWidth, 5, 50, 0, 55, 120 * channelRateFactor));
clientStandards.push_back (StandardInfo ("802.11-holland", WIFI_PHY_STANDARD_holland, 20, 3, 27, 0, 30, 60));
clientStandards.push_back (StandardInfo ("802.11-10MHz", WIFI_PHY_STANDARD_80211_10MHZ, 10, 3, 27, 0, 30, 60));
clientStandards.push_back (StandardInfo ("802.11-5MHz", WIFI_PHY_STANDARD_80211_5MHZ, 5, 3, 27, 0, 30, 60));
clientStandards.push_back (StandardInfo ("802.11p-10MHz", WIFI_PHY_STANDARD_80211p, 10, 3, 27, 0, 30, 60));
clientStandards.push_back (StandardInfo ("802.11p-5MHz", WIFI_PHY_STANDARD_80211p, 5, 3, 27, 0, 30, 60));
clientStandards.push_back (StandardInfo ("802.11ax-5GHz", WIFI_PHY_STANDARD_80211ax_5GHZ, clientChannelWidth, 5, 55, 0, 60, 160 * channelRateFactor));
clientStandards.push_back (StandardInfo ("802.11ax-2.4GHz", WIFI_PHY_STANDARD_80211ax_2_4GHZ, clientChannelWidth, 5, 55, 0, 60, 160 * channelRateFactor));

View File

@@ -180,7 +180,8 @@ int main (int argc, char *argv[])
PrintAttributesIfEnabled (printAttributes);
break;
case 7:
wifi.SetStandard (WIFI_PHY_STANDARD_80211_10MHZ);
wifi.SetStandard (WIFI_PHY_STANDARD_80211p);
phy.Set ("ChannelWidth", UintegerValue (10));
staDevice = wifi.Install (phy, macSta, wifiStaNode.Get (0));
apDevice = wifi.Install (phy, macAp, wifiApNode.Get (0));
phySta = GetYansWifiPhyPtr (staDevice);
@@ -191,13 +192,13 @@ int main (int argc, char *argv[])
PrintAttributesIfEnabled (printAttributes);
break;
case 8:
wifi.SetStandard (WIFI_PHY_STANDARD_80211_5MHZ);
wifi.SetStandard (WIFI_PHY_STANDARD_80211p);
phy.Set ("ChannelWidth", UintegerValue (5));
staDevice = wifi.Install (phy, macSta, wifiStaNode.Get (0));
apDevice = wifi.Install (phy, macAp, wifiApNode.Get (0));
phySta = GetYansWifiPhyPtr (staDevice);
// We expect channel 0, width 5, frequency 5860
// Channel 0 because 5MHz channels are not officially defined
NS_ASSERT (phySta->GetChannelNumber () == 0);
// We expect channel 171, width 5, frequency 5860
NS_ASSERT (phySta->GetChannelNumber () == 171);
NS_ASSERT (phySta->GetChannelWidth () == 5);
NS_ASSERT (phySta->GetFrequency () == 5860);
PrintAttributesIfEnabled (printAttributes);

View File

@@ -59,7 +59,7 @@ int main (int argc, char** argv)
bool verbose = false;
CommandLine cmd (__FILE__);
cmd.AddValue ("standard",
"OFDM-based Wi-Fi standard [11a, 11_10MHZ, 11_5MHZ, 11n_2_4GHZ, 11n_5GHZ, 11ac, 11ax_2_4GHZ, 11ax_5GHZ]",
"OFDM-based Wi-Fi standard [11a, 11p_10MHZ, 11p_5MHZ, 11n_2_4GHZ, 11n_5GHZ, 11ac, 11ax_2_4GHZ, 11ax_5GHZ]",
standard);
cmd.AddValue ("bw", "Bandwidth (consistent with standard, in MHz)", bw);
cmd.AddValue ("txPower", "Transmit power (dBm)", pow);
@@ -84,10 +84,10 @@ int main (int argc, char** argv)
return 1;
}
}
else if (standard == "11_10MHZ")
else if (standard == "11p_10MHZ")
{
wifi.SetStandard (WIFI_PHY_STANDARD_80211_10MHZ);
ssid = Ssid ("ns380211_10MHZ");
wifi.SetStandard (WIFI_PHY_STANDARD_80211p);
ssid = Ssid ("ns380211p_10MHZ");
dataRate = "OfdmRate3MbpsBW10MHz";
freq = 5860;
dataStartTime = MicroSeconds (1400);
@@ -98,10 +98,10 @@ int main (int argc, char** argv)
return 1;
}
}
else if (standard == "11_5MHZ")
else if (standard == "11p_5MHZ")
{
wifi.SetStandard (WIFI_PHY_STANDARD_80211_5MHZ);
ssid = Ssid ("ns380211_5MHZ");
wifi.SetStandard (WIFI_PHY_STANDARD_80211p);
ssid = Ssid ("ns380211p_5MHZ");
dataRate = "OfdmRate1_5MbpsBW5MHz";
freq = 5860;
dataStartTime = MicroSeconds (2500);

View File

@@ -1108,8 +1108,7 @@ RegularWifiMac::ConfigureStandard (WifiPhyStandard standard)
SetErpSupported (true);
case WIFI_PHY_STANDARD_holland:
case WIFI_PHY_STANDARD_80211a:
case WIFI_PHY_STANDARD_80211_10MHZ:
case WIFI_PHY_STANDARD_80211_5MHZ:
case WIFI_PHY_STANDARD_80211p:
cwmin = 15;
cwmax = 1023;
break;

View File

@@ -349,13 +349,17 @@ SpectrumWifiPhy::GetBandBandwidth (void) const
// Use OFDM subcarrier width of 312.5 KHz as band granularity
bandBandwidth = 312500;
break;
case WIFI_PHY_STANDARD_80211_10MHZ:
// Use OFDM subcarrier width of 156.25 KHz as band granularity
bandBandwidth = 156250;
break;
case WIFI_PHY_STANDARD_80211_5MHZ:
// Use OFDM subcarrier width of 78.125 KHz as band granularity
bandBandwidth = 78125;
case WIFI_PHY_STANDARD_80211p:
if (GetChannelWidth () == 5)
{
// Use OFDM subcarrier width of 78.125 KHz as band granularity
bandBandwidth = 78125;
}
else
{
// Use OFDM subcarrier width of 156.25 KHz as band granularity
bandBandwidth = 156250;
}
break;
case WIFI_PHY_STANDARD_80211ax_2_4GHZ:
case WIFI_PHY_STANDARD_80211ax_5GHZ:

View File

@@ -35,10 +35,8 @@ enum WifiPhyStandard
WIFI_PHY_STANDARD_80211b,
/** ERP-OFDM PHY (Clause 19, Section 19.5) */
WIFI_PHY_STANDARD_80211g,
/** OFDM PHY for the 5 GHz band (Clause 17 with 10 MHz channel bandwidth) */
WIFI_PHY_STANDARD_80211_10MHZ,
/** OFDM PHY for the 5 GHz band (Clause 17 with 5 MHz channel bandwidth) */
WIFI_PHY_STANDARD_80211_5MHZ,
/** OFDM PHY (Clause 17 - amendment for 10 MHz and 5 MHz channels) */
WIFI_PHY_STANDARD_80211p,
/** This is intended to be the configuration used in this paper:
* Gavin Holland, Nitin Vaidya and Paramvir Bahl, "A Rate-Adaptive
* MAC Protocol for Multi-Hop Wireless Networks", in Proc. of

View File

@@ -148,14 +148,23 @@ WifiPhy::ChannelToFrequencyWidthMap WifiPhy::m_channelToFrequencyWidth =
{ std::make_pair (114, WIFI_PHY_STANDARD_UNSPECIFIED), std::make_pair (5570, 160) },
{ std::make_pair (163, WIFI_PHY_STANDARD_UNSPECIFIED), std::make_pair (5815, 160) },
// 802.11p (10 MHz channels at the 5.855-5.925 band
{ std::make_pair (172, WIFI_PHY_STANDARD_80211_10MHZ), std::make_pair (5860, 10) },
{ std::make_pair (174, WIFI_PHY_STANDARD_80211_10MHZ), std::make_pair (5870, 10) },
{ std::make_pair (176, WIFI_PHY_STANDARD_80211_10MHZ), std::make_pair (5880, 10) },
{ std::make_pair (178, WIFI_PHY_STANDARD_80211_10MHZ), std::make_pair (5890, 10) },
{ std::make_pair (180, WIFI_PHY_STANDARD_80211_10MHZ), std::make_pair (5900, 10) },
{ std::make_pair (182, WIFI_PHY_STANDARD_80211_10MHZ), std::make_pair (5910, 10) },
{ std::make_pair (184, WIFI_PHY_STANDARD_80211_10MHZ), std::make_pair (5920, 10) }
// 802.11p 10 MHz channels at the 5.855-5.925 band
{ std::make_pair (172, WIFI_PHY_STANDARD_80211p), std::make_pair (5860, 10) },
{ std::make_pair (174, WIFI_PHY_STANDARD_80211p), std::make_pair (5870, 10) },
{ std::make_pair (176, WIFI_PHY_STANDARD_80211p), std::make_pair (5880, 10) },
{ std::make_pair (178, WIFI_PHY_STANDARD_80211p), std::make_pair (5890, 10) },
{ std::make_pair (180, WIFI_PHY_STANDARD_80211p), std::make_pair (5900, 10) },
{ std::make_pair (182, WIFI_PHY_STANDARD_80211p), std::make_pair (5910, 10) },
{ std::make_pair (184, WIFI_PHY_STANDARD_80211p), std::make_pair (5920, 10) },
// 802.11p 5 MHz channels at the 5.855-5.925 band (for simplification, we consider the same center frequencies as the 10 MHz channels)
{ std::make_pair (171, WIFI_PHY_STANDARD_80211p), std::make_pair (5860, 5) },
{ std::make_pair (173, WIFI_PHY_STANDARD_80211p), std::make_pair (5870, 5) },
{ std::make_pair (175, WIFI_PHY_STANDARD_80211p), std::make_pair (5880, 5) },
{ std::make_pair (177, WIFI_PHY_STANDARD_80211p), std::make_pair (5890, 5) },
{ std::make_pair (179, WIFI_PHY_STANDARD_80211p), std::make_pair (5900, 5) },
{ std::make_pair (181, WIFI_PHY_STANDARD_80211p), std::make_pair (5910, 5) },
{ std::make_pair (183, WIFI_PHY_STANDARD_80211p), std::make_pair (5920, 5) }
};
TypeId
@@ -882,17 +891,14 @@ WifiPhy::ConfigureDefaultsForStandard (WifiPhyStandard standard)
// Channel number should be aligned by SetFrequency () to 1
NS_ASSERT (GetChannelNumber () == 1);
break;
case WIFI_PHY_STANDARD_80211_10MHZ:
SetChannelWidth (10);
case WIFI_PHY_STANDARD_80211p:
if (GetChannelWidth () > 10)
{
SetChannelWidth (10);
}
SetFrequency (5860);
// Channel number should be aligned by SetFrequency () to 172
NS_ASSERT (GetChannelNumber () == 172);
break;
case WIFI_PHY_STANDARD_80211_5MHZ:
SetChannelWidth (5);
SetFrequency (5860);
// Channel number should be aligned by SetFrequency () to 0
NS_ASSERT (GetChannelNumber () == 0);
// Channel number should be aligned by SetFrequency () to either 172 or 171
NS_ASSERT ((GetChannelWidth () == 10 && GetChannelNumber () == 172) || (GetChannelWidth () == 5 && GetChannelNumber () == 171)) ;
break;
case WIFI_PHY_STANDARD_holland:
SetChannelWidth (20);
@@ -1049,45 +1055,47 @@ WifiPhy::Configure80211g (void)
}
void
WifiPhy::Configure80211_10Mhz (void)
WifiPhy::Configure80211p (void)
{
NS_LOG_FUNCTION (this);
if (GetChannelWidth () == 10)
{
// See Table 17-21 "OFDM PHY characteristics" of 802.11-2016
SetSifs (MicroSeconds (32));
SetSlot (MicroSeconds (13));
SetPifs (GetSifs () + GetSlot ());
m_ackTxTime = MicroSeconds (88);
// See Table 17-21 "OFDM PHY characteristics" of 802.11-2016
SetSifs (MicroSeconds (32));
SetSlot (MicroSeconds (13));
SetPifs (GetSifs () + GetSlot ());
m_ackTxTime = MicroSeconds (88);
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate3MbpsBW10MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate4_5MbpsBW10MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate6MbpsBW10MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate9MbpsBW10MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate12MbpsBW10MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate18MbpsBW10MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate24MbpsBW10MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate27MbpsBW10MHz ());
}
else if (GetChannelWidth () == 5)
{
// See Table 17-21 "OFDM PHY characteristics" of 802.11-2016
SetSifs (MicroSeconds (64));
SetSlot (MicroSeconds (21));
SetPifs (GetSifs () + GetSlot ());
m_ackTxTime = MicroSeconds (176);
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate3MbpsBW10MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate4_5MbpsBW10MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate6MbpsBW10MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate9MbpsBW10MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate12MbpsBW10MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate18MbpsBW10MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate24MbpsBW10MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate27MbpsBW10MHz ());
}
void
WifiPhy::Configure80211_5Mhz (void)
{
NS_LOG_FUNCTION (this);
// See Table 17-21 "OFDM PHY characteristics" of 802.11-2016
SetSifs (MicroSeconds (64));
SetSlot (MicroSeconds (21));
SetPifs (GetSifs () + GetSlot ());
m_ackTxTime = MicroSeconds (176);
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate1_5MbpsBW5MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate2_25MbpsBW5MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate3MbpsBW5MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate4_5MbpsBW5MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate6MbpsBW5MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate9MbpsBW5MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate12MbpsBW5MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate13_5MbpsBW5MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate1_5MbpsBW5MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate2_25MbpsBW5MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate3MbpsBW5MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate4_5MbpsBW5MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate6MbpsBW5MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate9MbpsBW5MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate12MbpsBW5MHz ());
m_deviceRateSet.push_back (WifiPhy::GetOfdmRate13_5MbpsBW5MHz ());
}
else
{
NS_FATAL_ERROR ("802.11p configured with a wrong channel width!");
}
}
void
@@ -1394,11 +1402,8 @@ WifiPhy::ConfigureStandard (WifiPhyStandard standard)
case WIFI_PHY_STANDARD_80211g:
Configure80211g ();
break;
case WIFI_PHY_STANDARD_80211_10MHZ:
Configure80211_10Mhz ();
break;
case WIFI_PHY_STANDARD_80211_5MHZ:
Configure80211_5Mhz ();
case WIFI_PHY_STANDARD_80211p:
Configure80211p ();
break;
case WIFI_PHY_STANDARD_holland:
ConfigureHolland ();

View File

@@ -1822,14 +1822,9 @@ private:
void Configure80211g (void);
/**
* Configure WifiPhy with appropriate channel frequency and
* supported rates for 802.11a standard with 10MHz channel spacing.
* supported rates for 802.11p standard.
*/
void Configure80211_10Mhz (void);
/**
* Configure WifiPhy with appropriate channel frequency and
* supported rates for 802.11a standard with 5MHz channel spacing.
*/
void Configure80211_5Mhz ();
void Configure80211p (void);
/**
* Configure WifiPhy with appropriate channel frequency and
* supported rates for Holland.

View File

@@ -33,70 +33,70 @@ cpp_examples = [
("wifi-manager-example --wifiManager=Aarf --standard=802.11b --serverChannelWidth=22 --clientChannelWidth=22 --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Aarf --standard=802.11g --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Aarf --standard=802.11-holland --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Aarf --standard=802.11-10MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Aarf --standard=802.11-5MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Aarf --standard=802.11p-10MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Aarf --standard=802.11p-5MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Aarfcd --standard=802.11a --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Aarfcd --standard=802.11a --rtsThreshold=0 --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Aarfcd --standard=802.11a --maxSlrc=1 --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Aarfcd --standard=802.11b --serverChannelWidth=22 --clientChannelWidth=22 --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Aarfcd --standard=802.11g --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Aarfcd --standard=802.11-holland --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Aarfcd --standard=802.11-10MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Aarfcd --standard=802.11-5MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Aarfcd --standard=802.11p-10MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Aarfcd --standard=802.11p-5MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Amrr --standard=802.11a --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Amrr --standard=802.11a --rtsThreshold=0 --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Amrr --standard=802.11a --maxSlrc=1 --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Amrr --standard=802.11b --serverChannelWidth=22 --clientChannelWidth=22 --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Amrr --standard=802.11g --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Amrr --standard=802.11-holland --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Amrr --standard=802.11-10MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Amrr --standard=802.11-5MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Amrr --standard=802.11p-10MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Amrr --standard=802.11p-5MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Arf --standard=802.11a --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Arf --standard=802.11a --rtsThreshold=0 --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Arf --standard=802.11a --maxSlrc=1 --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Arf --standard=802.11b --serverChannelWidth=22 --clientChannelWidth=22 --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Arf --standard=802.11g --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Arf --standard=802.11-holland --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Arf --standard=802.11-10MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Arf --standard=802.11-5MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Arf --standard=802.11p-10MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Arf --standard=802.11p-5MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Cara --standard=802.11a --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Cara --standard=802.11a --rtsThreshold=0 --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Cara --standard=802.11a --maxSlrc=1 --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Cara --standard=802.11b --serverChannelWidth=22 --clientChannelWidth=22 --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Cara --standard=802.11g --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Cara --standard=802.11-holland --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Cara --standard=802.11-10MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Cara --standard=802.11-5MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Cara --standard=802.11p-10MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Cara --standard=802.11p-5MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Onoe --standard=802.11a --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Onoe --standard=802.11a --rtsThreshold=0 --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Onoe --standard=802.11a --maxSlrc=1 --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Onoe --standard=802.11b --serverChannelWidth=22 --clientChannelWidth=22 --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Onoe --standard=802.11g --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Onoe --standard=802.11-holland --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Onoe --standard=802.11-10MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Onoe --standard=802.11-5MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Onoe --standard=802.11p-10MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Onoe --standard=802.11p-5MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Rraa --standard=802.11a --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Rraa --standard=802.11a --rtsThreshold=0 --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Rraa --standard=802.11a --maxSlrc=1 --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Rraa --standard=802.11b --serverChannelWidth=22 --clientChannelWidth=22 --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Rraa --standard=802.11g --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Rraa --standard=802.11-holland --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Rraa --standard=802.11-10MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Rraa --standard=802.11-5MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Rraa --standard=802.11p-10MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Rraa --standard=802.11p-5MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Minstrel --standard=802.11a --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Minstrel --standard=802.11a --rtsThreshold=0 --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Minstrel --standard=802.11a --maxSlrc=1 --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=Minstrel --standard=802.11b --serverChannelWidth=22 --clientChannelWidth=22 --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Minstrel --standard=802.11g --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Minstrel --standard=802.11-holland --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Minstrel --standard=802.11-10MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Minstrel --standard=802.11-5MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Minstrel --standard=802.11p-10MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Minstrel --standard=802.11p-5MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=MinstrelHt --standard=802.11a --stepTime=0.1", "True", "True"),
("wifi-manager-example --wifiManager=MinstrelHt --standard=802.11b --serverChannelWidth=22 --clientChannelWidth=22 --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=MinstrelHt --standard=802.11g --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=MinstrelHt --standard=802.11-holland --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=MinstrelHt --standard=802.11-10MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=MinstrelHt --standard=802.11-5MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=MinstrelHt --standard=802.11p-10MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=MinstrelHt --standard=802.11p-5MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=MinstrelHt --standard=802.11n-5GHz --serverChannelWidth=20 --clientChannelWidth=20 --serverShortGuardInterval=800 --clientShortGuardInterval=800 --serverNss=1 --clientNss=1 --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=MinstrelHt --standard=802.11n-5GHz --serverChannelWidth=20 --clientChannelWidth=20 --serverShortGuardInterval=400 --clientShortGuardInterval=400 --serverNss=1 --clientNss=1 --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=MinstrelHt --standard=802.11n-5GHz --serverChannelWidth=40 --clientChannelWidth=40 --serverShortGuardInterval=800 --clientShortGuardInterval=800 --serverNss=1 --clientNss=1 --stepTime=0.1", "True", "False"),
@@ -165,8 +165,8 @@ cpp_examples = [
("wifi-manager-example --wifiManager=Ideal --standard=802.11b --serverChannelWidth=22 --clientChannelWidth=22 --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Ideal --standard=802.11g --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Ideal --standard=802.11-holland --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Ideal --standard=802.11-10MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Ideal --standard=802.11-5MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Ideal --standard=802.11p-10MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Ideal --standard=802.11p-5MHz --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Ideal --standard=802.11n-5GHz --serverChannelWidth=20 --clientChannelWidth=20 --serverShortGuardInterval=800 --clientShortGuardInterval=800 --serverNss=1 --clientNss=1 --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Ideal --standard=802.11n-5GHz --serverChannelWidth=20 --clientChannelWidth=20 --serverShortGuardInterval=400 --clientShortGuardInterval=400 --serverNss=1 --clientNss=1 --stepTime=0.1", "True", "False"),
("wifi-manager-example --wifiManager=Ideal --standard=802.11n-5GHz --serverChannelWidth=40 --clientChannelWidth=40 --serverShortGuardInterval=800 --clientShortGuardInterval=800 --serverNss=1 --clientNss=1 --stepTime=0.1", "True", "False"),

View File

@@ -998,23 +998,25 @@ SetChannelFrequencyTest::DoRun ()
// case 7
WifiHelper wifi;
wifi.SetRemoteStationManager ("ns3::IdealWifiManager");
wifi.SetStandard (WIFI_PHY_STANDARD_80211_10MHZ);
wifi.SetStandard (WIFI_PHY_STANDARD_80211p);
phy.Set ("ChannelWidth", UintegerValue (10));
staDevice = wifi.Install (phy, macSta, wifiStaNode.Get (0));
phySta = GetYansWifiPhyPtr (staDevice);
NS_TEST_ASSERT_MSG_EQ (phySta->GetChannelNumber (), 172, "802.11 10Mhz configuration");
NS_TEST_ASSERT_MSG_EQ (phySta->GetChannelWidth (), 10, "802.11 10Mhz configuration");
NS_TEST_ASSERT_MSG_EQ (phySta->GetFrequency (), 5860, "802.11 10Mhz configuration");
NS_TEST_ASSERT_MSG_EQ (phySta->GetChannelNumber (), 172, "802.11p 10Mhz configuration");
NS_TEST_ASSERT_MSG_EQ (phySta->GetChannelWidth (), 10, "802.11p 10Mhz configuration");
NS_TEST_ASSERT_MSG_EQ (phySta->GetFrequency (), 5860, "802.11p 10Mhz configuration");
}
{
// case 8
WifiHelper wifi;
wifi.SetRemoteStationManager ("ns3::IdealWifiManager");
wifi.SetStandard (WIFI_PHY_STANDARD_80211_5MHZ);
wifi.SetStandard (WIFI_PHY_STANDARD_80211p);
phy.Set ("ChannelWidth", UintegerValue (5));
staDevice = wifi.Install (phy, macSta, wifiStaNode.Get (0));
phySta = GetYansWifiPhyPtr (staDevice);
NS_TEST_ASSERT_MSG_EQ (phySta->GetChannelNumber (), 0, "802.11 5Mhz configuration");
NS_TEST_ASSERT_MSG_EQ (phySta->GetChannelWidth (), 5, "802.11 5Mhz configuration");
NS_TEST_ASSERT_MSG_EQ (phySta->GetFrequency (), 5860, "802.11 5Mhz configuration");
NS_TEST_ASSERT_MSG_EQ (phySta->GetChannelNumber (), 171, "802.11p 5Mhz configuration");
NS_TEST_ASSERT_MSG_EQ (phySta->GetChannelWidth (), 5, "802.11p 5Mhz configuration");
NS_TEST_ASSERT_MSG_EQ (phySta->GetFrequency (), 5860, "802.11p 5Mhz configuration");
}
{
// case 9

View File

@@ -100,13 +100,8 @@ WifiOfdmMaskSlopesTestCase::WifiOfdmMaskSlopesTestCase (const char* str, WifiPhy
switch (standard)
{
case WIFI_PHY_STANDARD_80211_5MHZ:
NS_ASSERT (bw == 5);
freq = 5860;
m_actualSpectrum = WifiSpectrumValueHelper::CreateOfdmTxPowerSpectralDensity (freq, bw, refTxPowerW, bw);
break;
case WIFI_PHY_STANDARD_80211_10MHZ:
NS_ASSERT (bw == 10);
case WIFI_PHY_STANDARD_80211p:
NS_ASSERT ((bw == 5) || (bw == 10));
freq = 5860;
m_actualSpectrum = WifiSpectrumValueHelper::CreateOfdmTxPowerSpectralDensity (freq, bw, refTxPowerW, bw);
break;
@@ -257,8 +252,8 @@ WifiTransmitMaskTestSuite::WifiTransmitMaskTestSuite ()
double tol = 0.001; // in dB
// ============================================================================================
// 11 5MHz
NS_LOG_FUNCTION ("Check slopes for 11 5MHz");
// 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)
@@ -275,12 +270,12 @@ WifiTransmitMaskTestSuite::WifiTransmitMaskTestSuite ()
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)
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11 5MHz", WIFI_PHY_STANDARD_80211_5MHZ, 5,
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11p 5MHz", WIFI_PHY_STANDARD_80211p, 5,
maskSlopesLeft, maskSlopesRight, tol),
TestCase::QUICK);
// 11 10MHz
NS_LOG_FUNCTION ("Check slopes for 11 10MHz");
// 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)
@@ -299,7 +294,7 @@ WifiTransmitMaskTestSuite::WifiTransmitMaskTestSuite ()
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)
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11 10MHz", WIFI_PHY_STANDARD_80211_10MHZ, 10,
AddTestCase (new WifiOfdmMaskSlopesTestCase ("11p 10MHz", WIFI_PHY_STANDARD_80211p, 10,
maskSlopesLeft, maskSlopesRight, tol),
TestCase::QUICK);