79 RuSpec(
RuType ruType, std::size_t index,
bool primary80MHz);
257 std::size_t& nStations,
258 std::size_t& nCentral26TonesRus);
278 static std::vector<RuSpec>
GetRuSpecs(uint8_t ruAllocation);
std::size_t GetIndex() const
Get the RU index.
std::size_t m_index
RU index (starting at 1) as defined by Tables 27-7 to 27-9 of 802.11ax D8.0.
RuType GetRuType() const
Get the RU type.
std::size_t GetPhyIndex() const
Get the RU PHY index.
RuSpec()
Default constructor.
bool IsPhyIndexSet() const
Return true if the RU PHY index has been set, false otherwise.
bool m_primary80MHz
true if the RU is allocated in the primary 80MHz channel
bool operator==(const RuSpec &other) const
Compare this RU to the given RU.
std::size_t m_phyIndex
the RU PHY index, which is used to indicate whether an RU is located in the lower half or the higher ...
bool GetPrimary80MHz() const
Get the primary 80 MHz flag.
void SetPhyIndex(uint16_t bw, uint8_t p20Index)
Set the RU PHY index.
bool operator!=(const RuSpec &other) const
Compare this RU to the given RU.
This class stores the subcarrier groups of all the available HE RUs.
static RuSpec FindOverlappingRu(uint16_t bw, RuSpec referenceRu, RuType searchedRuType)
Find the RU allocation of the given RU type overlapping the given reference RU allocation.
static bool DoesOverlap(uint16_t bw, RuSpec ru, const std::vector< RuSpec > &v)
Check whether the given RU overlaps with the given set of RUs.
static std::vector< RuSpec > GetRuSpecs(uint8_t ruAllocation)
Get the RU specs based on RU_ALLOCATION.
static uint16_t GetBandwidth(RuType ruType)
Get the approximate bandwidth occupied by a RU.
static SubcarrierGroup GetSubcarrierGroup(uint16_t bw, RuType ruType, std::size_t phyIndex)
Get the subcarrier group of the RU having the given PHY index among all the RUs of the given type (nu...
static std::size_t GetNRus(uint16_t bw, RuType ruType)
Get the number of distinct RUs of the given type (number of tones) available in a HE PPDU of the give...
static constexpr uint8_t EMPTY_242_TONE_RU
Empty 242-tone RU identifier.
static std::vector< HeRu::RuSpec > GetRusOfType(uint16_t bw, HeRu::RuType ruType)
Get the set of distinct RUs of the given type (number of tones) available in a HE PPDU of the given b...
std::vector< SubcarrierRange > SubcarrierGroup
a vector of subcarrier ranges defining a subcarrier group
std::map< uint8_t, std::vector< RuSpec > > RuAllocationMap
RU allocation map.
static std::vector< HeRu::RuSpec > GetCentral26TonesRus(uint16_t bw, HeRu::RuType ruType)
Get the set of 26-tone RUs that can be additionally allocated if the given bandwidth is split in RUs ...
std::pair< int16_t, int16_t > SubcarrierRange
(lowest index, highest index) pair defining a subcarrier range
static const SubcarrierGroups m_heRuSubcarrierGroups
Subcarrier groups for all RUs (with indices being applicable to primary 80 MHz channel)
static uint8_t GetEqualizedRuAllocation(RuType ruType, bool isOdd)
Get the RU_ALLOCATION value for equal size RUs.
std::pair< uint8_t, RuType > BwTonesPair
(bandwidth, number of tones) pair
RuType
The different HE Resource Unit (RU) types.
static RuType GetEqualSizedRusForStations(uint16_t bandwidth, std::size_t &nStations, std::size_t &nCentral26TonesRus)
Given the channel bandwidth and the number of stations candidate for being assigned an RU,...
static RuType GetRuType(uint16_t bandwidth)
Get the RU corresponding to the approximate bandwidth.
static const RuAllocationMap m_heRuAllocations
Table 27-26 of IEEE 802.11ax-2021.
std::map< BwTonesPair, std::vector< SubcarrierGroup > > SubcarrierGroups
map (bandwidth, number of tones) pairs to the group of subcarrier ranges
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::ostream & operator<<(std::ostream &os, const Angles &a)