The Supported Rates Information ElementThis class knows how to serialise and deserialise the Supported Rates Element that holds the first 8 (non-HT) supported rates. More...
#include "supported-rates.h"
Public Member Functions | |
SupportedRates () | |
SupportedRates (const SupportedRates &) | |
type conversion operator More... | |
void | AddBssMembershipSelectorRate (uint64_t bs) |
Add a special value to the supported rate set, corresponding to a BSS membership selector. More... | |
void | AddSupportedRate (uint64_t bs) |
Add the given rate to the supported rates. More... | |
uint8_t | DeserializeInformationField (Buffer::Iterator start, uint8_t length) |
Get the information field size. More... | |
WifiInformationElementId | ElementId () const |
Get the ElementID. More... | |
uint8_t | GetInformationFieldSize () const |
Get the information field size. More... | |
uint8_t | GetNRates (void) const |
Return the number of supported rates. More... | |
uint32_t | GetRate (uint8_t i) const |
Return the rate at the given index. More... | |
bool | IsBasicRate (uint64_t bs) const |
Check if the given rate is a basic rate. More... | |
bool | IsBssMembershipSelectorRate (uint64_t bs) const |
Check if the given rate is a BSS membership selector value. More... | |
bool | IsSupportedRate (uint64_t bs) const |
Check if the given rate is supported. More... | |
SupportedRates & | operator= (const SupportedRates &rates) |
assignment operator More... | |
void | SerializeInformationField (Buffer::Iterator start) const |
Get the information field size. More... | |
void | SetBasicRate (uint64_t bs) |
Set the given rate to basic rates. More... | |
Public Member Functions inherited from ns3::WifiInformationElement | |
virtual | ~WifiInformationElement () |
Buffer::Iterator | Deserialize (Buffer::Iterator i) |
Deserialize entire IE, which must be present. More... | |
Buffer::Iterator | DeserializeIfPresent (Buffer::Iterator i) |
Deserialize entire IE if it is present. More... | |
uint16_t | GetSerializedSize () const |
Get the size of the serialized IE including Element ID and length fields. More... | |
virtual bool | operator== (WifiInformationElement const &a) const |
Compare two IEs for equality by ID & Length, and then through memcmp of serialised version. More... | |
virtual void | Print (std::ostream &os) const |
Generate human-readable form of IE. More... | |
Buffer::Iterator | Serialize (Buffer::Iterator i) const |
Serialize entire IE including Element ID and length fields. More... | |
Public Member Functions inherited from ns3::SimpleRefCount< WifiInformationElement > | |
SimpleRefCount () | |
Default constructor. More... | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount (void) const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment operator. More... | |
void | Ref (void) const |
Increment the reference count. More... | |
void | Unref (void) const |
Decrement the reference count. More... | |
Public Attributes | |
ExtendedSupportedRatesIE | extended |
extended supported rates info element More... | |
Static Public Attributes | |
static const uint8_t | MAX_SUPPORTED_RATES = 32 |
This defines the maximum number of supported rates that a STA is allowed to have. More... | |
Private Attributes | |
uint8_t | m_nRates |
Number of supported rates. More... | |
uint8_t | m_rates [MAX_SUPPORTED_RATES] |
List of supported bitrate (divided by 500000) More... | |
Friends | |
class | ExtendedSupportedRatesIE |
We support the Extended Supported Rates Information Element through the ExtendedSupportedRatesIE object which is declared above. More... | |
The Supported Rates Information Element
This class knows how to serialise and deserialise the Supported Rates Element that holds the first 8 (non-HT) supported rates.
The ExtendedSupportedRatesIE
class (of which an instance exists in objects of this class) deals with rates beyond the first 8.
Definition at line 128 of file supported-rates.h.
ns3::SupportedRates::SupportedRates | ( | ) |
Definition at line 32 of file supported-rates.cc.
References NS_LOG_FUNCTION.
ns3::SupportedRates::SupportedRates | ( | const SupportedRates & | rates | ) |
type conversion operator
Definition at line 39 of file supported-rates.cc.
References extended, m_nRates, m_rates, MAX_SUPPORTED_RATES, NS_LOG_FUNCTION, and ns3::ExtendedSupportedRatesIE::SetSupportedRates().
void ns3::SupportedRates::AddBssMembershipSelectorRate | ( | uint64_t | bs | ) |
Add a special value to the supported rate set, corresponding to a BSS membership selector.
bs | the special membership selector value (not a valid rate) |
Definition at line 97 of file supported-rates.cc.
References BSS_MEMBERSHIP_SELECTOR_HE_PHY, BSS_MEMBERSHIP_SELECTOR_HT_PHY, BSS_MEMBERSHIP_SELECTOR_VHT_PHY, m_nRates, m_rates, NS_ASSERT_MSG(), NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by ns3::StaWifiMac::GetSupportedRates(), and ns3::ApWifiMac::GetSupportedRates().
void ns3::SupportedRates::AddSupportedRate | ( | uint64_t | bs | ) |
Add the given rate to the supported rates.
bs | the rate to be added |
Definition at line 59 of file supported-rates.cc.
References IsBssMembershipSelectorRate(), IsSupportedRate(), m_nRates, m_rates, MAX_SUPPORTED_RATES, NS_ASSERT, NS_ASSERT_MSG(), NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by ns3::MeshWifiInterfaceMac::GetSupportedRates(), ns3::StaWifiMac::GetSupportedRates(), ns3::ApWifiMac::GetSupportedRates(), and SetBasicRate().
|
virtual |
Get the information field size.
start | the information field iterator |
length | the size of the information field (bytes) |
Implements ns3::WifiInformationElement.
Definition at line 198 of file supported-rates.cc.
References m_nRates, m_rates, NS_ASSERT, and visualizer.core::start().
|
virtual |
Get the ElementID.
Implements ns3::WifiInformationElement.
Definition at line 174 of file supported-rates.cc.
References IE_SUPPORTED_RATES.
|
virtual |
Get the information field size.
Implements ns3::WifiInformationElement.
Definition at line 180 of file supported-rates.cc.
References m_nRates.
uint8_t ns3::SupportedRates::GetNRates | ( | void | ) | const |
Return the number of supported rates.
Definition at line 162 of file supported-rates.cc.
References m_nRates.
Referenced by ns3::operator<<().
uint32_t ns3::SupportedRates::GetRate | ( | uint8_t | i | ) | const |
Return the rate at the given index.
Return the rate (converted back to raw value) at the given index.
i | the given index |
Definition at line 168 of file supported-rates.cc.
References m_rates.
Referenced by ns3::operator<<().
bool ns3::SupportedRates::IsBasicRate | ( | uint64_t | bs | ) | const |
Check if the given rate is a basic rate.
The rate is encoded as it is serialized to the Supported Rates Information Element (i.e. as a multiple of 500 Kbits/sec, with MSB set to 1).
bs | the rate to be checked |
Definition at line 118 of file supported-rates.cc.
References m_nRates, m_rates, and NS_LOG_FUNCTION.
Referenced by ns3::operator<<(), ns3::MeshWifiInterfaceMac::Receive(), ns3::StaWifiMac::UpdateApInfoFromAssocResp(), and ns3::StaWifiMac::UpdateApInfoFromProbeResp().
bool ns3::SupportedRates::IsBssMembershipSelectorRate | ( | uint64_t | bs | ) | const |
Check if the given rate is a BSS membership selector value.
The rate is encoded as it is serialized to the Supporting Rates Information Element (i.e. with the MSB set to 1).
bs | the rate to be checked |
Definition at line 149 of file supported-rates.cc.
References BSS_MEMBERSHIP_SELECTOR_HE_PHY, BSS_MEMBERSHIP_SELECTOR_HT_PHY, BSS_MEMBERSHIP_SELECTOR_VHT_PHY, and NS_LOG_FUNCTION.
Referenced by AddSupportedRate(), ns3::StaWifiMac::Receive(), SetBasicRate(), and ns3::StaWifiMac::UpdateApInfoFromProbeResp().
bool ns3::SupportedRates::IsSupportedRate | ( | uint64_t | bs | ) | const |
Check if the given rate is supported.
The rate is encoded as it is serialized to the Supported Rates Information Element (i.e. as a multiple of 500 Kbits/sec, possibly with MSB set to 1).
bs | the rate to be checked |
Definition at line 133 of file supported-rates.cc.
References m_nRates, m_rates, and NS_LOG_FUNCTION.
Referenced by AddSupportedRate(), ns3::MeshWifiInterfaceMac::CheckSupportedRates(), ns3::ApWifiMac::Receive(), ns3::MeshWifiInterfaceMac::Receive(), ns3::StaWifiMac::UpdateApInfoFromAssocResp(), ns3::StaWifiMac::UpdateApInfoFromBeacon(), and ns3::StaWifiMac::UpdateApInfoFromProbeResp().
SupportedRates & ns3::SupportedRates::operator= | ( | const SupportedRates & | rates | ) |
assignment operator
rates | the rates to assign |
Definition at line 49 of file supported-rates.cc.
References extended, m_nRates, m_rates, MAX_SUPPORTED_RATES, and ns3::ExtendedSupportedRatesIE::SetSupportedRates().
|
virtual |
Get the information field size.
start | the information field iterator |
Implements ns3::WifiInformationElement.
Definition at line 189 of file supported-rates.cc.
References m_nRates, m_rates, and visualizer.core::start().
void ns3::SupportedRates::SetBasicRate | ( | uint64_t | bs | ) |
Set the given rate to basic rates.
bs | the rate to be set |
Definition at line 74 of file supported-rates.cc.
References AddSupportedRate(), IsBssMembershipSelectorRate(), m_nRates, m_rates, NS_ASSERT_MSG(), NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by ns3::MeshWifiInterfaceMac::GetSupportedRates(), and ns3::ApWifiMac::GetSupportedRates().
|
friend |
We support the Extended Supported Rates Information Element through the ExtendedSupportedRatesIE object which is declared above.
We allow this class to be a friend so that it can access our private data detailing the rates, and create an instance as extended.
Definition at line 249 of file supported-rates.h.
ExtendedSupportedRatesIE ns3::SupportedRates::extended |
extended supported rates info element
Definition at line 250 of file supported-rates.h.
Referenced by ns3::dot11s::PeerLinkOpenStart::Deserialize(), ns3::MgtAssocRequestHeader::Deserialize(), ns3::dot11s::PeerLinkConfirmStart::Deserialize(), ns3::MgtReassocRequestHeader::Deserialize(), ns3::MgtAssocResponseHeader::Deserialize(), ns3::MgtProbeRequestHeader::Deserialize(), ns3::MgtProbeResponseHeader::Deserialize(), ns3::dot11s::PeerLinkOpenStart::GetSerializedSize(), ns3::MgtAssocRequestHeader::GetSerializedSize(), ns3::dot11s::PeerLinkConfirmStart::GetSerializedSize(), ns3::MgtReassocRequestHeader::GetSerializedSize(), ns3::MgtAssocResponseHeader::GetSerializedSize(), ns3::MgtProbeRequestHeader::GetSerializedSize(), ns3::MgtProbeResponseHeader::GetSerializedSize(), operator=(), ns3::dot11s::PeerLinkOpenStart::Serialize(), ns3::MgtAssocRequestHeader::Serialize(), ns3::dot11s::PeerLinkConfirmStart::Serialize(), ns3::MgtReassocRequestHeader::Serialize(), ns3::MgtAssocResponseHeader::Serialize(), ns3::MgtProbeRequestHeader::Serialize(), ns3::MgtProbeResponseHeader::Serialize(), and SupportedRates().
|
private |
Number of supported rates.
Definition at line 254 of file supported-rates.h.
Referenced by AddBssMembershipSelectorRate(), AddSupportedRate(), ns3::ExtendedSupportedRatesIE::DeserializeInformationField(), DeserializeInformationField(), ns3::ExtendedSupportedRatesIE::GetInformationFieldSize(), GetInformationFieldSize(), GetNRates(), ns3::ExtendedSupportedRatesIE::GetSerializedSize(), IsBasicRate(), IsSupportedRate(), operator=(), ns3::ExtendedSupportedRatesIE::Serialize(), ns3::ExtendedSupportedRatesIE::SerializeInformationField(), SerializeInformationField(), SetBasicRate(), and SupportedRates().
|
private |
List of supported bitrate (divided by 500000)
Definition at line 255 of file supported-rates.h.
Referenced by AddBssMembershipSelectorRate(), AddSupportedRate(), ns3::ExtendedSupportedRatesIE::DeserializeInformationField(), DeserializeInformationField(), GetRate(), IsBasicRate(), IsSupportedRate(), operator=(), ns3::ExtendedSupportedRatesIE::SerializeInformationField(), SerializeInformationField(), SetBasicRate(), and SupportedRates().
|
static |
This defines the maximum number of supported rates that a STA is allowed to have.
Currently this number is set for IEEE 802.11b/g and SISO IEE 802.11n stations which need 2 rates each from Clauses 15 and 18, and then 8 from Clause 19.
Definition at line 149 of file supported-rates.h.
Referenced by AddSupportedRate(), ns3::ExtendedSupportedRatesIE::DeserializeInformationField(), operator=(), and SupportedRates().