Abstract class for PHY entities. More...
#include "phy-entity.h"
Classes | |
struct | PhyFieldRxStatus |
Status of the reception of the PPDU field. More... | |
struct | SnrPer |
A struct for both SNR and PER. More... | |
Public Types | |
typedef std::pair< std::pair< Time, Time >, WifiMode > | PhyHeaderChunkInfo |
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, PhyHeaderChunkInfo > | PhyHeaderSections |
A map of PhyHeaderChunkInfo elements per PPDU field. More... | |
enum | PhyRxFailureAction { DROP = 0 , ABORT , IGNORE } |
Action to perform in case of RX failure. More... | |
Public Member Functions | |
virtual | ~PhyEntity () |
Destructor for PHY entity. More... | |
std::list< WifiMode >::const_iterator | begin (void) const |
Return a const iterator to the first WifiMode. More... | |
virtual Ptr< WifiPpdu > | BuildPpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, Time ppduDuration) |
Build amendment-specific PPDU. 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... | |
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 WifiPsdu > | GetAddressedPsduInPpdu (Ptr< const WifiPpdu > ppdu) const |
Get the PSDU addressed to that PHY in a PPDU (useful for MU PPDU). More... | |
virtual Time | GetDuration (WifiPpduField field, const WifiTxVector &txVector) const |
Get the duration of the PPDU field (or group of fields) used by this entity for the given transmission parameters. More... | |
Time | GetDurationUpToField (WifiPpduField field, const WifiTxVector &txVector) const |
Get the duration of the PPDU up to (but excluding) the given field. More... | |
virtual uint32_t | GetMaxPsduSize (void) const =0 |
Get the maximum PSDU size in bytes. 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 |
virtual Time | GetPayloadDuration (uint32_t size, const WifiTxVector &txVector, WifiPhyBand band, MpduType mpdutype, bool incFlag, uint32_t &totalAmpduSize, double &totalAmpduNumSymbols, uint16_t staId) const =0 |
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 | GetRxChannelWidth (const WifiTxVector &txVector) const |
Return the channel width used in the reception spectrum model. More... | |
virtual WifiMode | GetSigMode (WifiPpduField field, const WifiTxVector &txVector) const |
Get the WifiMode for the SIG field specified by the PPDU 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 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[[maybe_unused]]) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount (void) const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= ([[maybe_unused]] const SimpleRefCount &o) |
Assignment operator. More... | |
void | Ref (void) const |
Increment the reference count. More... | |
void | Unref (void) const |
Decrement the reference count. More... | |
Protected Types | |
typedef std::pair< WifiCodeRate, uint16_t > | CodeRateConstellationSizePair |
A pair to hold modulation information: code rate and constellation size. More... | |
typedef std::map< std::string, CodeRateConstellationSizePair > | ModulationLookupTable |
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 | |
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< Event > | CreateInterferenceEvent (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 PhyFieldRxStatus | DoEndReceiveField (WifiPpduField field, Ptr< Event > event) |
End receiving a given field, perform amendment-specific actions, and provide the status of the 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< Event > | DoGetEvent (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, WifiSpectrumBand > | GetChannelWidthAndBand (const WifiTxVector &txVector, uint16_t staId) const |
Get the channel width and band to use (will be overloaded by child classes). More... | |
Ptr< const Event > | GetCurrentEvent (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... | |
virtual const PpduFormats & | GetPpduFormats (void) const =0 |
Return the PPDU formats of the PHY. More... | |
double | GetRandomValue (void) const |
Obtain a random value from the WifiPhy's generator. More... | |
std::pair< bool, SignalNoiseDbm > | GetReceptionStatus (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 Ptr< SpectrumValue > | GetTxPowerSpectralDensity (double txPowerW, Ptr< const WifiPpdu > ppdu) const =0 |
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... | |
void | NotifyPayloadBegin (const WifiTxVector &txVector, const Time &payloadDuration) |
Fire the trace indicating that the PHY is starting to receive the payload of a PPDU. 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, const RxPowerWattPerChannelBand &rxPower) |
Update an event in WifiPhy's InterferenceHelper class. More... | |
Protected Attributes | |
std::vector< EventId > | m_endOfMpduEvents |
the end of MPDU events (only used for A-MPDUs) More... | |
std::vector< EventId > | m_endPreambleDetectionEvents |
the end of preamble detection events More... | |
std::vector< EventId > | m_endRxPayloadEvents |
the end of receive events (only one unless UL MU reception) More... | |
std::list< WifiMode > | m_modeList |
the list of supported modes More... | |
std::map< UidStaIdPair, SignalNoiseDbm > | m_signalNoiseMap |
Map of the latest signal power and noise power in dBm (noise power includes the noise figure) More... | |
Ptr< WifiPhyStateHelper > | m_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< WifiPhy > | m_wifiPhy |
Pointer to the owning WifiPhy. More... | |
Static Protected Attributes | |
static uint64_t | m_globalPpduUid = 0 |
Global counter of the PPDU UID. More... | |
Abstract class for PHY entities.
This class enables to have a unique set of APIs to be used by each PHY entity, corresponding to the different amendments of the IEEE 802.11 standard.
Definition at line 93 of file phy-entity.h.
|
protected |
A pair to hold modulation information: code rate and constellation size.
Definition at line 482 of file phy-entity.h.
|
protected |
A modulation lookup table using unique name of modulation as key.
Definition at line 487 of file phy-entity.h.
typedef std::pair<std::pair<Time , Time >, WifiMode> ns3::PhyEntity::PhyHeaderChunkInfo |
A pair containing information on the PHY header chunk, namely the start and stop times of the chunk and the WifiMode used.
Definition at line 296 of file phy-entity.h.
typedef std::map<WifiPpduField, PhyHeaderChunkInfo> ns3::PhyEntity::PhyHeaderSections |
A map of PhyHeaderChunkInfo elements per PPDU field.
Definition at line 301 of file phy-entity.h.
|
protected |
A map of PPDU field elements per preamble type.
This corresponds to the different PPDU formats introduced by each amendment.
Definition at line 477 of file phy-entity.h.
|
protected |
A pair of a UID and STA_ID.
Definition at line 804 of file phy-entity.h.
Action to perform in case of RX failure.
Enumerator | |
---|---|
DROP | drop PPDU and set CCA_BUSY |
ABORT | abort reception of PPDU |
IGNORE | ignore the reception |
Definition at line 100 of file phy-entity.h.
|
virtual |
Destructor for PHY entity.
Definition at line 75 of file phy-entity.cc.
References CancelAllEvents(), m_modeList, and NS_LOG_FUNCTION.
|
protected |
Abort the current reception.
reason | the reason the reception is aborted |
Definition at line 958 of file phy-entity.cc.
References ns3::WifiPhy::AbortCurrentReception(), DoAbortCurrentReception(), m_wifiPhy, and NS_LOG_FUNCTION.
Referenced by EndReceiveField(), and StartReceivePreamble().
Add an entry to the map of current preamble events (stored in WifiPhy).
Wrapper used by child classes.
event | the event holding incoming PPDU's information |
Definition at line 732 of file phy-entity.cc.
References ns3::WifiPhy::m_currentPreambleEvents, m_wifiPhy, and NS_LOG_FUNCTION.
Referenced by ns3::HePhy::DoGetEvent().
Return a const iterator to the first WifiMode.
Definition at line 130 of file phy-entity.cc.
References m_modeList.
|
virtual |
Build amendment-specific PPDU.
psdus | the PHY payloads (PSDUs) |
txVector | the TXVECTOR that was used for the PPDU |
ppduDuration | the transmission duration of the PPDU |
Reimplemented in ns3::VhtPhy, ns3::OfdmPhy, ns3::ErpOfdmPhy, ns3::DsssPhy, ns3::HtPhy, and ns3::HePhy.
Definition at line 230 of file phy-entity.cc.
References NS_FATAL_ERROR, and NS_LOG_FUNCTION.
Time ns3::PhyEntity::CalculatePhyPreambleAndHeaderDuration | ( | const WifiTxVector & | txVector | ) | const |
txVector | the transmission parameters |
Definition at line 188 of file phy-entity.cc.
References GetDuration(), ns3::MicroSeconds(), ns3::WIFI_PPDU_FIELD_DATA, and ns3::WIFI_PPDU_FIELD_PREAMBLE.
Referenced by DoStartReceivePayload(), ns3::HePhy::DoStartReceivePayload(), EndReceivePayload(), GetDurationUpToField(), ScheduleEndOfMpdus(), ns3::HePhy::StartReceiveOfdmaPayload(), and StartReceivePayload().
|
virtual |
psduMap | the PSDU(s) to transmit indexed by STA-ID |
txVector | the TXVECTOR used for the transmission of the PPDU |
band | the frequency band being used |
Reimplemented in ns3::HePhy.
Definition at line 1086 of file phy-entity.cc.
References ns3::WifiPhy::CalculateTxDuration(), and NS_ASSERT.
|
virtual |
Cancel and clear all running events.
Reimplemented in ns3::HePhy.
Definition at line 914 of file phy-entity.cc.
References m_endOfMpduEvents, m_endPreambleDetectionEvents, m_endRxPayloadEvents, and NS_LOG_FUNCTION.
Referenced by ~PhyEntity(), and ns3::HePhy::CancelAllEvents().
void ns3::PhyEntity::CancelRunningEndPreambleDetectionEvents | ( | bool | clear = false | ) |
Cancel and eventually clear all end preamble detection events.
clear | whether to clear the end preamble detection events' list |
Definition at line 941 of file phy-entity.cc.
References m_endPreambleDetectionEvents, and NS_LOG_FUNCTION.
|
protected |
Create an event using WifiPhy's InterferenceHelper class.
Wrapper used by child classes.
Add the PPDU-related signal to interference helper.
ppdu | the PPDU |
txVector | the TXVECTOR |
duration | the PPDU duration |
rxPower | received power per band (W) |
isStartOfdmaRxing | flag whether the event corresponds to the start of the OFDMA payload reception (only used for UL-OFDMA) //TODO simplify this once WifiPpdu is subclassed by adding an attribute |
Definition at line 752 of file phy-entity.cc.
References ns3::WifiPhy::m_interference, and m_wifiPhy.
Referenced by DoGetEvent(), ns3::HePhy::DoGetEvent(), and ns3::HePhy::StartReceivePreamble().
|
protectedvirtual |
Perform amendment-specific actions before aborting the current reception.
reason | the reason the reception is aborted |
Reimplemented in ns3::HePhy.
Definition at line 966 of file phy-entity.cc.
References ns3::WifiPhy::m_currentEvent, m_endOfMpduEvents, m_wifiPhy, and NS_LOG_FUNCTION.
Referenced by AbortCurrentReception(), and ns3::HePhy::DoAbortCurrentReception().
|
protectedvirtual |
End receiving a given field, perform amendment-specific actions, and provide the status of the reception.
field | the ending PPDU field |
event | the event holding incoming PPDU's information |
Reimplemented in ns3::VhtPhy, ns3::OfdmPhy, ns3::DsssPhy, and ns3::HtPhy.
Definition at line 352 of file phy-entity.cc.
References DoEndReceivePreamble(), NS_ASSERT, NS_LOG_FUNCTION, ns3::WIFI_PPDU_FIELD_DATA, and ns3::WIFI_PPDU_FIELD_PREAMBLE.
Referenced by ns3::DsssPhy::DoEndReceiveField(), ns3::OfdmPhy::DoEndReceiveField(), and EndReceiveField().
Perform amendment-specific actions at the end of the reception of the payload.
ppdu | the incoming PPDU |
Reimplemented in ns3::HePhy.
Definition at line 673 of file phy-entity.cc.
References ns3::WifiPhy::GetLastRxEndTime(), ns3::WifiPhy::m_currentEvent, ns3::WifiPhy::m_currentPreambleEvents, m_endRxPayloadEvents, m_wifiPhy, NotifyInterferenceRxEndAndClear(), ns3::Simulator::Now(), NS_ASSERT, and NS_LOG_FUNCTION.
Referenced by ns3::HePhy::DoEndReceivePayload(), and EndReceivePayload().
|
protectedvirtual |
End receiving the preamble, perform amendment-specific actions, and provide the status of the reception.
event | the event holding incoming PPDU's information |
Definition at line 781 of file phy-entity.cc.
References ns3::WifiPhy::m_currentPreambleEvents, m_wifiPhy, NS_ASSERT, and NS_LOG_FUNCTION.
Referenced by DoEndReceiveField().
|
protectedvirtual |
Get the event corresponding to the incoming PPDU.
We store all incoming preamble events, perform amendment-specific actions, and a decision is made at the end of the preamble detection window.
ppdu | the incoming PPDU |
rxPowersW | the receive power in W per band |
Reimplemented in ns3::HePhy.
Definition at line 740 of file phy-entity.cc.
References CreateInterferenceEvent(), ns3::WifiPhy::m_currentPreambleEvents, m_wifiPhy, and NS_ASSERT.
Referenced by ns3::HePhy::DoGetEvent(), and StartReceivePreamble().
Perform amendment-specific actions before resetting PHY at the end of the PPDU under reception after it has failed the PHY header.
event | the event holding incoming PPDU's information |
Reimplemented in ns3::HePhy.
Definition at line 990 of file phy-entity.cc.
References ns3::Simulator::Now(), NS_ASSERT, and NS_LOG_FUNCTION.
Referenced by ResetReceive().
|
protectedvirtual |
Start receiving a given field, perform amendment-specific actions, and signify if it is supported.
field | the starting PPDU field |
event | the event holding incoming PPDU's information |
true
if the field is supported, false
otherwise Definition at line 334 of file phy-entity.cc.
References GetPpduFormats(), NS_ASSERT, NS_LOG_FUNCTION, ns3::WIFI_PPDU_FIELD_DATA, and ns3::WIFI_PPDU_FIELD_PREAMBLE.
Referenced by StartReceiveField().
Start receiving the PSDU (i.e.
the first symbol of the PSDU has arrived) and perform amendment-specific actions.
event | the event holding incoming PPDU's information |
Reimplemented in ns3::HePhy.
Definition at line 543 of file phy-entity.cc.
References CalculatePhyPreambleAndHeaderDuration(), EndReceivePayload(), GetStaId(), m_endRxPayloadEvents, m_signalNoiseMap, m_statusPerMpduMap, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), and ScheduleEndOfMpdus().
Referenced by ns3::HePhy::DoStartReceivePayload(), and StartReceivePayload().
|
protected |
Drop the PPDU and the corresponding preamble detection event, but keep CCA busy state after the completion of the currently processed event.
ppdu | the incoming PPDU |
reason | the reason the PPDU is dropped |
endRx | the end of the incoming PPDU's reception |
measurementChannelWidth | the measurement width (in MHz) to consider for the PPDU |
Definition at line 484 of file phy-entity.cc.
References GetAddressedPsduInPpdu(), ns3::WifiPhy::m_currentPreambleEvents, m_state, m_wifiPhy, ns3::WifiPhy::NotifyRxDrop(), ns3::Simulator::Now(), NS_LOG_FUNCTION, and ns3::WifiPhy::SwitchMaybeToCcaBusy().
Referenced by EndPreambleDetectionPeriod(), and StartReceivePreamble().
Return a const iterator to past-the-last WifiMode.
Definition at line 136 of file phy-entity.cc.
References m_modeList.
Referenced by grid.TimelinesRenderer::draw_events(), and grid.TimelinesRenderer::draw_ranges().
|
protected |
The last symbol of an MPDU in an A-MPDU has arrived.
event | the event holding incoming PPDU's information |
psdu | the arriving MPDU formatted as a PSDU containing a normal MPDU |
mpduIndex | the index of the MPDU within the A-MPDU |
relativeStart | the relative start time of the MPDU within the A-MPDU. |
mpduDuration | the duration of the MPDU |
Definition at line 603 of file phy-entity.cc.
References ns3::Time::As(), ns3::Copy(), GetAddressedPsduInPpdu(), GetReceptionStatus(), GetStaId(), m_signalNoiseMap, m_state, m_statusPerMpduMap, ns3::Time::NS, NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::RxSignalInfo::rssi, and ns3::RxSignalInfo::snr.
Referenced by ScheduleEndOfMpdus().
End the preamble detection period.
The PHY will focus on the strongest PPDU and drop others. In addition, in case of successful detection, the end of the preamble reception is triggered (
event | the event holding incoming PPDU's information |
Definition at line 798 of file phy-entity.cc.
References ns3::BUSY_DECODING_PREAMBLE, ns3::EventId::Cancel(), DropPreambleEvent(), EndReceiveField(), GetAddressedPsduInPpdu(), GetDuration(), GetMeasurementChannelWidth(), ns3::WifiPhy::GetMeasurementChannelWidth(), ns3::WifiPhy::GetPreambleDetectionDuration(), ns3::WifiPhy::GetPrimaryBand(), ns3::EventId::IsExpired(), ns3::WifiPhy::IsStateRx(), ns3::WifiPhy::m_currentEvent, ns3::WifiPhy::m_currentPreambleEvents, ns3::WifiPhy::m_endPhyRxEvent, ns3::WifiPhy::m_interference, ns3::WifiPhy::m_phyEntities, ns3::WifiPhy::m_preambleDetectionModel, m_state, ns3::WifiPhy::m_timeLastPreambleDetected, m_wifiPhy, ns3::WifiPhy::NotifyRxBegin(), ns3::WifiPhy::NotifyRxDrop(), ns3::Simulator::Now(), NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::PREAMBLE_DETECT_FAILURE, ns3::PREAMBLE_DETECTION_PACKET_SWITCH, ns3::RatioToDb(), ns3::Simulator::Schedule(), and ns3::WIFI_PPDU_FIELD_PREAMBLE.
Referenced by StartPreambleDetectionPeriod().
void ns3::PhyEntity::EndReceiveField | ( | WifiPpduField | field, |
Ptr< Event > | event | ||
) |
End receiving a given field.
This method will call the DoEndReceiveField to obtain the outcome of the reception. In case of success, reception of the next field is triggered. In case of failure, the indications in the returned
field | the ending PPDU field |
event | the event holding incoming PPDU's information |
Definition at line 281 of file phy-entity.cc.
References ABORT, AbortCurrentReception(), ns3::PhyEntity::PhyFieldRxStatus::actionIfFailure, DoEndReceiveField(), DROP, ns3::FILTERED, GetAddressedPsduInPpdu(), GetMeasurementChannelWidth(), GetNextField(), ns3::WifiTxVector::GetPreambleType(), GetRemainingDurationAfterField(), IGNORE, ns3::EventId::IsExpired(), ns3::PhyEntity::PhyFieldRxStatus::isSuccess, ns3::WifiPhy::m_endPhyRxEvent, m_endRxPayloadEvents, ns3::WifiPhy::m_phyRxPayloadBeginTrace, m_state, m_wifiPhy, ns3::NanoSeconds(), ns3::WifiPhy::NotifyRxDrop(), ns3::Simulator::Now(), NS_ASSERT, NS_FATAL_ERROR, NS_LOG_FUNCTION, ns3::PhyEntity::PhyFieldRxStatus::reason, ResetReceive(), ns3::Simulator::Schedule(), StartReceiveField(), and ns3::WifiPhy::SwitchMaybeToCcaBusy().
Referenced by EndPreambleDetectionPeriod(), and StartReceiveField().
The last symbol of the PPDU has arrived.
event | the event holding incoming PPDU's information |
Definition at line 634 of file phy-entity.cc.
References CalculatePhyPreambleAndHeaderDuration(), ns3::Copy(), DoEndReceivePayload(), GetAddressedPsduInPpdu(), GetChannelWidthAndBand(), ns3::WifiPhy::GetFrequency(), GetMeasurementChannelWidth(), ns3::WifiTxVector::GetNss(), GetStaId(), ns3::WifiPhy::m_interference, ns3::WifiPhy::m_previouslyRxPpduUid, m_signalNoiseMap, m_state, m_statusPerMpduMap, m_wifiPhy, ns3::WifiPhy::NotifyMonitorSniffRx(), ns3::WifiPhy::NotifyRxEnd(), ns3::Simulator::Now(), NS_ASSERT, NS_LOG_FUNCTION, ns3::RxSignalInfo::rssi, ns3::RxSignalInfo::snr, and ns3::WifiPhy::SwitchMaybeToCcaBusy().
Referenced by DoStartReceivePayload(), and ns3::HePhy::StartReceiveOfdmaPayload().
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.
ppdu | the incoming PPDU |
rxDuration | the duration of the PPDU |
Definition at line 501 of file phy-entity.cc.
References GetMeasurementChannelWidth(), ns3::WifiPhy::m_currentPreambleEvents, m_state, m_wifiPhy, NS_LOG_FUNCTION, ns3::WifiPhy::Reset(), and ns3::WifiPhy::SwitchMaybeToCcaBusy().
Referenced by ns3::HePhy::StartReceivePreamble().
|
virtual |
Get the PSDU addressed to that PHY in a PPDU (useful for MU PPDU).
ppdu | the PPDU to extract the PSDU from |
Reimplemented in ns3::HePhy.
Definition at line 205 of file phy-entity.cc.
Referenced by DropPreambleEvent(), EndOfMpdu(), EndPreambleDetectionPeriod(), EndReceiveField(), EndReceivePayload(), ns3::HePhy::GetAddressedPsduInPpdu(), and ScheduleEndOfMpdus().
|
protected |
Get the center frequency of the channel corresponding the current TxVector rather than that of the supported channel width.
Consider that this "primary channel" is on the lower part for the time being.
txVector | the TXVECTOR that has the channel width that is to be used |
Definition at line 1034 of file phy-entity.cc.
References ns3::WifiTxVector::GetChannelWidth(), ns3::WifiPhy::GetOperatingChannel(), ns3::WifiPhyOperatingChannel::GetPrimaryChannelCenterFrequency(), m_wifiPhy, and NS_LOG_FUNCTION.
Referenced by ns3::HePhy::GetCenterFrequencyForNonOfdmaPart(), ns3::HePhy::GetTxPowerSpectralDensity(), ns3::HtPhy::GetTxPowerSpectralDensity(), ns3::DsssPhy::GetTxPowerSpectralDensity(), ns3::OfdmPhy::GetTxPowerSpectralDensity(), and Transmit().
|
protectedvirtual |
Get the channel width and band to use (will be overloaded by child classes).
txVector | the transmission parameters |
staId | the station ID of the PSDU |
Reimplemented in ns3::HePhy.
Definition at line 719 of file phy-entity.cc.
References ns3::WifiPhy::GetPrimaryBand(), GetRxChannelWidth(), and m_wifiPhy.
Referenced by EndReceivePayload(), ns3::HePhy::GetChannelWidthAndBand(), and GetReceptionStatus().
Get the pointer to the current event (stored in WifiPhy).
Wrapper used by child classes.
Definition at line 1009 of file phy-entity.cc.
References ns3::WifiPhy::m_currentEvent, and m_wifiPhy.
Referenced by ns3::HePhy::DoGetEvent(), ns3::HePhy::StartReceiveOfdmaPayload(), and ns3::HePhy::StartReceivePreamble().
|
protected |
Get the map of current preamble events (stored in WifiPhy).
Wrapper used by child classes.
Definition at line 726 of file phy-entity.cc.
References ns3::WifiPhy::m_currentPreambleEvents, and m_wifiPhy.
Referenced by ns3::HePhy::DoGetEvent().
|
virtual |
Get the duration of the PPDU field (or group of fields) used by this entity for the given transmission parameters.
field | the PPDU field (or group of fields) |
txVector | the transmission parameters |
Reimplemented in ns3::VhtPhy, ns3::OfdmPhy, ns3::DsssPhy, and ns3::HtPhy.
Definition at line 178 of file phy-entity.cc.
References ns3::MicroSeconds(), NS_FATAL_ERROR, and ns3::WIFI_PPDU_FIELD_SIG_B.
Referenced by CalculatePhyPreambleAndHeaderDuration(), EndPreambleDetectionPeriod(), ns3::HtPhy::GetDuration(), ns3::DsssPhy::GetDuration(), ns3::OfdmPhy::GetDuration(), GetPhyHeaderSections(), GetRemainingDurationAfterField(), and StartReceiveField().
Time ns3::PhyEntity::GetDurationUpToField | ( | WifiPpduField | field, |
const WifiTxVector & | txVector | ||
) | const |
Get the duration of the PPDU up to (but excluding) the given field.
field | the considered PPDU field |
txVector | the transmission parameters |
Definition at line 238 of file phy-entity.cc.
References CalculatePhyPreambleAndHeaderDuration(), GetPhyHeaderSections(), ns3::NanoSeconds(), NS_ASSERT, and ns3::WIFI_PPDU_FIELD_DATA.
Referenced by GetRemainingDurationAfterField().
|
protected |
currentChannelWidth | channel width of the current transmission (MHz) |
Wrapper method used by child classes for PSD generation. Note that this method is necessary for testing UL OFDMA.
Definition at line 1074 of file phy-entity.cc.
References ns3::WifiPhy::GetGuardBandwidth(), and m_wifiPhy.
Referenced by ns3::HePhy::GetNonOfdmaBand(), ns3::HePhy::GetRuBandForRx(), ns3::HePhy::GetRuBandForTx(), ns3::HePhy::GetTxPowerSpectralDensity(), ns3::HtPhy::GetTxPowerSpectralDensity(), ns3::DsssPhy::GetTxPowerSpectralDensity(), and ns3::OfdmPhy::GetTxPowerSpectralDensity().
|
pure virtual |
Get the maximum PSDU size in bytes.
Implemented in ns3::VhtPhy, ns3::OfdmPhy, ns3::ErpOfdmPhy, ns3::DsssPhy, ns3::HtPhy, and ns3::HePhy.
|
virtual |
Get the WifiMode corresponding to the given MCS index.
index | the index of the MCS |
This method should be used only for HtPhy and child classes.
Reimplemented in ns3::HtPhy.
Definition at line 110 of file phy-entity.cc.
References NS_ABORT_MSG.
|
virtual |
Return the channel width used to measure the RSSI.
ppdu | the PPDU that is being received |
Reimplemented in ns3::HePhy.
Definition at line 1015 of file phy-entity.cc.
References GetRxChannelWidth().
Referenced by EndPreambleDetectionPeriod(), EndReceiveField(), EndReceivePayload(), ErasePreambleEvent(), ns3::HePhy::GetMeasurementChannelWidth(), GetPhyHeaderSnrPer(), GetRxPowerWForPpdu(), and StartReceivePreamble().
WifiPpduField ns3::PhyEntity::GetNextField | ( | WifiPpduField | currentField, |
WifiPreamble | preamble | ||
) | const |
Return the field following the provided one.
currentField | the considered PPDU field |
preamble | the preamble indicating the PPDU format |
Definition at line 149 of file phy-entity.cc.
References GetPpduFormats(), NS_FATAL_ERROR, and ns3::WIFI_PPDU_FIELD_PREAMBLE.
Referenced by EndReceiveField(), and GetPhyHeaderSections().
|
virtual |
Definition at line 104 of file phy-entity.cc.
References m_modeList.
|
pure virtual |
size | the number of bytes in the packet to send |
txVector | the TXVECTOR used for the transmission of this packet |
band | the frequency band |
mpdutype | the type of the MPDU as defined in WifiPhy::MpduType. |
incFlag | this 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. |
totalAmpduSize | the total size of the previously transmitted MPDUs for the concerned A-MPDU. If incFlag is set, this parameter will be updated. |
totalAmpduNumSymbols | the 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. |
staId | the STA-ID of the PSDU (only used for MU PPDUs) |
Implemented in ns3::OfdmPhy, ns3::DsssPhy, and ns3::HtPhy.
PhyEntity::PhyHeaderSections ns3::PhyEntity::GetPhyHeaderSections | ( | const WifiTxVector & | txVector, |
Time | ppduStart | ||
) | const |
Return a map of PHY header chunk information per PPDU field.
This map will contain the PPDU fields that are actually present based on the txVector
information.
txVector | the transmission parameters |
ppduStart | the time at which the PPDU started |
Definition at line 211 of file phy-entity.cc.
References GetDuration(), GetNextField(), ns3::WifiTxVector::GetPreambleType(), GetSigMode(), visualizer.core::start(), ns3::WIFI_PPDU_FIELD_DATA, and ns3::WIFI_PPDU_FIELD_PREAMBLE.
Referenced by GetDurationUpToField().
|
protected |
Obtain the SNR and PER of the PPDU field from the WifiPhy's InterferenceHelper class.
Wrapper used by child classes.
field | the PPDU field |
event | the event holding incoming PPDU's information |
Definition at line 252 of file phy-entity.cc.
References GetMeasurementChannelWidth(), ns3::WifiPhy::GetPrimaryBand(), ns3::WifiPhy::m_interference, and m_wifiPhy.
Referenced by ns3::DsssPhy::EndReceiveHeader(), ns3::OfdmPhy::EndReceiveHeader(), ns3::HtPhy::EndReceiveHtSig(), ns3::VhtPhy::EndReceiveSigA(), and ns3::VhtPhy::EndReceiveSigB().
|
protectedpure virtual |
Return the PPDU formats of the PHY.
Implemented in ns3::VhtPhy, ns3::OfdmPhy, ns3::DsssPhy, ns3::HtPhy, and ns3::HePhy.
Referenced by DoStartReceiveField(), and GetNextField().
|
protected |
Obtain a random value from the WifiPhy's generator.
Wrapper used by child classes.
Definition at line 997 of file phy-entity.cc.
References ns3::UniformRandomVariable::GetValue(), ns3::WifiPhy::m_random, and m_wifiPhy.
Referenced by ns3::DsssPhy::EndReceiveHeader(), ns3::OfdmPhy::EndReceiveHeader(), ns3::HtPhy::EndReceiveHtSig(), ns3::VhtPhy::EndReceiveSigA(), ns3::VhtPhy::EndReceiveSigB(), and GetReceptionStatus().
|
protected |
Get the reception status for the provided MPDU and notify.
psdu | the arriving MPDU formatted as a PSDU |
event | the event holding incoming PPDU's information |
staId | the station ID of the PSDU (only used for MU) |
relativeMpduStart | the relative start time of the MPDU within the A-MPDU. 0 for normal MPDUs |
mpduDuration | the duration of the MPDU |
Definition at line 685 of file phy-entity.cc.
References ns3::Time::As(), ns3::Packet::Copy(), GetChannelWidthAndBand(), ns3::WifiMode::GetDataRate(), ns3::WifiPsdu::GetPacket(), GetRandomValue(), ns3::WifiPsdu::GetSize(), ns3::WifiPhy::m_interference, ns3::WifiPhy::m_postReceptionErrorModel, m_wifiPhy, ns3::SignalNoiseDbm::noise, ns3::Time::NS, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::PhyEntity::SnrPer::per, ns3::RatioToDb(), ns3::SignalNoiseDbm::signal, ns3::PhyEntity::SnrPer::snr, and ns3::WToDbm().
Referenced by EndOfMpdu().
Time ns3::PhyEntity::GetRemainingDurationAfterField | ( | Ptr< const WifiPpdu > | ppdu, |
WifiPpduField | field | ||
) | const |
Get the remaining duration of the PPDU after the end of the given field.
field | the considered PPDU field |
ppdu | the received PPDU |
Definition at line 327 of file phy-entity.cc.
References GetDuration(), and GetDurationUpToField().
Referenced by EndReceiveField().
|
virtual |
Return the channel width used in the reception spectrum model.
txVector | the TXVECTOR of the PPDU that is being received |
Reimplemented in ns3::DsssPhy.
Definition at line 1021 of file phy-entity.cc.
References ns3::WifiPhy::GetChannelWidth(), ns3::WifiTxVector::GetChannelWidth(), m_wifiPhy, and min.
Referenced by GetChannelWidthAndBand(), GetMeasurementChannelWidth(), and ns3::DsssPhy::GetRxChannelWidth().
Obtain the received power (W) for a given band.
Wrapper used by child classes.
event | the event holding incoming PPDU's information |
Definition at line 1003 of file phy-entity.cc.
References GetMeasurementChannelWidth(), ns3::WifiPhy::GetPrimaryBand(), and m_wifiPhy.
Referenced by ns3::HePhy::ProcessSigA(), and StartPreambleDetectionPeriod().
|
virtual |
Get the WifiMode for the SIG field specified by the PPDU field.
field | the PPDU field |
txVector | the transmission parameters |
Reimplemented in ns3::VhtPhy, ns3::OfdmPhy, ns3::DsssPhy, ns3::HtPhy, and ns3::HePhy.
Definition at line 142 of file phy-entity.cc.
References NS_FATAL_ERROR.
Referenced by GetPhyHeaderSections(), ns3::HtPhy::GetSigMode(), ns3::DsssPhy::GetSigMode(), and ns3::OfdmPhy::GetSigMode().
Return the STA ID that has been assigned to the station this PHY belongs to.
This is typically called for MU PPDUs, in order to pick the correct PSDU.
ppdu | the PPDU for which the STA ID is requested |
Reimplemented in OfdmaTestHePhy, and ns3::HePhy.
Definition at line 522 of file phy-entity.cc.
References SU_STA_ID.
Referenced by DoStartReceivePayload(), EndOfMpdu(), EndReceivePayload(), ns3::HePhy::GetStaId(), and ScheduleEndOfMpdus().
|
protected |
Wrapper method used by child classes for PSD generation.
Definition at line 1080 of file phy-entity.cc.
References ns3::WifiPhy::GetTxMaskRejectionParams(), and m_wifiPhy.
Referenced by ns3::HePhy::GetTxPowerSpectralDensity(), ns3::HtPhy::GetTxPowerSpectralDensity(), and ns3::OfdmPhy::GetTxPowerSpectralDensity().
|
protectedpure virtual |
txPowerW | power in W to spread across the bands |
ppdu | the PPDU that will be transmitted |
This is a helper function to create the right TX PSD corresponding to the amendment of this PHY.
Implemented in ns3::OfdmPhy, ns3::DsssPhy, ns3::HtPhy, and ns3::HePhy.
Referenced by Transmit().
|
virtual |
Get a WifiConstPsduMap from a PSDU and the TXVECTOR to use to send the PSDU.
The STA-ID value is properly determined based on whether the given PSDU has to be transmitted as a DL or UL frame.
psdu | the given PSDU |
txVector | the TXVECTOR to use to send the PSDU |
Reimplemented in ns3::HePhy.
Definition at line 199 of file phy-entity.cc.
References SU_STA_ID.
|
virtual |
Check if the WifiModes handled by this PHY are MCSs.
Reimplemented in ns3::HtPhy.
Definition at line 124 of file phy-entity.cc.
Checks if the signaled configuration (excluding bandwidth) is supported by the PHY.
ppdu | the received PPDU |
true
if supported, false
otherwise Reimplemented in ns3::HtPhy, and ns3::HePhy.
Definition at line 902 of file phy-entity.cc.
References IsModeSupported(), and NS_LOG_DEBUG.
Referenced by ns3::DsssPhy::EndReceiveHeader(), and ns3::OfdmPhy::IsAllConfigSupported().
|
virtual |
Check if the WifiMode corresponding to the given MCS index is supported.
index | the index of the MCS |
Will return false for non-MCS modes.
Reimplemented in ns3::HtPhy.
Definition at line 117 of file phy-entity.cc.
References NS_ABORT_MSG.
|
virtual |
Check if the WifiMode is supported.
mode | the WifiMode to check |
Definition at line 91 of file phy-entity.cc.
References m_modeList.
Referenced by IsConfigSupported(), ns3::HePhy::IsConfigSupported(), and ns3::HtPhy::IsConfigSupported().
bool ns3::PhyEntity::NoEndPreambleDetectionEvents | ( | void | ) | const |
true
if there is no end preamble detection event running, false
otherwise Definition at line 935 of file phy-entity.cc.
References m_endPreambleDetectionEvents.
|
protected |
Notify WifiPhy's InterferenceHelper of the end of the reception, clear maps and end of MPDU event, and eventually reset WifiPhy.
reset | whether to reset WifiPhy |
Definition at line 764 of file phy-entity.cc.
References m_endOfMpduEvents, ns3::WifiPhy::m_interference, m_signalNoiseMap, m_statusPerMpduMap, m_wifiPhy, ns3::Simulator::Now(), NS_ASSERT, and ns3::WifiPhy::Reset().
Referenced by DoEndReceivePayload(), and ns3::HePhy::DoEndReceivePayload().
|
protected |
Fire the trace indicating that the PHY is starting to receive the payload of a PPDU.
txVector | the TXVECTOR used to transmit the PPDU |
payloadDuration | the TX duration of the PPDU payload |
Definition at line 1042 of file phy-entity.cc.
References ns3::WifiPhy::m_phyRxPayloadBeginTrace, and m_wifiPhy.
Referenced by ns3::HePhy::StartReceiveOfdmaPayload().
|
protectedvirtual |
Obtain the next UID for the PPDU to transmit.
Note that the global UID counter could be incremented.
txVector | the transmission parameters |
Reimplemented in ns3::HePhy.
Definition at line 1027 of file phy-entity.cc.
References m_globalPpduUid, and NS_LOG_FUNCTION.
Referenced by ns3::HtPhy::BuildPpdu(), ns3::DsssPhy::BuildPpdu(), ns3::ErpOfdmPhy::BuildPpdu(), ns3::OfdmPhy::BuildPpdu(), and ns3::VhtPhy::BuildPpdu().
Reset PHY at the end of the PPDU under reception after it has failed the PHY header.
event | the event holding incoming PPDU's information |
Definition at line 980 of file phy-entity.cc.
References DoResetReceive(), m_endRxPayloadEvents, m_wifiPhy, NS_ASSERT, NS_LOG_FUNCTION, and ns3::WifiPhy::ResetReceive().
Referenced by ns3::HePhy::DoStartReceivePayload(), and EndReceiveField().
Schedule end of MPDUs events.
event | the event holding incoming PPDU's information |
Definition at line 557 of file phy-entity.cc.
References ns3::Time::As(), ns3::WifiPsdu::begin(), CalculatePhyPreambleAndHeaderDuration(), ns3::WifiPsdu::end(), EndOfMpdu(), ns3::FIRST_MPDU_IN_AGGREGATE, GetAddressedPsduInPpdu(), ns3::WifiPsdu::GetAmpduSubframeSize(), ns3::WifiTxVector::GetGuardInterval(), ns3::WifiPsdu::GetNMpdus(), ns3::WifiPhy::GetPayloadDuration(), ns3::WifiPhy::GetPhyBand(), ns3::WifiPsdu::GetSize(), GetStaId(), ns3::WifiPsdu::IsSingle(), ns3::Time::IsZero(), ns3::LAST_MPDU_IN_AGGREGATE, m_endOfMpduEvents, m_wifiPhy, ns3::MIDDLE_MPDU_IN_AGGREGATE, ns3::NanoSeconds(), ns3::NORMAL_MPDU, ns3::Time::NS, NS_LOG_FUNCTION, NS_LOG_INFO, ns3::Simulator::Schedule(), and ns3::SINGLE_MPDU.
Referenced by DoStartReceivePayload(), and ns3::HePhy::StartReceiveOfdmaPayload().
Set the WifiPhy owning this PHY entity.
wifiPhy | the WifiPhy owning this PHY entity |
Definition at line 83 of file phy-entity.cc.
References m_state, ns3::WifiPhy::m_state, m_wifiPhy, and NS_LOG_FUNCTION.
Referenced by OfdmaSpectrumWifiPhy::OfdmaSpectrumWifiPhy().
Start the preamble detection period.
event | the event holding incoming PPDU's information |
Definition at line 789 of file phy-entity.cc.
References EndPreambleDetectionPeriod(), ns3::WifiPhy::GetPreambleDetectionDuration(), GetRxPowerWForPpdu(), m_endPreambleDetectionEvents, ns3::WifiPhy::m_interference, m_wifiPhy, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), and ns3::WToDbm().
Referenced by StartReceivePreamble().
void ns3::PhyEntity::StartReceiveField | ( | WifiPpduField | field, |
Ptr< Event > | event | ||
) |
Start receiving a given field.
This method will call the DoStartReceiveField. EndReceiveField is also scheduled after the duration of the field (except for the special case of preambles
field | the starting PPDU field |
event | the event holding incoming PPDU's information |
Definition at line 260 of file phy-entity.cc.
References DoStartReceiveField(), EndReceiveField(), GetDuration(), ns3::EventId::IsExpired(), ns3::WifiPhy::m_endPhyRxEvent, m_state, m_wifiPhy, NS_ABORT_MSG_IF, NS_ASSERT, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), StartReceivePayload(), ns3::WIFI_PPDU_FIELD_DATA, and ns3::WIFI_PPDU_FIELD_PREAMBLE.
Referenced by EndReceiveField().
Start receiving the PSDU (i.e.
the first symbol of the PSDU has arrived).
event | the event holding incoming PPDU's information |
Definition at line 528 of file phy-entity.cc.
References CalculatePhyPreambleAndHeaderDuration(), DoStartReceivePayload(), ns3::EventId::IsExpired(), ns3::WifiPhy::m_endPhyRxEvent, ns3::WifiPhy::m_phyRxPayloadBeginTrace, m_state, m_wifiPhy, NS_ASSERT, and NS_LOG_FUNCTION.
Referenced by StartReceiveField().
|
virtual |
Start receiving the PHY preamble of a PPDU (i.e.
the first bit of the preamble has arrived).
This method triggers the start of the preamble detection period (
ppdu | the arriving PPDU |
rxPowersW | the receive power in W per band |
rxDuration | the duration of the PPDU |
Reimplemented in ns3::HePhy.
Definition at line 364 of file phy-entity.cc.
References AbortCurrentReception(), ns3::BUSY_DECODING_PREAMBLE, CCA_BUSY, ns3::CHANNEL_SWITCHING, DoGetEvent(), DropPreambleEvent(), ns3::FRAME_CAPTURE_PACKET_SWITCH, GetMeasurementChannelWidth(), ns3::WifiPhy::GetMeasurementChannelWidth(), IDLE, ns3::WifiPhy::m_currentEvent, ns3::WifiPhy::m_currentPreambleEvents, ns3::WifiPhy::m_frameCaptureModel, m_state, ns3::WifiPhy::m_timeLastPreambleDetected, m_wifiPhy, ns3::Simulator::Now(), NS_ASSERT, NS_FATAL_ERROR, NS_LOG_DEBUG, NS_LOG_FUNCTION, OFF, ns3::POWERED_OFF, RX, ns3::RXING, SLEEP, ns3::SLEEPING, StartPreambleDetectionPeriod(), SWITCHING, ns3::WifiPhy::SwitchMaybeToCcaBusy(), ns3::TRUNCATED_TX, TX, and ns3::TXING.
Referenced by ns3::HePhy::StartReceivePreamble().
This function is called by SpectrumWifiPhy to send the PPDU while performing amendment-specific actions.
ppdu | the PPDU to send |
Reimplemented in ns3::HePhy.
Definition at line 1048 of file phy-entity.cc.
References NS_LOG_FUNCTION, and Transmit().
Referenced by ns3::HePhy::StartTx().
This function prepares most of the WifiSpectrumSignalParameters parameters and invokes SpectrumWifiPhy's Transmit method.
txDuration | the duration of the transmission |
ppdu | the PPDU to send |
type | the type of transmission (for logging) |
Definition at line 1055 of file phy-entity.cc.
References ns3::DbmToW(), GetCenterFrequencyForChannelWidth(), ns3::WifiPhy::GetChannelNumber(), ns3::SpectrumValue::GetSpectrumModel(), ns3::WifiPhy::GetTxGain(), ns3::WifiPhy::GetTxPowerForTransmission(), GetTxPowerSpectralDensity(), ns3::SpectrumModel::GetUid(), ns3::Integral(), m_wifiPhy, ns3::Time::MS, NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::WToDbm().
Referenced by StartTx(), and ns3::HePhy::StartTx().
|
protected |
Update an event in WifiPhy's InterferenceHelper class.
Wrapper used by child classes.
Update event to scale its received power (W) per band.
event | the event to be updated |
rxPower | the received power (W) per band to be added to the current event |
Definition at line 758 of file phy-entity.cc.
References ns3::WifiPhy::m_interference, and m_wifiPhy.
Referenced by ns3::HePhy::DoGetEvent().
|
protected |
the end of MPDU events (only used for A-MPDUs)
Definition at line 797 of file phy-entity.h.
Referenced by CancelAllEvents(), DoAbortCurrentReception(), ns3::HePhy::DoAbortCurrentReception(), NotifyInterferenceRxEndAndClear(), and ScheduleEndOfMpdus().
|
protected |
the end of preamble detection events
Definition at line 796 of file phy-entity.h.
Referenced by CancelAllEvents(), CancelRunningEndPreambleDetectionEvents(), NoEndPreambleDetectionEvents(), and StartPreambleDetectionPeriod().
|
protected |
the end of receive events (only one unless UL MU reception)
Definition at line 799 of file phy-entity.h.
Referenced by CancelAllEvents(), DoEndReceivePayload(), ns3::HePhy::DoEndReceivePayload(), DoStartReceivePayload(), ns3::HePhy::DoStartReceivePayload(), EndReceiveField(), ResetReceive(), and ns3::HePhy::StartReceiveOfdmaPayload().
|
staticprotected |
Global counter of the PPDU UID.
Definition at line 809 of file phy-entity.h.
Referenced by ObtainNextUid(), ns3::HePhy::ObtainNextUid(), and OfdmaTestHePhy::SetGlobalPpduUid().
the list of supported modes
Definition at line 794 of file phy-entity.h.
Referenced by ns3::DsssPhy::DsssPhy(), ns3::ErpOfdmPhy::ErpOfdmPhy(), ns3::OfdmPhy::OfdmPhy(), ~PhyEntity(), begin(), ns3::HtPhy::BuildModeList(), ns3::HePhy::BuildModeList(), ns3::VhtPhy::BuildModeList(), end(), ns3::HtPhy::GetMcs(), GetNumModes(), ns3::HtPhy::IsMcsSupported(), IsModeSupported(), ns3::HtPhy::SetMaxSupportedMcsIndexPerSs(), and ns3::HtPhy::SetMaxSupportedNss().
|
protected |
Map of the latest signal power and noise power in dBm (noise power includes the noise figure)
Definition at line 807 of file phy-entity.h.
Referenced by DoStartReceivePayload(), ns3::HePhy::DoStartReceivePayload(), EndOfMpdu(), EndReceivePayload(), NotifyInterferenceRxEndAndClear(), and ns3::HePhy::StartReceiveOfdmaPayload().
|
protected |
Pointer to WifiPhyStateHelper of the WifiPhy (to make it reachable for child classes)
Definition at line 792 of file phy-entity.h.
Referenced by DropPreambleEvent(), EndOfMpdu(), EndPreambleDetectionPeriod(), EndReceiveField(), EndReceivePayload(), ErasePreambleEvent(), SetOwner(), StartReceiveField(), StartReceivePayload(), and StartReceivePreamble().
|
protected |
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.
Definition at line 806 of file phy-entity.h.
Referenced by DoStartReceivePayload(), ns3::HePhy::DoStartReceivePayload(), EndOfMpdu(), EndReceivePayload(), NotifyInterferenceRxEndAndClear(), and ns3::HePhy::StartReceiveOfdmaPayload().
Pointer to the owning WifiPhy.
Definition at line 791 of file phy-entity.h.
Referenced by AbortCurrentReception(), AddPreambleEvent(), ns3::HePhy::BuildPpdu(), ns3::HtPhy::BuildPpdu(), ns3::ErpOfdmPhy::BuildPpdu(), ns3::OfdmPhy::BuildPpdu(), ns3::VhtPhy::BuildPpdu(), CreateInterferenceEvent(), DoAbortCurrentReception(), DoEndReceivePayload(), ns3::HePhy::DoEndReceivePayload(), DoEndReceivePreamble(), DoGetEvent(), ns3::HePhy::DoGetEvent(), ns3::HePhy::DoStartReceivePayload(), DropPreambleEvent(), EndPreambleDetectionPeriod(), EndReceiveField(), EndReceivePayload(), ErasePreambleEvent(), ns3::HePhy::GetBssColor(), GetCenterFrequencyForChannelWidth(), ns3::HePhy::GetCenterFrequencyForNonOfdmaPart(), GetChannelWidthAndBand(), GetCurrentEvent(), GetCurrentPreambleEvents(), GetGuardBandwidth(), ns3::HePhy::GetNonOfdmaBand(), GetPhyHeaderSnrPer(), GetRandomValue(), GetReceptionStatus(), ns3::HePhy::GetRuBandForRx(), ns3::HePhy::GetRuBandForTx(), GetRxChannelWidth(), ns3::DsssPhy::GetRxChannelWidth(), GetRxPowerWForPpdu(), ns3::HePhy::GetStaId(), GetTxMaskRejectionParams(), ns3::OfdmPhy::IsChannelWidthSupported(), ns3::HePhy::IsConfigSupported(), ns3::HtPhy::IsConfigSupported(), NotifyInterferenceRxEndAndClear(), NotifyPayloadBegin(), ns3::HePhy::ObtainNextUid(), ResetReceive(), ScheduleEndOfMpdus(), SetOwner(), StartPreambleDetectionPeriod(), StartReceiveField(), StartReceivePayload(), StartReceivePreamble(), Transmit(), and UpdateInterferenceEvent().