wifi: Add possibility to set InterferenceHelper from PHY helpers

This commit is contained in:
Sebastien Deronne
2022-04-27 16:59:12 +02:00
committed by Stefano Avallone
parent c62c648459
commit 021696a5e9
15 changed files with 192 additions and 38 deletions

View File

@@ -60,6 +60,7 @@
#include "ns3/spectrum-wifi-phy.h"
#include "ns3/propagation-loss-model.h"
#include "ns3/propagation-delay-model.h"
#include "ns3/interference-helper.h"
#include "ns3/nist-error-rate-model.h"
#include "ns3/constant-position-mobility-model.h"
#include "ns3/simple-frame-capture-model.h"
@@ -252,10 +253,18 @@ InterferenceExperiment::Run (struct InterferenceExperiment::Input input)
rx->CreateWifiSpectrumPhyInterface (devRx);
rx->SetDevice (devRx);
Ptr<ErrorRateModel> error = CreateObject<NistErrorRateModel> ();
m_txA->SetErrorRateModel (error);
m_txB->SetErrorRateModel (error);
rx->SetErrorRateModel (error);
Ptr<InterferenceHelper> interferenceTxA = CreateObject<InterferenceHelper> ();
m_txA->SetInterferenceHelper (interferenceTxA);
Ptr<ErrorRateModel> errorTxA = CreateObject<NistErrorRateModel> ();
m_txA->SetErrorRateModel (errorTxA);
Ptr<InterferenceHelper> interferenceTxB = CreateObject<InterferenceHelper> ();
m_txB->SetInterferenceHelper (interferenceTxB);
Ptr<ErrorRateModel> errorTxB = CreateObject<NistErrorRateModel> ();
m_txB->SetErrorRateModel (errorTxB);
Ptr<InterferenceHelper> interferenceRx = CreateObject<InterferenceHelper> ();
rx->SetInterferenceHelper (interferenceRx);
Ptr<ErrorRateModel> errorRx = CreateObject<NistErrorRateModel> ();
rx->SetErrorRateModel (errorRx);
m_txA->SetChannel (channel);
m_txB->SetChannel (channel);
rx->SetChannel (channel);

View File

@@ -22,6 +22,7 @@
#include "ns3/log.h"
#include "ns3/names.h"
#include "ns3/spectrum-wifi-phy.h"
#include "ns3/interference-helper.h"
#include "ns3/error-rate-model.h"
#include "ns3/frame-capture-model.h"
#include "ns3/preamble-detection-model.h"
@@ -37,6 +38,7 @@ SpectrumWifiPhyHelper::SpectrumWifiPhyHelper ()
: m_channel (0)
{
m_phy.SetTypeId ("ns3::SpectrumWifiPhy");
SetInterferenceHelper ("ns3::InterferenceHelper");
SetErrorRateModel ("ns3::TableBasedErrorRateModel");
}
@@ -58,6 +60,8 @@ SpectrumWifiPhyHelper::Create (Ptr<Node> node, Ptr<WifiNetDevice> device) const
{
Ptr<SpectrumWifiPhy> phy = m_phy.Create<SpectrumWifiPhy> ();
phy->CreateWifiSpectrumPhyInterface (device);
Ptr<InterferenceHelper> interference = m_interferenceHelper.Create<InterferenceHelper> ();
phy->SetInterferenceHelper (interference);
Ptr<ErrorRateModel> error = m_errorRateModel.Create<ErrorRateModel> ();
phy->SetErrorRateModel (error);
if (m_frameCaptureModel.IsTypeIdSet ())

View File

@@ -69,6 +69,16 @@ public:
*/
void Set (std::string name, const AttributeValue &v);
/**
* Helper function used to set the interference helper.
*
* \tparam Args \deduced Template type parameter pack for the sequence of name-value pairs.
* \param type the type of interference helper
* \param args A sequence of name-value pairs of the attributes to set.
*/
template <typename... Args>
void SetInterferenceHelper (std::string type, Args&&... args);
/**
* Helper function used to set the error rate model.
*
@@ -174,6 +184,7 @@ protected:
uint16_t staId = SU_STA_ID);
ObjectFactory m_phy; ///< PHY object
ObjectFactory m_interferenceHelper; ///< interference helper
ObjectFactory m_errorRateModel; ///< error rate model
ObjectFactory m_frameCaptureModel; ///< frame capture model
ObjectFactory m_preambleDetectionModel; ///< preamble detection model
@@ -416,6 +427,14 @@ protected:
namespace ns3 {
template <typename... Args>
void
WifiPhyHelper::SetInterferenceHelper (std::string type, Args&&... args)
{
m_interferenceHelper.SetTypeId (type);
m_interferenceHelper.Set (args...);
}
template <typename... Args>
void
WifiPhyHelper::SetErrorRateModel (std::string type, Args&&... args)

View File

@@ -23,6 +23,7 @@
#include "ns3/names.h"
#include "ns3/propagation-loss-model.h"
#include "ns3/propagation-delay-model.h"
#include "ns3/interference-helper.h"
#include "ns3/error-rate-model.h"
#include "ns3/frame-capture-model.h"
#include "ns3/preamble-detection-model.h"
@@ -128,6 +129,7 @@ YansWifiPhyHelper::YansWifiPhyHelper ()
: m_channel (0)
{
m_phy.SetTypeId ("ns3::YansWifiPhy");
SetInterferenceHelper ("ns3::InterferenceHelper");
SetErrorRateModel ("ns3::TableBasedErrorRateModel");
}
@@ -148,6 +150,8 @@ Ptr<WifiPhy>
YansWifiPhyHelper::Create (Ptr<Node> node, Ptr<WifiNetDevice> device) const
{
Ptr<YansWifiPhy> phy = m_phy.Create<YansWifiPhy> ();
Ptr<InterferenceHelper> interference = m_interferenceHelper.Create<InterferenceHelper> ();
phy->SetInterferenceHelper (interference);
Ptr<ErrorRateModel> error = m_errorRateModel.Create<ErrorRateModel> ();
phy->SetErrorRateModel (error);
if (m_frameCaptureModel.IsTypeIdSet ())

View File

@@ -326,7 +326,6 @@ WifiPhy::WifiPhy ()
m_timeLastPreambleDetected (Seconds (0))
{
NS_LOG_FUNCTION (this);
m_interference = CreateObject<InterferenceHelper> ();
m_random = CreateObject<UniformRandomVariable> ();
m_state = CreateObject<WifiPhyStateHelper> ();
}
@@ -353,6 +352,11 @@ WifiPhy::DoDispose (void)
m_wifiRadioEnergyModel = 0;
m_postReceptionErrorModel = 0;
m_supportedChannelWidthSet.clear ();
if (m_interference != nullptr)
{
m_interference->Dispose ();
}
m_interference = 0;
m_random = 0;
m_state = 0;
m_currentEvent = 0;
@@ -442,8 +446,11 @@ void
WifiPhy::SetRxNoiseFigure (double noiseFigureDb)
{
NS_LOG_FUNCTION (this << noiseFigureDb);
m_interference->SetNoiseFigure (DbToRatio (noiseFigureDb));
m_interference->SetNumberOfReceiveAntennas (GetNumberOfAntennas ());
if (m_interference)
{
m_interference->SetNoiseFigure (DbToRatio (noiseFigureDb));
}
m_noiseFigureDb = noiseFigureDb;
}
void
@@ -556,10 +563,18 @@ WifiPhy::GetMobility (void) const
}
void
WifiPhy::SetErrorRateModel (const Ptr<ErrorRateModel> rate)
WifiPhy::SetInterferenceHelper (const Ptr<InterferenceHelper> helper)
{
m_interference->SetErrorRateModel (rate);
m_interference->SetNumberOfReceiveAntennas (GetNumberOfAntennas ());
m_interference = helper;
m_interference->SetNoiseFigure (DbToRatio (m_noiseFigureDb));
m_interference->SetNumberOfReceiveAntennas (m_numberOfAntennas);
}
void
WifiPhy::SetErrorRateModel (const Ptr<ErrorRateModel> model)
{
NS_ASSERT (m_interference != nullptr);
m_interference->SetErrorRateModel (model);
}
void
@@ -1061,9 +1076,13 @@ WifiPhy::DoChannelSwitch (void)
void
WifiPhy::SetNumberOfAntennas (uint8_t antennas)
{
NS_LOG_FUNCTION (this << +antennas);
NS_ASSERT_MSG (antennas > 0 && antennas <= 4, "unsupported number of antennas");
m_numberOfAntennas = antennas;
m_interference->SetNumberOfReceiveAntennas (antennas);
if (m_interference)
{
m_interference->SetNumberOfReceiveAntennas (antennas);
}
}
uint8_t

View File

@@ -887,12 +887,19 @@ public:
*/
bool GetShortPhyPreambleSupported (void) const;
/**
* Sets the interference helper.
*
* \param helper the interference helper
*/
virtual void SetInterferenceHelper (const Ptr<InterferenceHelper> helper);
/**
* Sets the error rate model.
*
* \param rate the error rate model
* \param model the error rate model
*/
void SetErrorRateModel (const Ptr<ErrorRateModel> rate);
void SetErrorRateModel (const Ptr<ErrorRateModel> model);
/**
* Attach a receive ErrorModel to the WifiPhy.
*
@@ -1373,6 +1380,8 @@ private:
uint8_t m_txSpatialStreams; //!< Number of supported TX spatial streams
uint8_t m_rxSpatialStreams; //!< Number of supported RX spatial streams
double m_noiseFigureDb; //!< The noise figure in dB
Time m_channelSwitchDelay; //!< Time required to switch between channel
Ptr<WifiNetDevice> m_device; //!< Pointer to the device

View File

@@ -45,6 +45,12 @@ YansWifiPhy::GetTypeId (void)
YansWifiPhy::YansWifiPhy ()
{
NS_LOG_FUNCTION (this);
}
void
YansWifiPhy::SetInterferenceHelper (const Ptr<InterferenceHelper> helper)
{
WifiPhy::SetInterferenceHelper (helper);
//add dummy band for Yans
WifiSpectrumBand band;
band.first = 0;

View File

@@ -56,7 +56,7 @@ public:
YansWifiPhy ();
virtual ~YansWifiPhy ();
// Implementation of pure virtual method.
void SetInterferenceHelper (const Ptr<InterferenceHelper> helper) override;
void StartTx (Ptr<WifiPpdu> ppdu) override;
Ptr<Channel> GetChannel (void) const override;
uint16_t GetGuardBandwidth (uint16_t currentChannelWidth) const override;

View File

@@ -27,6 +27,7 @@
#include "ns3/simulator.h"
#include "ns3/test.h"
#include "ns3/frame-exchange-manager.h"
#include "ns3/interference-helper.h"
#include "ns3/wifi-default-protection-manager.h"
#include "ns3/wifi-default-ack-manager.h"
@@ -99,6 +100,8 @@ PowerRateAdaptationTest::ConfigureNode ()
* Create and configure phy layer.
*/
Ptr<YansWifiPhy> phy = CreateObject<YansWifiPhy> ();
Ptr<InterferenceHelper> interferenceHelper = CreateObject<InterferenceHelper> ();
phy->SetInterferenceHelper (interferenceHelper);
phy->SetChannel (channel);
phy->SetDevice (dev);
phy->SetMobility (mobility);

View File

@@ -22,6 +22,7 @@
#include "ns3/wifi-spectrum-value-helper.h"
#include "ns3/multi-model-spectrum-channel.h"
#include "ns3/spectrum-wifi-phy.h"
#include "ns3/interference-helper.h"
#include "ns3/nist-error-rate-model.h"
#include "ns3/wifi-mac-header.h"
#include "ns3/wifi-spectrum-signal-parameters.h"
@@ -177,6 +178,8 @@ SpectrumWifiPhyBasicTest::DoSetup (void)
m_phy = CreateObject<SpectrumWifiPhy> ();
m_phy->SetOperatingChannel (WifiPhy::ChannelTuple {CHANNEL_NUMBER, 0, WIFI_PHY_BAND_5GHZ, 0});
m_phy->ConfigureStandard (WIFI_STANDARD_80211n);
Ptr<InterferenceHelper> interferenceHelper = CreateObject<InterferenceHelper> ();
m_phy->SetInterferenceHelper (interferenceHelper);
Ptr<ErrorRateModel> error = CreateObject<NistErrorRateModel> ();
m_phy->SetErrorRateModel (error);
m_phy->SetReceiveOkCallback (MakeCallback (&SpectrumWifiPhyBasicTest::SpectrumWifiPhyRxSuccess, this));
@@ -471,8 +474,10 @@ SpectrumWifiPhyFilterTest::DoSetup (void)
m_txPhy = CreateObject<ExtSpectrumWifiPhy> ();
m_txPhy->CreateWifiSpectrumPhyInterface (txDev);
m_txPhy->ConfigureStandard (WIFI_STANDARD_80211ax);
Ptr<ErrorRateModel> error = CreateObject<NistErrorRateModel> ();
m_txPhy->SetErrorRateModel (error);
Ptr<InterferenceHelper> txInterferenceHelper = CreateObject<InterferenceHelper> ();
m_txPhy->SetInterferenceHelper (txInterferenceHelper);
Ptr<ErrorRateModel> txErrorModel = CreateObject<NistErrorRateModel> ();
m_txPhy->SetErrorRateModel (txErrorModel);
m_txPhy->SetDevice (txDev);
m_txPhy->SetChannel (spectrumChannel);
Ptr<ConstantPositionMobilityModel> apMobility = CreateObject<ConstantPositionMobilityModel> ();
@@ -486,7 +491,10 @@ SpectrumWifiPhyFilterTest::DoSetup (void)
m_rxPhy = CreateObject<ExtSpectrumWifiPhy> ();
m_rxPhy->CreateWifiSpectrumPhyInterface (rxDev);
m_rxPhy->ConfigureStandard (WIFI_STANDARD_80211ax);
m_rxPhy->SetErrorRateModel (error);
Ptr<InterferenceHelper> rxInterferenceHelper = CreateObject<InterferenceHelper> ();
m_rxPhy->SetInterferenceHelper (rxInterferenceHelper);
Ptr<ErrorRateModel> rxErrorModel = CreateObject<NistErrorRateModel> ();
m_rxPhy->SetErrorRateModel (rxErrorModel);
m_rxPhy->SetChannel (spectrumChannel);
Ptr<ConstantPositionMobilityModel> sta1Mobility = CreateObject<ConstantPositionMobilityModel> ();
m_rxPhy->SetMobility (sta1Mobility);

View File

@@ -25,6 +25,7 @@
#include "ns3/wifi-psdu.h"
#include "ns3/sta-wifi-mac.h"
#include "ns3/yans-wifi-phy.h"
#include "ns3/interference-helper.h"
#include "ns3/mac-tx-middle.h"
#include "ns3/ht-frame-exchange-manager.h"
#include "ns3/msdu-aggregator.h"
@@ -102,6 +103,8 @@ AmpduAggregationTest::DoRun (void)
* Create and configure phy layer.
*/
m_phy = CreateObject<YansWifiPhy> ();
Ptr<InterferenceHelper> interferenceHelper = CreateObject<InterferenceHelper> ();
m_phy->SetInterferenceHelper (interferenceHelper);
m_phy->SetDevice (m_device);
m_phy->ConfigureStandard (WIFI_STANDARD_80211n);
m_device->SetPhy (m_phy);
@@ -351,6 +354,8 @@ TwoLevelAggregationTest::DoRun (void)
* Create and configure phy layer.
*/
m_phy = CreateObject<YansWifiPhy> ();
Ptr<InterferenceHelper> interferenceHelper = CreateObject<InterferenceHelper> ();
m_phy->SetInterferenceHelper (interferenceHelper);
m_phy->SetDevice (m_device);
m_phy->ConfigureStandard (WIFI_STANDARD_80211n);
m_device->SetPhy (m_phy);
@@ -585,6 +590,8 @@ HeAggregationTest::DoRunSubTest (uint16_t bufferSize)
* Create and configure phy layer.
*/
m_phy = CreateObject<YansWifiPhy> ();
Ptr<InterferenceHelper> interferenceHelper = CreateObject<InterferenceHelper> ();
m_phy->SetInterferenceHelper (interferenceHelper);
m_phy->SetDevice (m_device);
m_phy->ConfigureStandard (WIFI_STANDARD_80211ax);
m_device->SetPhy (m_phy);

View File

@@ -659,8 +659,10 @@ TestDlOfdmaPhyTransmission::DoSetup (void)
m_phyAp = CreateObject<SpectrumWifiPhy> ();
m_phyAp->CreateWifiSpectrumPhyInterface (apDev);
m_phyAp->ConfigureStandard (WIFI_STANDARD_80211ax);
Ptr<ErrorRateModel> error = CreateObject<NistErrorRateModel> ();
m_phyAp->SetErrorRateModel (error);
Ptr<InterferenceHelper> apInterferenceHelper = CreateObject<InterferenceHelper> ();
m_phyAp->SetInterferenceHelper (apInterferenceHelper);
Ptr<ErrorRateModel> apErrorModel = CreateObject<NistErrorRateModel> ();
m_phyAp->SetErrorRateModel (apErrorModel);
m_phyAp->SetDevice (apDev);
m_phyAp->SetChannel (spectrumChannel);
Ptr<ConstantPositionMobilityModel> apMobility = CreateObject<ConstantPositionMobilityModel> ();
@@ -674,7 +676,10 @@ TestDlOfdmaPhyTransmission::DoSetup (void)
m_phySta1 = CreateObject<OfdmaSpectrumWifiPhy> (1);
m_phySta1->CreateWifiSpectrumPhyInterface (sta1Dev);
m_phySta1->ConfigureStandard (WIFI_STANDARD_80211ax);
m_phySta1->SetErrorRateModel (error);
Ptr<InterferenceHelper> sta1InterferenceHelper = CreateObject<InterferenceHelper> ();
m_phySta1->SetInterferenceHelper (sta1InterferenceHelper);
Ptr<ErrorRateModel> sta1ErrorModel = CreateObject<NistErrorRateModel> ();
m_phySta1->SetErrorRateModel (sta1ErrorModel);
m_phySta1->SetDevice (sta1Dev);
m_phySta1->SetChannel (spectrumChannel);
m_phySta1->SetReceiveOkCallback (MakeCallback (&TestDlOfdmaPhyTransmission::RxSuccessSta1, this));
@@ -690,7 +695,10 @@ TestDlOfdmaPhyTransmission::DoSetup (void)
m_phySta2 = CreateObject<OfdmaSpectrumWifiPhy> (2);
m_phySta2->CreateWifiSpectrumPhyInterface (sta2Dev);
m_phySta2->ConfigureStandard (WIFI_STANDARD_80211ax);
m_phySta2->SetErrorRateModel (error);
Ptr<InterferenceHelper> sta2InterferenceHelper = CreateObject<InterferenceHelper> ();
m_phySta2->SetInterferenceHelper (sta2InterferenceHelper);
Ptr<ErrorRateModel> sta2ErrorModel = CreateObject<NistErrorRateModel> ();
m_phySta2->SetErrorRateModel (sta2ErrorModel);
m_phySta2->SetDevice (sta2Dev);
m_phySta2->SetChannel (spectrumChannel);
m_phySta2->SetReceiveOkCallback (MakeCallback (&TestDlOfdmaPhyTransmission::RxSuccessSta2, this));
@@ -706,7 +714,10 @@ TestDlOfdmaPhyTransmission::DoSetup (void)
m_phySta3 = CreateObject<OfdmaSpectrumWifiPhy> (3);
m_phySta3->CreateWifiSpectrumPhyInterface (sta3Dev);
m_phySta3->ConfigureStandard (WIFI_STANDARD_80211ax);
m_phySta3->SetErrorRateModel (error);
Ptr<InterferenceHelper> sta3InterferenceHelper = CreateObject<InterferenceHelper> ();
m_phySta3->SetInterferenceHelper (sta3InterferenceHelper);
Ptr<ErrorRateModel> sta3ErrorModel = CreateObject<NistErrorRateModel> ();
m_phySta3->SetErrorRateModel (sta3ErrorModel);
m_phySta3->SetDevice (sta3Dev);
m_phySta3->SetChannel (spectrumChannel);
m_phySta3->SetReceiveOkCallback (MakeCallback (&TestDlOfdmaPhyTransmission::RxSuccessSta3, this));
@@ -1045,8 +1056,10 @@ TestUlOfdmaPpduUid::DoSetup (void)
m_phyAp = CreateObject<OfdmaSpectrumWifiPhy> (0);
m_phyAp->CreateWifiSpectrumPhyInterface (apDev);
m_phyAp->ConfigureStandard (WIFI_STANDARD_80211ax);
Ptr<ErrorRateModel> error = CreateObject<NistErrorRateModel> ();
m_phyAp->SetErrorRateModel (error);
Ptr<InterferenceHelper> apInterferenceHelper = CreateObject<InterferenceHelper> ();
m_phyAp->SetInterferenceHelper (apInterferenceHelper);
Ptr<ErrorRateModel> apErrorModel = CreateObject<NistErrorRateModel> ();
m_phyAp->SetErrorRateModel (apErrorModel);
auto channelNum = std::get<0> (*WifiPhyOperatingChannel::FindFirst (0, DEFAULT_FREQUENCY,
DEFAULT_CHANNEL_WIDTH,
WIFI_STANDARD_80211ax,
@@ -1067,7 +1080,10 @@ TestUlOfdmaPpduUid::DoSetup (void)
m_phySta1 = CreateObject<OfdmaSpectrumWifiPhy> (1);
m_phySta1->CreateWifiSpectrumPhyInterface (sta1Dev);
m_phySta1->ConfigureStandard (WIFI_STANDARD_80211ax);
m_phySta1->SetErrorRateModel (error);
Ptr<InterferenceHelper> sta1InterferenceHelper = CreateObject<InterferenceHelper> ();
m_phySta1->SetInterferenceHelper (sta1InterferenceHelper);
Ptr<ErrorRateModel> sta1ErrorModel = CreateObject<NistErrorRateModel> ();
m_phySta1->SetErrorRateModel (sta1ErrorModel);
m_phySta1->SetOperatingChannel (WifiPhy::ChannelTuple {channelNum, DEFAULT_CHANNEL_WIDTH,
(int)(WIFI_PHY_BAND_5GHZ), 0});
m_phySta1->SetDevice (sta1Dev);
@@ -1084,7 +1100,10 @@ TestUlOfdmaPpduUid::DoSetup (void)
m_phySta2 = CreateObject<OfdmaSpectrumWifiPhy> (2);
m_phySta2->CreateWifiSpectrumPhyInterface (sta2Dev);
m_phySta2->ConfigureStandard (WIFI_STANDARD_80211ax);
m_phySta2->SetErrorRateModel (error);
Ptr<InterferenceHelper> sta2InterferenceHelper = CreateObject<InterferenceHelper> ();
m_phySta2->SetInterferenceHelper (sta2InterferenceHelper);
Ptr<ErrorRateModel> sta2ErrorModel = CreateObject<NistErrorRateModel> ();
m_phySta2->SetErrorRateModel (sta2ErrorModel);
m_phySta2->SetOperatingChannel (WifiPhy::ChannelTuple {channelNum, DEFAULT_CHANNEL_WIDTH,
(int)(WIFI_PHY_BAND_5GHZ), 0});
m_phySta2->SetDevice (sta2Dev);
@@ -1524,10 +1543,12 @@ TestMultipleHeTbPreambles::DoSetup (void)
Ptr<WifiNetDevice> dev = CreateObject<WifiNetDevice> ();
m_phy = CreateObject<OfdmaSpectrumWifiPhy> (0);
m_phy->ConfigureStandard (WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> interferenceHelper = CreateObject<InterferenceHelper> ();
Ptr<ErrorRateModel> error = CreateObject<NistErrorRateModel> ();
Ptr<ApWifiMac> mac = CreateObject<ApWifiMac> ();
mac->SetAttribute ("BeaconGeneration", BooleanValue (false));
dev->SetMac (mac);
m_phy->SetInterferenceHelper (interferenceHelper);
m_phy->SetErrorRateModel (error);
m_phy->SetOperatingChannel (WifiPhy::ChannelTuple {DEFAULT_CHANNEL_NUMBER, DEFAULT_CHANNEL_WIDTH,
(int)(WIFI_PHY_BAND_5GHZ), 0});
@@ -2242,8 +2263,10 @@ TestUlOfdmaPhyTransmission::DoSetup (void)
m_phyAp->ConfigureStandard (WIFI_STANDARD_80211ax);
Ptr<HeConfiguration> heConfiguration = CreateObject<HeConfiguration> ();
apDev->SetHeConfiguration (heConfiguration);
Ptr<ErrorRateModel> error = CreateObject<NistErrorRateModel> ();
m_phyAp->SetErrorRateModel (error);
Ptr<InterferenceHelper> apInterferenceHelper = CreateObject<InterferenceHelper> ();
m_phyAp->SetInterferenceHelper (apInterferenceHelper);
Ptr<ErrorRateModel> apErrorModel = CreateObject<NistErrorRateModel> ();
m_phyAp->SetErrorRateModel (apErrorModel);
m_phyAp->SetDevice (apDev);
m_phyAp->SetChannel (spectrumChannel);
m_phyAp->SetReceiveOkCallback (MakeCallback (&TestUlOfdmaPhyTransmission::RxSuccess, this));
@@ -2260,7 +2283,10 @@ TestUlOfdmaPhyTransmission::DoSetup (void)
m_phySta1 = CreateObject<OfdmaSpectrumWifiPhy> (1);
m_phySta1->CreateWifiSpectrumPhyInterface (sta1Dev);
m_phySta1->ConfigureStandard (WIFI_STANDARD_80211ax);
m_phySta1->SetErrorRateModel (error);
Ptr<InterferenceHelper> sta1InterferenceHelper = CreateObject<InterferenceHelper> ();
m_phySta1->SetInterferenceHelper (sta1InterferenceHelper);
Ptr<ErrorRateModel> sta1ErrorModel = CreateObject<NistErrorRateModel> ();
m_phySta1->SetErrorRateModel (sta1ErrorModel);
m_phySta1->SetDevice (sta1Dev);
m_phySta1->SetChannel (spectrumChannel);
m_phySta1->SetPreambleDetectionModel (preambleDetectionModel);
@@ -2275,7 +2301,10 @@ TestUlOfdmaPhyTransmission::DoSetup (void)
m_phySta2 = CreateObject<OfdmaSpectrumWifiPhy> (2);
m_phySta2->CreateWifiSpectrumPhyInterface (sta2Dev);
m_phySta2->ConfigureStandard (WIFI_STANDARD_80211ax);
m_phySta2->SetErrorRateModel (error);
Ptr<InterferenceHelper> sta2InterferenceHelper = CreateObject<InterferenceHelper> ();
m_phySta2->SetInterferenceHelper (sta2InterferenceHelper);
Ptr<ErrorRateModel> sta2ErrorModel = CreateObject<NistErrorRateModel> ();
m_phySta2->SetErrorRateModel (sta2ErrorModel);
m_phySta2->SetDevice (sta2Dev);
m_phySta2->SetChannel (spectrumChannel);
m_phySta2->SetPreambleDetectionModel (preambleDetectionModel);
@@ -2290,7 +2319,10 @@ TestUlOfdmaPhyTransmission::DoSetup (void)
m_phySta3 = CreateObject<OfdmaSpectrumWifiPhy> (3);
m_phySta3->CreateWifiSpectrumPhyInterface (sta3Dev);
m_phySta3->ConfigureStandard (WIFI_STANDARD_80211ax);
m_phySta3->SetErrorRateModel (error);
Ptr<InterferenceHelper> sta3InterferenceHelper = CreateObject<InterferenceHelper> ();
m_phySta3->SetInterferenceHelper (sta3InterferenceHelper);
Ptr<ErrorRateModel> sta3ErrorModel = CreateObject<NistErrorRateModel> ();
m_phySta3->SetErrorRateModel (sta3ErrorModel);
m_phySta3->SetDevice (sta3Dev);
m_phySta3->SetChannel (spectrumChannel);
m_phySta3->SetPreambleDetectionModel (preambleDetectionModel);
@@ -3127,8 +3159,10 @@ TestPhyPaddingExclusion::DoSetup (void)
m_phyAp->ConfigureStandard (WIFI_STANDARD_80211ax);
Ptr<HeConfiguration> heConfiguration = CreateObject<HeConfiguration> ();
apDev->SetHeConfiguration (heConfiguration);
Ptr<ErrorRateModel> error = CreateObject<NistErrorRateModel> ();
m_phyAp->SetErrorRateModel (error);
Ptr<InterferenceHelper> apInterferenceHelper = CreateObject<InterferenceHelper> ();
m_phyAp->SetInterferenceHelper (apInterferenceHelper);
Ptr<ErrorRateModel> apErrorModel = CreateObject<NistErrorRateModel> ();
m_phyAp->SetErrorRateModel (apErrorModel);
m_phyAp->SetDevice (apDev);
m_phyAp->SetChannel (spectrumChannel);
m_phyAp->AssignStreams (streamNumber);
@@ -3152,7 +3186,10 @@ TestPhyPaddingExclusion::DoSetup (void)
m_phySta1 = CreateObject<OfdmaSpectrumWifiPhy> (1);
m_phySta1->CreateWifiSpectrumPhyInterface (sta1Dev);
m_phySta1->ConfigureStandard (WIFI_STANDARD_80211ax);
m_phySta1->SetErrorRateModel (error);
Ptr<InterferenceHelper> sta1InterferenceHelper = CreateObject<InterferenceHelper> ();
m_phySta1->SetInterferenceHelper (sta1InterferenceHelper);
Ptr<ErrorRateModel> sta1ErrorModel = CreateObject<NistErrorRateModel> ();
m_phySta1->SetErrorRateModel (sta1ErrorModel);
m_phySta1->SetDevice (sta1Dev);
m_phySta1->SetChannel (spectrumChannel);
m_phySta1->AssignStreams (streamNumber);
@@ -3169,7 +3206,10 @@ TestPhyPaddingExclusion::DoSetup (void)
m_phySta2 = CreateObject<OfdmaSpectrumWifiPhy> (2);
m_phySta2->CreateWifiSpectrumPhyInterface (sta2Dev);
m_phySta2->ConfigureStandard (WIFI_STANDARD_80211ax);
m_phySta2->SetErrorRateModel (error);
Ptr<InterferenceHelper> sta2InterferenceHelper = CreateObject<InterferenceHelper> ();
m_phySta2->SetInterferenceHelper (sta2InterferenceHelper);
Ptr<ErrorRateModel> sta2ErrorModel = CreateObject<NistErrorRateModel> ();
m_phySta2->SetErrorRateModel (sta2ErrorModel);
m_phySta2->SetDevice (sta2Dev);
m_phySta2->SetChannel (spectrumChannel);
m_phySta2->AssignStreams (streamNumber);

View File

@@ -36,6 +36,7 @@
#include "ns3/wifi-net-device.h"
#include "ns3/wifi-spectrum-value-helper.h"
#include "ns3/spectrum-wifi-phy.h"
#include "ns3/interference-helper.h"
#include "ns3/nist-error-rate-model.h"
#include "ns3/wifi-mac-header.h"
#include "ns3/ampdu-tag.h"
@@ -205,6 +206,8 @@ TestThresholdPreambleDetectionWithoutFrameCapture::DoSetup (void)
{
m_phy = CreateObject<SpectrumWifiPhy> ();
m_phy->ConfigureStandard (WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> interferenceHelper = CreateObject<InterferenceHelper> ();
m_phy->SetInterferenceHelper (interferenceHelper);
Ptr<ErrorRateModel> error = CreateObject<NistErrorRateModel> ();
m_phy->SetErrorRateModel (error);
m_phy->SetOperatingChannel (WifiPhy::ChannelTuple {CHANNEL_NUMBER, 0, WIFI_PHY_BAND_5GHZ, 0});
@@ -569,6 +572,8 @@ TestThresholdPreambleDetectionWithFrameCapture::DoSetup (void)
{
m_phy = CreateObject<SpectrumWifiPhy> ();
m_phy->ConfigureStandard (WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> interferenceHelper = CreateObject<InterferenceHelper> ();
m_phy->SetInterferenceHelper (interferenceHelper);
Ptr<ErrorRateModel> error = CreateObject<NistErrorRateModel> ();
m_phy->SetErrorRateModel (error);
m_phy->SetOperatingChannel (WifiPhy::ChannelTuple {CHANNEL_NUMBER, 0, WIFI_PHY_BAND_5GHZ, 0});
@@ -1107,6 +1112,8 @@ TestSimpleFrameCaptureModel::DoSetup (void)
{
m_phy = CreateObject<SpectrumWifiPhy> ();
m_phy->ConfigureStandard (WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> interferenceHelper = CreateObject<InterferenceHelper> ();
m_phy->SetInterferenceHelper (interferenceHelper);
Ptr<ErrorRateModel> error = CreateObject<NistErrorRateModel> ();
m_phy->SetErrorRateModel (error);
m_phy->SetOperatingChannel (WifiPhy::ChannelTuple {CHANNEL_NUMBER, 0, WIFI_PHY_BAND_5GHZ, 0});
@@ -1280,6 +1287,8 @@ TestPhyHeadersReception::DoSetup (void)
{
m_phy = CreateObject<SpectrumWifiPhy> ();
m_phy->ConfigureStandard (WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> interferenceHelper = CreateObject<InterferenceHelper> ();
m_phy->SetInterferenceHelper (interferenceHelper);
Ptr<ErrorRateModel> error = CreateObject<NistErrorRateModel> ();
m_phy->SetErrorRateModel (error);
m_phy->SetOperatingChannel (WifiPhy::ChannelTuple {CHANNEL_NUMBER, 0, WIFI_PHY_BAND_5GHZ, 0});
@@ -1777,6 +1786,8 @@ TestAmpduReception::DoSetup (void)
{
m_phy = CreateObject<SpectrumWifiPhy> ();
m_phy->ConfigureStandard (WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> interferenceHelper = CreateObject<InterferenceHelper> ();
m_phy->SetInterferenceHelper (interferenceHelper);
Ptr<ErrorRateModel> error = CreateObject<NistErrorRateModel> ();
m_phy->SetErrorRateModel (error);
m_phy->SetOperatingChannel (WifiPhy::ChannelTuple {CHANNEL_NUMBER, 0, WIFI_PHY_BAND_5GHZ, 0});

View File

@@ -23,6 +23,7 @@
#include "ns3/spectrum-wifi-helper.h"
#include "ns3/wifi-spectrum-value-helper.h"
#include "ns3/spectrum-wifi-phy.h"
#include "ns3/interference-helper.h"
#include "ns3/nist-error-rate-model.h"
#include "ns3/wifi-mac-header.h"
#include "ns3/wifi-spectrum-signal-parameters.h"
@@ -231,6 +232,8 @@ WifiPhyThresholdsTest::DoSetup (void)
{
m_phy = CreateObject<SpectrumWifiPhy> ();
m_phy->ConfigureStandard (WIFI_STANDARD_80211ax);
Ptr<InterferenceHelper> interferenceHelper = CreateObject<InterferenceHelper> ();
m_phy->SetInterferenceHelper (interferenceHelper);
Ptr<ErrorRateModel> error = CreateObject<NistErrorRateModel> ();
m_phy->SetErrorRateModel (error);
m_phy->SetOperatingChannel (WifiPhy::ChannelTuple {CHANNEL_NUMBER, 0, WIFI_PHY_BAND_5GHZ, 0});

View File

@@ -28,6 +28,7 @@
#include "ns3/adhoc-wifi-mac.h"
#include "ns3/ap-wifi-mac.h"
#include "ns3/propagation-loss-model.h"
#include "ns3/interference-helper.h"
#include "ns3/yans-error-rate-model.h"
#include "ns3/constant-position-mobility-model.h"
#include "ns3/test.h"
@@ -154,6 +155,8 @@ WifiTest::CreateOne (Vector pos, Ptr<YansWifiChannel> channel)
Ptr<ConstantPositionMobilityModel> mobility = CreateObject<ConstantPositionMobilityModel> ();
Ptr<YansWifiPhy> phy = CreateObject<YansWifiPhy> ();
Ptr<InterferenceHelper> interferenceHelper = CreateObject<InterferenceHelper> ();
phy->SetInterferenceHelper (interferenceHelper);
Ptr<ErrorRateModel> error = CreateObject<YansErrorRateModel> ();
phy->SetErrorRateModel (error);
phy->SetChannel (channel);
@@ -330,6 +333,8 @@ InterferenceHelperSequenceTest::CreateOne (Vector pos, Ptr<YansWifiChannel> chan
Ptr<ConstantPositionMobilityModel> mobility = CreateObject<ConstantPositionMobilityModel> ();
Ptr<YansWifiPhy> phy = CreateObject<YansWifiPhy> ();
Ptr<InterferenceHelper> interferenceHelper = CreateObject<InterferenceHelper> ();
phy->SetInterferenceHelper (interferenceHelper);
Ptr<ErrorRateModel> error = CreateObject<YansErrorRateModel> ();
phy->SetErrorRateModel (error);
phy->SetChannel (channel);
@@ -538,6 +543,8 @@ DcfImmediateAccessBroadcastTestCase::DoRun (void)
Ptr<ConstantPositionMobilityModel> txMobility = CreateObject<ConstantPositionMobilityModel> ();
Ptr<YansWifiPhy> txPhy = CreateObject<YansWifiPhy> ();
Ptr<InterferenceHelper> txInterferenceHelper = CreateObject<InterferenceHelper> ();
txPhy->SetInterferenceHelper (txInterferenceHelper);
Ptr<ErrorRateModel> txError = CreateObject<YansErrorRateModel> ();
txPhy->SetErrorRateModel (txError);
txPhy->SetChannel (channel);
@@ -1765,9 +1772,11 @@ Bug2831TestCase::DoRun (void)
apMobility->SetPosition (Vector (0.0, 0.0, 0.0));
apNode->AggregateObject (apMobility);
Ptr<ErrorRateModel> error = CreateObject<YansErrorRateModel> ();
m_apPhy = CreateObject<YansWifiPhy> ();
m_apPhy->SetErrorRateModel (error);
Ptr<InterferenceHelper> apInterferenceHelper = CreateObject<InterferenceHelper> ();
m_apPhy->SetInterferenceHelper (apInterferenceHelper);
Ptr<ErrorRateModel> apErrorModel = CreateObject<YansErrorRateModel> ();
m_apPhy->SetErrorRateModel (apErrorModel);
m_apPhy->SetChannel (channel);
m_apPhy->SetMobility (apMobility);
m_apPhy->SetDevice (apDev);
@@ -1779,7 +1788,10 @@ Bug2831TestCase::DoRun (void)
staNode->AggregateObject (staMobility);
m_staPhy = CreateObject<YansWifiPhy> ();
m_staPhy->SetErrorRateModel (error);
Ptr<InterferenceHelper> staInterferenceHelper = CreateObject<InterferenceHelper> ();
m_staPhy->SetInterferenceHelper (staInterferenceHelper);
Ptr<ErrorRateModel> staErrorModel = CreateObject<YansErrorRateModel> ();
m_staPhy->SetErrorRateModel (staErrorModel);
m_staPhy->SetChannel (channel);
m_staPhy->SetMobility (staMobility);
m_staPhy->SetDevice (apDev);