wifi: Cleanup SpectrumWifiPhy::CreateWifiSpectrumPhyInterface

This commit is contained in:
Sébastien Deronne
2022-11-15 21:25:44 +01:00
committed by Sebastien Deronne
parent de5362e36b
commit 548947f5f1
9 changed files with 13 additions and 56 deletions

View File

@@ -235,7 +235,6 @@ InterferenceExperiment::Run(struct InterferenceExperiment::Input input)
Ptr<Node> nodeA = CreateObject<Node>();
Ptr<WifiNetDevice> devA = CreateObject<WifiNetDevice>();
m_txA = CreateObject<SpectrumWifiPhy>();
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<Node> nodeB = CreateObject<Node>();
Ptr<WifiNetDevice> devB = CreateObject<WifiNetDevice>();
m_txB = CreateObject<SpectrumWifiPhy>();
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<Node> nodeRx = CreateObject<Node>();
Ptr<WifiNetDevice> devRx = CreateObject<WifiNetDevice>();
Ptr<SpectrumWifiPhy> rx = CreateObject<SpectrumWifiPhy>();
rx->CreateWifiSpectrumPhyInterface(devRx);
rx->SetDevice(devRx);
Ptr<InterferenceHelper> interferenceTxA = CreateObject<InterferenceHelper>();

View File

@@ -88,7 +88,6 @@ SpectrumWifiPhyHelper::Create(Ptr<Node> node, Ptr<WifiNetDevice> device) const
for (std::size_t i = 0; i < m_phy.size(); i++)
{
Ptr<SpectrumWifiPhy> phy = m_phy.at(i).Create<SpectrumWifiPhy>();
phy->CreateWifiSpectrumPhyInterface(device);
auto interference = m_interferenceHelper.Create<InterferenceHelper>();
phy->SetInterferenceHelper(interference);
Ptr<ErrorRateModel> error = m_errorRateModel.at(i).Create<ErrorRateModel>();

View File

@@ -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<WifiSpectrumPhyInterface>();
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<const SpectrumModel>
@@ -438,12 +435,13 @@ SpectrumWifiPhy::SetAntenna(const Ptr<AntennaModel> a)
}
void
SpectrumWifiPhy::CreateWifiSpectrumPhyInterface(Ptr<NetDevice> device)
SpectrumWifiPhy::SetDevice(const Ptr<WifiNetDevice> device)
{
NS_LOG_FUNCTION(this << device);
m_wifiSpectrumPhyInterface = CreateObject<WifiSpectrumPhyInterface>();
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<WifiSpectrumSignalParameters> 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<SpectrumPhy>();
txParams->txAntenna = m_antenna;
m_channel->StartTx(txParams);
}

View File

@@ -69,6 +69,7 @@ class SpectrumWifiPhy : public WifiPhy
~SpectrumWifiPhy() override;
// Implementation of pure virtual method.
void SetDevice(const Ptr<WifiNetDevice> device) override;
void StartTx(Ptr<const WifiPpdu> ppdu) override;
Ptr<Channel> GetChannel() const override;
uint16_t GetGuardBandwidth(uint16_t currentChannelWidth) const override;
@@ -89,14 +90,6 @@ class SpectrumWifiPhy : public WifiPhy
*/
void StartRx(Ptr<SpectrumSignalParameters> 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<NetDevice> device);
/**
* \param antenna an AntennaModel to include in the transmitted
* SpectrumSignalParameters (in case any objects downstream of the

View File

@@ -834,7 +834,7 @@ class WifiPhy : public Object
*
* \param device the device this PHY is associated with
*/
void SetDevice(const Ptr<WifiNetDevice> device);
virtual void SetDevice(const Ptr<WifiNetDevice> device);
/**
* Return the device this PHY is associated with
*

View File

@@ -538,7 +538,6 @@ SpectrumWifiPhyFilterTest::DoSetup()
Ptr<Node> txNode = CreateObject<Node>();
Ptr<WifiNetDevice> txDev = CreateObject<WifiNetDevice>();
m_txPhy = CreateObject<ExtSpectrumWifiPhy>();
m_txPhy->CreateWifiSpectrumPhyInterface(txDev);
m_txPhy->ConfigureStandard(WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> txInterferenceHelper = CreateObject<InterferenceHelper>();
m_txPhy->SetInterferenceHelper(txInterferenceHelper);
@@ -555,7 +554,6 @@ SpectrumWifiPhyFilterTest::DoSetup()
Ptr<Node> rxNode = CreateObject<Node>();
Ptr<WifiNetDevice> rxDev = CreateObject<WifiNetDevice>();
m_rxPhy = CreateObject<ExtSpectrumWifiPhy>();
m_rxPhy->CreateWifiSpectrumPhyInterface(rxDev);
m_rxPhy->ConfigureStandard(WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> rxInterferenceHelper = CreateObject<InterferenceHelper>();
m_rxPhy->SetInterferenceHelper(rxInterferenceHelper);

View File

@@ -425,7 +425,6 @@ TestNonHtDuplicatePhyReception::DoSetup()
auto apNode = CreateObject<Node>();
auto apDev = CreateObject<WifiNetDevice>();
m_phyAp = CreateObject<SpectrumWifiPhy>();
m_phyAp->CreateWifiSpectrumPhyInterface(apDev);
auto apInterferenceHelper = CreateObject<InterferenceHelper>();
m_phyAp->SetInterferenceHelper(apInterferenceHelper);
auto apErrorModel = CreateObject<NistErrorRateModel>();
@@ -444,7 +443,6 @@ TestNonHtDuplicatePhyReception::DoSetup()
auto staNode = CreateObject<Node>();
auto staDev = CreateObject<WifiNetDevice>();
auto staPhy = CreateObject<SpectrumWifiPhy>();
staPhy->CreateWifiSpectrumPhyInterface(staDev);
auto sta1InterferenceHelper = CreateObject<InterferenceHelper>();
staPhy->SetInterferenceHelper(sta1InterferenceHelper);
auto sta1ErrorModel = CreateObject<NistErrorRateModel>();
@@ -799,7 +797,6 @@ TestMultipleCtsResponsesFromMuRts::DoSetup()
apMac->SetAttribute("BeaconGeneration", BooleanValue(false));
apDev->SetMac(apMac);
m_phyAp = CreateObject<MuRtsCtsSpectrumWifiPhy>();
m_phyAp->CreateWifiSpectrumPhyInterface(apDev);
apDev->SetHeConfiguration(CreateObject<HeConfiguration>());
auto apInterferenceHelper = CreateObject<InterferenceHelper>();
m_phyAp->SetInterferenceHelper(apInterferenceHelper);
@@ -835,7 +832,6 @@ TestMultipleCtsResponsesFromMuRts::DoSetup()
auto staNode = CreateObject<Node>();
auto staDev = CreateObject<WifiNetDevice>();
auto phySta = CreateObject<MuRtsCtsSpectrumWifiPhy>();
phySta->CreateWifiSpectrumPhyInterface(staDev);
auto staInterferenceHelper = CreateObject<InterferenceHelper>();
phySta->SetInterferenceHelper(staInterferenceHelper);
auto staErrorModel = CreateObject<NistErrorRateModel>();

View File

@@ -1015,7 +1015,6 @@ WifiPhyCcaIndicationTest::DoSetup()
Ptr<VhtConfiguration> vhtConfiguration = CreateObject<VhtConfiguration>();
rxDev->SetVhtConfiguration(vhtConfiguration);
m_rxPhy = CreateObject<SpectrumWifiPhy>();
m_rxPhy->CreateWifiSpectrumPhyInterface(rxDev);
m_rxPhyStateListener = std::make_unique<CcaTestPhyListener>();
m_rxPhy->RegisterListener(m_rxPhyStateListener.get());
m_rxPhy->ConfigureStandard(WIFI_STANDARD_80211ax);
@@ -1034,7 +1033,6 @@ WifiPhyCcaIndicationTest::DoSetup()
Ptr<Node> txNode = CreateObject<Node>();
Ptr<WifiNetDevice> txDev = CreateObject<WifiNetDevice>();
m_txPhy = CreateObject<SpectrumWifiPhy>();
m_txPhy->CreateWifiSpectrumPhyInterface(txDev);
m_txPhy->ConfigureStandard(WIFI_STANDARD_80211ax);
m_txPhy->SetAttribute("ChannelSwitchDelay", TimeValue(Seconds(0)));
Ptr<InterferenceHelper> txInterferenceHelper = CreateObject<InterferenceHelper>();

View File

@@ -709,7 +709,6 @@ TestDlOfdmaPhyTransmission::DoSetup()
Ptr<Node> apNode = CreateObject<Node>();
Ptr<WifiNetDevice> apDev = CreateObject<WifiNetDevice>();
m_phyAp = CreateObject<SpectrumWifiPhy>();
m_phyAp->CreateWifiSpectrumPhyInterface(apDev);
m_phyAp->ConfigureStandard(WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> apInterferenceHelper = CreateObject<InterferenceHelper>();
m_phyAp->SetInterferenceHelper(apInterferenceHelper);
@@ -726,7 +725,6 @@ TestDlOfdmaPhyTransmission::DoSetup()
Ptr<Node> sta1Node = CreateObject<Node>();
Ptr<WifiNetDevice> sta1Dev = CreateObject<WifiNetDevice>();
m_phySta1 = CreateObject<OfdmaSpectrumWifiPhy>(1);
m_phySta1->CreateWifiSpectrumPhyInterface(sta1Dev);
m_phySta1->ConfigureStandard(WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> sta1InterferenceHelper = CreateObject<InterferenceHelper>();
m_phySta1->SetInterferenceHelper(sta1InterferenceHelper);
@@ -746,7 +744,6 @@ TestDlOfdmaPhyTransmission::DoSetup()
Ptr<Node> sta2Node = CreateObject<Node>();
Ptr<WifiNetDevice> sta2Dev = CreateObject<WifiNetDevice>();
m_phySta2 = CreateObject<OfdmaSpectrumWifiPhy>(2);
m_phySta2->CreateWifiSpectrumPhyInterface(sta2Dev);
m_phySta2->ConfigureStandard(WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> sta2InterferenceHelper = CreateObject<InterferenceHelper>();
m_phySta2->SetInterferenceHelper(sta2InterferenceHelper);
@@ -766,7 +763,6 @@ TestDlOfdmaPhyTransmission::DoSetup()
Ptr<Node> sta3Node = CreateObject<Node>();
Ptr<WifiNetDevice> sta3Dev = CreateObject<WifiNetDevice>();
m_phySta3 = CreateObject<OfdmaSpectrumWifiPhy>(3);
m_phySta3->CreateWifiSpectrumPhyInterface(sta3Dev);
m_phySta3->ConfigureStandard(WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> sta3InterferenceHelper = CreateObject<InterferenceHelper>();
m_phySta3->SetInterferenceHelper(sta3InterferenceHelper);
@@ -1555,7 +1551,6 @@ TestDlOfdmaPhyPuncturing::DoSetup()
Ptr<Node> apNode = CreateObject<Node>();
Ptr<WifiNetDevice> apDev = CreateObject<WifiNetDevice>();
m_phyAp = CreateObject<SpectrumWifiPhy>();
m_phyAp->CreateWifiSpectrumPhyInterface(apDev);
m_phyAp->ConfigureStandard(WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> apInterferenceHelper = CreateObject<InterferenceHelper>();
m_phyAp->SetInterferenceHelper(apInterferenceHelper);
@@ -1572,7 +1567,6 @@ TestDlOfdmaPhyPuncturing::DoSetup()
Ptr<Node> sta1Node = CreateObject<Node>();
Ptr<WifiNetDevice> sta1Dev = CreateObject<WifiNetDevice>();
m_phySta1 = CreateObject<OfdmaSpectrumWifiPhy>(1);
m_phySta1->CreateWifiSpectrumPhyInterface(sta1Dev);
m_phySta1->ConfigureStandard(WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> sta1InterferenceHelper = CreateObject<InterferenceHelper>();
m_phySta1->SetInterferenceHelper(sta1InterferenceHelper);
@@ -1592,7 +1586,6 @@ TestDlOfdmaPhyPuncturing::DoSetup()
Ptr<Node> sta2Node = CreateObject<Node>();
Ptr<WifiNetDevice> sta2Dev = CreateObject<WifiNetDevice>();
m_phySta2 = CreateObject<OfdmaSpectrumWifiPhy>(2);
m_phySta2->CreateWifiSpectrumPhyInterface(sta2Dev);
m_phySta2->ConfigureStandard(WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> sta2InterferenceHelper = CreateObject<InterferenceHelper>();
m_phySta2->SetInterferenceHelper(sta2InterferenceHelper);
@@ -1916,7 +1909,6 @@ TestUlOfdmaPpduUid::DoSetup()
Ptr<Node> apNode = CreateObject<Node>();
Ptr<WifiNetDevice> apDev = CreateObject<WifiNetDevice>();
m_phyAp = CreateObject<OfdmaSpectrumWifiPhy>(0);
m_phyAp->CreateWifiSpectrumPhyInterface(apDev);
m_phyAp->ConfigureStandard(WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> apInterferenceHelper = CreateObject<InterferenceHelper>();
m_phyAp->SetInterferenceHelper(apInterferenceHelper);
@@ -1944,7 +1936,6 @@ TestUlOfdmaPpduUid::DoSetup()
Ptr<Node> sta1Node = CreateObject<Node>();
Ptr<WifiNetDevice> sta1Dev = CreateObject<WifiNetDevice>();
m_phySta1 = CreateObject<OfdmaSpectrumWifiPhy>(1);
m_phySta1->CreateWifiSpectrumPhyInterface(sta1Dev);
m_phySta1->ConfigureStandard(WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> sta1InterferenceHelper = CreateObject<InterferenceHelper>();
m_phySta1->SetInterferenceHelper(sta1InterferenceHelper);
@@ -1965,7 +1956,6 @@ TestUlOfdmaPpduUid::DoSetup()
Ptr<Node> sta2Node = CreateObject<Node>();
Ptr<WifiNetDevice> sta2Dev = CreateObject<WifiNetDevice>();
m_phySta2 = CreateObject<OfdmaSpectrumWifiPhy>(2);
m_phySta2->CreateWifiSpectrumPhyInterface(sta2Dev);
m_phySta2->ConfigureStandard(WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> sta2InterferenceHelper = CreateObject<InterferenceHelper>();
m_phySta2->SetInterferenceHelper(sta2InterferenceHelper);
@@ -3727,7 +3717,6 @@ TestUlOfdmaPhyTransmission::DoSetup()
apMac->SetAttribute("BeaconGeneration", BooleanValue(false));
apDev->SetMac(apMac);
m_phyAp = CreateObject<OfdmaSpectrumWifiPhy>(0);
m_phyAp->CreateWifiSpectrumPhyInterface(apDev);
m_phyAp->ConfigureStandard(WIFI_STANDARD_80211ax);
Ptr<HeConfiguration> heConfiguration = CreateObject<HeConfiguration>();
apDev->SetHeConfiguration(heConfiguration);
@@ -3754,7 +3743,6 @@ TestUlOfdmaPhyTransmission::DoSetup()
sta1Dev->SetStandard(WIFI_STANDARD_80211ax);
sta1Dev->SetHeConfiguration(CreateObject<HeConfiguration>());
m_phySta1 = CreateObject<OfdmaSpectrumWifiPhy>(1);
m_phySta1->CreateWifiSpectrumPhyInterface(sta1Dev);
m_phySta1->ConfigureStandard(WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> sta1InterferenceHelper = CreateObject<InterferenceHelper>();
m_phySta1->SetInterferenceHelper(sta1InterferenceHelper);
@@ -3774,7 +3762,6 @@ TestUlOfdmaPhyTransmission::DoSetup()
sta2Dev->SetStandard(WIFI_STANDARD_80211ax);
sta2Dev->SetHeConfiguration(CreateObject<HeConfiguration>());
m_phySta2 = CreateObject<OfdmaSpectrumWifiPhy>(2);
m_phySta2->CreateWifiSpectrumPhyInterface(sta2Dev);
m_phySta2->ConfigureStandard(WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> sta2InterferenceHelper = CreateObject<InterferenceHelper>();
m_phySta2->SetInterferenceHelper(sta2InterferenceHelper);
@@ -3794,7 +3781,6 @@ TestUlOfdmaPhyTransmission::DoSetup()
sta3Dev->SetStandard(WIFI_STANDARD_80211ax);
sta3Dev->SetHeConfiguration(CreateObject<HeConfiguration>());
m_phySta3 = CreateObject<OfdmaSpectrumWifiPhy>(3);
m_phySta3->CreateWifiSpectrumPhyInterface(sta3Dev);
m_phySta3->ConfigureStandard(WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> sta3InterferenceHelper = CreateObject<InterferenceHelper>();
m_phySta3->SetInterferenceHelper(sta3InterferenceHelper);
@@ -5089,7 +5075,6 @@ TestPhyPaddingExclusion::DoSetup()
apMac->SetAttribute("BeaconGeneration", BooleanValue(false));
apDev->SetMac(apMac);
m_phyAp = CreateObject<OfdmaSpectrumWifiPhy>(0);
m_phyAp->CreateWifiSpectrumPhyInterface(apDev);
m_phyAp->ConfigureStandard(WIFI_STANDARD_80211ax);
Ptr<HeConfiguration> heConfiguration = CreateObject<HeConfiguration>();
apDev->SetHeConfiguration(heConfiguration);
@@ -5122,7 +5107,6 @@ TestPhyPaddingExclusion::DoSetup()
Ptr<Node> sta1Node = CreateObject<Node>();
Ptr<WifiNetDevice> sta1Dev = CreateObject<WifiNetDevice>();
m_phySta1 = CreateObject<OfdmaSpectrumWifiPhy>(1);
m_phySta1->CreateWifiSpectrumPhyInterface(sta1Dev);
m_phySta1->ConfigureStandard(WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> sta1InterferenceHelper = CreateObject<InterferenceHelper>();
m_phySta1->SetInterferenceHelper(sta1InterferenceHelper);
@@ -5144,7 +5128,6 @@ TestPhyPaddingExclusion::DoSetup()
Ptr<Node> sta2Node = CreateObject<Node>();
Ptr<WifiNetDevice> sta2Dev = CreateObject<WifiNetDevice>();
m_phySta2 = CreateObject<OfdmaSpectrumWifiPhy>(2);
m_phySta2->CreateWifiSpectrumPhyInterface(sta2Dev);
m_phySta2->ConfigureStandard(WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> sta2InterferenceHelper = CreateObject<InterferenceHelper>();
m_phySta2->SetInterferenceHelper(sta2InterferenceHelper);