24 #include "ns3/uinteger.h"
25 #include "ns3/double.h"
26 #include "ns3/string.h"
27 #include "ns3/pointer.h"
28 #include "ns3/config.h"
30 #include "ns3/rng-seed-manager.h"
31 #include "ns3/mobility-helper.h"
32 #include "ns3/wifi-net-device.h"
33 #include "ns3/spectrum-wifi-helper.h"
34 #include "ns3/multi-model-spectrum-channel.h"
35 #include "ns3/constant-obss-pd-algorithm.h"
36 #include "ns3/he-configuration.h"
37 #include "ns3/wifi-utils.h"
46 std::string sub = context.substr (10);
47 uint32_t pos = sub.find (
"/Device");
48 uint32_t nodeId = atoi (sub.substr (0, pos).c_str ());
84 void DoRun (
void)
override;
110 void SetExpectedTxPower (
double txPowerDbm);
115 void SetupSimulation ();
120 void CheckResults ();
125 void ResetResults ();
130 void ClearDropReasons ();
149 void CheckPhyDropReasons (
Ptr<WifiNetDevice> device, std::vector<WifiPhyRxfailureReason> expectedDropReasons);
157 void NotifyPhyTxBegin (std::string context,
Ptr<const Packet> p,
double txPowerW);
207 :
TestCase (
"InterBssConstantObssPd"),
208 m_numSta1PacketsSent (0),
209 m_numSta2PacketsSent (0),
210 m_numAp1PacketsSent (0),
211 m_numAp2PacketsSent (0),
212 m_numSta1PacketsReceived (0),
213 m_numSta2PacketsReceived (0),
214 m_numAp1PacketsReceived (0),
215 m_numAp2PacketsReceived (0),
216 m_payloadSize1 (1000),
217 m_payloadSize2 (1500),
218 m_payloadSize3 (2000),
220 m_obssPdLevelDbm (-72),
221 m_obssRxPowerDbm (-82),
222 m_expectedTxPowerDbm (15),
238 positionAlloc->
Add (Vector (0.0, 0.0, 0.0));
239 positionAlloc->
Add (Vector (d1 + d2, 0.0, 0.0));
240 positionAlloc->
Add (Vector (d1 + d2 + d3 + d4, 0.0, 0.0));
241 positionAlloc->
Add (Vector (d1, 0.0, 0.0));
242 positionAlloc->
Add (Vector (d1 + d2 + d3, 0.0, 0.0));
243 positionAlloc->
Add (Vector (d1 + d2 + d3 + d4 + d5, 0.0, 0.0));
244 return positionAlloc;
259 std::vector<WifiPhyRxfailureReason> dropReasons;
374 Simulator::Stop (
Seconds (2.6));
507 phy->GetAttribute (
"State", ptr);
515 std::vector<WifiPhyRxfailureReason> expectedDropReasons)
517 std::vector<WifiPhyRxfailureReason> currentDropReasons;
536 NS_TEST_ASSERT_MSG_EQ (currentDropReasons.size (), expectedDropReasons.size (),
"Number of drop reasons " << currentDropReasons.size () <<
" does not match expected one " << expectedDropReasons.size () <<
" at " <<
Simulator::Now ());
537 for (std::size_t i = 0; i < currentDropReasons.size (); ++i)
539 NS_TEST_ASSERT_MSG_EQ (currentDropReasons[i], expectedDropReasons[i],
"Drop reason " << i <<
": " << currentDropReasons[i] <<
" does not match expected reason " << expectedDropReasons[i] <<
" at " <<
Simulator::Now ());
546 RngSeedManager::SetSeed (1);
547 RngSeedManager::SetRun (1);
548 int64_t streamNumber = 2;
564 phy.DisablePreambleDetectionModel ();
565 phy.SetFrameCaptureModel (
"ns3::SimpleFrameCaptureModel");
567 channel->SetPropagationDelayModel (CreateObject<ConstantSpeedPropagationDelayModel> ());
568 channel->AddPropagationLossModel (lossModel);
576 wifi.SetRemoteStationManager (
"ns3::ConstantRateWifiManager",
580 wifi.SetObssPdAlgorithm (
"ns3::ConstantObssPdAlgorithm",
585 mac.SetType (
"ns3::StaWifiMac",
592 mac.SetType (
"ns3::ApWifiMac",
619 mobility.SetPositionAllocator (positionAlloc);
620 mobility.SetMobilityModel (
"ns3::ConstantPositionMobilityModel");
635 Simulator::Destroy ();