A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
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
40namespace ns3
41{
42
43class ObssPdAlgorithm;
44
48#define HE_PHY 122
49
54{
55 double rssiW;
56 uint8_t bssColor;
57};
58
67class 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;
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 WifiSpectrumBandInfo GetRuBandForTx(const WifiTxVector& txVector, uint16_t staId) const;
185 WifiSpectrumBandInfo GetRuBandForRx(const WifiTxVector& txVector, uint16_t staId) const;
194 WifiSpectrumBandInfo 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
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
434 static WifiMode CreateHeMcs(uint8_t index);
435
448 static WifiSpectrumBandIndices ConvertHeRuSubcarriers(uint16_t bandWidth,
449 uint16_t guardBandwidth,
450 uint32_t subcarrierSpacing,
451 HeRu::SubcarrierRange subcarrierRange,
452 uint8_t bandIndex = 0);
453
455 using RuBands = std::map<WifiSpectrumBandInfo, HeRu::RuSpec>;
456
466 uint16_t channelWidth,
467 uint16_t guardBandwidth);
468
469 protected:
471 PhyFieldRxStatus status,
472 WifiPpduField field) override;
474 bool IsConfigSupported(Ptr<const WifiPpdu> ppdu) const override;
475 Time DoStartReceivePayload(Ptr<Event> event) override;
476 std::pair<uint16_t, WifiSpectrumBandInfo> GetChannelWidthAndBand(const WifiTxVector& txVector,
477 uint16_t staId) const override;
479 RxSignalInfo rxSignalInfo,
480 const WifiTxVector& txVector,
481 uint16_t staId,
482 const std::vector<bool>& statusPerMpdu) override;
484 double snr,
485 const WifiTxVector& txVector) override;
486 void DoEndReceivePayload(Ptr<const WifiPpdu> ppdu) override;
487 void DoResetReceive(Ptr<Event> event) override;
489 uint64_t ObtainNextUid(const WifiTxVector& txVector) override;
490 Time GetMaxDelayPpduSameUid(const WifiTxVector& txVector) override;
492 Ptr<const WifiPpdu> ppdu) const override;
493 uint32_t GetMaxPsduSize() const override;
495 const WifiTxVector& txVector) const override;
496
507
518
523 virtual uint32_t GetSigBSize(const WifiTxVector& txVector) const;
524
533
547 static uint64_t CalculateNonHtReferenceRate(WifiCodeRate codeRate, uint16_t constellationSize);
548
553 static uint16_t GetUsableSubcarriers(uint16_t channelWidth);
554
559 static Time GetSymbolDuration(Time guardInterval);
560
564
565 std::map<uint16_t /* STA-ID */, EventId>
568
570 std::optional<WifiTxVector> m_trigVector;
571 std::optional<Time> m_trigVectorExpirationTime;
572 std::optional<WifiTxVector> m_currentTxVector;
574
575 private:
576 void BuildModeList() override;
577 uint8_t GetNumberBccEncoders(const WifiTxVector& txVector) const override;
578 Time GetSymbolDuration(const WifiTxVector& txVector) const override;
579
590 HePpdu::TxPsdFlag flag) const;
591
601 double txPowerDbm,
602 Ptr<SpectrumValue> txPowerSpectrum,
603 Time ofdmaDuration);
604
612 void NotifyCcaBusy(Time duration,
613 WifiChannelListType channelType,
614 const std::vector<Time>& per20MHzDurations);
615
626 std::vector<Time> GetPer20MHzDurations(const Ptr<const WifiPpdu> ppdu);
627
638 static Time GetValidPpduDuration(Time ppduDuration,
639 const WifiTxVector& txVector,
640 WifiPhyBand band);
641
643
644 std::size_t m_rxHeTbPpdus;
646 std::vector<Time> m_lastPer20MHzDurations;
647}; // class HePhy
648
649} // namespace ns3
650
651#endif /* HE_PHY_H */
Callback template class.
Definition: callback.h:438
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:570
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:286
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:938
uint64_t GetCurrentHeTbPpduUid() const
Definition: he-phy.cc:1085
Ptr< Event > DoGetEvent(Ptr< const WifiPpdu > ppdu, RxPowerWattPerChannelBand &rxPowersW) override
Get the event corresponding to the incoming PPDU.
Definition: he-phy.cc:455
void CancelAllEvents() override
Cancel and clear all running events.
Definition: he-phy.cc:410
void SetObssPdAlgorithm(const Ptr< ObssPdAlgorithm > algorithm)
Sets the OBSS-PD algorithm.
Definition: he-phy.cc:705
static void InitializeModes()
Initialize all HE modes.
Definition: he-phy.cc:1553
static WifiMode GetHeMcs9()
Return MCS 9 from HE MCS values.
void DoAbortCurrentReception(WifiPhyRxfailureReason reason) override
Perform amendment-specific actions before aborting the current reception.
Definition: he-phy.cc:422
WifiSpectrumBandInfo 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:1017
Time CalculateTxDuration(WifiConstPsduMap psduMap, const WifiTxVector &txVector, WifiPhyBand band) const override
Definition: he-phy.cc:1518
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:1505
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:726
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:572
Time GetSigBDuration(const WifiTxVector &txVector) const override
Definition: he-phy.cc:234
static WifiMode CreateHeMcs(uint8_t index)
Create and return the HE MCS corresponding to the provided index.
Definition: he-phy.cc:1611
virtual uint32_t GetSigBSize(const WifiTxVector &txVector) const
Definition: he-phy.cc:220
static WifiMode GetHeMcs(uint8_t index)
Return the HE MCS corresponding to the provided index.
Definition: he-phy.cc:1562
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:1768
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:1073
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:1739
std::map< uint16_t, EventId > m_beginOfdmaPayloadRxEvents
the beginning of the OFDMA payload reception events (indexed by STA-ID)
Definition: he-phy.h:566
void SetEndOfHeSigACallback(EndOfHeSigACallback callback)
Set a callback for a end of HE-SIG-A.
Definition: he-phy.cc:711
uint64_t m_previouslyTxPpduUid
UID of the previously sent PPDU, used by AP to recognize response HE TB PPDUs.
Definition: he-phy.h:561
static WifiCodeRate GetCodeRate(uint8_t mcsValue)
Return the coding rate corresponding to the supplied HE MCS index.
Definition: he-phy.cc:1627
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:1453
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:594
EndOfHeSigACallback m_endOfHeSigACallback
end of HE-SIG-A callback
Definition: he-phy.h:569
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:549
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:1285
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:1662
Ptr< ObssPdAlgorithm > m_obssPdAlgorithm
OBSS-PD algorithm.
Definition: he-phy.h:645
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:1788
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:1425
virtual Time CalculateNonOfdmaDurationForHeTb(const WifiTxVector &txVector) const
Definition: he-phy.cc:300
uint8_t GetBssColor() const
Definition: he-phy.cc:561
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:254
static WifiSpectrumBandIndices ConvertHeRuSubcarriers(uint16_t bandWidth, uint16_t guardBandwidth, uint32_t subcarrierSpacing, HeRu::SubcarrierRange subcarrierRange, uint8_t bandIndex=0)
Definition: he-phy.cc:1845
uint8_t GetNumberBccEncoders(const WifiTxVector &txVector) const override
Definition: he-phy.cc:319
Time GetMaxDelayPpduSameUid(const WifiTxVector &txVector) override
Obtain the maximum time between two PPDUs with the same UID to consider they are identical and their ...
Definition: he-phy.cc:1305
static bool IsAllowed(const WifiTxVector &txVector)
Check whether the combination in TXVECTOR is allowed.
Definition: he-phy.cc:1762
std::size_t m_rxHeTbPpdus
Number of successfully received HE TB PPDUS.
Definition: he-phy.h:644
std::map< WifiSpectrumBandInfo, HeRu::RuSpec > RuBands
Map a spectrum band associated with an RU to the RU specification.
Definition: he-phy.h:455
~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:348
void NotifyEndOfHeSigA(HeSigAParameters params)
Fire a EndOfHeSigA callback (if connected) once HE-SIG-A field has been received.
Definition: he-phy.cc:717
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:1690
static WifiMode GetHeMcs7()
Return MCS 7 from HE MCS values.
virtual Time CalculateNonOfdmaDurationForHeMu(const WifiTxVector &txVector) const
Definition: he-phy.cc:309
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:866
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:1654
uint64_t m_currentMuPpduUid
UID of the HE MU or HE TB PPDU being received.
Definition: he-phy.h:563
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:1782
static const PpduFormats m_hePpduFormats
HE PPDU formats.
Definition: he-phy.h:642
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:1676
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:1187
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:885
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:1109
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:1807
bool IsConfigSupported(Ptr< const WifiPpdu > ppdu) const override
Checks if the signaled configuration (excluding bandwidth) is supported by the PHY.
Definition: he-phy.cc:757
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:576
static Time GetSymbolDuration(Time guardInterval)
Definition: he-phy.cc:1725
std::pair< uint16_t, WifiSpectrumBandInfo > 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:979
void SetTrigVector(const WifiTxVector &trigVector, Time validity)
Set the TRIGVECTOR and the associated expiration time.
Definition: he-phy.cc:333
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:267
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:1731
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:1139
Time DoStartReceivePayload(Ptr< Event > event) override
Start receiving the PSDU (i.e.
Definition: he-phy.cc:796
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:360
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:611
std::optional< Time > m_trigVectorExpirationTime
expiration time of the TRIGVECTOR
Definition: he-phy.h:571
void DoEndReceivePayload(Ptr< const WifiPpdu > ppdu) override
Perform amendment-specific actions at the end of the reception of the payload.
Definition: he-phy.cc:896
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:440
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
WifiSpectrumBandInfo 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:1042
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:646
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:1168
Ptr< SpectrumValue > GetTxPowerSpectralDensity(double txPowerW, Ptr< const WifiPpdu > ppdu) const override
Definition: he-phy.cc:1324
uint16_t GetMeasurementChannelWidth(const Ptr< const WifiPpdu > ppdu) const override
Return the channel width used to measure the RSSI.
Definition: he-phy.cc:1091
static uint16_t GetConstellationSize(uint8_t mcsValue)
Return the constellation size corresponding to the supplied HE MCS index.
Definition: he-phy.cc:1641
WifiSpectrumBandInfo 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:993
static RuBands GetRuBands(Ptr< const WifiPhy > phy, uint16_t channelWidth, uint16_t guardBandwidth)
Static function to compute the RU bands that belong to a given channel width.
Definition: he-phy.cc:1883
TxPsdFlag
The transmit power spectral density flag, namely used to correctly build PSDs for pre-HE and HE porti...
Definition: he-ppdu.h:113
RU Specification.
Definition: he-ru.h:66
std::pair< int16_t, int16_t > SubcarrierRange
(lowest index, highest index) pair defining a subcarrier range
Definition: he-ru.h:52
static uint16_t GetUsableSubcarriers()
Definition: ofdm-phy.cc:631
std::map< WifiPreamble, std::vector< WifiPpduField > > PpduFormats
A map of PPDU field elements per preamble type.
Definition: phy-entity.h:565
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:51
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 > WifiSpectrumBandIndices
typedef for a pair of start and stop sub-band indices
std::map< WifiSpectrumBandInfo, double > RxPowerWattPerChannelBand
A map of the received power (Watts) for each band.
Definition: phy-entity.h:78
static constexpr uint16_t SU_STA_ID
STA_ID to identify a single user (SU)
Definition: wifi-mode.h:35
WifiCodeRate
These constants define the various convolutional coding rates used for the OFDM transmission modes in...
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
WifiSpectrumBandInfo structure containing info about a spectrum band.