A Discrete-Event Network Simulator
API
ctrl-headers.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2009 MIRKO BANCHI
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: Mirko Banchi <mk.banchi@gmail.com>
19  */
20 
21 #ifndef CTRL_HEADERS_H
22 #define CTRL_HEADERS_H
23 
24 #include <list>
25 #include <vector>
26 #include "ns3/header.h"
27 #include "block-ack-type.h"
28 #include "ns3/he-ru.h"
29 #include "ns3/mac48-address.h"
30 
31 namespace ns3 {
32 
33 class WifiTxVector;
34 enum AcIndex : uint8_t;
35 
49 {
50 public:
57  static TypeId GetTypeId (void);
58 
59  TypeId GetInstanceTypeId (void) const override;
60  void Print (std::ostream &os) const override;
61  uint32_t GetSerializedSize (void) const override;
62  void Serialize (Buffer::Iterator start) const override;
63  uint32_t Deserialize (Buffer::Iterator start) override;
64 
70  void SetHtImmediateAck (bool immediateAck);
76  void SetType (BlockAckReqType type);
82  void SetTidInfo (uint8_t tid);
89  void SetStartingSequence (uint16_t seq);
90 
97  bool MustSendHtImmediateAck (void) const;
103  BlockAckReqType GetType (void) const;
109  uint8_t GetTidInfo (void) const;
115  uint16_t GetStartingSequence (void) const;
123  bool IsBasic (void) const;
131  bool IsCompressed (void) const;
138  bool IsExtendedCompressed (void) const;
145  bool IsMultiTid (void) const;
146 
152  uint16_t GetStartingSequenceControl (void) const;
153 
154 
155 private:
162  void SetStartingSequenceControl (uint16_t seqControl);
168  uint16_t GetBarControl (void) const;
174  void SetBarControl (uint16_t bar);
175 
184  uint16_t m_tidInfo;
185  uint16_t m_startingSeq;
186 };
187 
188 
202 {
203 public:
210  static TypeId GetTypeId (void);
211  TypeId GetInstanceTypeId (void) const;
212  void Print (std::ostream &os) const;
213  uint32_t GetSerializedSize (void) const;
214  void Serialize (Buffer::Iterator start) const;
216 
222  void SetHtImmediateAck (bool immediateAck);
228  void SetType (BlockAckType type);
238  void SetTidInfo (uint8_t tid, std::size_t index = 0);
248  void SetStartingSequence (uint16_t seq, std::size_t index = 0);
249 
256  bool MustSendHtImmediateAck (void) const;
262  BlockAckType GetType (void) const;
272  uint8_t GetTidInfo (std::size_t index = 0) const;
281  uint16_t GetStartingSequence (std::size_t index = 0) const;
288  bool IsBasic (void) const;
295  bool IsCompressed (void) const;
302  bool IsExtendedCompressed (void) const;
309  bool IsMultiTid (void) const;
316  bool IsMultiSta (void) const;
317 
325  void SetAid11 (uint16_t aid, std::size_t index);
333  uint16_t GetAid11 (std::size_t index) const;
341  void SetAckType (bool type, std::size_t index);
349  bool GetAckType (std::size_t index) const;
358  void SetUnassociatedStaAddress (const Mac48Address& ra, std::size_t index);
367  Mac48Address GetUnassociatedStaAddress (std::size_t index) const;
374  std::size_t GetNPerAidTidInfoSubfields (void) const;
383  std::vector<uint32_t> FindPerAidTidInfoWithAid (uint16_t aid) const;
384 
393  void SetReceivedPacket (uint16_t seq, std::size_t index = 0);
401  void SetReceivedFragment (uint16_t seq, uint8_t frag);
412  bool IsPacketReceived (uint16_t seq, std::size_t index = 0) const;
423  bool IsFragmentReceived (uint16_t seq, uint8_t frag) const;
424 
433  uint16_t GetStartingSequenceControl (std::size_t index = 0) const;
442  void SetStartingSequenceControl (uint16_t seqControl, std::size_t index = 0);
451  const std::vector<uint8_t>& GetBitmap (std::size_t index = 0) const;
452 
459  void ResetBitmap (std::size_t index = 0);
460 
461 
462 private:
468  uint16_t GetBaControl (void) const;
474  void SetBaControl (uint16_t ba);
475 
484  Buffer::Iterator SerializeBitmap (Buffer::Iterator start, std::size_t index = 0) const;
493  Buffer::Iterator DeserializeBitmap (Buffer::Iterator start, std::size_t index = 0);
494 
510  uint16_t IndexInBitmap (uint16_t seq, std::size_t index = 0) const;
511 
521  bool IsInBitmap (uint16_t seq, std::size_t index = 0) const;
522 
531  uint16_t m_tidInfo;
532 
542  {
543  uint16_t m_aidTidInfo;
546  uint16_t m_startingSeq;
547  std::vector<uint8_t> m_bitmap;
550  };
551 
552  std::vector<BaInfoInstance> m_baInfo;
553 };
554 
555 
560 enum TriggerFrameType : uint8_t
561 {
562  BASIC_TRIGGER = 0, // Basic
563  BFRP_TRIGGER = 1, // Beamforming Report Poll
564  MU_BAR_TRIGGER = 2, // Multi-User Block Ack Request
565  MU_RTS_TRIGGER = 3, // Multi-User Request To Send
566  BSRP_TRIGGER = 4, // Buffer Status Report Poll
567  GCR_MU_BAR_TRIGGER = 5, // Groupcast with Retries MU-BAR
568  BQRP_TRIGGER = 6, // Bandwidth Query Report Poll
569  NFRP_TRIGGER = 7 // NDP Feedback Report Poll
570 };
571 
572 
582 {
583 public:
589  CtrlTriggerUserInfoField (uint8_t triggerType);
609  void Print (std::ostream &os) const;
615  uint32_t GetSerializedSize (void) const;
637  TriggerFrameType GetType (void) const;
645  void SetAid12 (uint16_t aid);
651  uint16_t GetAid12 (void) const;
658  bool HasRaRuForAssociatedSta (void) const;
665  bool HasRaRuForUnassociatedSta (void) const;
671  void SetRuAllocation (HeRu::RuSpec ru);
677  HeRu::RuSpec GetRuAllocation (void) const;
683  void SetUlFecCodingType (bool ldpc);
689  bool GetUlFecCodingType (void) const;
695  void SetUlMcs (uint8_t mcs);
701  uint8_t GetUlMcs (void) const;
707  void SetUlDcm (bool dcm);
713  bool GetUlDcm (void) const;
722  void SetSsAllocation (uint8_t startingSs, uint8_t nSs);
728  uint8_t GetStartingSs (void) const;
734  uint8_t GetNss (void) const;
743  void SetRaRuInformation (uint8_t nRaRu, bool moreRaRu);
750  uint8_t GetNRaRus (void) const;
758  bool GetMoreRaRu (void) const;
763  void SetUlTargetRssiMaxTxPower (void);
770  void SetUlTargetRssi (int8_t dBm);
778  bool IsUlTargetRssiMaxTxPower (void) const;
785  int8_t GetUlTargetRssi (void) const;
793  void SetBasicTriggerDepUserInfo (uint8_t spacingFactor, uint8_t tidLimit, AcIndex prefAc);
800  uint8_t GetMpduMuSpacingFactor (void) const;
807  uint8_t GetTidAggregationLimit (void) const;
814  AcIndex GetPreferredAc (void) const;
835 
836 private:
837  uint16_t m_aid12;
838  uint8_t m_ruAllocation;
840  uint8_t m_ulMcs;
841  bool m_ulDcm;
842  union
843  {
844  struct
845  {
846  uint8_t startingSs;
847  uint8_t nSs;
849  struct
850  {
851  uint8_t nRaRu;
852  bool moreRaRu;
855  uint8_t m_ulTargetRssi;
856  uint8_t m_triggerType;
859 };
860 
861 
885 class CtrlTriggerHeader : public Header
886 {
887 public:
904  CtrlTriggerHeader (TriggerFrameType type, const WifiTxVector& txVector);
920  static TypeId GetTypeId (void);
921  TypeId GetInstanceTypeId (void) const;
922  void Print (std::ostream &os) const;
923  uint32_t GetSerializedSize (void) const;
924  void Serialize (Buffer::Iterator start) const;
926 
932  void SetType (TriggerFrameType type);
938  TriggerFrameType GetType (void) const;
944  const char * GetTypeString (void) const;
951  static const char * GetTypeString (TriggerFrameType type);
958  bool IsBasic (void) const;
965  bool IsBfrp (void) const;
972  bool IsMuBar (void) const;
979  bool IsMuRts (void) const;
986  bool IsBsrp (void) const;
993  bool IsGcrMuBar (void) const;
1000  bool IsBqrp (void) const;
1007  bool IsNfrp (void) const;
1013  void SetUlLength (uint16_t len);
1019  uint16_t GetUlLength (void) const;
1028  WifiTxVector GetHeTbTxVector (uint16_t staId) const;
1034  void SetMoreTF (bool more);
1040  bool GetMoreTF (void) const;
1046  void SetCsRequired (bool cs);
1052  bool GetCsRequired (void) const;
1058  void SetUlBandwidth (uint16_t bw);
1064  uint16_t GetUlBandwidth (void) const;
1075  void SetGiAndLtfType (uint16_t guardInterval, uint8_t ltfType);
1081  uint16_t GetGuardInterval (void) const;
1087  uint8_t GetLtfType (void) const;
1093  void SetApTxPower (int8_t power);
1100  int8_t GetApTxPower (void) const;
1106  void SetUlSpatialReuse (uint16_t sr);
1112  uint16_t GetUlSpatialReuse (void) const;
1120 
1138 
1140  typedef std::list<CtrlTriggerUserInfoField>::const_iterator ConstIterator;
1141 
1143  typedef std::list<CtrlTriggerUserInfoField>::iterator Iterator;
1144 
1150  ConstIterator begin (void) const;
1156  ConstIterator end (void) const;
1162  Iterator begin (void);
1168  Iterator end (void);
1174  std::size_t GetNUserInfoFields (void) const;
1185  ConstIterator FindUserInfoWithAid (ConstIterator start, uint16_t aid12) const;
1194  ConstIterator FindUserInfoWithAid (uint16_t aid12) const;
1241  bool IsValid (void) const;
1242 
1243 private:
1247  uint8_t m_triggerType;
1248  uint16_t m_ulLength;
1249  bool m_moreTF;
1251  uint8_t m_ulBandwidth;
1252  uint8_t m_giAndLtfType;
1253  uint8_t m_apTxPower;
1254  uint16_t m_ulSpatialReuse;
1258  std::list<CtrlTriggerUserInfoField> m_userInfoFields;
1259 };
1260 
1261 } //namespace ns3
1262 
1263 #endif /* CTRL_HEADERS_H */
iterator in a Buffer instance
Definition: buffer.h:99
Headers for BlockAckRequest.
Definition: ctrl-headers.h:49
BlockAckReqType GetType(void) const
Return the BlockAckRequest type.
bool IsMultiTid(void) const
Check if the current Ack Policy has Multi-TID Block Ack.
void Serialize(Buffer::Iterator start) const override
Definition: ctrl-headers.cc:93
uint16_t m_startingSeq
starting seq
Definition: ctrl-headers.h:185
bool m_barAckPolicy
The LSB bit of the BAR control field is used only for the HT (High Throughput) delayed block ack conf...
Definition: ctrl-headers.h:182
uint16_t m_tidInfo
TID info.
Definition: ctrl-headers.h:184
TypeId GetInstanceTypeId(void) const override
Get the most derived TypeId for this Object.
Definition: ctrl-headers.cc:59
bool MustSendHtImmediateAck(void) const
Check if the current Ack Policy is immediate.
void Print(std::ostream &os) const override
Definition: ctrl-headers.cc:65
bool IsCompressed(void) const
Check if the current Ack Policy is Compressed Block Ack and not multi-TID.
uint8_t GetTidInfo(void) const
Return the Traffic ID (TID).
void SetType(BlockAckReqType type)
Set the BlockAckRequest type.
uint16_t GetStartingSequence(void) const
Return the starting sequence number.
static TypeId GetTypeId(void)
Get the type ID.
Definition: ctrl-headers.cc:48
BlockAckReqType m_barType
BAR type.
Definition: ctrl-headers.h:183
void SetStartingSequenceControl(uint16_t seqControl)
Set the starting sequence control with the given sequence control value.
void SetHtImmediateAck(bool immediateAck)
Enable or disable HT immediate Ack.
void SetStartingSequence(uint16_t seq)
Set the starting sequence number from the given raw sequence control field.
void SetTidInfo(uint8_t tid)
Set Traffic ID (TID).
uint16_t GetStartingSequenceControl(void) const
Return the starting sequence control.
uint32_t GetSerializedSize(void) const override
Definition: ctrl-headers.cc:71
void SetBarControl(uint16_t bar)
Set the Block Ack control.
bool IsBasic(void) const
Check if the current Ack Policy is Basic Block Ack (i.e.
bool IsExtendedCompressed(void) const
Check if the current Ack Policy is Extended Compressed Block Ack.
uint16_t GetBarControl(void) const
Return the Block Ack control.
Headers for BlockAck response.
Definition: ctrl-headers.h:202
void SetBaControl(uint16_t ba)
Set the Block Ack control.
uint32_t GetSerializedSize(void) const
void SetStartingSequence(uint16_t seq, std::size_t index=0)
For Block Ack variants other than Multi-STA Block Ack, set the starting sequence number to the given ...
uint16_t GetBaControl(void) const
Return the Block Ack control.
uint16_t GetStartingSequenceControl(std::size_t index=0) const
Return the value of the Starting Sequence Control subfield.
bool IsCompressed(void) const
Check if the current BA policy is Compressed Block Ack.
BlockAckType m_baType
BA type.
Definition: ctrl-headers.h:530
bool IsFragmentReceived(uint16_t seq, uint8_t frag) const
Check if the packet with the given sequence number and fragment number was acknowledged in this Block...
void Serialize(Buffer::Iterator start) const
bool IsPacketReceived(uint16_t seq, std::size_t index=0) const
Check if the packet with the given sequence number was acknowledged in this BlockAck response.
void SetStartingSequenceControl(uint16_t seqControl, std::size_t index=0)
Set the Starting Sequence Control subfield with the given sequence control value.
std::vector< uint32_t > FindPerAidTidInfoWithAid(uint16_t aid) const
For Multi-STA Block Acks, get the indices of the Per AID TID Info subfields carrying the given AID in...
static TypeId GetTypeId(void)
Get the type ID.
Buffer::Iterator SerializeBitmap(Buffer::Iterator start, std::size_t index=0) const
Serialize bitmap to the given buffer.
bool IsBasic(void) const
Check if the current BA policy is Basic Block Ack.
uint16_t GetStartingSequence(std::size_t index=0) const
For Block Ack variants other than Multi-STA Block Ack, get the starting sequence number.
Mac48Address GetUnassociatedStaAddress(std::size_t index) const
For Multi-STA Block Acks, get the RA subfield of the Per AID TID Info subfield (with AID11 subfield e...
uint8_t GetTidInfo(std::size_t index=0) const
For Block Ack variants other than Multi-STA Block Ack, get the TID_INFO subfield of the BA Control fi...
const std::vector< uint8_t > & GetBitmap(std::size_t index=0) const
Return a const reference to the bitmap from the BlockAck response header.
bool m_baAckPolicy
The LSB bit of the BA control field is used only for the HT (High Throughput) delayed block ack confi...
Definition: ctrl-headers.h:529
void SetUnassociatedStaAddress(const Mac48Address &ra, std::size_t index)
For Multi-STA Block Acks, set the RA subfield of the Per AID TID Info subfield (with AID11 subfield e...
Buffer::Iterator DeserializeBitmap(Buffer::Iterator start, std::size_t index=0)
Deserialize bitmap from the given buffer.
void ResetBitmap(std::size_t index=0)
Reset the bitmap to 0.
void SetAckType(bool type, std::size_t index)
For Multi-STA Block Acks, set the Ack Type subfield of the Per AID TID Info subfield identified by th...
TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
std::size_t GetNPerAidTidInfoSubfields(void) const
For Multi-STA Block Acks, get the number of Per AID TID Info subfields included in this Block Ack.
void SetTidInfo(uint8_t tid, std::size_t index=0)
For Block Ack variants other than Multi-STA Block Ack, set the TID_INFO subfield of the BA Control fi...
uint16_t m_tidInfo
TID info (reserved if Multi-STA Block Ack)
Definition: ctrl-headers.h:531
void SetType(BlockAckType type)
Set the block ack type.
BlockAckType GetType(void) const
Return the block ack type ID.
bool MustSendHtImmediateAck(void) const
Check if the current Ack Policy is immediate.
void SetReceivedFragment(uint16_t seq, uint8_t frag)
Set the bitmap that the packet with the given sequence number and fragment number was received.
bool IsExtendedCompressed(void) const
Check if the current BA policy is Extended Compressed Block Ack.
void SetReceivedPacket(uint16_t seq, std::size_t index=0)
Record in the bitmap that the packet with the given sequence number was received.
bool IsMultiTid(void) const
Check if the current BA policy is Multi-TID Block Ack.
void SetHtImmediateAck(bool immediateAck)
Enable or disable HT immediate Ack.
std::vector< BaInfoInstance > m_baInfo
BA Information field.
Definition: ctrl-headers.h:552
bool IsMultiSta(void) const
Check if the BlockAck frame variant is Multi-STA Block Ack.
void SetAid11(uint16_t aid, std::size_t index)
For Multi-STA Block Acks, set the AID11 subfield of the Per AID TID Info subfield identified by the g...
bool GetAckType(std::size_t index) const
For Multi-STA Block Acks, get the Ack Type subfield of the Per AID TID Info subfield identified by th...
uint16_t GetAid11(std::size_t index) const
For Multi-STA Block Acks, get the AID11 subfield of the Per AID TID Info subfield identified by the g...
bool IsInBitmap(uint16_t seq, std::size_t index=0) const
Check if sequence number seq can be acknowledged in the bitmap.
uint16_t IndexInBitmap(uint16_t seq, std::size_t index=0) const
This function is used to correctly index in both bitmap and compressed bitmap, one bit or one block o...
void Print(std::ostream &os) const
Headers for Trigger frames.
Definition: ctrl-headers.h:886
int8_t GetApTxPower(void) const
Get the power value (dBm) indicated by the AP TX Power subfield of the Common Info field.
ConstIterator begin(void) const
Get a const iterator pointing to the first User Info field in the list.
CtrlTriggerUserInfoField & AddUserInfoField(void)
Append a new User Info field to this Trigger frame and return a non-const reference to it.
uint32_t GetSerializedSize(void) const
bool IsBsrp(void) const
Check if this is a Buffer Status Report Poll Trigger frame.
void SetApTxPower(int8_t power)
Set the AP TX Power subfield of the Common Info field.
CtrlTriggerHeader GetCommonInfoField(void) const
Get a copy of the Common Info field of this Trigger frame.
bool GetMoreTF(void) const
Get the More TF subfield of the Common Info field.
bool IsBqrp(void) const
Check if this is a Bandwidth Query Report Poll Trigger frame.
uint8_t m_giAndLtfType
GI And LTF Type subfield.
WifiTxVector GetHeTbTxVector(uint16_t staId) const
Get the TX vector that the station with the given STA-ID will use to send the HE TB PPDU solicited by...
static TypeId GetTypeId(void)
Get the type ID.
void Serialize(Buffer::Iterator start) const
bool IsMuRts(void) const
Check if this is a MU-RTS Trigger frame.
void SetUlBandwidth(uint16_t bw)
Set the bandwidth of the solicited HE TB PPDU.
bool IsValid(void) const
Check the validity of this Trigger frame.
uint16_t GetUlBandwidth(void) const
Get the bandwidth of the solicited HE TB PPDU.
std::size_t GetNUserInfoFields(void) const
Get the number of User Info fields in this Trigger Frame.
std::list< CtrlTriggerUserInfoField >::const_iterator ConstIterator
User Info fields list const iterator.
uint8_t m_triggerType
Common Info field.
void SetType(TriggerFrameType type)
Set the Trigger frame type.
void Print(std::ostream &os) const
uint16_t GetUlSpatialReuse(void) const
Get the UL Spatial Reuse subfield of the Common Info field.
ConstIterator FindUserInfoWithAid(ConstIterator start, uint16_t aid12) const
Get a const iterator pointing to the first User Info field found (starting from the one pointed to by...
const char * GetTypeString(void) const
Return a string corresponding to the Trigger Frame type.
void SetCsRequired(bool cs)
Set the CS Required subfield of the Common Info field.
ConstIterator end(void) const
Get a const iterator indicating past-the-last User Info field in the list.
uint16_t m_ulLength
Value for the L-SIG Length field.
TriggerFrameType GetType(void) const
Get the Trigger Frame type.
bool m_csRequired
Carrier Sense required.
void SetGiAndLtfType(uint16_t guardInterval, uint8_t ltfType)
Set the GI And LTF Type subfield of the Common Info field.
TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
bool GetCsRequired(void) const
Get the CS Required subfield of the Common Info field.
bool IsMuBar(void) const
Check if this is a MU-BAR Trigger frame.
bool IsNfrp(void) const
Check if this is a NDP Feedback Report Poll Trigger frame.
uint8_t GetLtfType(void) const
Get the LTF type of the solicited HE TB PPDU.
std::list< CtrlTriggerUserInfoField > m_userInfoFields
List of User Info fields.
bool m_moreTF
True if a subsequent Trigger frame follows.
uint16_t GetUlLength(void) const
Get the UL Length subfield of the Common Info field.
bool IsBasic(void) const
Check if this is a Basic Trigger frame.
void SetUlSpatialReuse(uint16_t sr)
Set the UL Spatial Reuse subfield of the Common Info field.
uint8_t m_ulBandwidth
UL BW subfield.
bool IsBfrp(void) const
Check if this is a Beamforming Report Poll Trigger frame.
std::list< CtrlTriggerUserInfoField >::iterator Iterator
User Info fields list iterator.
ConstIterator FindUserInfoWithRaRuAssociated(void) const
Get a const iterator pointing to the first User Info field found which allocates a Random Access RU f...
void SetUlLength(uint16_t len)
Set the UL Length subfield of the Common Info field.
ConstIterator FindUserInfoWithRaRuUnassociated(void) const
Get a const iterator pointing to the first User Info field found which allocates a Random Access RU f...
uint16_t GetGuardInterval(void) const
Get the guard interval duration (in nanoseconds) of the solicited HE TB PPDU.
bool IsGcrMuBar(void) const
Check if this is a Groupcast with Retries (GCR) MU-BAR Trigger frame.
uint8_t m_apTxPower
Tx Power used by AP to transmit the Trigger Frame.
CtrlTriggerHeader & operator=(const CtrlTriggerHeader &trigger)
Copy assignment operator.
uint16_t m_ulSpatialReuse
Value for the Spatial Reuse field in HE-SIG-A.
void SetMoreTF(bool more)
Set the More TF subfield of the Common Info field.
User Info field of Trigger frames.
Definition: ctrl-headers.h:582
bool HasRaRuForAssociatedSta(void) const
Check if this User Info field allocates a Random Access RU for stations associated with the AP that t...
uint8_t GetStartingSs(void) const
Get the starting spatial stream.
uint8_t startingSs
Starting spatial stream.
Definition: ctrl-headers.h:846
HeRu::RuSpec GetRuAllocation(void) const
Get the RU specified by the RU Allocation subfield.
const CtrlBAckRequestHeader & GetMuBarTriggerDepUserInfo(void) const
Get the Trigger Dependent User Info subfield for the MU-BAR variant of Trigger frames,...
uint8_t m_triggerType
Trigger frame type.
Definition: ctrl-headers.h:856
int8_t GetUlTargetRssi(void) const
Get the expected receive signal power for the solicited HE TB PPDU.
void Print(std::ostream &os) const
Print the content of this User Info field.
bool IsUlTargetRssiMaxTxPower(void) const
Return true if the UL Target RSSI subfield indicates to the station to transmit an HE TB PPDU respons...
uint8_t nRaRu
Number of Random Access RUs.
Definition: ctrl-headers.h:851
uint16_t GetAid12(void) const
Get the value of the AID12 subfield.
void SetAid12(uint16_t aid)
Set the AID12 subfield, which carries the 12 LSBs of the AID of the station for which this User Info ...
union ns3::CtrlTriggerUserInfoField::@73 m_bits26To31
Fields occupying bits 26-31 in the User Info field.
AcIndex GetPreferredAc(void) const
Get the Preferred AC subfield.
CtrlTriggerUserInfoField(uint8_t triggerType)
Constructor.
uint8_t GetTidAggregationLimit(void) const
Get the TID Aggregation Limit.
void SetUlFecCodingType(bool ldpc)
Set the UL FEC Coding Type subfield, which indicates whether BCC or LDPC is used.
bool HasRaRuForUnassociatedSta(void) const
Check if this User Info field allocates a Random Access RU for stations not associated with the AP th...
bool GetUlDcm(void) const
Get the UL DCM subfield, which indicates whether or not DCM is used.
void SetUlMcs(uint8_t mcs)
Set the UL MCS subfield, which indicates the MCS of the solicited HE TB PPDU.
void SetMuBarTriggerDepUserInfo(const CtrlBAckRequestHeader &bar)
Set the Trigger Dependent User Info subfield for the MU-BAR variant of Trigger frames,...
void SetUlDcm(bool dcm)
Set the UL DCM subfield, which indicates whether or not DCM is used.
void SetSsAllocation(uint8_t startingSs, uint8_t nSs)
Set the SS Allocation subfield, which is present when the AID12 subfield is neither 0 nor 2045.
uint16_t m_aid12
Association ID of the addressed station.
Definition: ctrl-headers.h:837
uint8_t nSs
Number of spatial streams.
Definition: ctrl-headers.h:847
uint8_t m_basicTriggerDependentUserInfo
Basic Trigger variant of Trigger Dependent User Info subfield.
Definition: ctrl-headers.h:857
uint8_t m_ulMcs
MCS to be used by the addressed station.
Definition: ctrl-headers.h:840
uint8_t m_ruAllocation
RU Allocation.
Definition: ctrl-headers.h:838
bool GetUlFecCodingType(void) const
Get the UL FEC Coding Type subfield, which indicates whether BCC or LDPC is used.
uint8_t GetNRaRus(void) const
Get the number of contiguous RUs for Random Access.
Buffer::Iterator Serialize(Buffer::Iterator start) const
Serialize the User Info field to the given buffer.
uint32_t GetSerializedSize(void) const
Get the expected size of this User Info field.
bool m_ulDcm
whether or not to use Dual Carrier Modulation
Definition: ctrl-headers.h:841
void SetUlTargetRssi(int8_t dBm)
Set the UL Target RSSI subfield to indicate the expected receive signal power in dBm.
TriggerFrameType GetType(void) const
Get the type of the Trigger Frame this User Info field belongs to.
void SetUlTargetRssiMaxTxPower(void)
Set the UL Target RSSI subfield to indicate to the station to transmit an HE TB PPDU response at its ...
CtrlTriggerUserInfoField & operator=(const CtrlTriggerUserInfoField &userInfo)
Copy assignment operator.
uint8_t GetUlMcs(void) const
Get the UL MCS subfield, which indicates the MCS of the solicited HE TB PPDU.
uint8_t GetNss(void) const
Get the number of spatial streams.
uint8_t GetMpduMuSpacingFactor(void) const
Get the MPDU MU spacing factor.
uint8_t m_ulTargetRssi
Expected receive signal power.
Definition: ctrl-headers.h:855
void SetRaRuInformation(uint8_t nRaRu, bool moreRaRu)
Set the RA-RU Information subfield, which is present when the AID12 subfield is 0 or 2045.
Buffer::Iterator Deserialize(Buffer::Iterator start)
Deserialize the User Info field from the given buffer.
struct ns3::CtrlTriggerUserInfoField::@73::@75 raRuInformation
Used when AID12 is 0 or 2045.
struct ns3::CtrlTriggerUserInfoField::@73::@74 ssAllocation
Used when AID12 is neither 0 nor 2045.
void SetRuAllocation(HeRu::RuSpec ru)
Set the RU Allocation subfield according to the specified RU.
void SetBasicTriggerDepUserInfo(uint8_t spacingFactor, uint8_t tidLimit, AcIndex prefAc)
Set the Trigger Dependent User Info subfield for Basic Trigger frames.
bool moreRaRu
More RA-RU in subsequent Trigger frames.
Definition: ctrl-headers.h:852
bool m_ulFecCodingType
UL FEC Coding Type.
Definition: ctrl-headers.h:839
bool GetMoreRaRu(void) const
Return true if more RA-RUs are allocated in subsequent Trigger frames that are sent before the end of...
CtrlBAckRequestHeader m_muBarTriggerDependentUserInfo
MU-BAR variant of Trigger Dependent User Info subfield.
Definition: ctrl-headers.h:858
RU Specification.
Definition: he-ru.h:68
Protocol header serialization and deserialization.
Definition: header.h:43
virtual uint32_t Deserialize(Buffer::Iterator start)=0
Deserialize the object from a buffer iterator.
an EUI-48 address
Definition: mac48-address.h:44
a unique identifier for an interface.
Definition: type-id.h:59
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
AcIndex
This enumeration defines the Access Categories as an enumeration with values corresponding to the AC ...
Definition: qos-utils.h:71
TriggerFrameType
The different Trigger frame types.
Definition: ctrl-headers.h:561
@ NFRP_TRIGGER
Definition: ctrl-headers.h:569
@ BFRP_TRIGGER
Definition: ctrl-headers.h:563
@ MU_RTS_TRIGGER
Definition: ctrl-headers.h:565
@ GCR_MU_BAR_TRIGGER
Definition: ctrl-headers.h:567
@ MU_BAR_TRIGGER
Definition: ctrl-headers.h:564
@ BASIC_TRIGGER
Definition: ctrl-headers.h:562
@ BQRP_TRIGGER
Definition: ctrl-headers.h:568
@ BSRP_TRIGGER
Definition: ctrl-headers.h:566
Every class exported by the ns3 library is enclosed in the ns3 namespace.
def start()
Definition: core.py:1853
The different BlockAckRequest variants.
The different BlockAck variants.
The following structure can hold the BA Information field for the Basic and Compressed variants,...
Definition: ctrl-headers.h:542
Mac48Address m_ra
RA subfield (address of an unassociated station) for Multi-STA; reserved for other variants.
Definition: ctrl-headers.h:548
uint16_t m_startingSeq
Block Ack Starting Sequence Control subfield.
Definition: ctrl-headers.h:546
std::vector< uint8_t > m_bitmap
block ack bitmap
Definition: ctrl-headers.h:547
uint16_t m_aidTidInfo
Reserved for Basic and Compressed Per TID Info subfield for Multi-TID AID TID Info subfield for Multi...
Definition: ctrl-headers.h:543