A Discrete-Event Network Simulator
API
he-phy.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2020 Orange Labs
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation;
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, write to the Free Software
15  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16  *
17  * Authors: Rediet <getachew.redieteab@orange.com>
18  * Sébastien Deronne <sebastien.deronne@gmail.com> (for logic ported from wifi-phy and
19  * spectrum-wifi-phy)
20  */
21 
22 #ifndef HE_PHY_H
23 #define HE_PHY_H
24 
25 #include "he-ppdu.h"
26 
27 #include "ns3/callback.h"
28 #include "ns3/vht-phy.h"
29 #include "ns3/wifi-phy-band.h"
30 
31 #include <optional>
32 
40 namespace ns3
41 {
42 
43 class ObssPdAlgorithm;
44 
48 #define HE_PHY 122
49 
54 {
55  double rssiW;
56  uint8_t bssColor;
57 };
58 
67 class HePhy : public VhtPhy
68 {
69  public:
76 
83  HePhy(bool buildModeList = true);
87  ~HePhy() override;
88 
89  WifiMode GetSigMode(WifiPpduField field, const WifiTxVector& txVector) const override;
90  WifiMode GetSigAMode() const override;
91  WifiMode GetSigBMode(const WifiTxVector& txVector) const override;
92  const PpduFormats& GetPpduFormats() const override;
93  Time GetLSigDuration(WifiPreamble preamble) const override;
94  Time GetTrainingDuration(const WifiTxVector& txVector,
95  uint8_t nDataLtf,
96  uint8_t nExtensionLtf = 0) const override;
97  Time GetSigADuration(WifiPreamble preamble) const override;
98  Time GetSigBDuration(const WifiTxVector& txVector) const override;
100  const WifiTxVector& txVector,
101  Time ppduDuration) override;
104  RxPowerWattPerChannelBand& rxPowersW,
105  Time rxDuration) override;
106  void CancelAllEvents() override;
107  uint16_t GetStaId(const Ptr<const WifiPpdu> ppdu) const override;
108  uint16_t GetMeasurementChannelWidth(const Ptr<const WifiPpdu> ppdu) const override;
109  void StartTx(Ptr<const WifiPpdu> ppdu) override;
111  const WifiTxVector& txVector,
112  WifiPhyBand band) const override;
113  void SwitchMaybeToCcaBusy(const Ptr<const WifiPpdu> ppdu) override;
114  double GetCcaThreshold(const Ptr<const WifiPpdu> ppdu,
115  WifiChannelListType channelType) const override;
116  void NotifyCcaBusy(const Ptr<const WifiPpdu> ppdu,
117  Time duration,
118  WifiChannelListType channelType) override;
119  bool CanStartRx(Ptr<const WifiPpdu> ppdu, uint16_t txChannelWidth) const override;
121 
125  uint8_t GetBssColor() const;
126 
138  static std::pair<uint16_t, Time> ConvertHeTbPpduDurationToLSigLength(
139  Time ppduDuration,
140  const WifiTxVector& txVector,
141  WifiPhyBand band);
149  static Time ConvertLSigLengthToHeTbPpduDuration(uint16_t length,
150  const WifiTxVector& txVector,
151  WifiPhyBand band);
157  virtual Time CalculateNonOfdmaDurationForHeTb(const WifiTxVector& txVector) const;
158 
164  virtual Time CalculateNonOfdmaDurationForHeMu(const WifiTxVector& txVector) const;
165 
175  WifiSpectrumBand GetRuBandForTx(const WifiTxVector& txVector, uint16_t staId) const;
185  WifiSpectrumBand GetRuBandForRx(const WifiTxVector& txVector, uint16_t staId) const;
194  WifiSpectrumBand GetNonOfdmaBand(const WifiTxVector& txVector, uint16_t staId) const;
201  uint16_t GetNonOfdmaWidth(HeRu::RuSpec ru) const;
202 
206  uint64_t GetCurrentHeTbPpduUid() const;
207 
215  void SetTrigVector(const WifiTxVector& trigVector, Time validity);
216 
226  uint16_t GetCenterFrequencyForNonOfdmaPart(const WifiTxVector& txVector, uint16_t staId) const;
227 
233  void SetObssPdAlgorithm(const Ptr<ObssPdAlgorithm> algorithm);
234 
241 
250 
254  static void InitializeModes();
262  static WifiMode GetHeMcs(uint8_t index);
263 
269  static WifiMode GetHeMcs0();
275  static WifiMode GetHeMcs1();
281  static WifiMode GetHeMcs2();
287  static WifiMode GetHeMcs3();
293  static WifiMode GetHeMcs4();
299  static WifiMode GetHeMcs5();
305  static WifiMode GetHeMcs6();
311  static WifiMode GetHeMcs7();
317  static WifiMode GetHeMcs8();
323  static WifiMode GetHeMcs9();
336 
345  static WifiCodeRate GetCodeRate(uint8_t mcsValue);
354  static uint16_t GetConstellationSize(uint8_t mcsValue);
368  static uint64_t GetPhyRate(uint8_t mcsValue,
369  uint16_t channelWidth,
370  uint16_t guardInterval,
371  uint8_t nss);
380  static uint64_t GetPhyRateFromTxVector(const WifiTxVector& txVector,
381  uint16_t staId = SU_STA_ID);
390  static uint64_t GetDataRateFromTxVector(const WifiTxVector& txVector,
391  uint16_t staId = SU_STA_ID);
404  static uint64_t GetDataRate(uint8_t mcsValue,
405  uint16_t channelWidth,
406  uint16_t guardInterval,
407  uint8_t nss);
416  static uint64_t GetNonHtReferenceRate(uint8_t mcsValue);
424  static bool IsAllowed(const WifiTxVector& txVector);
425 
431  static uint32_t GetSigBFieldSize(const WifiTxVector& txVector);
432 
433  protected:
435  PhyFieldRxStatus status,
436  WifiPpduField field) override;
438  bool IsConfigSupported(Ptr<const WifiPpdu> ppdu) const override;
439  Time DoStartReceivePayload(Ptr<Event> event) override;
440  std::pair<uint16_t, WifiSpectrumBand> GetChannelWidthAndBand(const WifiTxVector& txVector,
441  uint16_t staId) const override;
443  RxSignalInfo rxSignalInfo,
444  const WifiTxVector& txVector,
445  uint16_t staId,
446  const std::vector<bool>& statusPerMpdu) override;
448  double snr,
449  const WifiTxVector& txVector) override;
450  void DoEndReceivePayload(Ptr<const WifiPpdu> ppdu) override;
451  void DoResetReceive(Ptr<Event> event) override;
452  void DoAbortCurrentReception(WifiPhyRxfailureReason reason) override;
453  uint64_t ObtainNextUid(const WifiTxVector& txVector) override;
455  Ptr<const WifiPpdu> ppdu) const override;
456  uint32_t GetMaxPsduSize() const override;
458  const WifiTxVector& txVector) const override;
459 
470 
481 
490 
504  static uint64_t CalculateNonHtReferenceRate(WifiCodeRate codeRate, uint16_t constellationSize);
505 
510  static uint16_t GetUsableSubcarriers(uint16_t channelWidth);
511 
516  static Time GetSymbolDuration(Time guardInterval);
517 
521 
522  std::map<uint16_t /* STA-ID */, EventId>
525 
527  std::optional<WifiTxVector> m_trigVector;
528  std::optional<Time> m_trigVectorExpirationTime;
529  std::optional<WifiTxVector> m_currentTxVector;
531 
532  private:
533  void BuildModeList() override;
534  uint8_t GetNumberBccEncoders(const WifiTxVector& txVector) const override;
535  Time GetSymbolDuration(const WifiTxVector& txVector) const override;
536 
546  Ptr<const WifiPpdu> ppdu,
547  HePpdu::TxPsdFlag flag) const;
548 
558  double txPowerDbm,
559  Ptr<SpectrumValue> txPowerSpectrum,
560  Time ofdmaDuration);
561 
569  void NotifyCcaBusy(Time duration,
570  WifiChannelListType channelType,
571  const std::vector<Time>& per20MHzDurations);
572 
583  std::vector<Time> GetPer20MHzDurations(const Ptr<const WifiPpdu> ppdu);
584 
593  static WifiMode CreateHeMcs(uint8_t index);
594 
605  static Time GetValidPpduDuration(Time ppduDuration,
606  const WifiTxVector& txVector,
607  WifiPhyBand band);
608 
610 
611  std::size_t m_rxHeTbPpdus;
613  std::vector<Time> m_lastPer20MHzDurations;
614 }; // class HePhy
615 
616 } // namespace ns3
617 
618 #endif /* HE_PHY_H */
An identifier for simulation events.
Definition: event-id.h:55
PHY entity for HE (11ax)
Definition: he-phy.h:68
std::optional< WifiTxVector > m_trigVector
the TRIGVECTOR
Definition: he-phy.h:527
Time GetLSigDuration(WifiPreamble preamble) const override
Definition: he-phy.cc:185
static Time ConvertLSigLengthToHeTbPpduDuration(uint16_t length, const WifiTxVector &txVector, WifiPhyBand band)
Definition: he-phy.cc:275
static WifiMode GetHeMcs8()
Return MCS 8 from HE MCS values.
void StartReceiveOfdmaPayload(Ptr< Event > event)
Start receiving the PSDU (i.e.
Definition: he-phy.cc:961
uint64_t GetCurrentHeTbPpduUid() const
Definition: he-phy.cc:1101
Ptr< Event > DoGetEvent(Ptr< const WifiPpdu > ppdu, RxPowerWattPerChannelBand &rxPowersW) override
Get the event corresponding to the incoming PPDU.
Definition: he-phy.cc:447
void CancelAllEvents() override
Cancel and clear all running events.
Definition: he-phy.cc:402
WifiSpectrumBand GetNonOfdmaBand(const WifiTxVector &txVector, uint16_t staId) const
Get the band used to transmit the non-OFDMA part of an HE TB PPDU.
Definition: he-phy.cc:1061
void SetObssPdAlgorithm(const Ptr< ObssPdAlgorithm > algorithm)
Sets the OBSS-PD algorithm.
Definition: he-phy.cc:728
static void InitializeModes()
Initialize all HE modes.
Definition: he-phy.cc:1550
static WifiMode GetHeMcs9()
Return MCS 9 from HE MCS values.
static uint32_t GetSigBFieldSize(const WifiTxVector &txVector)
Get variable length HE SIG-B field size based on TX Vector.
Definition: he-phy.cc:1785
void DoAbortCurrentReception(WifiPhyRxfailureReason reason) override
Perform amendment-specific actions before aborting the current reception.
Definition: he-phy.cc:414
Time CalculateTxDuration(WifiConstPsduMap psduMap, const WifiTxVector &txVector, WifiPhyBand band) const override
Definition: he-phy.cc:1515
std::pair< uint16_t, WifiSpectrumBand > GetChannelWidthAndBand(const WifiTxVector &txVector, uint16_t staId) const override
Get the channel width and band to use (will be overloaded by child classes).
Definition: he-phy.cc:1004
static WifiMode GetHeMcs11()
Return MCS 11 from HE MCS values.
void StartTxOfdma(Ptr< const WifiPpdu > ppdu, double txPowerDbm, Ptr< SpectrumValue > txPowerSpectrum, Time ofdmaDuration)
Start the transmission of the OFDMA part of the MU PPDU.
Definition: he-phy.cc:1502
virtual PhyFieldRxStatus ProcessSigB(Ptr< Event > event, PhyFieldRxStatus status)
Process SIG-B, perform amendment-specific actions, and provide an updated status of the reception.
Definition: he-phy.cc:749
std::optional< WifiTxVector > m_currentTxVector
If the STA is an AP STA, this holds the TXVECTOR of the PPDU that has been sent.
Definition: he-phy.h:529
Time GetSigBDuration(const WifiTxVector &txVector) const override
Definition: he-phy.cc:220
static WifiMode CreateHeMcs(uint8_t index)
Create and return the HE MCS corresponding to the provided index.
Definition: he-phy.cc:1608
static WifiMode GetHeMcs(uint8_t index)
Return the HE MCS corresponding to the provided index.
Definition: he-phy.cc:1559
static WifiMode GetHeMcs0()
Return MCS 0 from HE MCS values.
void BuildModeList() override
Build mode list.
Definition: he-phy.cc:104
WifiConstPsduMap GetWifiConstPsduMap(Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector) const override
Get a WifiConstPsduMap from a PSDU and the TXVECTOR to use to send the PSDU.
Definition: he-phy.cc:1765
uint16_t GetNonOfdmaWidth(HeRu::RuSpec ru) const
Get the width in MHz of the non-OFDMA portion of an HE TB PPDU.
Definition: he-phy.cc:1089
static uint64_t CalculateNonHtReferenceRate(WifiCodeRate codeRate, uint16_t constellationSize)
Return the rate (in bps) of the non-HT Reference Rate which corresponds to the supplied code rate and...
Definition: he-phy.cc:1736
std::map< uint16_t, EventId > m_beginOfdmaPayloadRxEvents
the beginning of the OFDMA payload reception events (indexed by STA-ID)
Definition: he-phy.h:523
void SetEndOfHeSigACallback(EndOfHeSigACallback callback)
Set a callback for a end of HE-SIG-A.
Definition: he-phy.cc:734
uint64_t m_previouslyTxPpduUid
UID of the previously sent PPDU, used by AP to recognize response HE TB PPDUs.
Definition: he-phy.h:518
static WifiCodeRate GetCodeRate(uint8_t mcsValue)
Return the coding rate corresponding to the supplied HE MCS index.
Definition: he-phy.cc:1624
static WifiMode GetHeMcs6()
Return MCS 6 from HE MCS values.
void StartTx(Ptr< const WifiPpdu > ppdu) override
This function is called by SpectrumWifiPhy to send the PPDU while performing amendment-specific actio...
Definition: he-phy.cc:1450
PhyFieldRxStatus ProcessSig(Ptr< Event > event, PhyFieldRxStatus status, WifiPpduField field) override
Process SIG-A or SIG-B, perform amendment-specific actions, and provide an updated status of the rece...
Definition: he-phy.cc:617
WifiSpectrumBand GetRuBandForRx(const WifiTxVector &txVector, uint16_t staId) const
Get the band in the RX spectrum associated with the RU used by the PSDU transmitted to/by a given STA...
Definition: he-phy.cc:1038
EndOfHeSigACallback m_endOfHeSigACallback
end of HE-SIG-A callback
Definition: he-phy.h:526
static WifiMode GetHeMcs4()
Return MCS 4 from HE MCS values.
Ptr< const WifiPsdu > GetAddressedPsduInPpdu(Ptr< const WifiPpdu > ppdu) const override
Get the PSDU addressed to that PHY in a PPDU (useful for MU PPDU).
Definition: he-phy.cc:572
WifiMode GetSigMode(WifiPpduField field, const WifiTxVector &txVector) const override
Get the WifiMode for the SIG field specified by the PPDU field.
Definition: he-phy.cc:117
const PpduFormats & GetPpduFormats() const override
Return the PPDU formats of the PHY.
Definition: he-phy.cc:179
uint64_t ObtainNextUid(const WifiTxVector &txVector) override
Obtain the next UID for the PPDU to transmit.
Definition: he-phy.cc:1301
static WifiMode GetHeMcs10()
Return MCS 10 from HE MCS values.
Callback< void, HeSigAParameters > EndOfHeSigACallback
Callback upon end of HE-SIG-A.
Definition: he-phy.h:75
static uint64_t GetPhyRateFromTxVector(const WifiTxVector &txVector, uint16_t staId=SU_STA_ID)
Return the PHY rate corresponding to the supplied TXVECTOR for the STA-ID.
Definition: he-phy.cc:1659
Ptr< ObssPdAlgorithm > m_obssPdAlgorithm
OBSS-PD algorithm.
Definition: he-phy.h:612
bool CanStartRx(Ptr< const WifiPpdu > ppdu, uint16_t txChannelWidth) const override
Determine whether the PHY shall issue a PHY-RXSTART.indication primitive in response to a given PPDU.
Definition: he-phy.cc:1820
uint16_t GetCenterFrequencyForNonOfdmaPart(const WifiTxVector &txVector, uint16_t staId) const
Get the center frequency of the non-OFDMA part of the current TxVector for the given STA-ID.
Definition: he-phy.cc:1422
virtual Time CalculateNonOfdmaDurationForHeTb(const WifiTxVector &txVector) const
Definition: he-phy.cc:289
uint8_t GetBssColor() const
Definition: he-phy.cc:584
static Time GetValidPpduDuration(Time ppduDuration, const WifiTxVector &txVector, WifiPhyBand band)
Given a PPDU duration value, the TXVECTOR used to transmit the PPDU and the PHY band,...
Definition: he-phy.cc:243
uint8_t GetNumberBccEncoders(const WifiTxVector &txVector) const override
Definition: he-phy.cc:308
static bool IsAllowed(const WifiTxVector &txVector)
Check whether the combination in TXVECTOR is allowed.
Definition: he-phy.cc:1759
std::size_t m_rxHeTbPpdus
Number of successfully received HE TB PPDUS.
Definition: he-phy.h:611
~HePhy() override
Destructor for HE PHY.
Definition: he-phy.cc:98
Ptr< WifiPpdu > BuildPpdu(const WifiConstPsduMap &psdus, const WifiTxVector &txVector, Time ppduDuration) override
Build amendment-specific PPDU.
Definition: he-phy.cc:337
void NotifyEndOfHeSigA(HeSigAParameters params)
Fire a EndOfHeSigA callback (if connected) once HE-SIG-A field has been received.
Definition: he-phy.cc:740
static uint64_t GetDataRate(uint8_t mcsValue, uint16_t channelWidth, uint16_t guardInterval, uint8_t nss)
Return the data rate corresponding to the supplied HE MCS index, channel width, guard interval,...
Definition: he-phy.cc:1687
static WifiMode GetHeMcs7()
Return MCS 7 from HE MCS values.
virtual Time CalculateNonOfdmaDurationForHeMu(const WifiTxVector &txVector) const
Definition: he-phy.cc:298
void RxPayloadSucceeded(Ptr< const WifiPsdu > psdu, RxSignalInfo rxSignalInfo, const WifiTxVector &txVector, uint16_t staId, const std::vector< bool > &statusPerMpdu) override
Perform amendment-specific actions when the payload is successfully received.
Definition: he-phy.cc:889
static uint64_t GetPhyRate(uint8_t mcsValue, uint16_t channelWidth, uint16_t guardInterval, uint8_t nss)
Return the PHY rate corresponding to the supplied HE MCS index, channel width, guard interval,...
Definition: he-phy.cc:1651
uint64_t m_currentMuPpduUid
UID of the HE MU or HE TB PPDU being received.
Definition: he-phy.h:520
static WifiMode GetHeMcs3()
Return MCS 3 from HE MCS values.
uint32_t GetMaxPsduSize() const override
Get the maximum PSDU size in bytes.
Definition: he-phy.cc:1779
static const PpduFormats m_hePpduFormats
HE PPDU formats.
Definition: he-phy.h:609
static uint64_t GetDataRateFromTxVector(const WifiTxVector &txVector, uint16_t staId=SU_STA_ID)
Return the data rate corresponding to the supplied TXVECTOR for the STA-ID.
Definition: he-phy.cc:1673
std::vector< Time > GetPer20MHzDurations(const Ptr< const WifiPpdu > ppdu)
Compute the per-20 MHz CCA durations vector that indicates for how long each 20 MHz subchannel (corre...
Definition: he-phy.cc:1203
void RxPayloadFailed(Ptr< const WifiPsdu > psdu, double snr, const WifiTxVector &txVector) override
Perform amendment-specific actions when the payload is unsuccessfuly received.
Definition: he-phy.cc:908
double GetCcaThreshold(const Ptr< const WifiPpdu > ppdu, WifiChannelListType channelType) const override
Return the CCA threshold in dBm for a given channel type.
Definition: he-phy.cc:1125
Ptr< const WifiPpdu > GetRxPpduFromTxPpdu(Ptr< const WifiPpdu > ppdu) override
The WifiPpdu from the TX PHY is received by each RX PHY attached to the same channel.
Definition: he-phy.cc:1839
HePhy(bool buildModeList=true)
Constructor for HE PHY.
Definition: he-phy.cc:78
bool IsConfigSupported(Ptr< const WifiPpdu > ppdu) const override
Checks if the signaled configuration (excluding bandwidth) is supported by the PHY.
Definition: he-phy.cc:780
uint16_t GetStaId(const Ptr< const WifiPpdu > ppdu) const override
Return the STA ID that has been assigned to the station this PHY belongs to.
Definition: he-phy.cc:599
static Time GetSymbolDuration(Time guardInterval)
Definition: he-phy.cc:1722
void SetTrigVector(const WifiTxVector &trigVector, Time validity)
Set the TRIGVECTOR and the associated expiration time.
Definition: he-phy.cc:322
static WifiMode GetHeMcs1()
Return MCS 1 from HE MCS values.
static std::pair< uint16_t, Time > ConvertHeTbPpduDurationToLSigLength(Time ppduDuration, const WifiTxVector &txVector, WifiPhyBand band)
Compute the L-SIG length value corresponding to the given HE TB PPDU duration.
Definition: he-phy.cc:256
static uint64_t GetNonHtReferenceRate(uint8_t mcsValue)
Calculate the rate in bps of the non-HT Reference Rate corresponding to the supplied HE MCS index.
Definition: he-phy.cc:1728
WifiSpectrumBand GetRuBandForTx(const WifiTxVector &txVector, uint16_t staId) const
Get the band in the TX spectrum associated with the RU used by the PSDU transmitted to/by a given STA...
Definition: he-phy.cc:1018
WifiMode GetSigBMode(const WifiTxVector &txVector) const override
Definition: he-phy.cc:146
void SwitchMaybeToCcaBusy(const Ptr< const WifiPpdu > ppdu) override
Check if PHY state should move to CCA busy state based on current state of interference tracker.
Definition: he-phy.cc:1155
Time DoStartReceivePayload(Ptr< Event > event) override
Start receiving the PSDU (i.e.
Definition: he-phy.cc:819
void StartReceivePreamble(Ptr< const WifiPpdu > ppdu, RxPowerWattPerChannelBand &rxPowersW, Time rxDuration) override
Start receiving the PHY preamble of a PPDU (i.e.
Definition: he-phy.cc:351
virtual PhyFieldRxStatus ProcessSigA(Ptr< Event > event, PhyFieldRxStatus status)
Process SIG-A, perform amendment-specific actions, and provide an updated status of the reception.
Definition: he-phy.cc:634
std::optional< Time > m_trigVectorExpirationTime
expiration time of the TRIGVECTOR
Definition: he-phy.h:528
void DoEndReceivePayload(Ptr< const WifiPpdu > ppdu) override
Perform amendment-specific actions at the end of the reception of the payload.
Definition: he-phy.cc:919
static WifiMode GetHeMcs5()
Return MCS 5 from HE MCS values.
void DoResetReceive(Ptr< Event > event) override
Perform amendment-specific actions before resetting PHY at the end of the PPDU under reception after ...
Definition: he-phy.cc:432
static WifiMode GetHeMcs2()
Return MCS 2 from HE MCS values.
WifiMode GetSigAMode() const override
Definition: he-phy.cc:140
Time GetSigADuration(WifiPreamble preamble) const override
Definition: he-phy.cc:212
Time GetTrainingDuration(const WifiTxVector &txVector, uint8_t nDataLtf, uint8_t nExtensionLtf=0) const override
Definition: he-phy.cc:191
std::vector< Time > m_lastPer20MHzDurations
Hold the last per-20 MHz CCA durations vector.
Definition: he-phy.h:613
void NotifyCcaBusy(const Ptr< const WifiPpdu > ppdu, Time duration, WifiChannelListType channelType) override
Notify PHY state helper to switch to CCA busy state,.
Definition: he-phy.cc:1184
Ptr< SpectrumValue > GetTxPowerSpectralDensity(double txPowerW, Ptr< const WifiPpdu > ppdu) const override
Definition: he-phy.cc:1321
uint16_t GetMeasurementChannelWidth(const Ptr< const WifiPpdu > ppdu) const override
Return the channel width used to measure the RSSI.
Definition: he-phy.cc:1107
static uint16_t GetConstellationSize(uint8_t mcsValue)
Return the constellation size corresponding to the supplied HE MCS index.
Definition: he-phy.cc:1638
TxPsdFlag
The transmit power spectral density flag, namely used to correctly build PSDs for pre-HE and HE porti...
Definition: he-ppdu.h:156
RU Specification.
Definition: he-ru.h:66
static uint16_t GetUsableSubcarriers()
Definition: ofdm-phy.cc:633
std::map< WifiPreamble, std::vector< WifiPpduField > > PpduFormats
A map of PPDU field elements per preamble type.
Definition: phy-entity.h:556
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:78
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:105
PHY entity for VHT (11ac)
Definition: vht-phy.h:49
represent a single transmission mode
Definition: wifi-mode.h:50
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
WifiPhyRxfailureReason
Enumeration of the possible reception failure reasons.
WifiPreamble
The type of preamble to be used by an IEEE 802.11 transmission.
WifiPhyBand
Identifies the PHY band.
Definition: wifi-phy-band.h:33
WifiChannelListType
Enumeration of the possible channel-list parameter elements defined in Table 8-5 of IEEE 802....
WifiPpduField
The type of PPDU field (grouped for convenience)
Declaration of ns3::HePpdu class.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::unordered_map< uint16_t, Ptr< const WifiPsdu > > WifiConstPsduMap
Map of const PSDUs indexed by STA-ID.
std::pair< uint32_t, uint32_t > WifiSpectrumBand
typedef for a pair of start and stop sub-band indexes
std::map< WifiSpectrumBand, double > RxPowerWattPerChannelBand
A map of the received power (Watts) for each band.
Definition: phy-entity.h:78
uint16_t WifiCodeRate
These constants define the various convolutional coding rates used for the OFDM transmission modes in...
params
Fit Fluctuating Two Ray model to the 3GPP TR 38.901 using the Anderson-Darling goodness-of-fit ##.
Parameters for received HE-SIG-A for OBSS_PD based SR.
Definition: he-phy.h:54
uint8_t bssColor
BSS color.
Definition: he-phy.h:56
double rssiW
RSSI in W.
Definition: he-phy.h:55
Status of the reception of the PPDU field.
Definition: phy-entity.h:113
RxSignalInfo structure containing info on the received signal.
Definition: phy-entity.h:70
#define SU_STA_ID
Definition: wifi-mode.h:34