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"
Inheritance diagram for ns3::SupportedRates:
Collaboration diagram for ns3::SupportedRates:Public Member Functions | |
| SupportedRates () | |
| SupportedRates (const SupportedRates &) | |
| type conversion operator More... | |
| void | AddBssMembershipSelectorRate (uint32_t bs) |
| Add a special value to the supported rate set, corresponding to a BSS membership selector. More... | |
| void | AddSupportedRate (uint32_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 (uint32_t bs) const |
| Check if the given rate is a basic rate. More... | |
| bool | IsBssMembershipSelectorRate (uint32_t bs) const |
| Check if the given rate is a BSS membership selector value. More... | |
| bool | IsSupportedRate (uint32_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 (uint32_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 information elements using Element ID. 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 suppoted 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 129 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().
Here is the call graph for this function:| void ns3::SupportedRates::AddBssMembershipSelectorRate | ( | uint32_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 121 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().
Here is the caller graph for this function:| void ns3::SupportedRates::AddSupportedRate | ( | uint32_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 BSS_MEMBERSHIP_SELECTOR_HE_PHY, BSS_MEMBERSHIP_SELECTOR_HT_PHY, BSS_MEMBERSHIP_SELECTOR_VHT_PHY, 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().
Here is the call graph for this function:
Here is the caller graph for this function:
|
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 222 of file supported-rates.cc.
References m_nRates, m_rates, NS_ASSERT, and ns3::Buffer::Iterator::Read().
Here is the call graph for this function:
|
virtual |
Get the ElementID.
Implements ns3::WifiInformationElement.
Definition at line 198 of file supported-rates.cc.
References IE_SUPPORTED_RATES.
|
virtual |
Get the information field size.
Implements ns3::WifiInformationElement.
Definition at line 204 of file supported-rates.cc.
References m_nRates.
| uint8_t ns3::SupportedRates::GetNRates | ( | void | ) | const |
Return the number of supported rates.
Definition at line 186 of file supported-rates.cc.
References m_nRates.
Referenced by ns3::operator<<().
Here is the caller graph for this function:| 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 192 of file supported-rates.cc.
References m_rates.
Referenced by ns3::operator<<().
Here is the caller graph for this function:| bool ns3::SupportedRates::IsBasicRate | ( | uint32_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 142 of file supported-rates.cc.
References m_nRates, m_rates, and NS_LOG_FUNCTION.
Referenced by ns3::operator<<(), ns3::StaWifiMac::Receive(), and ns3::MeshWifiInterfaceMac::Receive().
Here is the caller graph for this function:| bool ns3::SupportedRates::IsBssMembershipSelectorRate | ( | uint32_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 173 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(), and SetBasicRate().
Here is the caller graph for this function:| bool ns3::SupportedRates::IsSupportedRate | ( | uint32_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 157 of file supported-rates.cc.
References m_nRates, m_rates, and NS_LOG_FUNCTION.
Referenced by AddSupportedRate(), ns3::MeshWifiInterfaceMac::CheckSupportedRates(), ns3::StaWifiMac::Receive(), ns3::ApWifiMac::Receive(), and ns3::MeshWifiInterfaceMac::Receive().
Here is the caller graph for this function:| 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().
Here is the call graph for this function:
|
virtual |
Get the information field size.
| start | the information field iterator |
Implements ns3::WifiInformationElement.
Definition at line 213 of file supported-rates.cc.
References m_nRates, m_rates, and ns3::Buffer::Iterator::Write().
Here is the call graph for this function:| void ns3::SupportedRates::SetBasicRate | ( | uint32_t | bs | ) |
Set the given rate to basic rates.
| bs | the rate to be set |
Definition at line 98 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().
Here is the call graph for this function:
Here is the caller graph for this function:
|
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 250 of file supported-rates.h.
| ExtendedSupportedRatesIE ns3::SupportedRates::extended |
extended suppoted rates info element
Definition at line 251 of file supported-rates.h.
Referenced by ns3::dot11s::PeerLinkOpenStart::Deserialize(), ns3::MgtAssocRequestHeader::Deserialize(), ns3::dot11s::PeerLinkConfirmStart::Deserialize(), ns3::MgtAssocResponseHeader::Deserialize(), ns3::MgtProbeRequestHeader::Deserialize(), ns3::MgtProbeResponseHeader::Deserialize(), ns3::dot11s::PeerLinkOpenStart::GetSerializedSize(), ns3::MgtAssocRequestHeader::GetSerializedSize(), ns3::dot11s::PeerLinkConfirmStart::GetSerializedSize(), ns3::MgtAssocResponseHeader::GetSerializedSize(), ns3::MgtProbeRequestHeader::GetSerializedSize(), ns3::MgtProbeResponseHeader::GetSerializedSize(), operator=(), ns3::dot11s::PeerLinkOpenStart::Serialize(), ns3::MgtAssocRequestHeader::Serialize(), ns3::dot11s::PeerLinkConfirmStart::Serialize(), ns3::MgtAssocResponseHeader::Serialize(), ns3::MgtProbeRequestHeader::Serialize(), ns3::MgtProbeResponseHeader::Serialize(), and SupportedRates().
|
private |
Number of supported rates.
Definition at line 255 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 256 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 150 of file supported-rates.h.
Referenced by AddSupportedRate(), ns3::ExtendedSupportedRatesIE::DeserializeInformationField(), operator=(), and SupportedRates().