From 548947f5f13b3f06db017d33f3aff3e2f079a1c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Deronne?= Date: Tue, 15 Nov 2022 21:25:44 +0100 Subject: [PATCH] wifi: Cleanup SpectrumWifiPhy::CreateWifiSpectrumPhyInterface --- .../examples/wifi-test-interference-helper.cc | 3 -- src/wifi/helper/spectrum-wifi-helper.cc | 1 - src/wifi/model/spectrum-wifi-phy.cc | 29 +++++++------------ src/wifi/model/spectrum-wifi-phy.h | 9 +----- src/wifi/model/wifi-phy.h | 2 +- src/wifi/test/spectrum-wifi-phy-test.cc | 2 -- src/wifi/test/wifi-non-ht-dup-test.cc | 4 --- src/wifi/test/wifi-phy-cca-test.cc | 2 -- src/wifi/test/wifi-phy-ofdma-test.cc | 17 ----------- 9 files changed, 13 insertions(+), 56 deletions(-) diff --git a/src/wifi/examples/wifi-test-interference-helper.cc b/src/wifi/examples/wifi-test-interference-helper.cc index 5f118219a..558f8fce3 100644 --- a/src/wifi/examples/wifi-test-interference-helper.cc +++ b/src/wifi/examples/wifi-test-interference-helper.cc @@ -235,7 +235,6 @@ InterferenceExperiment::Run(struct InterferenceExperiment::Input input) Ptr nodeA = CreateObject(); Ptr devA = CreateObject(); m_txA = CreateObject(); - m_txA->CreateWifiSpectrumPhyInterface(devA); m_txA->SetDevice(devA); m_txA->SetTxPowerStart(input.txPowerLevelA); m_txA->SetTxPowerEnd(input.txPowerLevelA); @@ -243,7 +242,6 @@ InterferenceExperiment::Run(struct InterferenceExperiment::Input input) Ptr nodeB = CreateObject(); Ptr devB = CreateObject(); m_txB = CreateObject(); - m_txB->CreateWifiSpectrumPhyInterface(devB); m_txB->SetDevice(devB); m_txB->SetTxPowerStart(input.txPowerLevelB); m_txB->SetTxPowerEnd(input.txPowerLevelB); @@ -251,7 +249,6 @@ InterferenceExperiment::Run(struct InterferenceExperiment::Input input) Ptr nodeRx = CreateObject(); Ptr devRx = CreateObject(); Ptr rx = CreateObject(); - rx->CreateWifiSpectrumPhyInterface(devRx); rx->SetDevice(devRx); Ptr interferenceTxA = CreateObject(); diff --git a/src/wifi/helper/spectrum-wifi-helper.cc b/src/wifi/helper/spectrum-wifi-helper.cc index b2d5d271a..97a7b276a 100644 --- a/src/wifi/helper/spectrum-wifi-helper.cc +++ b/src/wifi/helper/spectrum-wifi-helper.cc @@ -88,7 +88,6 @@ SpectrumWifiPhyHelper::Create(Ptr node, Ptr device) const for (std::size_t i = 0; i < m_phy.size(); i++) { Ptr phy = m_phy.at(i).Create(); - phy->CreateWifiSpectrumPhyInterface(device); auto interference = m_interferenceHelper.Create(); phy->SetInterferenceHelper(interference); Ptr error = m_errorRateModel.at(i).Create(); diff --git a/src/wifi/model/spectrum-wifi-phy.cc b/src/wifi/model/spectrum-wifi-phy.cc index d899406cc..c2d0d12c9 100644 --- a/src/wifi/model/spectrum-wifi-phy.cc +++ b/src/wifi/model/spectrum-wifi-phy.cc @@ -109,16 +109,13 @@ SpectrumWifiPhy::DoInitialize() { NS_LOG_FUNCTION(this); WifiPhy::DoInitialize(); - // This connection is deferred until frequency and channel width are set - if (m_channel && m_wifiSpectrumPhyInterface) + m_wifiSpectrumPhyInterface = CreateObject(); + m_wifiSpectrumPhyInterface->SetSpectrumWifiPhy(this); + if (GetDevice()) { - m_channel->AddRx(m_wifiSpectrumPhyInterface); - } - else - { - NS_FATAL_ERROR("SpectrumWifiPhy misses channel and WifiSpectrumPhyInterface objects at " - "initialization time"); + m_wifiSpectrumPhyInterface->SetDevice(GetDevice()); } + m_channel->AddRx(m_wifiSpectrumPhyInterface); } Ptr @@ -438,12 +435,13 @@ SpectrumWifiPhy::SetAntenna(const Ptr a) } void -SpectrumWifiPhy::CreateWifiSpectrumPhyInterface(Ptr device) +SpectrumWifiPhy::SetDevice(const Ptr device) { - NS_LOG_FUNCTION(this << device); - m_wifiSpectrumPhyInterface = CreateObject(); - m_wifiSpectrumPhyInterface->SetSpectrumWifiPhy(this); - m_wifiSpectrumPhyInterface->SetDevice(device); + WifiPhy::SetDevice(device); + if (m_wifiSpectrumPhyInterface) + { + m_wifiSpectrumPhyInterface->SetDevice(device); + } } void @@ -457,13 +455,8 @@ void SpectrumWifiPhy::Transmit(Ptr txParams) { NS_LOG_FUNCTION(this << txParams); - - // Finish configuration - NS_ASSERT_MSG(m_wifiSpectrumPhyInterface, - "SpectrumPhy() is not set; maybe forgot to call CreateWifiSpectrumPhyInterface?"); txParams->txPhy = m_wifiSpectrumPhyInterface->GetObject(); txParams->txAntenna = m_antenna; - m_channel->StartTx(txParams); } diff --git a/src/wifi/model/spectrum-wifi-phy.h b/src/wifi/model/spectrum-wifi-phy.h index b8420f1fb..60e14d747 100644 --- a/src/wifi/model/spectrum-wifi-phy.h +++ b/src/wifi/model/spectrum-wifi-phy.h @@ -69,6 +69,7 @@ class SpectrumWifiPhy : public WifiPhy ~SpectrumWifiPhy() override; // Implementation of pure virtual method. + void SetDevice(const Ptr device) override; void StartTx(Ptr ppdu) override; Ptr GetChannel() const override; uint16_t GetGuardBandwidth(uint16_t currentChannelWidth) const override; @@ -89,14 +90,6 @@ class SpectrumWifiPhy : public WifiPhy */ void StartRx(Ptr rxParams); - /** - * Method to encapsulate the creation of the WifiSpectrumPhyInterface - * object (used to bind the WifiSpectrumPhy to a SpectrumChannel) and - * to link it to this SpectrumWifiPhy instance - * - * \param device pointer to the NetDevice object including this new object - */ - void CreateWifiSpectrumPhyInterface(Ptr device); /** * \param antenna an AntennaModel to include in the transmitted * SpectrumSignalParameters (in case any objects downstream of the diff --git a/src/wifi/model/wifi-phy.h b/src/wifi/model/wifi-phy.h index b4cf88087..860eec8c9 100644 --- a/src/wifi/model/wifi-phy.h +++ b/src/wifi/model/wifi-phy.h @@ -834,7 +834,7 @@ class WifiPhy : public Object * * \param device the device this PHY is associated with */ - void SetDevice(const Ptr device); + virtual void SetDevice(const Ptr device); /** * Return the device this PHY is associated with * diff --git a/src/wifi/test/spectrum-wifi-phy-test.cc b/src/wifi/test/spectrum-wifi-phy-test.cc index 613fd6519..b7c0f5fb1 100644 --- a/src/wifi/test/spectrum-wifi-phy-test.cc +++ b/src/wifi/test/spectrum-wifi-phy-test.cc @@ -538,7 +538,6 @@ SpectrumWifiPhyFilterTest::DoSetup() Ptr txNode = CreateObject(); Ptr txDev = CreateObject(); m_txPhy = CreateObject(); - m_txPhy->CreateWifiSpectrumPhyInterface(txDev); m_txPhy->ConfigureStandard(WIFI_STANDARD_80211ax); Ptr txInterferenceHelper = CreateObject(); m_txPhy->SetInterferenceHelper(txInterferenceHelper); @@ -555,7 +554,6 @@ SpectrumWifiPhyFilterTest::DoSetup() Ptr rxNode = CreateObject(); Ptr rxDev = CreateObject(); m_rxPhy = CreateObject(); - m_rxPhy->CreateWifiSpectrumPhyInterface(rxDev); m_rxPhy->ConfigureStandard(WIFI_STANDARD_80211ax); Ptr rxInterferenceHelper = CreateObject(); m_rxPhy->SetInterferenceHelper(rxInterferenceHelper); diff --git a/src/wifi/test/wifi-non-ht-dup-test.cc b/src/wifi/test/wifi-non-ht-dup-test.cc index 256d30f53..bf2e672d1 100644 --- a/src/wifi/test/wifi-non-ht-dup-test.cc +++ b/src/wifi/test/wifi-non-ht-dup-test.cc @@ -425,7 +425,6 @@ TestNonHtDuplicatePhyReception::DoSetup() auto apNode = CreateObject(); auto apDev = CreateObject(); m_phyAp = CreateObject(); - m_phyAp->CreateWifiSpectrumPhyInterface(apDev); auto apInterferenceHelper = CreateObject(); m_phyAp->SetInterferenceHelper(apInterferenceHelper); auto apErrorModel = CreateObject(); @@ -444,7 +443,6 @@ TestNonHtDuplicatePhyReception::DoSetup() auto staNode = CreateObject(); auto staDev = CreateObject(); auto staPhy = CreateObject(); - staPhy->CreateWifiSpectrumPhyInterface(staDev); auto sta1InterferenceHelper = CreateObject(); staPhy->SetInterferenceHelper(sta1InterferenceHelper); auto sta1ErrorModel = CreateObject(); @@ -799,7 +797,6 @@ TestMultipleCtsResponsesFromMuRts::DoSetup() apMac->SetAttribute("BeaconGeneration", BooleanValue(false)); apDev->SetMac(apMac); m_phyAp = CreateObject(); - m_phyAp->CreateWifiSpectrumPhyInterface(apDev); apDev->SetHeConfiguration(CreateObject()); auto apInterferenceHelper = CreateObject(); m_phyAp->SetInterferenceHelper(apInterferenceHelper); @@ -835,7 +832,6 @@ TestMultipleCtsResponsesFromMuRts::DoSetup() auto staNode = CreateObject(); auto staDev = CreateObject(); auto phySta = CreateObject(); - phySta->CreateWifiSpectrumPhyInterface(staDev); auto staInterferenceHelper = CreateObject(); phySta->SetInterferenceHelper(staInterferenceHelper); auto staErrorModel = CreateObject(); diff --git a/src/wifi/test/wifi-phy-cca-test.cc b/src/wifi/test/wifi-phy-cca-test.cc index 2ab7b0dbe..ba3b3e3f5 100644 --- a/src/wifi/test/wifi-phy-cca-test.cc +++ b/src/wifi/test/wifi-phy-cca-test.cc @@ -1015,7 +1015,6 @@ WifiPhyCcaIndicationTest::DoSetup() Ptr vhtConfiguration = CreateObject(); rxDev->SetVhtConfiguration(vhtConfiguration); m_rxPhy = CreateObject(); - m_rxPhy->CreateWifiSpectrumPhyInterface(rxDev); m_rxPhyStateListener = std::make_unique(); m_rxPhy->RegisterListener(m_rxPhyStateListener.get()); m_rxPhy->ConfigureStandard(WIFI_STANDARD_80211ax); @@ -1034,7 +1033,6 @@ WifiPhyCcaIndicationTest::DoSetup() Ptr txNode = CreateObject(); Ptr txDev = CreateObject(); m_txPhy = CreateObject(); - m_txPhy->CreateWifiSpectrumPhyInterface(txDev); m_txPhy->ConfigureStandard(WIFI_STANDARD_80211ax); m_txPhy->SetAttribute("ChannelSwitchDelay", TimeValue(Seconds(0))); Ptr txInterferenceHelper = CreateObject(); diff --git a/src/wifi/test/wifi-phy-ofdma-test.cc b/src/wifi/test/wifi-phy-ofdma-test.cc index 8efbcdc01..8749ebffb 100644 --- a/src/wifi/test/wifi-phy-ofdma-test.cc +++ b/src/wifi/test/wifi-phy-ofdma-test.cc @@ -709,7 +709,6 @@ TestDlOfdmaPhyTransmission::DoSetup() Ptr apNode = CreateObject(); Ptr apDev = CreateObject(); m_phyAp = CreateObject(); - m_phyAp->CreateWifiSpectrumPhyInterface(apDev); m_phyAp->ConfigureStandard(WIFI_STANDARD_80211ax); Ptr apInterferenceHelper = CreateObject(); m_phyAp->SetInterferenceHelper(apInterferenceHelper); @@ -726,7 +725,6 @@ TestDlOfdmaPhyTransmission::DoSetup() Ptr sta1Node = CreateObject(); Ptr sta1Dev = CreateObject(); m_phySta1 = CreateObject(1); - m_phySta1->CreateWifiSpectrumPhyInterface(sta1Dev); m_phySta1->ConfigureStandard(WIFI_STANDARD_80211ax); Ptr sta1InterferenceHelper = CreateObject(); m_phySta1->SetInterferenceHelper(sta1InterferenceHelper); @@ -746,7 +744,6 @@ TestDlOfdmaPhyTransmission::DoSetup() Ptr sta2Node = CreateObject(); Ptr sta2Dev = CreateObject(); m_phySta2 = CreateObject(2); - m_phySta2->CreateWifiSpectrumPhyInterface(sta2Dev); m_phySta2->ConfigureStandard(WIFI_STANDARD_80211ax); Ptr sta2InterferenceHelper = CreateObject(); m_phySta2->SetInterferenceHelper(sta2InterferenceHelper); @@ -766,7 +763,6 @@ TestDlOfdmaPhyTransmission::DoSetup() Ptr sta3Node = CreateObject(); Ptr sta3Dev = CreateObject(); m_phySta3 = CreateObject(3); - m_phySta3->CreateWifiSpectrumPhyInterface(sta3Dev); m_phySta3->ConfigureStandard(WIFI_STANDARD_80211ax); Ptr sta3InterferenceHelper = CreateObject(); m_phySta3->SetInterferenceHelper(sta3InterferenceHelper); @@ -1555,7 +1551,6 @@ TestDlOfdmaPhyPuncturing::DoSetup() Ptr apNode = CreateObject(); Ptr apDev = CreateObject(); m_phyAp = CreateObject(); - m_phyAp->CreateWifiSpectrumPhyInterface(apDev); m_phyAp->ConfigureStandard(WIFI_STANDARD_80211ax); Ptr apInterferenceHelper = CreateObject(); m_phyAp->SetInterferenceHelper(apInterferenceHelper); @@ -1572,7 +1567,6 @@ TestDlOfdmaPhyPuncturing::DoSetup() Ptr sta1Node = CreateObject(); Ptr sta1Dev = CreateObject(); m_phySta1 = CreateObject(1); - m_phySta1->CreateWifiSpectrumPhyInterface(sta1Dev); m_phySta1->ConfigureStandard(WIFI_STANDARD_80211ax); Ptr sta1InterferenceHelper = CreateObject(); m_phySta1->SetInterferenceHelper(sta1InterferenceHelper); @@ -1592,7 +1586,6 @@ TestDlOfdmaPhyPuncturing::DoSetup() Ptr sta2Node = CreateObject(); Ptr sta2Dev = CreateObject(); m_phySta2 = CreateObject(2); - m_phySta2->CreateWifiSpectrumPhyInterface(sta2Dev); m_phySta2->ConfigureStandard(WIFI_STANDARD_80211ax); Ptr sta2InterferenceHelper = CreateObject(); m_phySta2->SetInterferenceHelper(sta2InterferenceHelper); @@ -1916,7 +1909,6 @@ TestUlOfdmaPpduUid::DoSetup() Ptr apNode = CreateObject(); Ptr apDev = CreateObject(); m_phyAp = CreateObject(0); - m_phyAp->CreateWifiSpectrumPhyInterface(apDev); m_phyAp->ConfigureStandard(WIFI_STANDARD_80211ax); Ptr apInterferenceHelper = CreateObject(); m_phyAp->SetInterferenceHelper(apInterferenceHelper); @@ -1944,7 +1936,6 @@ TestUlOfdmaPpduUid::DoSetup() Ptr sta1Node = CreateObject(); Ptr sta1Dev = CreateObject(); m_phySta1 = CreateObject(1); - m_phySta1->CreateWifiSpectrumPhyInterface(sta1Dev); m_phySta1->ConfigureStandard(WIFI_STANDARD_80211ax); Ptr sta1InterferenceHelper = CreateObject(); m_phySta1->SetInterferenceHelper(sta1InterferenceHelper); @@ -1965,7 +1956,6 @@ TestUlOfdmaPpduUid::DoSetup() Ptr sta2Node = CreateObject(); Ptr sta2Dev = CreateObject(); m_phySta2 = CreateObject(2); - m_phySta2->CreateWifiSpectrumPhyInterface(sta2Dev); m_phySta2->ConfigureStandard(WIFI_STANDARD_80211ax); Ptr sta2InterferenceHelper = CreateObject(); m_phySta2->SetInterferenceHelper(sta2InterferenceHelper); @@ -3727,7 +3717,6 @@ TestUlOfdmaPhyTransmission::DoSetup() apMac->SetAttribute("BeaconGeneration", BooleanValue(false)); apDev->SetMac(apMac); m_phyAp = CreateObject(0); - m_phyAp->CreateWifiSpectrumPhyInterface(apDev); m_phyAp->ConfigureStandard(WIFI_STANDARD_80211ax); Ptr heConfiguration = CreateObject(); apDev->SetHeConfiguration(heConfiguration); @@ -3754,7 +3743,6 @@ TestUlOfdmaPhyTransmission::DoSetup() sta1Dev->SetStandard(WIFI_STANDARD_80211ax); sta1Dev->SetHeConfiguration(CreateObject()); m_phySta1 = CreateObject(1); - m_phySta1->CreateWifiSpectrumPhyInterface(sta1Dev); m_phySta1->ConfigureStandard(WIFI_STANDARD_80211ax); Ptr sta1InterferenceHelper = CreateObject(); m_phySta1->SetInterferenceHelper(sta1InterferenceHelper); @@ -3774,7 +3762,6 @@ TestUlOfdmaPhyTransmission::DoSetup() sta2Dev->SetStandard(WIFI_STANDARD_80211ax); sta2Dev->SetHeConfiguration(CreateObject()); m_phySta2 = CreateObject(2); - m_phySta2->CreateWifiSpectrumPhyInterface(sta2Dev); m_phySta2->ConfigureStandard(WIFI_STANDARD_80211ax); Ptr sta2InterferenceHelper = CreateObject(); m_phySta2->SetInterferenceHelper(sta2InterferenceHelper); @@ -3794,7 +3781,6 @@ TestUlOfdmaPhyTransmission::DoSetup() sta3Dev->SetStandard(WIFI_STANDARD_80211ax); sta3Dev->SetHeConfiguration(CreateObject()); m_phySta3 = CreateObject(3); - m_phySta3->CreateWifiSpectrumPhyInterface(sta3Dev); m_phySta3->ConfigureStandard(WIFI_STANDARD_80211ax); Ptr sta3InterferenceHelper = CreateObject(); m_phySta3->SetInterferenceHelper(sta3InterferenceHelper); @@ -5089,7 +5075,6 @@ TestPhyPaddingExclusion::DoSetup() apMac->SetAttribute("BeaconGeneration", BooleanValue(false)); apDev->SetMac(apMac); m_phyAp = CreateObject(0); - m_phyAp->CreateWifiSpectrumPhyInterface(apDev); m_phyAp->ConfigureStandard(WIFI_STANDARD_80211ax); Ptr heConfiguration = CreateObject(); apDev->SetHeConfiguration(heConfiguration); @@ -5122,7 +5107,6 @@ TestPhyPaddingExclusion::DoSetup() Ptr sta1Node = CreateObject(); Ptr sta1Dev = CreateObject(); m_phySta1 = CreateObject(1); - m_phySta1->CreateWifiSpectrumPhyInterface(sta1Dev); m_phySta1->ConfigureStandard(WIFI_STANDARD_80211ax); Ptr sta1InterferenceHelper = CreateObject(); m_phySta1->SetInterferenceHelper(sta1InterferenceHelper); @@ -5144,7 +5128,6 @@ TestPhyPaddingExclusion::DoSetup() Ptr sta2Node = CreateObject(); Ptr sta2Dev = CreateObject(); m_phySta2 = CreateObject(2); - m_phySta2->CreateWifiSpectrumPhyInterface(sta2Dev); m_phySta2->ConfigureStandard(WIFI_STANDARD_80211ax); Ptr sta2InterferenceHelper = CreateObject(); m_phySta2->SetInterferenceHelper(sta2InterferenceHelper);