A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
ns3::DsssPhy Class Reference

PHY entity for HR/DSSS (11b) More...

#include "dsss-phy.h"

+ Inheritance diagram for ns3::DsssPhy:
+ Collaboration diagram for ns3::DsssPhy:

Public Member Functions

 DsssPhy ()
 Constructor for HR/DSSS PHY.
 
 ~DsssPhy () override
 Destructor for HR/DSSS PHY.
 
Ptr< WifiPpduBuildPpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, Time ppduDuration) override
 Build amendment-specific PPDU.
 
Time GetDuration (WifiPpduField field, const WifiTxVector &txVector) const override
 Get the duration of the PPDU field (or group of fields) used by this entity for the given transmission parameters.
 
uint32_t GetMaxPsduSize () const override
 Get the maximum PSDU size in bytes.
 
Time GetPayloadDuration (uint32_t size, const WifiTxVector &txVector, WifiPhyBand band, MpduType mpdutype, bool incFlag, uint32_t &totalAmpduSize, double &totalAmpduNumSymbols, uint16_t staId) const override
 
const PpduFormatsGetPpduFormats () const override
 Return the PPDU formats of the PHY.
 
WifiMode GetSigMode (WifiPpduField field, const WifiTxVector &txVector) const override
 Get the WifiMode for the SIG field specified by the PPDU field.
 
- Public Member Functions inherited from ns3::PhyEntity
virtual ~PhyEntity ()
 Destructor for PHY entity.
 
std::list< WifiMode >::const_iterator begin () const
 Return a const iterator to the first WifiMode.
 
Time CalculatePhyPreambleAndHeaderDuration (const WifiTxVector &txVector) const
 
virtual Time CalculateTxDuration (const WifiConstPsduMap &psduMap, const WifiTxVector &txVector, WifiPhyBand band) const
 
virtual void CancelAllEvents ()
 Cancel and clear all running events.
 
void CancelRunningEndPreambleDetectionEvents ()
 Cancel all end preamble detection events.
 
virtual bool CanStartRx (Ptr< const WifiPpdu > ppdu) const
 Determine whether the PHY shall issue a PHY-RXSTART.indication primitive in response to a given PPDU.
 
std::list< WifiMode >::const_iterator end () const
 Return a const iterator to past-the-last WifiMode.
 
void EndReceiveField (WifiPpduField field, Ptr< Event > event)
 End receiving a given field.
 
void EndReceivePayload (Ptr< Event > event)
 The last symbol of the PPDU has arrived.
 
virtual Ptr< const WifiPsduGetAddressedPsduInPpdu (Ptr< const WifiPpdu > ppdu) const
 Get the PSDU addressed to that PHY in a PPDU (useful for MU PPDU).
 
virtual dBm_u GetCcaThreshold (const Ptr< const WifiPpdu > ppdu, WifiChannelListType channelType) const
 Return the CCA threshold for a given channel type.
 
Time GetDurationUpToField (WifiPpduField field, const WifiTxVector &txVector) const
 Get the duration of the PPDU up to (but excluding) the given field.
 
virtual Time GetMaxDelayPpduSameUid (const WifiTxVector &txVector)
 Obtain the maximum time between two PPDUs with the same UID to consider they are identical and their power can be added construtively.
 
virtual WifiMode GetMcs (uint8_t index) const
 Get the WifiMode corresponding to the given MCS index.
 
WifiPpduField GetNextField (WifiPpduField currentField, WifiPreamble preamble) const
 Return the field following the provided one.
 
virtual uint8_t GetNumModes () const
 
PhyHeaderSections GetPhyHeaderSections (const WifiTxVector &txVector, Time ppduStart) const
 Return a map of PHY header chunk information per PPDU field.
 
Time GetRemainingDurationAfterField (Ptr< const WifiPpdu > ppdu, WifiPpduField field) const
 Get the remaining duration of the PPDU after the end of the given field.
 
virtual Ptr< const WifiPpduGetRxPpduFromTxPpdu (Ptr< const WifiPpdu > ppdu)
 The WifiPpdu from the TX PHY is received by each RX PHY attached to the same channel.
 
virtual uint16_t GetStaId (const Ptr< const WifiPpdu > ppdu) const
 Return the STA ID that has been assigned to the station this PHY belongs to.
 
virtual WifiConstPsduMap GetWifiConstPsduMap (Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector) const
 Get a WifiConstPsduMap from a PSDU and the TXVECTOR to use to send the PSDU.
 
virtual bool HandlesMcsModes () const
 Check if the WifiModes handled by this PHY are MCSs.
 
virtual bool IsMcsSupported (uint8_t index) const
 Check if the WifiMode corresponding to the given MCS index is supported.
 
virtual bool IsModeSupported (WifiMode mode) const
 Check if the WifiMode is supported.
 
bool NoEndPreambleDetectionEvents () const
 
virtual void NotifyCcaBusy (const Ptr< const WifiPpdu > ppdu, Time duration, WifiChannelListType channelType)
 Notify PHY state helper to switch to CCA busy state,.
 
virtual uint64_t ObtainNextUid (const WifiTxVector &txVector)
 Obtain the next UID for the PPDU to transmit.
 
void ResetReceive (Ptr< Event > event)
 Reset PHY at the end of the PPDU under reception after it has failed the PHY header.
 
void SetOwner (Ptr< WifiPhy > wifiPhy)
 Set the WifiPhy owning this PHY entity.
 
void StartReceiveField (WifiPpduField field, Ptr< Event > event)
 Start receiving a given field.
 
virtual void StartReceivePreamble (Ptr< const WifiPpdu > ppdu, RxPowerWattPerChannelBand &rxPowersW, Time rxDuration)
 Start receiving the PHY preamble of a PPDU (i.e.
 
virtual void StartTx (Ptr< const WifiPpdu > ppdu)
 This function is called by SpectrumWifiPhy to send the PPDU while performing amendment-specific actions.
 
virtual void SwitchMaybeToCcaBusy (const Ptr< const WifiPpdu > ppdu)
 Check if PHY state should move to CCA busy state based on current state of interference tracker.
 
void Transmit (Time txDuration, Ptr< const WifiPpdu > ppdu, dBm_u txPower, Ptr< SpectrumValue > txPowerSpectrum, const std::string &type)
 This function prepares most of the WifiSpectrumSignalParameters parameters and invokes SpectrumWifiPhy's Transmit method.
 
- Public Member Functions inherited from ns3::SimpleRefCount< PhyEntity >
 SimpleRefCount ()
 Default constructor.
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor.
 
uint32_t GetReferenceCount () const
 Get the reference count of the object.
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment operator.
 
void Ref () const
 Increment the reference count.
 
void Unref () const
 Decrement the reference count.
 

Static Public Member Functions

static WifiCodeRate GetCodeRate (const std::string &name)
 Return the WifiCodeRate from the DSSS or HR/DSSS mode's unique name using ModulationLookupTable.
 
static uint16_t GetConstellationSize (const std::string &name)
 Return the constellation size from the DSSS or HR/DSSS mode's unique name using ModulationLookupTable.
 
static uint64_t GetDataRate (const std::string &name, WifiModulationClass modClass)
 Return the data rate from the DSSS or HR/DSSS mode's unique name and the supplied parameters.
 
static uint64_t GetDataRateFromTxVector (const WifiTxVector &txVector, uint16_t staId)
 Return the data rate corresponding to the supplied TXVECTOR.
 
static WifiMode GetDsssRate (uint64_t rate)
 Return a WifiMode for HR/DSSS corresponding to the provided rate.
 
static WifiMode GetDsssRate11Mbps ()
 Return a WifiMode for HR/DSSS at 11 Mbps.
 
static WifiMode GetDsssRate1Mbps ()
 Return a WifiMode for DSSS at 1 Mbps.
 
static WifiMode GetDsssRate2Mbps ()
 Return a WifiMode for DSSS at 2 Mbps.
 
static WifiMode GetDsssRate5_5Mbps ()
 Return a WifiMode for HR/DSSS at 5.5 Mbps.
 
static void InitializeModes ()
 Initialize all HR/DSSS modes.
 
static bool IsAllowed (const WifiTxVector &txVector)
 Check whether the combination in TXVECTOR is allowed.
 

Private Member Functions

PhyFieldRxStatus DoEndReceiveField (WifiPpduField field, Ptr< Event > event) override
 End receiving a given field, perform amendment-specific actions, and provide the status of the reception.
 
PhyFieldRxStatus EndReceiveHeader (Ptr< Event > event)
 End receiving the header, perform DSSS-specific actions, and provide the status of the reception.
 
Time GetHeaderDuration (const WifiTxVector &txVector) const
 
WifiMode GetHeaderMode (const WifiTxVector &txVector) const
 
MHz_u GetMeasurementChannelWidth (const Ptr< const WifiPpdu > ppdu) const override
 Return the channel width used to measure the RSSI.
 
Time GetPreambleDuration (const WifiTxVector &txVector) const
 
MHz_u GetRxChannelWidth (const WifiTxVector &txVector) const override
 Return the channel width used in the reception spectrum model.
 
Ptr< SpectrumValueGetTxPowerSpectralDensity (Watt_u txPower, Ptr< const WifiPpdu > ppdu) const override
 

Static Private Member Functions

static WifiMode CreateDsssMode (std::string uniqueName, WifiModulationClass modClass)
 Create a DSSS or HR/DSSS mode from a unique name, the unique name must already be contained inside ModulationLookupTable.
 

Static Private Attributes

static const ModulationLookupTable m_dsssModulationLookupTable
 lookup table to retrieve code rate and constellation size corresponding to a unique name of modulation
 
static const PpduFormats m_dsssPpduFormats
 DSSS and HR/DSSS PPDU formats.
 

Additional Inherited Members

- Public Types inherited from ns3::PhyEntity
typedef std::pair< std::pair< Time, Time >, WifiModePhyHeaderChunkInfo
 A pair containing information on the PHY header chunk, namely the start and stop times of the chunk and the WifiMode used.
 
typedef std::map< WifiPpduField, PhyHeaderChunkInfoPhyHeaderSections
 A map of PhyHeaderChunkInfo elements per PPDU field.
 
enum  PhyRxFailureAction { DROP = 0 , ABORT , IGNORE }
 Action to perform in case of RX failure. More...
 
- Protected Types inherited from ns3::PhyEntity
using CcaIndication
 CCA end time and its corresponding channel list type (can be std::nullopt if IDLE)
 
typedef std::pair< WifiCodeRate, uint16_t > CodeRateConstellationSizePair
 A pair to hold modulation information: code rate and constellation size.
 
typedef std::map< std::string, CodeRateConstellationSizePairModulationLookupTable
 A modulation lookup table using unique name of modulation as key.
 
typedef std::map< WifiPreamble, std::vector< WifiPpduField > > PpduFormats
 A map of PPDU field elements per preamble type.
 
typedef std::pair< uint64_t, uint16_t > UidStaIdPair
 A pair of a UID and STA_ID.
 
- Protected Member Functions inherited from ns3::PhyEntity
void AbortCurrentReception (WifiPhyRxfailureReason reason)
 Abort the current reception.
 
void AddPreambleEvent (Ptr< Event > event)
 Add an entry to the map of current preamble events (stored in WifiPhy).
 
Ptr< EventCreateInterferenceEvent (Ptr< const WifiPpdu > ppdu, Time duration, RxPowerWattPerChannelBand &rxPower, bool isStartHePortionRxing=false)
 Create an event using WifiPhy's InterferenceHelper class.
 
virtual void DoAbortCurrentReception (WifiPhyRxfailureReason reason)
 Perform amendment-specific actions before aborting the current reception.
 
virtual void DoEndReceivePayload (Ptr< const WifiPpdu > ppdu)
 Perform amendment-specific actions at the end of the reception of the payload.
 
virtual PhyFieldRxStatus DoEndReceivePreamble (Ptr< Event > event)
 End receiving the preamble, perform amendment-specific actions, and provide the status of the reception.
 
virtual Ptr< EventDoGetEvent (Ptr< const WifiPpdu > ppdu, RxPowerWattPerChannelBand &rxPowersW)
 Get the event corresponding to the incoming PPDU.
 
virtual void DoResetReceive (Ptr< Event > event)
 Perform amendment-specific actions before resetting PHY at the end of the PPDU under reception after it has failed the PHY header.
 
virtual bool DoStartReceiveField (WifiPpduField field, Ptr< Event > event)
 Start receiving a given field, perform amendment-specific actions, and signify if it is supported.
 
virtual Time DoStartReceivePayload (Ptr< Event > event)
 Start receiving the PSDU (i.e.
 
void DropPreambleEvent (Ptr< const WifiPpdu > ppdu, WifiPhyRxfailureReason reason, Time endRx)
 Drop the PPDU and the corresponding preamble detection event, but keep CCA busy state after the completion of the currently processed event.
 
void EndOfMpdu (Ptr< Event > event, Ptr< WifiMpdu > mpdu, size_t mpduIndex, Time relativeStart, Time mpduDuration)
 The last symbol of an MPDU in an A-MPDU has arrived.
 
void EndPreambleDetectionPeriod (Ptr< Event > event)
 End the preamble detection period.
 
void ErasePreambleEvent (Ptr< const WifiPpdu > ppdu, Time rxDuration)
 Erase the event corresponding to the PPDU from the list of preamble events, but consider it as noise after the completion of the current event.
 
virtual CcaIndication GetCcaIndication (const Ptr< const WifiPpdu > ppdu)
 Get CCA end time and its corresponding channel list type when a new signal has been received by the PHY.
 
virtual std::pair< MHz_u, WifiSpectrumBandInfoGetChannelWidthAndBand (const WifiTxVector &txVector, uint16_t staId) const
 Get the channel width and band to use (will be overloaded by child classes).
 
Ptr< const EventGetCurrentEvent () const
 Get the pointer to the current event (stored in WifiPhy).
 
const std::map< std::pair< uint64_t, WifiPreamble >, Ptr< Event > > & GetCurrentPreambleEvents () const
 Get the map of current preamble events (stored in WifiPhy).
 
Time GetDelayUntilCcaEnd (dBm_u threshold, const WifiSpectrumBandInfo &band)
 Return the delay until CCA busy is ended for a given sensitivity threshold and a given band.
 
MHz_u GetGuardBandwidth (MHz_u currentChannelWidth) const
 
SnrPer GetPhyHeaderSnrPer (WifiPpduField field, Ptr< Event > event) const
 Obtain the SNR and PER of the PPDU field from the WifiPhy's InterferenceHelper class.
 
WifiSpectrumBandInfo GetPrimaryBand (MHz_u bandWidth) const
 If the operating channel width is a multiple of 20 MHz, return the info corresponding to the primary channel of the given bandwidth (which must be a multiple of 20 MHz and not exceed the operating channel width).
 
double GetRandomValue () const
 Obtain a random value from the WifiPhy's generator.
 
std::pair< bool, SignalNoiseDbmGetReceptionStatus (Ptr< WifiMpdu > mpdu, Ptr< Event > event, uint16_t staId, Time relativeMpduStart, Time mpduDuration)
 Get the reception status for the provided MPDU and notify.
 
Watt_u GetRxPowerForPpdu (Ptr< Event > event) const
 Obtain the received power for a given band.
 
WifiSpectrumBandInfo GetSecondaryBand (MHz_u bandWidth) const
 If the channel bonding is used, return the info corresponding to the secondary channel of the given bandwidth (which must be a multiple of 20 MHz and not exceed the operating channel width).
 
std::tuple< dBr_u, dBr_u, dBr_uGetTxMaskRejectionParams () const
 
virtual void HandleRxPpduWithSameContent (Ptr< Event > event, Ptr< const WifiPpdu > ppdu, RxPowerWattPerChannelBand &rxPower)
 Handle reception of a PPDU that carries the same content of another PPDU.
 
virtual bool IsConfigSupported (Ptr< const WifiPpdu > ppdu) const
 Checks if the signaled configuration (excluding bandwidth) is supported by the PHY.
 
void NotifyInterferenceRxEndAndClear (bool reset)
 Notify WifiPhy's InterferenceHelper of the end of the reception, clear maps and end of MPDU event, and eventually reset WifiPhy.
 
void NotifyPayloadBegin (const WifiTxVector &txVector, const Time &payloadDuration)
 Fire the trace indicating that the PHY is starting to receive the payload of a PPDU.
 
virtual void RxPayloadFailed (Ptr< const WifiPsdu > psdu, double snr, const WifiTxVector &txVector)
 Perform amendment-specific actions when the payload is unsuccessfuly received.
 
virtual void RxPayloadSucceeded (Ptr< const WifiPsdu > psdu, RxSignalInfo rxSignalInfo, const WifiTxVector &txVector, uint16_t staId, const std::vector< bool > &statusPerMpdu)
 Perform amendment-specific actions when the payload is successfully received.
 
void ScheduleEndOfMpdus (Ptr< Event > event)
 Schedule end of MPDUs events.
 
void StartPreambleDetectionPeriod (Ptr< Event > event)
 Start the preamble detection period.
 
void StartReceivePayload (Ptr< Event > event)
 Start receiving the PSDU (i.e.
 
- Protected Attributes inherited from ns3::PhyEntity
std::vector< EventIdm_endOfMacHdrEvents
 the end of MAC header events
 
std::vector< EventIdm_endOfMpduEvents
 the end of MPDU events (only used for A-MPDUs)
 
std::vector< EventIdm_endPreambleDetectionEvents
 the end of preamble detection events
 
std::vector< EventIdm_endRxPayloadEvents
 the end of receive events (only one unless UL MU reception)
 
std::list< WifiModem_modeList
 the list of supported modes
 
std::map< UidStaIdPair, SignalNoiseDbmm_signalNoiseMap
 Map of the latest signal power and noise power in dBm (noise power includes the noise figure)
 
Ptr< WifiPhyStateHelperm_state
 Pointer to WifiPhyStateHelper of the WifiPhy (to make it reachable for child classes)
 
std::map< UidStaIdPair, std::vector< bool > > m_statusPerMpduMap
 Map of the current reception status per MPDU that is filled in as long as MPDUs are being processed by the PHY in case of an A-MPDU.
 
Ptr< WifiPhym_wifiPhy
 Pointer to the owning WifiPhy.
 
- Static Protected Attributes inherited from ns3::PhyEntity
static uint64_t m_globalPpduUid = 0
 Global counter of the PPDU UID.
 

Detailed Description

PHY entity for HR/DSSS (11b)

Refer to IEEE 802.11-2016, clause 16 (HR/DSSS). Note that DSSS rates (clause 15) are a subset of HR/DSSS rates.

Definition at line 35 of file dsss-phy.h.

Constructor & Destructor Documentation

◆ DsssPhy()

ns3::DsssPhy::DsssPhy ( )

Constructor for HR/DSSS PHY.

Definition at line 71 of file dsss-phy.cc.

References GetDsssRate(), ns3::GetDsssRatesBpsList(), ns3::PhyEntity::m_modeList, NS_LOG_FUNCTION, and NS_LOG_LOGIC.

+ Here is the call graph for this function:

◆ ~DsssPhy()

ns3::DsssPhy::~DsssPhy ( )
override

Destructor for HR/DSSS PHY.

Definition at line 82 of file dsss-phy.cc.

References NS_LOG_FUNCTION.

Member Function Documentation

◆ BuildPpdu()

Ptr< WifiPpdu > ns3::DsssPhy::BuildPpdu ( const WifiConstPsduMap & psdus,
const WifiTxVector & txVector,
Time ppduDuration )
overridevirtual

Build amendment-specific PPDU.

Parameters
psdusthe PHY payloads (PSDUs)
txVectorthe TXVECTOR that was used for the PPDU
ppduDurationthe transmission duration of the PPDU
Returns
the amendment-specific WifiPpdu

Reimplemented from ns3::PhyEntity.

Definition at line 190 of file dsss-phy.cc.

References ns3::Create(), ns3::WifiPhy::GetOperatingChannel(), ns3::PhyEntity::m_wifiPhy, NS_LOG_FUNCTION, and ns3::PhyEntity::ObtainNextUid().

+ Here is the call graph for this function:

◆ CreateDsssMode()

WifiMode ns3::DsssPhy::CreateDsssMode ( std::string uniqueName,
WifiModulationClass modClass )
staticprivate

Create a DSSS or HR/DSSS mode from a unique name, the unique name must already be contained inside ModulationLookupTable.

This method binds all the callbacks used by WifiMode.

Parameters
uniqueNamethe unique name of the WifiMode
modClassthe modulation class of the WifiMode, must be either WIFI_MOD_CLASS_DSSS or WIFI_MOD_CLASS_HR_DSSS
Returns
the DSSS or HR/DSSS WifiMode

Definition at line 318 of file dsss-phy.cc.

References ns3::WifiModeFactory::CreateWifiMode(), GetCodeRate(), GetConstellationSize(), GetDataRateFromTxVector(), IsAllowed(), m_dsssModulationLookupTable, ns3::MakeBoundCallback(), ns3::MakeCallback(), NS_ASSERT_MSG, ns3::WIFI_MOD_CLASS_DSSS, and ns3::WIFI_MOD_CLASS_HR_DSSS.

+ Here is the call graph for this function:

◆ DoEndReceiveField()

PhyEntity::PhyFieldRxStatus ns3::DsssPhy::DoEndReceiveField ( WifiPpduField field,
Ptr< Event > event )
overrideprivatevirtual

End receiving a given field, perform amendment-specific actions, and provide the status of the reception.

Parameters
fieldthe ending PPDU field
eventthe event holding incoming PPDU's information
Returns
status of the reception of the PPDU field

Reimplemented from ns3::PhyEntity.

Definition at line 201 of file dsss-phy.cc.

References ns3::PhyEntity::DoEndReceiveField(), EndReceiveHeader(), NS_LOG_FUNCTION, and ns3::WIFI_PPDU_FIELD_NON_HT_HEADER.

+ Here is the call graph for this function:

◆ EndReceiveHeader()

PhyEntity::PhyFieldRxStatus ns3::DsssPhy::EndReceiveHeader ( Ptr< Event > event)
private

End receiving the header, perform DSSS-specific actions, and provide the status of the reception.

Parameters
eventthe event holding incoming PPDU's information
Returns
status of the reception of the header

Definition at line 212 of file dsss-phy.cc.

References ns3::PhyEntity::ABORT, ns3::PhyEntity::PhyFieldRxStatus::actionIfFailure, ns3::PhyEntity::DROP, ns3::PhyEntity::GetPhyHeaderSnrPer(), ns3::PhyEntity::GetRandomValue(), ns3::PhyEntity::IsConfigSupported(), ns3::PhyEntity::PhyFieldRxStatus::isSuccess, ns3::L_SIG_FAILURE, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::PhyEntity::SnrPer::per, ns3::RatioToDb(), ns3::PhyEntity::PhyFieldRxStatus::reason, ns3::PhyEntity::SnrPer::snr, ns3::UNSUPPORTED_SETTINGS, and ns3::WIFI_PPDU_FIELD_NON_HT_HEADER.

Referenced by DoEndReceiveField().

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

◆ GetCodeRate()

WifiCodeRate ns3::DsssPhy::GetCodeRate ( const std::string & name)
static

Return the WifiCodeRate from the DSSS or HR/DSSS mode's unique name using ModulationLookupTable.

This is mainly used as a callback for WifiMode operation.

Parameters
namethe unique name of the DSSS or HR/DSSS mode
Returns
WifiCodeRate corresponding to the unique name

Definition at line 340 of file dsss-phy.cc.

References m_dsssModulationLookupTable.

Referenced by CreateDsssMode().

+ Here is the caller graph for this function:

◆ GetConstellationSize()

uint16_t ns3::DsssPhy::GetConstellationSize ( const std::string & name)
static

Return the constellation size from the DSSS or HR/DSSS mode's unique name using ModulationLookupTable.

This is mainly used as a callback for WifiMode operation.

Parameters
namethe unique name of the DSSS or HR/DSSS mode
Returns
constellation size corresponding to the unique name

Definition at line 346 of file dsss-phy.cc.

References m_dsssModulationLookupTable.

Referenced by CreateDsssMode(), and GetDataRate().

+ Here is the caller graph for this function:

◆ GetDataRate()

uint64_t ns3::DsssPhy::GetDataRate ( const std::string & name,
WifiModulationClass modClass )
static

Return the data rate from the DSSS or HR/DSSS mode's unique name and the supplied parameters.

This function is mainly used as a callback for WifiMode operation.

Parameters
namethe unique name of the DSSS or HR/DSSS mode
modClassthe modulation class, must be either WIFI_MOD_CLASS_DSSS or WIFI_MOD_CLASS_HR_DSSS
Returns
the data bit rate of this signal in bps.

Definition at line 359 of file dsss-phy.cc.

References GetConstellationSize(), NS_FATAL_ERROR, ns3::WIFI_MOD_CLASS_DSSS, and ns3::WIFI_MOD_CLASS_HR_DSSS.

Referenced by GetDataRateFromTxVector().

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

◆ GetDataRateFromTxVector()

uint64_t ns3::DsssPhy::GetDataRateFromTxVector ( const WifiTxVector & txVector,
uint16_t staId )
static

Return the data rate corresponding to the supplied TXVECTOR.

This function is mainly used as a callback for WifiMode operation.

Parameters
txVectorthe TXVECTOR used for the transmission
staIdthe station ID (only here to have a common signature for all callbacks)
Returns
the data bit rate in bps.

Definition at line 352 of file dsss-phy.cc.

References GetDataRate(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), and ns3::WifiMode::GetUniqueName().

Referenced by CreateDsssMode().

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

◆ GetDsssRate()

WifiMode ns3::DsssPhy::GetDsssRate ( uint64_t rate)
static

Return a WifiMode for HR/DSSS corresponding to the provided rate.

Parameters
ratethe rate in bps
Returns
a WifiMode for HR/DSSS

Definition at line 284 of file dsss-phy.cc.

References GetDsssRate11Mbps(), GetDsssRate1Mbps(), GetDsssRate2Mbps(), GetDsssRate5_5Mbps(), and NS_ABORT_MSG.

Referenced by DsssPhy(), InitializeModes(), and ns3::DsssPpdu::SetTxVectorFromDsssHeader().

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

◆ GetDsssRate11Mbps()

static WifiMode ns3::DsssPhy::GetDsssRate11Mbps ( )
static

Return a WifiMode for HR/DSSS at 11 Mbps.

Returns
a WifiMode for HR/DSSS at 11 Mbps

Referenced by PhyHeaderSectionsTest::DoRun(), TxDurationTest::DoRun(), and GetDsssRate().

+ Here is the caller graph for this function:

◆ GetDsssRate1Mbps()

static WifiMode ns3::DsssPhy::GetDsssRate1Mbps ( )
static

Return a WifiMode for DSSS at 1 Mbps.

Returns
a WifiMode for DSSS at 1 Mbps

Referenced by PhyHeaderSectionsTest::DoRun(), TxDurationTest::DoRun(), GetDsssRate(), and GetHeaderMode().

+ Here is the caller graph for this function:

◆ GetDsssRate2Mbps()

static WifiMode ns3::DsssPhy::GetDsssRate2Mbps ( )
static

Return a WifiMode for DSSS at 2 Mbps.

Returns
a WifiMode for DSSS at 2 Mbps

Referenced by PhyHeaderSectionsTest::DoRun(), TxDurationTest::DoRun(), GetDsssRate(), and GetHeaderMode().

+ Here is the caller graph for this function:

◆ GetDsssRate5_5Mbps()

static WifiMode ns3::DsssPhy::GetDsssRate5_5Mbps ( )
static

Return a WifiMode for HR/DSSS at 5.5 Mbps.

Returns
a WifiMode for HR/DSSS at 5.5 Mbps

Referenced by TxDurationTest::DoRun(), and GetDsssRate().

+ Here is the caller graph for this function:

◆ GetDuration()

Time ns3::DsssPhy::GetDuration ( WifiPpduField field,
const WifiTxVector & txVector ) const
overridevirtual

Get the duration of the PPDU field (or group of fields) used by this entity for the given transmission parameters.

Parameters
fieldthe PPDU field (or group of fields)
txVectorthe transmission parameters
Returns
the duration of the PPDU field

Reimplemented from ns3::PhyEntity.

Definition at line 125 of file dsss-phy.cc.

References ns3::PhyEntity::GetDuration(), GetHeaderDuration(), GetPreambleDuration(), ns3::WIFI_PPDU_FIELD_NON_HT_HEADER, and ns3::WIFI_PPDU_FIELD_PREAMBLE.

+ Here is the call graph for this function:

◆ GetHeaderDuration()

Time ns3::DsssPhy::GetHeaderDuration ( const WifiTxVector & txVector) const
private
Parameters
txVectorthe transmission parameters
Returns
the duration of the PHY header field

Definition at line 159 of file dsss-phy.cc.

References ns3::WifiMode::GetDataRate(), ns3::WifiTxVector::GetMode(), ns3::WifiTxVector::GetPreambleType(), ns3::MicroSeconds(), and ns3::WIFI_PREAMBLE_SHORT.

Referenced by GetDuration().

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

◆ GetHeaderMode()

WifiMode ns3::DsssPhy::GetHeaderMode ( const WifiTxVector & txVector) const
private
Parameters
txVectorthe transmission parameters
Returns
the WifiMode used for the PHY header field

Definition at line 102 of file dsss-phy.cc.

References GetDsssRate1Mbps(), GetDsssRate2Mbps(), ns3::WifiTxVector::GetMode(), ns3::WifiTxVector::GetPreambleType(), and ns3::WIFI_PREAMBLE_LONG.

Referenced by GetSigMode().

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

◆ GetMaxPsduSize()

uint32_t ns3::DsssPhy::GetMaxPsduSize ( ) const
overridevirtual

Get the maximum PSDU size in bytes.

Returns
the maximum PSDU size in bytes

Implements ns3::PhyEntity.

Definition at line 388 of file dsss-phy.cc.

◆ GetMeasurementChannelWidth()

MHz_u ns3::DsssPhy::GetMeasurementChannelWidth ( const Ptr< const WifiPpdu > ppdu) const
overrideprivatevirtual

Return the channel width used to measure the RSSI.

Parameters
ppduthe PPDU that is being received
Returns
the channel width used for RSSI measurement

Implements ns3::PhyEntity.

Definition at line 253 of file dsss-phy.cc.

References GetRxChannelWidth().

+ Here is the call graph for this function:

◆ GetPayloadDuration()

Time ns3::DsssPhy::GetPayloadDuration ( uint32_t size,
const WifiTxVector & txVector,
WifiPhyBand band,
MpduType mpdutype,
bool incFlag,
uint32_t & totalAmpduSize,
double & totalAmpduNumSymbols,
uint16_t staId ) const
overridevirtual
Parameters
sizethe number of bytes in the packet to send
txVectorthe TXVECTOR used for the transmission of this packet
bandthe frequency band
mpdutypethe type of the MPDU as defined in WifiPhy::MpduType.
incFlagthis flag is used to indicate that the variables need to be update or not This function is called a couple of times for the same packet so variables should not be increased each time.
totalAmpduSizethe total size of the previously transmitted MPDUs for the concerned A-MPDU. If incFlag is set, this parameter will be updated.
totalAmpduNumSymbolsthe number of symbols previously transmitted for the MPDUs in the concerned A-MPDU, used for the computation of the number of symbols needed for the last MPDU. If incFlag is set, this parameter will be updated.
staIdthe STA-ID of the PSDU (only used for MU PPDUs)
Returns
the duration of the PSDU

Implements ns3::PhyEntity.

Definition at line 177 of file dsss-phy.cc.

References ns3::WifiMode::GetDataRate(), ns3::WifiTxVector::GetMode(), and ns3::MicroSeconds().

+ Here is the call graph for this function:

◆ GetPpduFormats()

const PhyEntity::PpduFormats & ns3::DsssPhy::GetPpduFormats ( ) const
overridevirtual

Return the PPDU formats of the PHY.

Returns
the PPDU formats of the PHY

Implements ns3::PhyEntity.

Definition at line 119 of file dsss-phy.cc.

References m_dsssPpduFormats.

◆ GetPreambleDuration()

Time ns3::DsssPhy::GetPreambleDuration ( const WifiTxVector & txVector) const
private
Parameters
txVectorthe transmission parameters
Returns
the duration of the PHY preamble field
See also
WIFI_PPDU_FIELD_PREAMBLE

Definition at line 142 of file dsss-phy.cc.

References ns3::WifiMode::GetDataRate(), ns3::WifiTxVector::GetMode(), ns3::WifiTxVector::GetPreambleType(), ns3::MicroSeconds(), and ns3::WIFI_PREAMBLE_SHORT.

Referenced by GetDuration().

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

◆ GetRxChannelWidth()

MHz_u ns3::DsssPhy::GetRxChannelWidth ( const WifiTxVector & txVector) const
overrideprivatevirtual

Return the channel width used in the reception spectrum model.

Parameters
txVectorthe TXVECTOR of the PPDU that is being received
Returns
the channel width used for RxSpectrumModel

Reimplemented from ns3::PhyEntity.

Definition at line 237 of file dsss-phy.cc.

References ns3::WifiPhy::GetChannelWidth(), ns3::PhyEntity::GetRxChannelWidth(), and ns3::PhyEntity::m_wifiPhy.

Referenced by GetMeasurementChannelWidth().

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

◆ GetSigMode()

WifiMode ns3::DsssPhy::GetSigMode ( WifiPpduField field,
const WifiTxVector & txVector ) const
overridevirtual

Get the WifiMode for the SIG field specified by the PPDU field.

Parameters
fieldthe PPDU field
txVectorthe transmission parameters
Returns
the WifiMode used for the SIG field

Reimplemented from ns3::PhyEntity.

Definition at line 88 of file dsss-phy.cc.

References GetHeaderMode(), ns3::PhyEntity::GetSigMode(), ns3::WIFI_PPDU_FIELD_NON_HT_HEADER, and ns3::WIFI_PPDU_FIELD_PREAMBLE.

+ Here is the call graph for this function:

◆ GetTxPowerSpectralDensity()

Ptr< SpectrumValue > ns3::DsssPhy::GetTxPowerSpectralDensity ( Watt_u txPower,
Ptr< const WifiPpdu > ppdu ) const
overrideprivatevirtual
Parameters
txPowerpower to spread across the bands
ppduthe PPDU that will be transmitted
Returns
Pointer to SpectrumValue

This is a helper function to create the right TX PSD corresponding to the amendment of this PHY.

Implements ns3::PhyEntity.

Definition at line 259 of file dsss-phy.cc.

References ns3::WifiSpectrumValueHelper::CreateDsssTxPowerSpectralDensity(), ns3::PhyEntity::GetGuardBandwidth(), NS_ABORT_MSG_IF, NS_ASSERT, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ InitializeModes()

void ns3::DsssPhy::InitializeModes ( )
static

Initialize all HR/DSSS modes.

Definition at line 275 of file dsss-phy.cc.

References GetDsssRate(), and ns3::GetDsssRatesBpsList().

Referenced by anonymous_namespace{dsss-phy.cc}::ConstructorDsss::ConstructorDsss().

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

◆ IsAllowed()

bool ns3::DsssPhy::IsAllowed ( const WifiTxVector & txVector)
static

Check whether the combination in TXVECTOR is allowed.

This function is used as a callback for WifiMode operation.

Parameters
txVectorthe TXVECTOR
Returns
true if this combination is allowed, false otherwise.

Definition at line 382 of file dsss-phy.cc.

Referenced by CreateDsssMode().

+ Here is the caller graph for this function:

Member Data Documentation

◆ m_dsssModulationLookupTable

const PhyEntity::ModulationLookupTable ns3::DsssPhy::m_dsssModulationLookupTable
staticprivate
Initial value:
{
{ "DsssRate1Mbps", { WIFI_CODE_RATE_UNDEFINED, 2 } },
{ "DsssRate2Mbps", { WIFI_CODE_RATE_UNDEFINED, 4 } },
{ "DsssRate5_5Mbps", { WIFI_CODE_RATE_UNDEFINED, 16 } },
{ "DsssRate11Mbps", { WIFI_CODE_RATE_UNDEFINED, 256 } },
}
@ WIFI_CODE_RATE_UNDEFINED
undefined coding rate

lookup table to retrieve code rate and constellation size corresponding to a unique name of modulation

Definition at line 200 of file dsss-phy.h.

Referenced by CreateDsssMode(), GetCodeRate(), and GetConstellationSize().

◆ m_dsssPpduFormats

const PhyEntity::PpduFormats ns3::DsssPhy::m_dsssPpduFormats
staticprivate
Initial value:
{
}
@ WIFI_PREAMBLE_LONG
@ WIFI_PREAMBLE_SHORT
@ WIFI_PPDU_FIELD_NON_HT_HEADER
PHY header field for DSSS or ERP, short PHY header field for HR/DSSS or ERP, field not present for HT...
@ WIFI_PPDU_FIELD_PREAMBLE
SYNC + SFD fields for DSSS or ERP, shortSYNC + shortSFD fields for HR/DSSS or ERP,...
@ WIFI_PPDU_FIELD_DATA
data field

DSSS and HR/DSSS PPDU formats.

Definition at line 197 of file dsss-phy.h.

Referenced by GetPpduFormats().


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