A Discrete-Event Network Simulator
API
he-capabilities.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2016
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Sébastien Deronne <sebastien.deronne@gmail.com>
19  */
20 
21 #ifndef HE_CAPABILITIES_H
22 #define HE_CAPABILITIES_H
23 
24 #include "ns3/buffer.h"
26 
27 namespace ns3 {
28 
35 {
36 public:
37  HeCapabilities ();
42  void SetHeSupported (uint8_t hesupported);
52  uint8_t GetInformationFieldSize () const;
64  uint8_t DeserializeInformationField (Buffer::Iterator start, uint8_t length);
65 
72  void SetHeMacCapabilitiesInfo (uint32_t ctrl1, uint8_t ctrl2);
79  void SetHePhyCapabilitiesInfo (uint64_t ctrl1, uint8_t ctrl2);
85  void SetSupportedMcsAndNss (uint16_t ctrl);
86 
92  uint32_t GetHeMacCapabilitiesInfo1 () const;
98  uint8_t GetHeMacCapabilitiesInfo2 () const;
104  uint64_t GetHePhyCapabilitiesInfo1 () const;
110  uint8_t GetHePhyCapabilitiesInfo2 () const;
116  uint16_t GetSupportedMcsAndNss () const;
117 
118  // PHY Capabilities Info fields
124  void SetChannelWidthSet (uint8_t channelWidthSet);
130  void SetHeLtfAndGiForHePpdus (uint8_t heLtfAndGiForHePpdus);
136  uint8_t GetChannelWidthSet (void) const;
142  uint8_t GetHeLtfAndGiForHePpdus (void) const;
148  uint8_t GetHighestMcsSupported (void) const;
154  uint8_t GetHighestNssSupported (void) const;
155 
156  // MAC Capabilities Info fields
162  void SetMaxAmpduLengthExponent (uint8_t exponent);
163 
164  // MCS and NSS field information
170  void SetHighestMcsSupported (uint8_t mcs);
176  void SetHighestNssSupported (uint8_t nss);
177 
184  bool IsSupportedTxMcs (uint8_t mcs) const;
191  bool IsSupportedRxMcs (uint8_t mcs) const;
192 
193  /*
194  * This information element is a bit special in that it is only
195  * included if the STA is an HE STA. To support this we
196  * override the Serialize and GetSerializedSize methods of
197  * WifiInformationElement.
198  */
199 
212  uint16_t GetSerializedSize () const;
213 
214 
215 private:
216  //MAC Capabilities Info fields
226  uint8_t m_allAckSupport;
228  uint8_t m_aBsrSupport;
241  uint8_t m_qtpSupport;
242  uint8_t m_aBqrSupport;
243 
244  //PHY Capabilities Info fields
248  uint8_t m_deviceClass;
252  uint8_t m_stbcTxAndRx;
253  uint8_t m_doppler;
254  uint8_t m_ulMu;
255  uint8_t m_dcmEncodingTx;
256  uint8_t m_dcmEncodingRx;
258  uint8_t m_suBeamformer;
259  uint8_t m_suBeamformee;
260  uint8_t m_muBeamformer;
278 
279  //MCS and NSS field information
282  std::vector<uint8_t> m_txBwMap;
283  std::vector<uint8_t> m_rxBwMap;
284 
286  uint8_t m_heSupported;
287 };
288 
289 std::ostream &operator << (std::ostream &os, const HeCapabilities &HeCapabilities);
290 std::istream &operator >> (std::istream &is, HeCapabilities &HeCapabilities);
291 
293 
294 } //namespace ns3
295 
296 #endif /* HE_CAPABILITY_H */
uint8_t m_4TimesHeLtfAnd800NsGiSupportForHePpdus
4 times HE LFT and 800 HS GI support for HE PPDUs
uint8_t m_rxControlFrameToMultiBss
receive control frame to multi bias
uint8_t m_beamformeeStsForSmallerOrEqualThan80Mhz
beam formee STS for < 80 MHz
uint8_t m_heLtfAndGiForNdp
HE LTF and GI for NDP.
uint8_t m_srpBasedSrSupport
SRP based SR support.
std::istream & operator>>(std::istream &is, Angles &a)
initialize a struct Angles from input
Definition: angles.cc:48
uint8_t m_bsrpAmpduAggregation
BSRP AMPDU aggregation.
uint8_t GetHeMacCapabilitiesInfo2() const
Return the last octet of the HE MAC Capabilties Info field in the HE Capabilities information element...
uint8_t m_ngEqual16ForMuFeedbackSupport
equal 16 for MU feedback
uint8_t m_numberOfSoundingDimensionsForSmallerOrEqualThan80Mhz
of sounding diemnsions for < 80 MHz
uint8_t GetHighestMcsSupported(void) const
Get highest MCS supported.
uint8_t m_ackEnabledMultiTidAggregationSupport
ack enabled multi TID aggregation suport
uint8_t m_minimumFragmentSize
minimum fragment size
uint8_t m_beamformeeStsForLargerThan80Mhz
beam formee STS for > 80MHz
uint8_t GetHeLtfAndGiForHePpdus(void) const
Get HE LTF and GI for HE PDPUs.
uint8_t m_ulMuResponseSchedulingSupport
UL MU response scheduling support.
uint8_t m_muCascadeSupport
MU cascade support.
def start()
Definition: core.py:1790
uint8_t m_broadcastTwtSupport
broadcast TXT support
uint8_t m_twtResponderSupport
TWT responder support.
uint8_t m_heLinkAdaptation
HE link adaptation.
uint8_t m_maximumNumberOfFragmentedMsdus
maximum number of fragmentation MSDUs
void SetHighestNssSupported(uint8_t nss)
Set highest NSS supported.
uint8_t GetHighestNssSupported(void) const
Get highest NSS supported.
WifiInformationElementId ElementId() const
Get the wifi information element ID.
uint8_t m_qtpSupport
QTP support.
uint8_t m_highestNssSupportedM1
highest NSS support M1
uint8_t m_dcmEncodingTx
DCM encoding transmit.
uint8_t DeserializeInformationField(Buffer::Iterator start, uint8_t length)
Deserialize information field.
uint8_t m_plusHtcHeSupport
HTC HE support.
iterator in a Buffer instance
Definition: buffer.h:98
uint8_t m_dualBandSupport
dual band support
uint8_t m_maximumAmpduLengthExponent
maximum AMPDU length exponenet
void SetChannelWidthSet(uint8_t channelWidthSet)
Set channel width set.
uint8_t m_nstsTotalForLargerThan80Mhz
STS total for > 80 MHz.
void SetHeLtfAndGiForHePpdus(uint8_t heLtfAndGiForHePpdus)
Set HE LTF and GI for HE PDPUs.
Information element, as defined in 802.11-2007 standardThe IEEE 802.11 standard includes the notion o...
void SetHePhyCapabilitiesInfo(uint64_t ctrl1, uint8_t ctrl2)
Set the HE PHY Capabilties Info field in the HE Capabilities information element. ...
uint8_t m_deviceClass
device class
uint8_t m_aBqrSupport
ABQR support.
uint8_t m_ulMu
UL MU.
void SetHighestMcsSupported(uint8_t mcs)
Set highest MCS supported.
uint8_t m_suBeamformee
SU beam formee.
uint8_t m_stbcTxAndRx
STBC transmit and receive.
uint16_t GetSerializedSize() const
Set serialize size function.
uint64_t GetHePhyCapabilitiesInfo1() const
Return the 8 first octets of the HE PHY Capabilties Info field in the HE Capabilities information ele...
uint8_t m_multiTidAggregationSupport
multi TID aggregation support
uint8_t m_heSupported
This is used to decide if this element should be added to the frame or not.
uint8_t m_omiAcontrolSupport
OMI A control support.
uint8_t m_fragmentationSupport
fragmentation support
uint8_t m_beamformingFeedbackWithTriggerFrame
beam forming feedback with trigger frame
std::vector< uint8_t > m_txBwMap
transmit BW map
uint8_t m_32bitBaBitmapSupport
32bit BA bitmap support
uint16_t GetSupportedMcsAndNss() const
Return the MCS and NSS field in the HE Capabilities information element.
uint8_t m_ngEqual16ForSuFeedbackSupport
equal 16 for SU feedback
void SetHeMacCapabilitiesInfo(uint32_t ctrl1, uint8_t ctrl2)
Set the HE MAC Capabilties Info field in the HE Capabilities information element. ...
void SetMaxAmpduLengthExponent(uint8_t exponent)
Set maximum AMPDU length exponent.
uint8_t m_doppler
doppler
uint8_t m_allAckSupport
ack support
uint8_t m_ldpcCodingInPayload
LDPC coding in payload.
std::ostream & operator<<(std::ostream &os, const Angles &a)
print a struct Angles to output
Definition: angles.cc:42
uint8_t m_muBeamformer
MU beam former.
uint8_t m_heErSuPpduPayload
HE ER SU PPDU payload.
uint8_t m_ulHeMuPpduPayloadSupport
UL HE MU PDPU payload support.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
uint8_t m_preamblePuncturingRx
preamble puncturing receive
uint8_t GetInformationFieldSize() const
Get information field size.
uint8_t m_codebookSize42ForSuSupport
codebook size 42 for SU
uint8_t m_channelWidthSet
channel width set
uint8_t m_codebookSize75ForSuSupport
codebook size 75 for SU
uint8_t m_triggerFrameMacPaddingDuration
trigger frame MAC padding duration
uint8_t m_amsduFragmentationSupport
AMSDU fragmentation support.
void SetHeSupported(uint8_t hesupported)
Set HE supported.
uint8_t m_heLtfAndGiForHePpdus
HE LTF and GI for HE PDUs.
bool IsSupportedRxMcs(uint8_t mcs) const
Is reeive MCS supported.
bool IsSupportedTxMcs(uint8_t mcs) const
Is transmit MCS supported.
uint8_t m_highestMcsSupported
highest MCS support
uint8_t m_flexibleTwtScheduleSupport
flexible TWT schedule support
uint8_t m_dlMuMimoOnPartialBandwidth
DL MU MIMO on partial bandwidth.
uint32_t GetHeMacCapabilitiesInfo1() const
Return the 4 first octets of the HE MAC Capabilties Info field in the HE Capabilities information ele...
Buffer::Iterator Serialize(Buffer::Iterator start) const
Serialize function.
uint8_t WifiInformationElementId
This type is used to represent an Information Element ID.
uint8_t m_powerBoostFactorAlphaSupport
power boost factor alpha support
void SetSupportedMcsAndNss(uint16_t ctrl)
Set the MCS and NSS field in the HE Capabilities information element.
uint8_t m_ofdmaRaSupport
OFDM RA support.
uint8_t m_aBsrSupport
BSR support.
uint8_t GetHePhyCapabilitiesInfo2() const
Return the last octet of the HE PHY Capabilties Info field in the HE Capabilities information element...
uint8_t GetChannelWidthSet(void) const
Get channel width set.
uint8_t m_twtRequesterSupport
TWT requester support.
uint8_t m_dcmEncodingRx
DCM encoding receive.
uint8_t m_suBeamformer
SU beam former.
The IEEE 802.11ax HE Capabilities.
#define ATTRIBUTE_HELPER_HEADER(type)
Declare the attribute value, accessor and checkers for class type.
std::vector< uint8_t > m_rxBwMap
receive BW map
uint8_t m_groupAddressedMultiStaBlockAckInDlMuSupport
group addressed multi STA block ack in DL support
uint8_t m_ppeThresholdPresent
PPE threshold present.
uint8_t m_numberOfSoundingDimensionsForLargerThan80Mhz
of sounding dimensions for > 80 MHz
uint8_t m_nstsTotalForSmallerOrEqualThan80Mhz
STS total for < 80 MHz.
void SerializeInformationField(Buffer::Iterator start) const
Serialize information field.