A Discrete-Event Network Simulator
API
ns3::DsssPhy Class Reference

PHY entity for HR/DSSS (11b)Refer to IEEE 802.11-2016, clause 16 (HR/DSSS). More...

#include "dsss-phy.h"

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

Public Member Functions

 DsssPhy ()
 Constructor for HR/DSSS PHY. More...
 
virtual ~DsssPhy ()
 Destructor for HR/DSSS PHY. More...
 
Ptr< WifiPpduBuildPpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, Time ppduDuration) override
 Build amendment-specific PPDU. More...
 
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. More...
 
virtual uint32_t GetMaxPsduSize (void) const override
 Get the maximum PSDU size in bytes (see Table 15-5 DSSS PHY characteristics of IEEE 802.11-2016) More...
 
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 (void) const override
 Return the PPDU formats of the PHY. More...
 
WifiMode GetSigMode (WifiPpduField field, const WifiTxVector &txVector) const override
 Get the WifiMode for the SIG field specified by the PPDU field. More...
 
- Public Member Functions inherited from ns3::PhyEntity
virtual ~PhyEntity ()
 Destructor for PHY entity. More...
 
std::list< WifiMode >::const_iterator begin (void) const
 Return a const iterator to the first WifiMode. More...
 
Time CalculatePhyPreambleAndHeaderDuration (const WifiTxVector &txVector) const
 
virtual Time CalculateTxDuration (WifiConstPsduMap psduMap, const WifiTxVector &txVector, WifiPhyBand band) const
 
virtual void CancelAllEvents (void)
 Cancel and clear all running events. More...
 
void CancelRunningEndPreambleDetectionEvents (bool clear=false)
 Cancel and eventually clear all end preamble detection events. More...
 
virtual bool CanReceivePpdu (Ptr< WifiPpdu > ppdu, uint16_t txCenterFreq) const
 Check whether the given PPDU can be received by this PHY entity. More...
 
std::list< WifiMode >::const_iterator end (void) const
 Return a const iterator to past-the-last WifiMode. More...
 
void EndReceiveField (WifiPpduField field, Ptr< Event > event)
 End receiving a given field. More...
 
void EndReceivePayload (Ptr< Event > event)
 The last symbol of the PPDU has arrived. More...
 
virtual Ptr< const WifiPsduGetAddressedPsduInPpdu (Ptr< const WifiPpdu > ppdu) const
 Get the PSDU addressed to that PHY in a PPDU (useful for MU PPDU). More...
 
Time GetDurationUpToField (WifiPpduField field, const WifiTxVector &txVector) const
 Get the duration of the PPDU up to (but excluding) the given field. More...
 
virtual WifiMode GetMcs (uint8_t index) const
 Get the WifiMode corresponding to the given MCS index. More...
 
virtual uint16_t GetMeasurementChannelWidth (const Ptr< const WifiPpdu > ppdu) const
 Return the channel width used to measure the RSSI. More...
 
WifiPpduField GetNextField (WifiPpduField currentField, WifiPreamble preamble) const
 Return the field following the provided one. More...
 
virtual uint8_t GetNumModes (void) const
 
PhyHeaderSections GetPhyHeaderSections (const WifiTxVector &txVector, Time ppduStart) const
 Return a map of PHY header chunk information per PPDU field. More...
 
Time GetRemainingDurationAfterField (Ptr< const WifiPpdu > ppdu, WifiPpduField field) const
 Get the remaining duration of the PPDU after the end of the given field. More...
 
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. More...
 
virtual uint16_t GetTransmissionChannelWidth (Ptr< const WifiPpdu > ppdu) const
 Get the channel width over which the PPDU will be effectively be transmitted. More...
 
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. More...
 
virtual bool HandlesMcsModes (void) const
 Check if the WifiModes handled by this PHY are MCSs. More...
 
virtual bool IsMcsSupported (uint8_t index) const
 Check if the WifiMode corresponding to the given MCS index is supported. More...
 
virtual bool IsModeSupported (WifiMode mode) const
 Check if the WifiMode is supported. More...
 
bool NoEndPreambleDetectionEvents (void) const
 
void ResetReceive (Ptr< Event > event)
 Reset PHY at the end of the PPDU under reception after it has failed the PHY header. More...
 
void SetOwner (Ptr< WifiPhy > wifiPhy)
 Set the WifiPhy owning this PHY entity. More...
 
void StartReceiveField (WifiPpduField field, Ptr< Event > event)
 Start receiving a given field. More...
 
virtual void StartReceivePreamble (Ptr< WifiPpdu > ppdu, RxPowerWattPerChannelBand rxPowersW, Time rxDuration)
 Start receiving the PHY preamble of a PPDU (i.e. More...
 
virtual void StartTx (Ptr< WifiPpdu > ppdu)
 This function is called by SpectrumWifiPhy to send the PPDU while performing amendment-specific actions. More...
 
void Transmit (Time txDuration, Ptr< WifiPpdu > ppdu, std::string type)
 This function prepares most of the WifiSpectrumSignalParameters parameters and invokes SpectrumWifiPhy's Transmit method. More...
 
- Public Member Functions inherited from ns3::SimpleRefCount< PhyEntity >
 SimpleRefCount ()
 Default constructor. More...
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor. More...
 
uint32_t GetReferenceCount (void) const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment operator. More...
 
void Ref (void) const
 Increment the reference count. More...
 
void Unref (void) const
 Decrement the reference count. More...
 

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. More...
 
static uint16_t GetConstellationSize (const std::string &name)
 Return the constellation size from the DSSS or HR/DSSS mode's unique name using ModulationLookupTable. More...
 
static uint64_t GetDataRate (const std::string &name, WifiModulationClass modClass, uint16_t channelWidth, uint16_t guardInterval, uint8_t nss)
 Return the data rate from the DSSS or HR/DSSS mode's unique name and the supplied parameters. More...
 
static uint64_t GetDataRateFromTxVector (const WifiTxVector &txVector, uint16_t staId)
 Return the data rate corresponding to the supplied TXVECTOR. More...
 
static WifiMode GetDsssRate (uint64_t rate)
 Return a WifiMode for HR/DSSS corresponding to the provided rate. More...
 
static WifiMode GetDsssRate11Mbps (void)
 Return a WifiMode for HR/DSSS at 11 Mbps. More...
 
static WifiMode GetDsssRate1Mbps (void)
 Return a WifiMode for DSSS at 1 Mbps. More...
 
static WifiMode GetDsssRate2Mbps (void)
 Return a WifiMode for DSSS at 2 Mbps. More...
 
static WifiMode GetDsssRate5_5Mbps (void)
 Return a WifiMode for HR/DSSS at 5.5 Mbps. More...
 
static void InitializeModes (void)
 Initialize all HR/DSSS modes. More...
 
static bool IsModeAllowed (uint16_t channelWidth, uint8_t nss)
 Check whether the combination of <WifiMode, channel width, NSS> is allowed. More...
 

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. More...
 
PhyFieldRxStatus EndReceiveHeader (Ptr< Event > event)
 End receiving the header, perform DSSS-specific actions, and provide the status of the reception. More...
 
Time GetHeaderDuration (const WifiTxVector &txVector) const
 
WifiMode GetHeaderMode (const WifiTxVector &txVector) const
 
Time GetPreambleDuration (const WifiTxVector &txVector) const
 
Ptr< SpectrumValueGetTxPowerSpectralDensity (double txPowerW, 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. More...
 

Static Private Attributes

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

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. More...
 
typedef std::map< WifiPpduField, PhyHeaderChunkInfoPhyHeaderSections
 A map of PhyHeaderChunkInfo elements per PPDU field. More...
 
enum  PhyRxFailureAction { DROP = 0, ABORT, IGNORE }
 Action to perform in case of RX failure. More...
 
- Protected Types inherited from ns3::PhyEntity
typedef std::pair< WifiCodeRate, uint16_t > CodeRateConstellationSizePair
 A pair to hold modulation information: code rate and constellation size. More...
 
typedef std::map< std::string, CodeRateConstellationSizePairModulationLookupTable
 A modulation lookup table using unique name of modulation as key. More...
 
typedef std::map< WifiPreamble, std::vector< WifiPpduField > > PpduFormats
 A map of PPDU field elements per preamble type. More...
 
typedef std::pair< uint64_t, uint16_t > UidStaIdPair
 A pair of a UID and STA_ID. More...
 
- Protected Member Functions inherited from ns3::PhyEntity
void AbortCurrentReception (WifiPhyRxfailureReason reason)
 Abort the current reception. More...
 
void AddPreambleEvent (Ptr< Event > event)
 Add an entry to the map of current preamble events (stored in WifiPhy). More...
 
Ptr< EventCreateInterferenceEvent (Ptr< const WifiPpdu > ppdu, const WifiTxVector &txVector, Time duration, RxPowerWattPerChannelBand rxPower, bool isStartOfdmaRxing=false)
 Create an event using WifiPhy's InterferenceHelper class. More...
 
virtual void DoAbortCurrentReception (WifiPhyRxfailureReason reason)
 Perform amendment-specific actions before aborting the current reception. More...
 
virtual void DoEndReceivePayload (Ptr< const WifiPpdu > ppdu)
 Perform amendment-specific actions at the end of the reception of the payload. More...
 
virtual PhyFieldRxStatus DoEndReceivePreamble (Ptr< Event > event)
 End receiving the preamble, perform amendment-specific actions, and provide the status of the reception. More...
 
virtual Ptr< EventDoGetEvent (Ptr< const WifiPpdu > ppdu, RxPowerWattPerChannelBand rxPowersW)
 Get the event corresponding to the incoming PPDU. More...
 
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. More...
 
virtual bool DoStartReceiveField (WifiPpduField field, Ptr< Event > event)
 Start receiving a given field, perform amendment-specific actions, and signify if it is supported. More...
 
virtual void DoStartReceivePayload (Ptr< Event > event)
 Start receiving the PSDU (i.e. More...
 
void DropPreambleEvent (Ptr< const WifiPpdu > ppdu, WifiPhyRxfailureReason reason, Time endRx, uint16_t measurementChannelWidth)
 Drop the PPDU and the corresponding preamble detection event, but keep CCA busy state after the completion of the currently processed event. More...
 
void EndOfMpdu (Ptr< Event > event, Ptr< const WifiPsdu > psdu, size_t mpduIndex, Time relativeStart, Time mpduDuration)
 The last symbol of an MPDU in an A-MPDU has arrived. More...
 
void EndPreambleDetectionPeriod (Ptr< Event > event)
 End the preamble detection period. More...
 
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. More...
 
uint16_t GetCenterFrequencyForChannelWidth (const WifiTxVector &txVector) const
 Get the center frequency of the channel corresponding the current TxVector rather than that of the supported channel width. More...
 
virtual std::pair< uint16_t, WifiSpectrumBandGetChannelWidthAndBand (const WifiTxVector &txVector, uint16_t staId) const
 Get the channel width and band to use (will be overloaded by child classes). More...
 
Ptr< const EventGetCurrentEvent (void) const
 Get the pointer to the current event (stored in WifiPhy). More...
 
const std::map< std::pair< uint64_t, WifiPreamble >, Ptr< Event > > & GetCurrentPreambleEvents (void) const
 Get the map of current preamble events (stored in WifiPhy). More...
 
uint16_t GetGuardBandwidth (uint16_t 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. More...
 
double GetRandomValue (void) const
 Obtain a random value from the WifiPhy's generator. More...
 
std::pair< bool, SignalNoiseDbmGetReceptionStatus (Ptr< const WifiPsdu > psdu, Ptr< Event > event, uint16_t staId, Time relativeMpduStart, Time mpduDuration)
 Get the reception status for the provided MPDU and notify. More...
 
double GetRxPowerWForPpdu (Ptr< Event > event) const
 Obtain the received power (W) for a given band. More...
 
std::tuple< double, double, double > GetTxMaskRejectionParams (void) const
 
virtual bool IsConfigSupported (Ptr< const WifiPpdu > ppdu) const
 Checks if the signaled configuration (excluding bandwidth) is supported by the PHY. More...
 
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. More...
 
virtual uint64_t ObtainNextUid (const WifiTxVector &txVector)
 Obtain the next UID for the PPDU to transmit. More...
 
void ScheduleEndOfMpdus (Ptr< Event > event)
 Schedule end of MPDUs events. More...
 
void StartPreambleDetectionPeriod (Ptr< Event > event)
 Start the preamble detection period. More...
 
void StartReceivePayload (Ptr< Event > event)
 Start receiving the PSDU (i.e. More...
 
void UpdateInterferenceEvent (Ptr< Event > event, RxPowerWattPerChannelBand rxPower)
 Update an event in WifiPhy's InterferenceHelper class. More...
 
- Protected Attributes inherited from ns3::PhyEntity
std::vector< EventIdm_endOfMpduEvents
 the end of MPDU events (only used for A-MPDUs) More...
 
std::vector< EventIdm_endPreambleDetectionEvents
 the end of preamble detection events More...
 
std::vector< EventIdm_endRxPayloadEvents
 the end of receive events (only one unless UL MU reception) More...
 
std::list< WifiModem_modeList
 the list of supported modes More...
 
std::map< UidStaIdPair, SignalNoiseDbmm_signalNoiseMap
 Map of the latest signal power and noise power in dBm (noise power includes the noise figure) More...
 
Ptr< WifiPhyStateHelperm_state
 Pointer to WifiPhyStateHelper of the WifiPhy (to make it reachable for child classes) More...
 
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. More...
 
Ptr< WifiPhym_wifiPhy
 Pointer to the owning WifiPhy. More...
 
- Static Protected Attributes inherited from ns3::PhyEntity
static uint64_t m_globalPpduUid = 0
 Global counter of the PPDU UID. More...
 

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 45 of file dsss-phy.h.

Constructor & Destructor Documentation

◆ DsssPhy()

ns3::DsssPhy::DsssPhy ( )

Constructor for HR/DSSS PHY.

Definition at line 67 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 ( )
virtual

Destructor for HR/DSSS PHY.

Definition at line 78 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

This method is overridden by child classes to create their corresponding PPDU, e.g., HtPhy creates HtPpdu.

Reimplemented from ns3::PhyEntity.

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

References 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 275 of file dsss-phy.cc.

References ns3::WifiModeFactory::CreateWifiMode(), GetCodeRate(), GetConstellationSize(), GetDataRate(), GetDataRateFromTxVector(), IsModeAllowed(), 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 184 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 195 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 296 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 302 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,
uint16_t  channelWidth,
uint16_t  guardInterval,
uint8_t  nss 
)
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
channelWidththe considered channel width in MHz
guardIntervalthe considered guard interval duration in nanoseconds
nssthe considered number of streams
Returns
the data bit rate of this signal in bps.

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

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

Referenced by CreateDsssMode(), and 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 308 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 240 of file dsss-phy.cc.

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

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

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

◆ GetDsssRate11Mbps()

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

Return a WifiMode for HR/DSSS at 11 Mbps.

Returns
a WifiMode for HR/DSSS at 11 Mbps

Referenced by GetDsssRate().

+ Here is the caller graph for this function:

◆ GetDsssRate1Mbps()

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

Return a WifiMode for DSSS at 1 Mbps.

Returns
a WifiMode for DSSS at 1 Mbps

Referenced by GetDsssRate(), and GetHeaderMode().

+ Here is the caller graph for this function:

◆ GetDsssRate2Mbps()

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

Return a WifiMode for DSSS at 2 Mbps.

Returns
a WifiMode for DSSS at 2 Mbps

Referenced by GetDsssRate(), and GetHeaderMode().

+ Here is the caller graph for this function:

◆ GetDsssRate5_5Mbps()

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

Return a WifiMode for HR/DSSS at 5.5 Mbps.

Returns
a WifiMode for HR/DSSS at 5.5 Mbps

Referenced by 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

This method is overridden by child classes.

Reimplemented from ns3::PhyEntity.

Definition at line 119 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 152 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 97 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 ( void  ) const
overridevirtual

Get the maximum PSDU size in bytes (see Table 15-5 DSSS PHY characteristics of IEEE 802.11-2016)

Returns
the maximum PSDU size in bytes

Implements ns3::PhyEntity.

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

◆ 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 168 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 ( void  ) const
overridevirtual

Return the PPDU formats of the PHY.

This method should be implemented (overridden) by each child class introducing new formats.

Returns
the PPDU formats of the PHY

Implements ns3::PhyEntity.

Definition at line 113 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 136 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:

◆ 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

This method is overridden by child classes.

Reimplemented from ns3::PhyEntity.

Definition at line 84 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 ( double  txPowerW,
Ptr< const WifiPpdu ppdu 
) const
overrideprivatevirtual
Parameters
txPowerWpower in W 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 219 of file dsss-phy.cc.

References ns3::WifiSpectrumValueHelper::CreateDsssTxPowerSpectralDensity(), ns3::PhyEntity::GetCenterFrequencyForChannelWidth(), ns3::WifiTxVector::GetChannelWidth(), ns3::PhyEntity::GetGuardBandwidth(), NS_ABORT_MSG_IF, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ InitializeModes()

void ns3::DsssPhy::InitializeModes ( void  )
static

Initialize all HR/DSSS modes.

Definition at line 231 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:

◆ IsModeAllowed()

bool ns3::DsssPhy::IsModeAllowed ( uint16_t  channelWidth,
uint8_t  nss 
)
static

Check whether the combination of <WifiMode, channel width, NSS> is allowed.

This function is used as a callback for WifiMode operation, and always returns true since there is no limitation for any mode in DsssPhy.

Parameters
channelWidththe considered channel width in MHz
nssthe considered number of streams
Returns
true.

Definition at line 339 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 } }
}

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

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

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

◆ m_dsssPpduFormats

const PhyEntity::PpduFormats ns3::DsssPhy::m_dsssPpduFormats
staticprivate

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