A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
WifiPhyCcaIndicationTest Class Reference

Wifi Phy Threshold Test base class. More...

+ Inheritance diagram for WifiPhyCcaIndicationTest:
+ Collaboration diagram for WifiPhyCcaIndicationTest:

Classes

struct  CcaCheckPoint
 structure that holds information to perform CCA check More...
 
struct  StateCheckPoint
 structure that holds information to perform PHY state check More...
 
struct  TxPpduInfo
 structure that holds information to generate PPDUs More...
 
struct  TxSignalInfo
 structure that holds information to generate signals More...
 

Public Member Functions

 WifiPhyCcaIndicationTest ()
 
- Public Member Functions inherited from ns3::TestCase
 TestCase (const TestCase &)=delete
 
virtual ~TestCase ()
 Destructor.
 
std::string GetName () const
 
TestCaseoperator= (const TestCase &)=delete
 

Private Member Functions

void CheckLastCcaBusyNotification (Time expectedEndTime, WifiChannelListType expectedChannelType, const std::vector< Time > &expectedPer20MhzDurations)
 Check the last CCA-BUSY notification.
 
void CheckPhyState (WifiPhyState expectedState)
 Check the PHY state.
 
void DoCheckPhyState (WifiPhyState expectedState)
 Check the PHY state.
 
void DoRun () override
 Implementation to actually run this TestCase.
 
void DoSetup () override
 Implementation to do any local setup required for this TestCase.
 
void DoTeardown () override
 Implementation to do any local setup required for this TestCase.
 
void LogScenario (const std::string &log) const
 Log scenario description.
 
void Reset ()
 Reset function.
 
void RunOne ()
 Run one function.
 
void ScheduleTest (Time delay, const std::vector< TxSignalInfo > &generatedSignals, const std::vector< TxPpduInfo > &generatedPpdus, const std::vector< StateCheckPoint > &stateCheckpoints, const std::vector< CcaCheckPoint > &ccaCheckpoints)
 Schedule test to perform.
 
void SendHeSuPpdu (dBm_u txPower, MHz_u frequency, MHz_u bandwidth)
 Send an HE SU PPDU.
 
void StartSignal (Ptr< WaveformGenerator > signalGenerator, dBm_u txPower, MHz_u frequency, MHz_u bandwidth, Time duration)
 Start to generate a signal.
 
void StopSignal (Ptr< WaveformGenerator > signalGenerator)
 Stop to generate a signal.
 

Private Attributes

MHz_u m_channelWidth
 Operating channel width.
 
MHz_u m_frequency
 Operating frequency.
 
std::size_t m_numSignalGenerators
 The number of non-wifi signals generators needed for the test.
 
Ptr< SpectrumWifiPhym_rxPhy
 PHY object of the receiver.
 
std::shared_ptr< CcaTestPhyListenerm_rxPhyStateListener
 Listener for PHY state transitions.
 
std::vector< Ptr< WaveformGenerator > > m_signalGenerators
 Generators of non-wifi signals.
 
Ptr< SpectrumWifiPhym_txPhy
 PHY object of the transmitter.
 

Additional Inherited Members

- Public Types inherited from ns3::TestCase
enum class  Duration { QUICK = 1 , EXTENSIVE = 2 , TAKES_FOREVER = 3 }
 How long the test takes to execute. More...
 
- Static Public Attributes inherited from ns3::TestCase
static constexpr auto QUICK = Duration::QUICK
 Deprecated test duration simple enums.
 
static constexpr auto EXTENSIVE = Duration::EXTENSIVE
 
static constexpr auto TAKES_FOREVER = Duration::TAKES_FOREVER
 
- Protected Member Functions inherited from ns3::TestCase
 TestCase (std::string name)
 Constructor.
 
void AddTestCase (TestCase *testCase, Duration duration=Duration::QUICK)
 Add an individual child TestCase to this test suite.
 
TestCaseGetParent () const
 Get the parent of this TestCase.
 
bool IsStatusFailure () const
 Check if any tests failed.
 
bool IsStatusSuccess () const
 Check if all tests passed.
 
void SetDataDir (std::string directory)
 Set the data directory where reference trace files can be found.
 
void ReportTestFailure (std::string cond, std::string actual, std::string limit, std::string message, std::string file, int32_t line)
 Log the failure of this TestCase.
 
bool MustAssertOnFailure () const
 Check if this run should assert on failure.
 
bool MustContinueOnFailure () const
 Check if this run should continue on failure.
 
std::string CreateDataDirFilename (std::string filename)
 Construct the full path to a file in the data directory.
 
std::string CreateTempDirFilename (std::string filename)
 Construct the full path to a file in a temporary directory.
 

Detailed Description

Wifi Phy Threshold Test base class.

Definition at line 693 of file wifi-phy-cca-test.cc.

Constructor & Destructor Documentation

◆ WifiPhyCcaIndicationTest()

WifiPhyCcaIndicationTest::WifiPhyCcaIndicationTest ( )

Definition at line 837 of file wifi-phy-cca-test.cc.

Member Function Documentation

◆ CheckLastCcaBusyNotification()

void WifiPhyCcaIndicationTest::CheckLastCcaBusyNotification ( Time expectedEndTime,
WifiChannelListType expectedChannelType,
const std::vector< Time > & expectedPer20MhzDurations )
private

Check the last CCA-BUSY notification.

Parameters
expectedEndTimethe expected CCA-BUSY end time
expectedChannelTypethe expected channel type
expectedPer20MhzDurationsthe expected per-20 MHz CCA-BUSY durations

Definition at line 937 of file wifi-phy-cca-test.cc.

References CcaTestPhyListener::m_endCcaBusy, CcaTestPhyListener::m_lastCcaBusyChannelType, CcaTestPhyListener::m_lastPer20MhzCcaBusyDurations, m_rxPhyStateListener, ns3::Simulator::Now(), and NS_TEST_ASSERT_MSG_EQ.

Referenced by ScheduleTest().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CheckPhyState()

void WifiPhyCcaIndicationTest::CheckPhyState ( WifiPhyState expectedState)
private

Check the PHY state.

Parameters
expectedStatethe expected state of the PHY

Definition at line 915 of file wifi-phy-cca-test.cc.

References DoCheckPhyState(), and ns3::Simulator::ScheduleNow().

Referenced by ScheduleTest().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoCheckPhyState()

void WifiPhyCcaIndicationTest::DoCheckPhyState ( WifiPhyState expectedState)
private

Check the PHY state.

Parameters
expectedStatethe expected state of the PHY

Definition at line 923 of file wifi-phy-cca-test.cc.

References ns3::DynamicCast(), ns3::PointerValue::Get(), m_rxPhy, ns3::Simulator::Now(), and NS_TEST_ASSERT_MSG_EQ.

Referenced by CheckPhyState().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoRun()

void WifiPhyCcaIndicationTest::DoRun ( )
overrideprivatevirtual

Implementation to actually run this TestCase.

Subclasses should override this method to conduct their tests.

Implements ns3::TestCase.

Definition at line 2921 of file wifi-phy-cca-test.cc.

References ns3::Simulator::Destroy(), m_channelWidth, m_frequency, and RunOne().

+ Here is the call graph for this function:

◆ DoSetup()

void WifiPhyCcaIndicationTest::DoSetup ( )
overrideprivatevirtual

Implementation to do any local setup required for this TestCase.

Subclasses should override this method to perform any costly per-test setup before DoRun is invoked.

Reimplemented from ns3::TestCase.

Definition at line 1030 of file wifi-phy-cca-test.cc.

References ns3::CreateObject(), m_numSignalGenerators, m_rxPhy, m_rxPhyStateListener, m_signalGenerators, m_txPhy, ns3::Seconds(), and ns3::WIFI_STANDARD_80211ax.

+ Here is the call graph for this function:

◆ DoTeardown()

void WifiPhyCcaIndicationTest::DoTeardown ( )
overrideprivatevirtual

Implementation to do any local setup required for this TestCase.

Subclasses should override this method to perform any costly per-test teardown

Reimplemented from ns3::TestCase.

Definition at line 2943 of file wifi-phy-cca-test.cc.

References m_rxPhy, m_signalGenerators, and m_txPhy.

◆ LogScenario()

void WifiPhyCcaIndicationTest::LogScenario ( const std::string & log) const
private

Log scenario description.

Parameters
logthe scenario description to add to log

Definition at line 967 of file wifi-phy-cca-test.cc.

References NS_LOG_INFO.

Referenced by RunOne().

+ Here is the caller graph for this function:

◆ Reset()

void WifiPhyCcaIndicationTest::Reset ( )
private

Reset function.

Definition at line 1024 of file wifi-phy-cca-test.cc.

References m_rxPhyStateListener, and CcaTestPhyListener::Reset().

Referenced by RunOne(), and ScheduleTest().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ RunOne()

void WifiPhyCcaIndicationTest::RunOne ( )
private

Run one function.

Definition at line 1087 of file wifi-phy-cca-test.cc.

References aCcaTime, ns3::WifiPhyOperatingChannel::FindFirst(), LogScenario(), m_channelWidth, m_frequency, m_rxPhy, m_txPhy, ns3::MicroSeconds(), ns3::NanoSeconds(), P160_CENTER_FREQUENCY, P20_CENTER_FREQUENCY, P40_CENTER_FREQUENCY, P80_CENTER_FREQUENCY, PpduDurations, Reset(), ns3::Simulator::Run(), S20_CENTER_FREQUENCY, S40_CENTER_FREQUENCY, S80_CENTER_FREQUENCY, ns3::Simulator::Schedule(), ScheduleTest(), ns3::Seconds(), ns3::RngSeedManager::SetRun(), ns3::RngSeedManager::SetSeed(), smallDelta, ns3::WIFI_CHANLIST_PRIMARY, ns3::WIFI_CHANLIST_SECONDARY, ns3::WIFI_CHANLIST_SECONDARY40, ns3::WIFI_CHANLIST_SECONDARY80, ns3::WIFI_PHY_BAND_5GHZ, and ns3::WIFI_STANDARD_80211ax.

Referenced by DoRun().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ScheduleTest()

void WifiPhyCcaIndicationTest::ScheduleTest ( Time delay,
const std::vector< TxSignalInfo > & generatedSignals,
const std::vector< TxPpduInfo > & generatedPpdus,
const std::vector< StateCheckPoint > & stateCheckpoints,
const std::vector< CcaCheckPoint > & ccaCheckpoints )
private

Schedule test to perform.

Parameters
delaythe reference delay to schedule the events
generatedSignalsthe vector of signals to be generated
generatedPpdusthe vector of PPDUs to be generated
stateCheckpointsthe vector of PHY state checks
ccaCheckpointsthe vector of PHY CCA checks

Definition at line 973 of file wifi-phy-cca-test.cc.

References CheckLastCcaBusyNotification(), CheckPhyState(), m_signalGenerators, ns3::Simulator::Now(), Reset(), ns3::Simulator::Schedule(), ns3::Seconds(), SendHeSuPpdu(), and StartSignal().

Referenced by RunOne().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SendHeSuPpdu()

void WifiPhyCcaIndicationTest::SendHeSuPpdu ( dBm_u txPower,
MHz_u frequency,
MHz_u bandwidth )
private

Send an HE SU PPDU.

Parameters
txPowerthe transmit power
frequencythe center frequency the transmitter is operating on
bandwidththe bandwidth to use for the transmission

Definition at line 879 of file wifi-phy-cca-test.cc.

References ns3::Create(), ns3::WifiPhyOperatingChannel::FindFirst(), ns3::HePhy::GetHeMcs0(), m_txPhy, ns3::NanoSeconds(), NS_LOG_FUNCTION, ns3::WifiMacHeader::SetQosTid(), ns3::WifiMacHeader::SetType(), ns3::WIFI_MAC_QOSDATA, ns3::WIFI_PHY_BAND_5GHZ, ns3::WIFI_PREAMBLE_HE_SU, and ns3::WIFI_STANDARD_80211ax.

Referenced by ScheduleTest().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ StartSignal()

void WifiPhyCcaIndicationTest::StartSignal ( Ptr< WaveformGenerator > signalGenerator,
dBm_u txPower,
MHz_u frequency,
MHz_u bandwidth,
Time duration )
private

Start to generate a signal.

Parameters
signalGeneratorthe signal generator to use
txPowerthe transmit power
frequencythe center frequency of the signal to send
bandwidththe bandwidth of the signal to send
durationthe duration of the signal

Definition at line 846 of file wifi-phy-cca-test.cc.

References ns3::Create(), ns3::DbmToW(), ns3::BandInfo::fc, ns3::BandInfo::fh, ns3::BandInfo::fl, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), and StopSignal().

Referenced by ScheduleTest().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ StopSignal()

void WifiPhyCcaIndicationTest::StopSignal ( Ptr< WaveformGenerator > signalGenerator)
private

Stop to generate a signal.

Parameters
signalGeneratorthe signal generator to use

Definition at line 872 of file wifi-phy-cca-test.cc.

References NS_LOG_FUNCTION.

Referenced by StartSignal().

+ Here is the caller graph for this function:

Member Data Documentation

◆ m_channelWidth

MHz_u WifiPhyCcaIndicationTest::m_channelWidth
private

Operating channel width.

Definition at line 834 of file wifi-phy-cca-test.cc.

Referenced by DoRun(), and RunOne().

◆ m_frequency

MHz_u WifiPhyCcaIndicationTest::m_frequency
private

Operating frequency.

Definition at line 833 of file wifi-phy-cca-test.cc.

Referenced by DoRun(), and RunOne().

◆ m_numSignalGenerators

std::size_t WifiPhyCcaIndicationTest::m_numSignalGenerators
private

The number of non-wifi signals generators needed for the test.

Definition at line 828 of file wifi-phy-cca-test.cc.

Referenced by DoSetup().

◆ m_rxPhy

Ptr<SpectrumWifiPhy> WifiPhyCcaIndicationTest::m_rxPhy
private

PHY object of the receiver.

Definition at line 823 of file wifi-phy-cca-test.cc.

Referenced by DoCheckPhyState(), DoSetup(), DoTeardown(), and RunOne().

◆ m_rxPhyStateListener

std::shared_ptr<CcaTestPhyListener> WifiPhyCcaIndicationTest::m_rxPhyStateListener
private

Listener for PHY state transitions.

Definition at line 831 of file wifi-phy-cca-test.cc.

Referenced by CheckLastCcaBusyNotification(), DoSetup(), and Reset().

◆ m_signalGenerators

std::vector<Ptr<WaveformGenerator> > WifiPhyCcaIndicationTest::m_signalGenerators
private

Generators of non-wifi signals.

Definition at line 826 of file wifi-phy-cca-test.cc.

Referenced by DoSetup(), DoTeardown(), and ScheduleTest().

◆ m_txPhy

Ptr<SpectrumWifiPhy> WifiPhyCcaIndicationTest::m_txPhy
private

PHY object of the transmitter.

Definition at line 824 of file wifi-phy-cca-test.cc.

Referenced by DoSetup(), DoTeardown(), RunOne(), and SendHeSuPpdu().


The documentation for this class was generated from the following file: