diff --git a/src/devices/wifi/interference-helper.cc b/src/devices/wifi/interference-helper.cc index 2cb95fef2..fa50b5674 100644 --- a/src/devices/wifi/interference-helper.cc +++ b/src/devices/wifi/interference-helper.cc @@ -224,11 +224,11 @@ InterferenceHelper::Configure80211aParameters (void) m_80211a = true; m_plcpLongPreambleDelayUs = 16; m_plcpShortPreambleDelayUs = 16; - m_longPlcpHeaderMode = WifiPhy::g_6mba; - m_shortPlcpHeaderMode = WifiPhy::g_6mba; + m_longPlcpHeaderMode = WifiPhy::Get6mba (); + m_shortPlcpHeaderMode = WifiPhy::Get6mba (); m_plcpHeaderLength = 4 + 1 + 12 + 1 + 6; /* 4095 bytes at a 6Mb/s rate with a 1/2 coding rate. */ - m_maxPacketDuration = CalculateTxDuration (4095, WifiPhy::g_6mba, WIFI_PREAMBLE_LONG); + m_maxPacketDuration = CalculateTxDuration (4095, WifiPhy::Get6mba (), WIFI_PREAMBLE_LONG); } void diff --git a/src/devices/wifi/wifi-phy.cc b/src/devices/wifi/wifi-phy.cc index 7e145e83d..946fc12c6 100644 --- a/src/devices/wifi/wifi-phy.cc +++ b/src/devices/wifi/wifi-phy.cc @@ -37,34 +37,6 @@ NS_LOG_COMPONENT_DEFINE ("WifiPhy"); namespace ns3 { -// Define all the WifiMode needed for 802.11a -WifiMode WifiPhy::g_6mba = WifiModeFactory::CreateBpsk ("wifia-6mbs", - true, - 20000000, 6000000, 12000000); -WifiMode WifiPhy::g_9mba = WifiModeFactory::CreateBpsk ("wifia-9mbs", - false, - 20000000, 9000000, 12000000); -// XXX explain why Bpsk rather than Qpsk -WifiMode WifiPhy::g_12mba = WifiModeFactory::CreateBpsk ("wifia-12mbs", - true, - 20000000, 12000000, 24000000); -WifiMode WifiPhy::g_18mba = WifiModeFactory::CreateBpsk ("wifia-18mbs", - false, - 20000000, 18000000, 24000000); -WifiMode WifiPhy::g_24mba = WifiModeFactory::CreateBpsk ("wifia-24mbs", - true, - 20000000, 24000000, 48000000); -WifiMode WifiPhy::g_36mba = WifiModeFactory::CreateBpsk ("wifia-36mbs", - false, - 20000000, 36000000, 48000000); -WifiMode WifiPhy::g_48mba = WifiModeFactory::CreateBpsk ("wifia-48mbs", - false, - 20000000, 48000000, 72000000); -WifiMode WifiPhy::g_54mba = WifiModeFactory::CreateBpsk ("wifia-54mbs", - false, - 20000000, 54000000, 72000000); - - /**************************************************************** * This destructor is needed. ****************************************************************/ @@ -97,4 +69,71 @@ WifiPhy::~WifiPhy () NS_LOG_FUNCTION (this); } +WifiMode +WifiPhy::Get6mba (void) +{ + static WifiMode mode = WifiModeFactory::CreateBpsk ("wifia-6mbs", + true, + 20000000, 6000000, 12000000); + return mode; +} +WifiMode +WifiPhy::Get9mba (void) +{ + static WifiMode mode = WifiModeFactory::CreateBpsk ("wifia-9mbs", + false, + 20000000, 9000000, 12000000); + return mode; +} +WifiMode +WifiPhy::Get12mba (void) +{ + static WifiMode mode = WifiModeFactory::CreateBpsk ("wifia-12mbs", + true, + 20000000, 12000000, 24000000); + return mode; +} +WifiMode +WifiPhy::Get18mba (void) +{ + static WifiMode mode = WifiModeFactory::CreateBpsk ("wifia-18mbs", + false, + 20000000, 18000000, 24000000); + return mode; +} +WifiMode +WifiPhy::Get24mba (void) +{ + static WifiMode mode = WifiModeFactory::CreateBpsk ("wifia-24mbs", + true, + 20000000, 24000000, 48000000); + return mode; +} +WifiMode +WifiPhy::Get36mba (void) +{ + static WifiMode mode = WifiModeFactory::CreateBpsk ("wifia-36mbs", + false, + 20000000, 36000000, 48000000); + return mode; +} + +WifiMode +WifiPhy::Get48mba (void) +{ + static WifiMode mode = WifiModeFactory::CreateBpsk ("wifia-48mbs", + false, + 20000000, 48000000, 72000000); + return mode; +} + +WifiMode +WifiPhy::Get54mba (void) +{ + static WifiMode mode = WifiModeFactory::CreateBpsk ("wifia-54mbs", + false, + 20000000, 54000000, 72000000); + return mode; +} + } // namespace ns3 diff --git a/src/devices/wifi/wifi-phy.h b/src/devices/wifi/wifi-phy.h index 58c2cdbc4..9501ecbfe 100644 --- a/src/devices/wifi/wifi-phy.h +++ b/src/devices/wifi/wifi-phy.h @@ -242,14 +242,14 @@ public: virtual Ptr GetChannel (void) const = 0; - static WifiMode g_6mba; - static WifiMode g_9mba; - static WifiMode g_12mba; - static WifiMode g_18mba; - static WifiMode g_24mba; - static WifiMode g_36mba; - static WifiMode g_48mba; - static WifiMode g_54mba; + static WifiMode Get6mba (void); + static WifiMode Get9mba (void); + static WifiMode Get12mba (void); + static WifiMode Get18mba (void); + static WifiMode Get24mba (void); + static WifiMode Get36mba (void); + static WifiMode Get48mba (void); + static WifiMode Get54mba (void); }; } // namespace ns3 diff --git a/src/devices/wifi/yans-error-rate-model.cc b/src/devices/wifi/yans-error-rate-model.cc index 351fa3d48..d2c810344 100644 --- a/src/devices/wifi/yans-error-rate-model.cc +++ b/src/devices/wifi/yans-error-rate-model.cc @@ -171,7 +171,7 @@ YansErrorRateModel::GetFecQamBer (double snr, uint32_t nbits, double YansErrorRateModel::GetChunkSuccessRate (WifiMode mode, double snr, uint32_t nbits) const { - if (mode == WifiPhy::g_6mba) + if (mode == WifiPhy::Get6mba ()) { return GetFecBpskBer (snr, nbits, @@ -181,7 +181,7 @@ YansErrorRateModel::GetChunkSuccessRate (WifiMode mode, double snr, uint32_t nbi 11 // adFree ); } - else if (mode == WifiPhy::g_9mba) + else if (mode == WifiPhy::Get9mba ()) { return GetFecBpskBer (snr, nbits, @@ -191,7 +191,7 @@ YansErrorRateModel::GetChunkSuccessRate (WifiMode mode, double snr, uint32_t nbi 8 // adFree ); } - else if (mode == WifiPhy::g_12mba) + else if (mode == WifiPhy::Get12mba ()) { return GetFecQamBer (snr, nbits, @@ -203,7 +203,7 @@ YansErrorRateModel::GetChunkSuccessRate (WifiMode mode, double snr, uint32_t nbi 0 // adFreePlusOne ); } - else if (mode == WifiPhy::g_18mba) + else if (mode == WifiPhy::Get18mba ()) { return GetFecQamBer (snr, nbits, @@ -215,7 +215,7 @@ YansErrorRateModel::GetChunkSuccessRate (WifiMode mode, double snr, uint32_t nbi 31 // adFreePlusOne ); } - else if (mode == WifiPhy::g_24mba) + else if (mode == WifiPhy::Get24mba ()) { return GetFecQamBer (snr, nbits, @@ -227,7 +227,7 @@ YansErrorRateModel::GetChunkSuccessRate (WifiMode mode, double snr, uint32_t nbi 0 // adFreePlusOne ); } - else if (mode == WifiPhy::g_36mba) + else if (mode == WifiPhy::Get36mba ()) { return GetFecQamBer (snr, nbits, @@ -239,7 +239,7 @@ YansErrorRateModel::GetChunkSuccessRate (WifiMode mode, double snr, uint32_t nbi 31 // adFreePlusOne ); } - else if (mode == WifiPhy::g_48mba) + else if (mode == WifiPhy::Get48mba ()) { return GetFecQamBer (snr, nbits, @@ -251,7 +251,7 @@ YansErrorRateModel::GetChunkSuccessRate (WifiMode mode, double snr, uint32_t nbi 16 // adFreePlusOne ); } - else if (mode == WifiPhy::g_54mba) + else if (mode == WifiPhy::Get54mba ()) { return GetFecQamBer (snr, nbits, diff --git a/src/devices/wifi/yans-wifi-phy.cc b/src/devices/wifi/yans-wifi-phy.cc index ee79c8d44..d662ce02a 100644 --- a/src/devices/wifi/yans-wifi-phy.cc +++ b/src/devices/wifi/yans-wifi-phy.cc @@ -416,14 +416,14 @@ YansWifiPhy::Configure80211a (void) { NS_LOG_FUNCTION (this); m_interference.Configure80211aParameters (); - m_modes.push_back (g_6mba); - m_modes.push_back (g_9mba); - m_modes.push_back (g_12mba); - m_modes.push_back (g_18mba); - m_modes.push_back (g_24mba); - m_modes.push_back (g_36mba); - m_modes.push_back (g_48mba); - m_modes.push_back (g_54mba); + m_modes.push_back (WifiPhy::Get6mba ()); + m_modes.push_back (WifiPhy::Get9mba ()); + m_modes.push_back (WifiPhy::Get12mba ()); + m_modes.push_back (WifiPhy::Get18mba ()); + m_modes.push_back (WifiPhy::Get24mba ()); + m_modes.push_back (WifiPhy::Get36mba ()); + m_modes.push_back (WifiPhy::Get48mba ()); + m_modes.push_back (WifiPhy::Get54mba ()); } void @@ -431,11 +431,11 @@ YansWifiPhy::ConfigureHolland (void) { NS_LOG_FUNCTION (this); m_interference.Configure80211aParameters (); - m_modes.push_back (g_6mba); - m_modes.push_back (g_12mba); - m_modes.push_back (g_18mba); - m_modes.push_back (g_36mba); - m_modes.push_back (g_54mba); + m_modes.push_back (WifiPhy::Get6mba ()); + m_modes.push_back (WifiPhy::Get12mba ()); + m_modes.push_back (WifiPhy::Get18mba ()); + m_modes.push_back (WifiPhy::Get36mba ()); + m_modes.push_back (WifiPhy::Get54mba ()); } void