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) 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 CalculateNonHeDurationForHeTb(const WifiTxVector& txVector) const;
158
164 virtual Time CalculateNonHeDurationForHeMu(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 GetCenterFrequencyForNonHePart(const WifiTxVector& txVector, uint16_t staId) const;
227
233 void SetObssPdAlgorithm(const Ptr<ObssPdAlgorithm> algorithm);
234
241
248
257
261 static void InitializeModes();
269 static WifiMode GetHeMcs(uint8_t index);
270
343
352 static WifiCodeRate GetCodeRate(uint8_t mcsValue);
361 static uint16_t GetConstellationSize(uint8_t mcsValue);
375 static uint64_t GetPhyRate(uint8_t mcsValue,
376 uint16_t channelWidth,
377 uint16_t guardInterval,
378 uint8_t nss);
387 static uint64_t GetPhyRateFromTxVector(const WifiTxVector& txVector,
388 uint16_t staId = SU_STA_ID);
397 static uint64_t GetDataRateFromTxVector(const WifiTxVector& txVector,
398 uint16_t staId = SU_STA_ID);
411 static uint64_t GetDataRate(uint8_t mcsValue,
412 uint16_t channelWidth,
413 uint16_t guardInterval,
414 uint8_t nss);
423 static uint64_t GetNonHtReferenceRate(uint8_t mcsValue);
431 static bool IsAllowed(const WifiTxVector& txVector);
432
441 static WifiMode CreateHeMcs(uint8_t index);
442
455 static WifiSpectrumBandIndices ConvertHeRuSubcarriers(uint16_t bandWidth,
456 uint16_t guardBandwidth,
457 uint32_t subcarrierSpacing,
458 HeRu::SubcarrierRange subcarrierRange,
459 uint8_t bandIndex = 0);
460
461 protected:
463 PhyFieldRxStatus status,
464 WifiPpduField field) override;
466 bool IsConfigSupported(Ptr<const WifiPpdu> ppdu) const override;
467 Time DoStartReceivePayload(Ptr<Event> event) override;
468 std::pair<uint16_t, WifiSpectrumBandInfo> GetChannelWidthAndBand(const WifiTxVector& txVector,
469 uint16_t staId) const override;
471 RxSignalInfo rxSignalInfo,
472 const WifiTxVector& txVector,
473 uint16_t staId,
474 const std::vector<bool>& statusPerMpdu) override;
476 double snr,
477 const WifiTxVector& txVector) override;
478 void DoEndReceivePayload(Ptr<const WifiPpdu> ppdu) override;
479 void DoResetReceive(Ptr<Event> event) override;
481 uint64_t ObtainNextUid(const WifiTxVector& txVector) override;
482 Time GetMaxDelayPpduSameUid(const WifiTxVector& txVector) override;
484 Ptr<const WifiPpdu> ppdu) const override;
485 uint32_t GetMaxPsduSize() const override;
487 const WifiTxVector& txVector) const override;
490 RxPowerWattPerChannelBand& rxPower) override;
491
502
513
518 virtual uint32_t GetSigBSize(const WifiTxVector& txVector) const;
519
528
542 static uint64_t CalculateNonHtReferenceRate(WifiCodeRate codeRate, uint16_t constellationSize);
543
548 static uint16_t GetUsableSubcarriers(uint16_t channelWidth);
549
554 static Time GetSymbolDuration(Time guardInterval);
555
559
560 std::map<uint16_t /* STA-ID */, EventId>
563
565 std::optional<WifiTxVector> m_trigVector;
566 std::optional<Time> m_trigVectorExpirationTime;
567 std::optional<WifiTxVector> m_currentTxVector;
569
570 private:
571 void BuildModeList() override;
572 uint8_t GetNumberBccEncoders(const WifiTxVector& txVector) const override;
573 Time GetSymbolDuration(const WifiTxVector& txVector) const override;
574
585 HePpdu::TxPsdFlag flag) const;
586
596 double txPowerDbm,
597 Ptr<SpectrumValue> txPowerSpectrum,
598 Time hePortionDuration);
599
607 void NotifyCcaBusy(Time duration,
608 WifiChannelListType channelType,
609 const std::vector<Time>& per20MHzDurations);
610
621 std::vector<Time> GetPer20MHzDurations(const Ptr<const WifiPpdu> ppdu);
622
633 static Time GetValidPpduDuration(Time ppduDuration,
634 const WifiTxVector& txVector,
635 WifiPhyBand band);
636
638
639 std::size_t m_rxHeTbPpdus;
641 std::vector<Time> m_lastPer20MHzDurations;
642}; // class HePhy
643
644} // namespace ns3
645
646#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:565
Time GetLSigDuration(WifiPreamble preamble) const override
Definition: he-phy.cc:185
virtual Time CalculateNonHeDurationForHeTb(const WifiTxVector &txVector) const
Definition: he-phy.cc:302
static Time ConvertLSigLengthToHeTbPpduDuration(uint16_t length, const WifiTxVector &txVector, WifiPhyBand band)
Definition: he-phy.cc:288
static WifiMode GetHeMcs8()
Return MCS 8 from HE MCS values.
uint16_t GetCenterFrequencyForNonHePart(const WifiTxVector &txVector, uint16_t staId) const
Get the center frequency of the non-HE portion of the current TxVector for the given STA-ID.
Definition: he-phy.cc:1412
uint64_t GetCurrentHeTbPpduUid() const
Definition: he-phy.cc:1072
Ptr< Event > DoGetEvent(Ptr< const WifiPpdu > ppdu, RxPowerWattPerChannelBand &rxPowersW) override
Get the event corresponding to the incoming PPDU.
Definition: he-phy.cc:457
void CancelAllEvents() override
Cancel and clear all running events.
Definition: he-phy.cc:412
void SetObssPdAlgorithm(const Ptr< ObssPdAlgorithm > algorithm)
Sets the OBSS-PD algorithm.
Definition: he-phy.cc:701
static void InitializeModes()
Initialize all HE modes.
Definition: he-phy.cc:1539
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:424
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:1008
Time CalculateTxDuration(WifiConstPsduMap psduMap, const WifiTxVector &txVector, WifiPhyBand band) const override
Definition: he-phy.cc:1504
void StartReceiveMuPayload(Ptr< Event > event)
Start receiving the PSDU (i.e.
Definition: he-phy.cc:931
static WifiMode GetHeMcs11()
Return MCS 11 from HE MCS values.
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:728
virtual Time CalculateNonHeDurationForHeMu(const WifiTxVector &txVector) const
Definition: he-phy.cc:311
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:567
Time GetSigBDuration(const WifiTxVector &txVector) const override
Definition: he-phy.cc:236
static WifiMode CreateHeMcs(uint8_t index)
Create and return the HE MCS corresponding to the provided index.
Definition: he-phy.cc:1597
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:1548
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:1754
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:1060
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:1725
bool CanStartRx(Ptr< const WifiPpdu > ppdu) const override
Determine whether the PHY shall issue a PHY-RXSTART.indication primitive in response to a given PPDU.
Definition: he-phy.cc:1774
void StartTxHePortion(Ptr< const WifiPpdu > ppdu, double txPowerDbm, Ptr< SpectrumValue > txPowerSpectrum, Time hePortionDuration)
Start the transmission of the HE portion of the MU PPDU.
Definition: he-phy.cc:1491
void SetEndOfHeSigACallback(EndOfHeSigACallback callback)
Set a callback for a end of HE-SIG-A.
Definition: he-phy.cc:713
uint64_t m_previouslyTxPpduUid
UID of the previously sent PPDU, used by AP to recognize response HE TB PPDUs.
Definition: he-phy.h:556
static WifiCodeRate GetCodeRate(uint8_t mcsValue)
Return the coding rate corresponding to the supplied HE MCS index.
Definition: he-phy.cc:1613
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:1440
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:590
EndOfHeSigACallback m_endOfHeSigACallback
end of HE-SIG-A callback
Definition: he-phy.h:564
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:545
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:1272
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:1648
Ptr< ObssPdAlgorithm > m_obssPdAlgorithm
OBSS-PD algorithm.
Definition: he-phy.h:640
Ptr< ObssPdAlgorithm > GetObssPdAlgorithm() const
Gets the OBSS-PD algorithm.
Definition: he-phy.cc:707
uint8_t GetBssColor() const
Definition: he-phy.cc:557
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:256
static WifiSpectrumBandIndices ConvertHeRuSubcarriers(uint16_t bandWidth, uint16_t guardBandwidth, uint32_t subcarrierSpacing, HeRu::SubcarrierRange subcarrierRange, uint8_t bandIndex=0)
Definition: he-phy.cc:1819
uint8_t GetNumberBccEncoders(const WifiTxVector &txVector) const override
Definition: he-phy.cc:321
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:1292
void HandleRxPpduWithSameContent(Ptr< Event > event, Ptr< const WifiPpdu > ppdu, RxPowerWattPerChannelBand &rxPower) override
Handle reception of a PPDU that carries the same content of another PPDU.
Definition: he-phy.cc:523
static bool IsAllowed(const WifiTxVector &txVector)
Check whether the combination in TXVECTOR is allowed.
Definition: he-phy.cc:1748
std::size_t m_rxHeTbPpdus
Number of successfully received HE TB PPDUS.
Definition: he-phy.h:639
~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:350
void NotifyEndOfHeSigA(HeSigAParameters params)
Fire a EndOfHeSigA callback (if connected) once HE-SIG-A field has been received.
Definition: he-phy.cc:719
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:1676
static WifiMode GetHeMcs7()
Return MCS 7 from HE MCS values.
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:859
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:1640
uint64_t m_currentMuPpduUid
UID of the HE MU or HE TB PPDU being received.
Definition: he-phy.h:558
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:1768
static const PpduFormats m_hePpduFormats
HE PPDU formats.
Definition: he-phy.h:637
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:1662
std::map< uint16_t, EventId > m_beginMuPayloadRxEvents
the beginning of the MU payload reception events (indexed by STA-ID)
Definition: he-phy.h:561
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:1174
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:877
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:1096
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:1793
bool IsConfigSupported(Ptr< const WifiPpdu > ppdu) const override
Checks if the signaled configuration (excluding bandwidth) is supported by the PHY.
Definition: he-phy.cc:750
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:572
static Time GetSymbolDuration(Time guardInterval)
Definition: he-phy.cc:1711
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:972
void SetTrigVector(const WifiTxVector &trigVector, Time validity)
Set the TRIGVECTOR and the associated expiration time.
Definition: he-phy.cc:335
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:269
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:1717
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:1126
Time DoStartReceivePayload(Ptr< Event > event) override
Start receiving the PSDU (i.e.
Definition: he-phy.cc:789
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:362
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:607
std::optional< Time > m_trigVectorExpirationTime
expiration time of the TRIGVECTOR
Definition: he-phy.h:566
void DoEndReceivePayload(Ptr< const WifiPpdu > ppdu) override
Perform amendment-specific actions at the end of the reception of the payload.
Definition: he-phy.cc:887
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:442
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:1031
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:641
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:1155
Ptr< SpectrumValue > GetTxPowerSpectralDensity(double txPowerW, Ptr< const WifiPpdu > ppdu) const override
Definition: he-phy.cc:1311
uint16_t GetMeasurementChannelWidth(const Ptr< const WifiPpdu > ppdu) const override
Return the channel width used to measure the RSSI.
Definition: he-phy.cc:1078
static uint16_t GetConstellationSize(uint8_t mcsValue)
Return the constellation size corresponding to the supplied HE MCS index.
Definition: he-phy.cc:1627
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:986
TxPsdFlag
The transmit power spectral density flag, namely used to correctly build PSDs for pre-HE and HE porti...
Definition: he-ppdu.h:115
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:561
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:77
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:77
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:112
RxSignalInfo structure containing info on the received signal.
Definition: phy-entity.h:69
WifiSpectrumBandInfo structure containing info about a spectrum band.