Headers for Trigger frames. More...
#include "ctrl-headers.h"
Public Types | |
typedef std::list< CtrlTriggerUserInfoField >::const_iterator | ConstIterator |
User Info fields list const iterator. | |
typedef std::list< CtrlTriggerUserInfoField >::iterator | Iterator |
User Info fields list iterator. | |
Public Member Functions | |
CtrlTriggerHeader () | |
CtrlTriggerHeader (TriggerFrameType type, const WifiTxVector &txVector) | |
Constructor. | |
~CtrlTriggerHeader () override | |
CtrlTriggerUserInfoField & | AddUserInfoField () |
Append a new User Info field to this Trigger frame and return a non-const reference to it. | |
CtrlTriggerUserInfoField & | AddUserInfoField (const CtrlTriggerUserInfoField &userInfo) |
Append the given User Info field to this Trigger frame and return a non-const reference to it. | |
Iterator | begin () |
Get an iterator pointing to the first User Info field in the list. | |
ConstIterator | begin () const |
Get a const iterator pointing to the first User Info field in the list. | |
uint32_t | Deserialize (Buffer::Iterator start) override |
Iterator | end () |
Get an iterator indicating past-the-last User Info field in the list. | |
ConstIterator | end () const |
Get a const iterator indicating past-the-last User Info field in the list. | |
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 the given iterator) whose AID12 subfield is set to the given value. | |
ConstIterator | FindUserInfoWithAid (uint16_t aid12) const |
Get a const iterator pointing to the first User Info field found whose AID12 subfield is set to the given value. | |
ConstIterator | FindUserInfoWithRaRuAssociated () const |
Get a const iterator pointing to the first User Info field found which allocates a Random Access RU for associated stations. | |
ConstIterator | FindUserInfoWithRaRuAssociated (ConstIterator start) const |
Get a const iterator pointing to the first User Info field found (starting from the one pointed to by the given iterator) which allocates a Random Access RU for associated stations. | |
ConstIterator | FindUserInfoWithRaRuUnassociated () const |
Get a const iterator pointing to the first User Info field found which allocates a Random Access RU for unassociated stations. | |
ConstIterator | FindUserInfoWithRaRuUnassociated (ConstIterator start) const |
Get a const iterator pointing to the first User Info field found (starting from the one pointed to by the given iterator) which allocates a Random Access RU for unassociated stations. | |
int8_t | GetApTxPower () const |
Get the power value (dBm) indicated by the AP TX Power subfield of the Common Info field. | |
CtrlTriggerHeader | GetCommonInfoField () const |
Get a copy of the Common Info field of this Trigger frame. | |
bool | GetCsRequired () const |
Get the CS Required subfield of the Common Info field. | |
uint16_t | GetGuardInterval () const |
Get the guard interval duration (in nanoseconds) of the solicited HE TB PPDU. | |
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 this Trigger Frame. | |
TypeId | GetInstanceTypeId () const override |
Get the most derived TypeId for this Object. | |
uint8_t | GetLtfType () const |
Get the LTF type of the solicited HE TB PPDU. | |
bool | GetMoreTF () const |
Get the More TF subfield of the Common Info field. | |
std::size_t | GetNUserInfoFields () const |
Get the number of User Info fields in this Trigger Frame. | |
std::size_t | GetPaddingSize () const |
uint32_t | GetSerializedSize () const override |
TriggerFrameType | GetType () const |
Get the Trigger Frame type. | |
const char * | GetTypeString () const |
Return a string corresponding to the Trigger Frame type. | |
uint16_t | GetUlBandwidth () const |
Get the bandwidth of the solicited HE TB PPDU. | |
uint16_t | GetUlLength () const |
Get the UL Length subfield of the Common Info field. | |
uint16_t | GetUlSpatialReuse () const |
Get the UL Spatial Reuse subfield of the Common Info field. | |
TriggerFrameVariant | GetVariant () const |
Get the Common Info field variant. | |
bool | IsBasic () const |
Check if this is a Basic Trigger frame. | |
bool | IsBfrp () const |
Check if this is a Beamforming Report Poll Trigger frame. | |
bool | IsBqrp () const |
Check if this is a Bandwidth Query Report Poll Trigger frame. | |
bool | IsBsrp () const |
Check if this is a Buffer Status Report Poll Trigger frame. | |
bool | IsGcrMuBar () const |
Check if this is a Groupcast with Retries (GCR) MU-BAR Trigger frame. | |
bool | IsMuBar () const |
Check if this is a MU-BAR Trigger frame. | |
bool | IsMuRts () const |
Check if this is a MU-RTS Trigger frame. | |
bool | IsNfrp () const |
Check if this is a NDP Feedback Report Poll Trigger frame. | |
bool | IsValid () const |
Check the validity of this Trigger frame. | |
CtrlTriggerHeader & | operator= (const CtrlTriggerHeader &trigger) |
Copy assignment operator. | |
void | Print (std::ostream &os) const override |
void | Serialize (Buffer::Iterator start) const override |
void | SetApTxPower (int8_t power) |
Set the AP TX Power subfield of the Common Info field. | |
void | SetCsRequired (bool cs) |
Set the CS Required subfield of the Common Info field. | |
void | SetGiAndLtfType (uint16_t guardInterval, uint8_t ltfType) |
Set the GI And LTF Type subfield of the Common Info field. | |
void | SetMoreTF (bool more) |
Set the More TF subfield of the Common Info field. | |
void | SetPaddingSize (std::size_t size) |
Set the size in bytes of the Padding field. | |
void | SetType (TriggerFrameType type) |
Set the Trigger frame type. | |
void | SetUlBandwidth (uint16_t bw) |
Set the bandwidth of the solicited HE TB PPDU. | |
void | SetUlLength (uint16_t len) |
Set the UL Length subfield of the Common Info field. | |
void | SetUlSpatialReuse (uint16_t sr) |
Set the UL Spatial Reuse subfield of the Common Info field. | |
void | SetVariant (TriggerFrameVariant variant) |
Set the Common Info field variant. | |
Public Member Functions inherited from ns3::Header | |
~Header () override | |
uint32_t | Deserialize (Buffer::Iterator start) override=0 |
virtual uint32_t | Deserialize (Buffer::Iterator start)=0 |
Deserialize the object from a buffer iterator. | |
virtual uint32_t | Deserialize (Buffer::Iterator start, Buffer::Iterator end) |
Deserialize the object from a buffer iterator. | |
virtual uint32_t | GetSerializedSize () const =0 |
void | Print (std::ostream &os) const override=0 |
virtual void | Serialize (Buffer::Iterator start) const =0 |
virtual uint32_t | Deserialize (Buffer::Iterator start)=0 |
Deserialize the object from a buffer iterator. | |
virtual uint32_t | Deserialize (Buffer::Iterator start, Buffer::Iterator end) |
Deserialize the object from a buffer iterator. | |
virtual void | Print (std::ostream &os) const =0 |
Print the object contents. | |
Public Member Functions inherited from ns3::ObjectBase | |
virtual | ~ObjectBase () |
Virtual destructor. | |
void | GetAttribute (std::string name, AttributeValue &value) const |
Get the value of an attribute, raising fatal errors if unsuccessful. | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising errors. | |
virtual TypeId | GetInstanceTypeId () const =0 |
Get the most derived TypeId for this Object. | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. | |
Static Public Member Functions | |
static TypeId | GetTypeId () |
Get the type ID. | |
static const char * | GetTypeString (TriggerFrameType type) |
Return a string corresponding to the given Trigger Frame type. | |
Static Public Member Functions inherited from ns3::Header | |
static TypeId | GetTypeId () |
Get the type ID. | |
Static Public Member Functions inherited from ns3::Chunk | |
static TypeId | GetTypeId () |
Get the type ID. | |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId () |
Get the type ID. | |
Private Attributes | |
uint8_t | m_apTxPower |
Tx Power used by AP to transmit the Trigger Frame. | |
bool | m_csRequired |
Carrier Sense required. | |
uint8_t | m_giAndLtfType |
GI And LTF Type subfield. | |
bool | m_moreTF |
True if a subsequent Trigger frame follows. | |
std::size_t | m_padding |
the size in bytes of the Padding field | |
TriggerFrameType | m_triggerType |
Trigger type. | |
uint8_t | m_ulBandwidth |
UL BW subfield. | |
uint16_t | m_ulLength |
Value for the L-SIG Length field. | |
uint16_t | m_ulSpatialReuse |
Value for the Spatial Reuse field in HE-SIG-A. | |
std::list< CtrlTriggerUserInfoField > | m_userInfoFields |
List of User Info fields. | |
TriggerFrameVariant | m_variant |
Common Info field. | |
Additional Inherited Members | |
Protected Member Functions inherited from ns3::ObjectBase | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. | |
virtual void | NotifyConstructionCompleted () |
Notifier called once the ObjectBase is fully constructed. | |
Related Functions inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. | |
Headers for Trigger frames.
Introspection did not find any typical Config paths.
802.11ax amendment defines eight types of Trigger frames (see Section 9.3.1.23 of D3.0):
The Padding field is optional, given that other techniques (post-EOF A-MPDU padding, aggregating other MPDUs in the A-MPDU) are available to satisfy the minimum time requirement. The size in bytes of the Padding field is configurable.
No Attributes are defined for this type.
No TraceSources are defined for this type.
Size of this type is 48 bytes (on a 64-bit architecture).
Definition at line 941 of file ctrl-headers.h.
typedef std::list<CtrlTriggerUserInfoField>::const_iterator ns3::CtrlTriggerHeader::ConstIterator |
User Info fields list const iterator.
Definition at line 1224 of file ctrl-headers.h.
typedef std::list<CtrlTriggerUserInfoField>::iterator ns3::CtrlTriggerHeader::Iterator |
User Info fields list iterator.
Definition at line 1227 of file ctrl-headers.h.
ns3::CtrlTriggerHeader::CtrlTriggerHeader | ( | ) |
Definition at line 1626 of file ctrl-headers.cc.
ns3::CtrlTriggerHeader::CtrlTriggerHeader | ( | TriggerFrameType | type, |
const WifiTxVector & | txVector | ||
) |
Constructor.
Construct a Trigger Frame of the given type from the values stored in the given TX vector. In particular:
This constructor cannot be used to construct MU-RTS Trigger Frames.
type | the Trigger frame type |
txVector | the TX vector used to build this Trigger Frame |
Definition at line 1640 of file ctrl-headers.cc.
References AddUserInfoField(), ns3::EHT, ns3::WifiTxVector::GetChannelWidth(), ns3::WifiTxVector::GetGuardInterval(), ns3::WifiTxVector::GetHeMuUserInfoMap(), ns3::WifiTxVector::GetLength(), ns3::WifiTxVector::GetPreambleType(), ns3::HE, m_giAndLtfType, m_triggerType, m_variant, ns3::MU_RTS_TRIGGER, NS_ABORT_MSG, NS_ABORT_MSG_IF, ns3::CtrlTriggerUserInfoField::SetAid12(), ns3::CtrlTriggerUserInfoField::SetRuAllocation(), ns3::CtrlTriggerUserInfoField::SetSsAllocation(), SetUlBandwidth(), SetUlLength(), ns3::CtrlTriggerUserInfoField::SetUlMcs(), ns3::WIFI_PREAMBLE_EHT_TB, and ns3::WIFI_PREAMBLE_HE_TB.
|
override |
Definition at line 1681 of file ctrl-headers.cc.
CtrlTriggerUserInfoField & ns3::CtrlTriggerHeader::AddUserInfoField | ( | ) |
Append a new User Info field to this Trigger frame and return a non-const reference to it.
Make sure to call this method after setting the type of the Trigger frame.
Definition at line 2142 of file ctrl-headers.cc.
References m_triggerType, m_userInfoFields, and m_variant.
Referenced by CtrlTriggerHeader(), ns3::WifiProtectionManager::AddUserInfoToMuRts(), Deserialize(), ns3::GetMuBarSize(), and TestUlOfdmaPowerControl::SendMuBar().
CtrlTriggerUserInfoField & ns3::CtrlTriggerHeader::AddUserInfoField | ( | const CtrlTriggerUserInfoField & | userInfo | ) |
Append the given User Info field to this Trigger frame and return a non-const reference to it.
Make sure that the type of the given User Info field matches the type of this Trigger Frame.
userInfo | the User Info field to append to this Trigger Frame |
Definition at line 2149 of file ctrl-headers.cc.
References ns3::CtrlTriggerUserInfoField::GetType(), m_triggerType, m_userInfoFields, and NS_ABORT_MSG_IF.
CtrlTriggerHeader::Iterator ns3::CtrlTriggerHeader::begin | ( | ) |
Get an iterator pointing to the first User Info field in the list.
Definition at line 2171 of file ctrl-headers.cc.
References m_userInfoFields.
CtrlTriggerHeader::ConstIterator ns3::CtrlTriggerHeader::begin | ( | ) | const |
Get a const iterator pointing to the first User Info field in the list.
Definition at line 2159 of file ctrl-headers.cc.
References m_userInfoFields.
Referenced by ns3::HeFrameExchangeManager::CalculateProtectionTime(), ns3::MultiUserScheduler::GetTriggerFrame(), TestMultiUserScheduler::SelectTxFormat(), ns3::HeFrameExchangeManager::SendMuRts(), OfdmaAckSequenceTest::Transmit(), and ns3::RrMultiUserScheduler::TrySendingBsrpTf().
|
overridevirtual |
start | an iterator which points to where the header should read from. |
This method is used by Packet::RemoveHeader to re-create a header from the byte buffer of a packet. The data read is expected to match bit-for-bit the representation of this header in real networks.
Note that data is not actually removed from the buffer to which the iterator points. Both Packet::RemoveHeader() and Packet::PeekHeader() call Deserialize(), but only the RemoveHeader() has additional statements to remove the header bytes from the underlying buffer and associated metadata.
Implements ns3::Header.
Definition at line 1814 of file ctrl-headers.cc.
References AddUserInfoField(), ns3::BFRP_TRIGGER, ns3::CtrlTriggerUserInfoField::Deserialize(), ns3::EHT, ns3::GCR_MU_BAR_TRIGGER, ns3::Buffer::Iterator::GetDistanceFrom(), ns3::Buffer::Iterator::GetRemainingSize(), ns3::HE, m_apTxPower, m_csRequired, m_giAndLtfType, m_moreTF, m_padding, m_triggerType, m_ulBandwidth, m_ulLength, m_ulSpatialReuse, m_userInfoFields, m_variant, ns3::NFRP_TRIGGER, NS_ABORT_MSG_IF, ns3::Buffer::Iterator::Prev(), ns3::Buffer::Iterator::ReadLsbtohU64(), and ns3::Buffer::Iterator::ReadU16().
CtrlTriggerHeader::Iterator ns3::CtrlTriggerHeader::end | ( | ) |
Get an iterator indicating past-the-last User Info field in the list.
Definition at line 2177 of file ctrl-headers.cc.
References m_userInfoFields.
Referenced by grid.TimelinesRenderer::draw_events(), and grid.TimelinesRenderer::draw_ranges().
CtrlTriggerHeader::ConstIterator ns3::CtrlTriggerHeader::end | ( | ) | const |
Get a const iterator indicating past-the-last User Info field in the list.
Definition at line 2165 of file ctrl-headers.cc.
References m_userInfoFields.
Referenced by grid.TimelinesRenderer::draw_events(), grid.TimelinesRenderer::draw_ranges(), FindUserInfoWithAid(), ns3::HeFrameExchangeManager::GetCtsTxVectorAfterMuRts(), ns3::EhtFrameExchangeManager::GetEmlsrSwitchToListening(), ns3::HeFrameExchangeManager::GetHeTbTxVector(), GetHeTbTxVector(), ns3::HeFrameExchangeManager::PostProcessFrame(), ns3::HeFrameExchangeManager::ReceiveMpdu(), and ns3::HeFrameExchangeManager::UlMuCsMediumIdle().
CtrlTriggerHeader::ConstIterator ns3::CtrlTriggerHeader::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 the given iterator) whose AID12 subfield is set to the given value.
start | a const iterator pointing to the User Info field to start the search from |
aid12 | the value of the AID12 subfield to match |
Definition at line 2189 of file ctrl-headers.cc.
References end(), and ns3::CtrlTriggerUserInfoField::GetAid12().
Referenced by FindUserInfoWithAid(), FindUserInfoWithRaRuAssociated(), FindUserInfoWithRaRuUnassociated(), ns3::HeFrameExchangeManager::GetCtsTxVectorAfterMuRts(), ns3::EhtFrameExchangeManager::GetEmlsrSwitchToListening(), ns3::HeFrameExchangeManager::GetHeTbTxVector(), GetHeTbTxVector(), ns3::HeFrameExchangeManager::PostProcessFrame(), ns3::HeFrameExchangeManager::ReceiveBasicTrigger(), ns3::HeFrameExchangeManager::ReceiveMpdu(), and ns3::HeFrameExchangeManager::UlMuCsMediumIdle().
CtrlTriggerHeader::ConstIterator ns3::CtrlTriggerHeader::FindUserInfoWithAid | ( | uint16_t | aid12 | ) | const |
Get a const iterator pointing to the first User Info field found whose AID12 subfield is set to the given value.
aid12 | the value of the AID12 subfield to match |
Definition at line 2199 of file ctrl-headers.cc.
References FindUserInfoWithAid(), and m_userInfoFields.
CtrlTriggerHeader::ConstIterator ns3::CtrlTriggerHeader::FindUserInfoWithRaRuAssociated | ( | ) | const |
Get a const iterator pointing to the first User Info field found which allocates a Random Access RU for associated stations.
Definition at line 2211 of file ctrl-headers.cc.
References FindUserInfoWithAid().
CtrlTriggerHeader::ConstIterator ns3::CtrlTriggerHeader::FindUserInfoWithRaRuAssociated | ( | ConstIterator | start | ) | const |
Get a const iterator pointing to the first User Info field found (starting from the one pointed to by the given iterator) which allocates a Random Access RU for associated stations.
start | a const iterator pointing to the User Info field to start the search from |
Definition at line 2205 of file ctrl-headers.cc.
References FindUserInfoWithAid().
CtrlTriggerHeader::ConstIterator ns3::CtrlTriggerHeader::FindUserInfoWithRaRuUnassociated | ( | ) | const |
Get a const iterator pointing to the first User Info field found which allocates a Random Access RU for unassociated stations.
Definition at line 2223 of file ctrl-headers.cc.
References FindUserInfoWithAid().
CtrlTriggerHeader::ConstIterator ns3::CtrlTriggerHeader::FindUserInfoWithRaRuUnassociated | ( | ConstIterator | start | ) | const |
Get a const iterator pointing to the first User Info field found (starting from the one pointed to by the given iterator) which allocates a Random Access RU for unassociated stations.
start | a const iterator pointing to the User Info field to start the search from |
Definition at line 2217 of file ctrl-headers.cc.
References FindUserInfoWithAid().
int8_t ns3::CtrlTriggerHeader::GetApTxPower | ( | ) | const |
Get the power value (dBm) indicated by the AP TX Power subfield of the Common Info field.
Definition at line 2101 of file ctrl-headers.cc.
References m_apTxPower.
Referenced by ns3::HeFrameExchangeManager::GetHeTbTxVector().
CtrlTriggerHeader ns3::CtrlTriggerHeader::GetCommonInfoField | ( | ) | const |
Get a copy of the Common Info field of this Trigger frame.
Note that the User Info fields are excluded.
Definition at line 2133 of file ctrl-headers.cc.
References m_userInfoFields.
bool ns3::CtrlTriggerHeader::GetCsRequired | ( | ) | const |
Get the CS Required subfield of the Common Info field.
Definition at line 1998 of file ctrl-headers.cc.
References m_csRequired.
Referenced by ns3::HeFrameExchangeManager::UlMuCsMediumIdle().
uint16_t ns3::CtrlTriggerHeader::GetGuardInterval | ( | ) | const |
Get the guard interval duration (in nanoseconds) of the solicited HE TB PPDU.
Definition at line 2054 of file ctrl-headers.cc.
References m_giAndLtfType, and NS_FATAL_ERROR.
Referenced by GetHeTbTxVector(), ns3::HeFrameExchangeManager::GetTrigVector(), TestMultiUserScheduler::SelectTxFormat(), ns3::RrMultiUserScheduler::TrySendingBasicTf(), and ns3::RrMultiUserScheduler::TrySendingBsrpTf().
WifiTxVector ns3::CtrlTriggerHeader::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 this Trigger Frame.
Note that the TX power level is not set by this method.
staId | the STA-ID of a station addressed by this Trigger Frame |
Definition at line 1961 of file ctrl-headers.cc.
References end(), FindUserInfoWithAid(), GetGuardInterval(), GetUlBandwidth(), GetUlLength(), m_triggerType, ns3::MU_RTS_TRIGGER, NS_ABORT_MSG_IF, NS_ASSERT, ns3::WifiTxVector::SetChannelWidth(), ns3::WifiTxVector::SetGuardInterval(), ns3::WifiTxVector::SetHeMuUserInfo(), ns3::WifiTxVector::SetLength(), and ns3::WifiTxVector::SetPreambleType().
Referenced by ns3::HeFrameExchangeManager::GetHeTbTxVector(), TestMultiUserScheduler::SelectTxFormat(), TestUlOfdmaPowerControl::SendMuBar(), and ns3::RrMultiUserScheduler::TrySendingBsrpTf().
|
overridevirtual |
Get the most derived TypeId for this Object.
This method is typically implemented by ns3::Object::GetInstanceTypeId but some classes which derive from ns3::ObjectBase directly have to implement it themselves.
Implements ns3::ObjectBase.
Definition at line 1720 of file ctrl-headers.cc.
References GetTypeId().
uint8_t ns3::CtrlTriggerHeader::GetLtfType | ( | ) | const |
Get the LTF type of the solicited HE TB PPDU.
Definition at line 2071 of file ctrl-headers.cc.
References m_giAndLtfType, and NS_FATAL_ERROR.
bool ns3::CtrlTriggerHeader::GetMoreTF | ( | ) | const |
Get the More TF subfield of the Common Info field.
Definition at line 1986 of file ctrl-headers.cc.
References m_moreTF.
std::size_t ns3::CtrlTriggerHeader::GetNUserInfoFields | ( | ) | const |
Get the number of User Info fields in this Trigger Frame.
Definition at line 2183 of file ctrl-headers.cc.
References m_userInfoFields.
Referenced by OfdmaAckSequenceTest::CheckResults(), ns3::MultiUserScheduler::GetTriggerFrame(), ns3::HeFrameExchangeManager::PrepareMuBar(), and ns3::WifiDefaultProtectionManager::TryUlMuTransmission().
std::size_t ns3::CtrlTriggerHeader::GetPaddingSize | ( | ) | const |
Definition at line 2127 of file ctrl-headers.cc.
References m_padding.
|
overridevirtual |
This method is used by Packet::AddHeader to store a header into the byte buffer of a packet. This method should return the number of bytes which are needed to store the full header data by Serialize.
Implements ns3::Header.
Definition at line 1752 of file ctrl-headers.cc.
References ns3::GCR_MU_BAR_TRIGGER, m_padding, m_triggerType, and m_userInfoFields.
Referenced by ns3::HeFrameExchangeManager::CalculateProtectionTime(), and ns3::GetMuBarSize().
TriggerFrameType ns3::CtrlTriggerHeader::GetType | ( | ) | const |
Get the Trigger Frame type.
Definition at line 1866 of file ctrl-headers.cc.
References m_triggerType.
Referenced by GetTypeString(), and ns3::RrMultiUserScheduler::SelectTxFormat().
|
static |
Get the type ID.
Definition at line 1710 of file ctrl-headers.cc.
References ns3::TypeId::SetParent().
Referenced by GetInstanceTypeId().
const char * ns3::CtrlTriggerHeader::GetTypeString | ( | ) | const |
Return a string corresponding to the Trigger Frame type.
Definition at line 1872 of file ctrl-headers.cc.
References GetType(), and GetTypeString().
Referenced by GetTypeString(), and Print().
|
static |
Return a string corresponding to the given Trigger Frame type.
type | the Trigger Frame type |
Definition at line 1878 of file ctrl-headers.cc.
References ns3::BASIC_TRIGGER, ns3::BFRP_TRIGGER, ns3::BQRP_TRIGGER, ns3::BSRP_TRIGGER, FOO, ns3::GCR_MU_BAR_TRIGGER, ns3::MU_BAR_TRIGGER, ns3::MU_RTS_TRIGGER, and ns3::NFRP_TRIGGER.
uint16_t ns3::CtrlTriggerHeader::GetUlBandwidth | ( | ) | const |
Get the bandwidth of the solicited HE TB PPDU.
Definition at line 2027 of file ctrl-headers.cc.
References m_ulBandwidth.
Referenced by GetHeTbTxVector(), ns3::HeFrameExchangeManager::GetTrigVector(), IsValid(), Print(), ns3::WifiDefaultProtectionManager::TryUlMuTransmission(), and ns3::HeFrameExchangeManager::UlMuCsMediumIdle().
uint16_t ns3::CtrlTriggerHeader::GetUlLength | ( | ) | const |
Get the UL Length subfield of the Common Info field.
Definition at line 1955 of file ctrl-headers.cc.
References m_ulLength.
Referenced by GetHeTbTxVector(), ns3::HeFrameExchangeManager::GetTrigVector(), ns3::HeFrameExchangeManager::PrepareMuBar(), ns3::HeFrameExchangeManager::ReceiveBasicTrigger(), and ns3::HeFrameExchangeManager::SendQosNullFramesInTbPpdu().
uint16_t ns3::CtrlTriggerHeader::GetUlSpatialReuse | ( | ) | const |
Get the UL Spatial Reuse subfield of the Common Info field.
Definition at line 2114 of file ctrl-headers.cc.
References m_ulSpatialReuse.
TriggerFrameVariant ns3::CtrlTriggerHeader::GetVariant | ( | ) | const |
Get the Common Info field variant.
Definition at line 1746 of file ctrl-headers.cc.
References m_variant.
Referenced by ns3::HeFrameExchangeManager::GetTrigVector().
bool ns3::CtrlTriggerHeader::IsBasic | ( | ) | const |
Check if this is a Basic Trigger frame.
Definition at line 1901 of file ctrl-headers.cc.
References ns3::BASIC_TRIGGER, and m_triggerType.
Referenced by OfdmaAckSequenceTest::CheckResults(), ns3::HeFrameExchangeManager::ReceiveBasicTrigger(), ns3::HeFrameExchangeManager::ReceiveMpdu(), ns3::HeFrameExchangeManager::SendQosNullFramesInTbPpdu(), OfdmaAckSequenceTest::Transmit(), MultiLinkMuTxTest::Transmit(), and ns3::WifiDefaultAckManager::TryUlMuTransmission().
bool ns3::CtrlTriggerHeader::IsBfrp | ( | ) | const |
Check if this is a Beamforming Report Poll Trigger frame.
Definition at line 1907 of file ctrl-headers.cc.
References ns3::BFRP_TRIGGER, and m_triggerType.
bool ns3::CtrlTriggerHeader::IsBqrp | ( | ) | const |
Check if this is a Bandwidth Query Report Poll Trigger frame.
Definition at line 1937 of file ctrl-headers.cc.
References ns3::BQRP_TRIGGER, and m_triggerType.
bool ns3::CtrlTriggerHeader::IsBsrp | ( | ) | const |
Check if this is a Buffer Status Report Poll Trigger frame.
Definition at line 1925 of file ctrl-headers.cc.
References ns3::BSRP_TRIGGER, and m_triggerType.
Referenced by OfdmaAckSequenceTest::CheckResults(), ns3::HeFrameExchangeManager::ReceiveMpdu(), ns3::HeFrameExchangeManager::SendQosNullFramesInTbPpdu(), and ns3::WifiDefaultAckManager::TryUlMuTransmission().
bool ns3::CtrlTriggerHeader::IsGcrMuBar | ( | ) | const |
Check if this is a Groupcast with Retries (GCR) MU-BAR Trigger frame.
Definition at line 1931 of file ctrl-headers.cc.
References ns3::GCR_MU_BAR_TRIGGER, and m_triggerType.
bool ns3::CtrlTriggerHeader::IsMuBar | ( | ) | const |
Check if this is a MU-BAR Trigger frame.
Definition at line 1913 of file ctrl-headers.cc.
References m_triggerType, and ns3::MU_BAR_TRIGGER.
Referenced by ns3::HeFrameExchangeManager::ReceiveMpdu(), and ns3::BlockAckManager::ScheduleMuBar().
bool ns3::CtrlTriggerHeader::IsMuRts | ( | ) | const |
Check if this is a MU-RTS Trigger frame.
Definition at line 1919 of file ctrl-headers.cc.
References m_triggerType, and ns3::MU_RTS_TRIGGER.
Referenced by EmlsrDlTxopTest::CheckInitialControlFrame(), EmlsrDlTxopTest::CheckResults(), OfdmaAckSequenceTest::CheckResults(), ns3::HeFrameExchangeManager::PostProcessFrame(), ns3::HeFrameExchangeManager::ReceiveMpdu(), ns3::HeFrameExchangeManager::RecordSentMuRtsTo(), ns3::HeFrameExchangeManager::SendMuRts(), ns3::EhtFrameExchangeManager::SendMuRts(), and ns3::HeFrameExchangeManager::UlMuCsMediumIdle().
bool ns3::CtrlTriggerHeader::IsNfrp | ( | ) | const |
Check if this is a NDP Feedback Report Poll Trigger frame.
Definition at line 1943 of file ctrl-headers.cc.
References m_triggerType, and ns3::NFRP_TRIGGER.
bool ns3::CtrlTriggerHeader::IsValid | ( | ) | const |
Check the validity of this Trigger frame.
TODO Implement the checks listed in Section 27.5.3.2.3 of 802.11ax amendment D3.0 (Allowed settings of the Trigger frame fields and TRS Control subfield).
This function shall be invoked before transmitting and upon receiving a Trigger frame.
Definition at line 2229 of file ctrl-headers.cc.
References ns3::HeRu::DoesOverlap(), GetUlBandwidth(), m_triggerType, m_userInfoFields, and ns3::MU_RTS_TRIGGER.
CtrlTriggerHeader & ns3::CtrlTriggerHeader::operator= | ( | const CtrlTriggerHeader & | trigger | ) |
Copy assignment operator.
trigger | the Trigger frame to copy |
Ensure that the type of this Trigger Frame is set to the type of the given Trigger Frame before copying the User Info fields.
Definition at line 1686 of file ctrl-headers.cc.
References m_apTxPower, m_csRequired, m_giAndLtfType, m_moreTF, m_padding, m_triggerType, m_ulBandwidth, m_ulLength, m_ulSpatialReuse, m_userInfoFields, and m_variant.
|
overridevirtual |
os | output stream This method is used by Packet::Print to print the content of a header as ascii data to a c++ output stream. Although the header is free to format its output as it wishes, it is recommended to follow a few rules to integrate with the packet pretty printer: start with flags, small field values located between a pair of parens. Values should be separated by whitespace. Follow the parens with the important fields, separated by whitespace. i.e.: (field1 val1 field2 val2 field3 val3) field4 val4 field5 val5 |
Implements ns3::Header.
Definition at line 1726 of file ctrl-headers.cc.
References GetTypeString(), GetUlBandwidth(), m_ulLength, and m_userInfoFields.
|
overridevirtual |
start | an iterator which points to where the header should be written. |
This method is used by Packet::AddHeader to store a header into the byte buffer of a packet. The data written is expected to match bit-for-bit the representation of this header in a real network.
Implements ns3::Header.
Definition at line 1774 of file ctrl-headers.cc.
References ns3::BFRP_TRIGGER, ns3::GCR_MU_BAR_TRIGGER, ns3::HE, m_apTxPower, m_csRequired, m_giAndLtfType, m_moreTF, m_padding, m_triggerType, m_ulBandwidth, m_ulLength, m_ulSpatialReuse, m_userInfoFields, m_variant, ns3::NFRP_TRIGGER, NS_ABORT_MSG_IF, ns3::Buffer::Iterator::WriteHtolsbU64(), and ns3::Buffer::Iterator::WriteU8().
void ns3::CtrlTriggerHeader::SetApTxPower | ( | int8_t | power | ) |
Set the AP TX Power subfield of the Common Info field.
power | the value (from -20 to 40) for the AP TX Power (dBm) |
Definition at line 2092 of file ctrl-headers.cc.
References m_apTxPower, and NS_ABORT_MSG_IF.
Referenced by TestUlOfdmaPowerControl::SendMuBar(), and ns3::HeFrameExchangeManager::SetTargetRssi().
void ns3::CtrlTriggerHeader::SetCsRequired | ( | bool | cs | ) |
Set the CS Required subfield of the Common Info field.
cs | the value for the CS Required subfield |
Definition at line 1992 of file ctrl-headers.cc.
References m_csRequired.
Referenced by ns3::HeFrameExchangeManager::PrepareMuBar(), TestUlOfdmaPowerControl::SendMuBar(), and ns3::HeFrameExchangeManager::SendMuRts().
void ns3::CtrlTriggerHeader::SetGiAndLtfType | ( | uint16_t | guardInterval, |
uint8_t | ltfType | ||
) |
Set the GI And LTF Type subfield of the Common Info field.
Allowed combinations are:
guardInterval | the guard interval duration (in nanoseconds) |
ltfType | the HE-LTF type (1, 2 or 4) |
Definition at line 2033 of file ctrl-headers.cc.
References m_giAndLtfType, and NS_FATAL_ERROR.
Referenced by TestUlOfdmaPowerControl::SendMuBar().
void ns3::CtrlTriggerHeader::SetMoreTF | ( | bool | more | ) |
Set the More TF subfield of the Common Info field.
more | the value for the More TF subfield |
Definition at line 1980 of file ctrl-headers.cc.
References m_moreTF.
Referenced by TestUlOfdmaPowerControl::SendMuBar().
void ns3::CtrlTriggerHeader::SetPaddingSize | ( | std::size_t | size | ) |
Set the size in bytes of the Padding field.
The Padding field, if present, shall be at least two octets in length.
size | the size in bytes of the Padding field |
Definition at line 2120 of file ctrl-headers.cc.
References m_padding, and NS_ABORT_MSG_IF.
Referenced by EmlsrDlTxopTest::CheckInitialControlFrame(), and ns3::EhtFrameExchangeManager::SendMuRts().
void ns3::CtrlTriggerHeader::SetType | ( | TriggerFrameType | type | ) |
Set the Trigger frame type.
type | the Trigger frame type |
Definition at line 1860 of file ctrl-headers.cc.
References m_triggerType.
Referenced by WifiPrimaryChannelsTest::DoSetup(), ns3::GetMuBarSize(), TestUlOfdmaPowerControl::SendMuBar(), and ns3::WifiDefaultProtectionManager::TryAddMpduToMuPpdu().
void ns3::CtrlTriggerHeader::SetUlBandwidth | ( | uint16_t | bw | ) |
Set the bandwidth of the solicited HE TB PPDU.
bw | bandwidth (allowed values: 20, 40, 80, 160) |
Definition at line 2004 of file ctrl-headers.cc.
References m_ulBandwidth, and NS_FATAL_ERROR.
Referenced by CtrlTriggerHeader(), TestUlOfdmaPowerControl::SendMuBar(), and ns3::WifiDefaultProtectionManager::TryAddMpduToMuPpdu().
void ns3::CtrlTriggerHeader::SetUlLength | ( | uint16_t | len | ) |
Set the UL Length subfield of the Common Info field.
len | the value for the UL Length subfield |
Definition at line 1949 of file ctrl-headers.cc.
References m_ulLength.
Referenced by CtrlTriggerHeader(), TestMultiUserScheduler::SelectTxFormat(), TestUlOfdmaPowerControl::SendMuBar(), ns3::RrMultiUserScheduler::TrySendingBasicTf(), and ns3::RrMultiUserScheduler::TrySendingBsrpTf().
void ns3::CtrlTriggerHeader::SetUlSpatialReuse | ( | uint16_t | sr | ) |
Set the UL Spatial Reuse subfield of the Common Info field.
sr | the value for the UL Spatial Reuse subfield |
Definition at line 2108 of file ctrl-headers.cc.
References m_ulSpatialReuse.
Referenced by TestUlOfdmaPowerControl::SendMuBar().
void ns3::CtrlTriggerHeader::SetVariant | ( | TriggerFrameVariant | variant | ) |
Set the Common Info field variant.
For the moment, all User Info fields are of the same variant type, hence we forbid changing the Common Info field variant type after adding User Info fields.
variant | the Common Info field variant |
Definition at line 1738 of file ctrl-headers.cc.
References m_userInfoFields, m_variant, and NS_ABORT_MSG_IF.
|
private |
Tx Power used by AP to transmit the Trigger Frame.
Definition at line 1338 of file ctrl-headers.h.
Referenced by Deserialize(), GetApTxPower(), operator=(), Serialize(), and SetApTxPower().
|
private |
Carrier Sense required.
Definition at line 1335 of file ctrl-headers.h.
Referenced by Deserialize(), GetCsRequired(), operator=(), Serialize(), and SetCsRequired().
|
private |
GI And LTF Type subfield.
Definition at line 1337 of file ctrl-headers.h.
Referenced by CtrlTriggerHeader(), Deserialize(), GetGuardInterval(), GetLtfType(), operator=(), Serialize(), and SetGiAndLtfType().
|
private |
True if a subsequent Trigger frame follows.
Definition at line 1334 of file ctrl-headers.h.
Referenced by Deserialize(), GetMoreTF(), operator=(), Serialize(), and SetMoreTF().
|
private |
the size in bytes of the Padding field
Definition at line 1340 of file ctrl-headers.h.
Referenced by Deserialize(), GetPaddingSize(), GetSerializedSize(), operator=(), Serialize(), and SetPaddingSize().
|
private |
Trigger type.
Definition at line 1332 of file ctrl-headers.h.
Referenced by CtrlTriggerHeader(), AddUserInfoField(), Deserialize(), GetHeTbTxVector(), GetSerializedSize(), GetType(), IsBasic(), IsBfrp(), IsBqrp(), IsBsrp(), IsGcrMuBar(), IsMuBar(), IsMuRts(), IsNfrp(), IsValid(), operator=(), Serialize(), and SetType().
|
private |
UL BW subfield.
Definition at line 1336 of file ctrl-headers.h.
Referenced by Deserialize(), GetUlBandwidth(), operator=(), Serialize(), and SetUlBandwidth().
|
private |
Value for the L-SIG Length field.
Definition at line 1333 of file ctrl-headers.h.
Referenced by Deserialize(), GetUlLength(), operator=(), Print(), Serialize(), and SetUlLength().
|
private |
Value for the Spatial Reuse field in HE-SIG-A.
Definition at line 1339 of file ctrl-headers.h.
Referenced by Deserialize(), GetUlSpatialReuse(), operator=(), Serialize(), and SetUlSpatialReuse().
|
private |
List of User Info fields.
list of User Info fields
Definition at line 1345 of file ctrl-headers.h.
Referenced by AddUserInfoField(), begin(), Deserialize(), end(), FindUserInfoWithAid(), GetCommonInfoField(), GetNUserInfoFields(), GetSerializedSize(), IsValid(), operator=(), Print(), Serialize(), and SetVariant().
|
private |
Common Info field.
Common Info field variant
Definition at line 1331 of file ctrl-headers.h.
Referenced by CtrlTriggerHeader(), AddUserInfoField(), Deserialize(), GetVariant(), operator=(), Serialize(), and SetVariant().