Default wifi Association Manager. More...
#include "wifi-default-assoc-manager.h"
Classes | |
struct | ChannelSwitchInfo |
Channel switch info. More... | |
Public Member Functions | |
WifiDefaultAssocManager () | |
~WifiDefaultAssocManager () override | |
bool | Compare (const StaWifiMac::ApInfo &lhs, const StaWifiMac::ApInfo &rhs) const override |
Compare two ApInfo objects for the purpose of keeping a sorted list of ApInfo objects. | |
void | NotifyChannelSwitched (uint8_t linkId) override |
Notify that the given link has completed channel switching. | |
Public Member Functions inherited from ns3::WifiAssocManager | |
~WifiAssocManager () override | |
virtual void | NotifyApInfo (const StaWifiMac::ApInfo &&apInfo) |
STA wifi MAC received a Beacon frame or Probe Response frame while scanning and notifies us the AP information contained in the received frame. | |
void | SetStaWifiMac (Ptr< StaWifiMac > mac) |
Set the pointer to the STA wifi MAC. | |
void | StartScanning (WifiScanParams &&scanParams) |
Request the Association Manager to start a scanning procedure according to the given scanning parameters. | |
Public Member Functions inherited from ns3::Object | |
Object () | |
Constructor. | |
~Object () override | |
Destructor. | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. | |
void | Dispose () |
Dispose of this Object. | |
AggregateIterator | GetAggregateIterator () const |
Get an iterator to the Objects aggregated to this one. | |
TypeId | GetInstanceTypeId () const override |
Get the most derived TypeId for this Object. | |
template<typename T > | |
Ptr< T > | GetObject () const |
Get a pointer to the requested aggregated Object. | |
template<> | |
Ptr< Object > | GetObject () const |
Specialization of () for objects of type ns3::Object. | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. | |
template<> | |
Ptr< Object > | GetObject (TypeId tid) const |
Specialization of (TypeId tid) for objects of type ns3::Object. | |
void | Initialize () |
Invoke DoInitialize on all Objects aggregated to this one. | |
bool | IsInitialized () const |
Check if the object has been initialized. | |
void | UnidirectionalAggregateObject (Ptr< Object > other) |
Aggregate an Object to another Object. | |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount () | |
Default constructor. | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. | |
uint32_t | GetReferenceCount () const |
Get the reference count of the object. | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment operator. | |
void | Ref () const |
Increment the reference count. | |
void | Unref () const |
Decrement the reference count. | |
Public Member Functions inherited from ns3::ObjectBase | |
virtual | ~ObjectBase () |
Virtual destructor. | |
void | GetAttribute (std::string name, AttributeValue &value, bool permissive=false) 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. | |
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 Public Member Functions inherited from ns3::WifiAssocManager | |
static std::list< WifiAssocManager::RnrLinkInfo > | GetAllAffiliatedAps (const ReducedNeighborReport &rnr) |
Find all the APs affiliated to the same AP MLD as the reporting AP that sent the given RNR element. | |
static std::optional< WifiAssocManager::RnrLinkInfo > | GetNextAffiliatedAp (const ReducedNeighborReport &rnr, std::size_t nbrApInfoId) |
Search the given RNR element for APs affiliated to the same AP MLD as the reporting AP. | |
static TypeId | GetTypeId () |
Get the type ID. | |
Static Public Member Functions inherited from ns3::Object | |
static TypeId | GetTypeId () |
Register this type. | |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId () |
Get the type ID. | |
Protected Member Functions | |
bool | CanBeInserted (const StaWifiMac::ApInfo &apInfo) const override |
Allow subclasses to choose whether the given ApInfo shall be considered and hence inserted in the sorted list of ApInfo objects. | |
bool | CanBeReturned (const StaWifiMac::ApInfo &apInfo) const override |
Allow subclasses to choose whether the given ApInfo shall be returned or discarded when the STA wifi MAC requests information on the best AP. | |
void | DoDispose () override |
Destructor implementation. | |
void | EndScanning () |
Perform operations to do at the end of a scanning procedure, such as identifying the links to setup in case of 11be MLD devices. | |
Protected Member Functions inherited from ns3::WifiAssocManager | |
WifiAssocManager () | |
Constructor (protected as this is an abstract base class) | |
bool | CanSetupMultiLink (OptMleConstRef &mle, OptRnrConstRef &rnr) |
Check whether 11be Multi-Link setup can be established with the current best AP. | |
const WifiScanParams & | GetScanParams () const |
std::list< StaWifiMac::ApInfo::SetupLinksInfo > & | GetSetupLinks (const StaWifiMac::ApInfo &apInfo) |
Get a reference to the list of the links to setup with the given AP. | |
const SortedList & | GetSortedList () const |
bool | MatchScanParams (const StaWifiMac::ApInfo &apInfo) const |
Check whether the given AP information match the current scanning parameters. | |
void | ScanningTimeout () |
Extract the best AP to associate with from the sorted list and return it, if any, to the STA wifi MAC along with the notification that scanning is completed. | |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
Copy an Object. | |
virtual void | DoInitialize () |
Initialize() implementation. | |
virtual void | NotifyNewAggregate () |
Notify all Objects aggregated to this one of a new Object being aggregated. | |
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. | |
Private Member Functions | |
void | ChannelSwitchTimeout (uint8_t linkId) |
Take action upon the expiration of the timer set when requesting channel switch on the given link. | |
void | DoStartScanning () override |
Start a scanning procedure. | |
Private Attributes | |
std::vector< ChannelSwitchInfo > | m_channelSwitchInfo |
per-link channel switch info | |
Time | m_channelSwitchTimeout |
maximum delay for channel switching | |
EventId | m_probeRequestEvent |
probe request event | |
EventId | m_waitBeaconEvent |
wait beacon event | |
Additional Inherited Members | |
Protected Types inherited from ns3::WifiAssocManager | |
using | OptMleConstRef = std::optional<std::reference_wrapper<const MultiLinkElement>> |
typedef for an optional const reference to a MultiLinkElement object | |
using | OptRnrConstRef = std::optional<std::reference_wrapper<const ReducedNeighborReport>> |
typedef for an optional const reference to a ReducedNeighborReport object | |
using | SortedList = std::set<StaWifiMac::ApInfo, ApInfoCompare> |
typedef for the sorted list of ApInfo objects | |
Protected Attributes inherited from ns3::WifiAssocManager | |
std::set< uint8_t > | m_allowedLinks |
"Only Beacon and Probe Response frames received on a link belonging to the this set are processed | |
Ptr< StaWifiMac > | m_mac |
pointer to the STA wifi MAC | |
Related Symbols inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. | |
Default wifi Association Manager.
Definition at line 24 of file wifi-default-assoc-manager.h.
ns3::WifiDefaultAssocManager::WifiDefaultAssocManager | ( | ) |
Definition at line 47 of file wifi-default-assoc-manager.cc.
References NS_LOG_FUNCTION.
|
override |
Definition at line 52 of file wifi-default-assoc-manager.cc.
References NS_LOG_FUNCTION.
|
overrideprotectedvirtual |
Allow subclasses to choose whether the given ApInfo shall be considered and hence inserted in the sorted list of ApInfo objects.
apInfo | the apInfo object to insert |
Implements ns3::WifiAssocManager.
Definition at line 288 of file wifi-default-assoc-manager.cc.
References ns3::EventId::IsPending(), m_probeRequestEvent, and m_waitBeaconEvent.
|
overrideprotectedvirtual |
Allow subclasses to choose whether the given ApInfo shall be returned or discarded when the STA wifi MAC requests information on the best AP.
apInfo | the apInfo object to return |
Implements ns3::WifiAssocManager.
Definition at line 294 of file wifi-default-assoc-manager.cc.
|
private |
Take action upon the expiration of the timer set when requesting channel switch on the given link.
linkId | the ID of the given link |
Definition at line 265 of file wifi-default-assoc-manager.cc.
References ns3::WifiAssocManager::GetSetupLinks(), ns3::WifiAssocManager::GetSortedList(), m_channelSwitchInfo, NS_ASSERT, NS_LOG_FUNCTION, and ns3::WifiAssocManager::ScanningTimeout().
Referenced by EndScanning().
|
overridevirtual |
Compare two ApInfo objects for the purpose of keeping a sorted list of ApInfo objects.
lhs | left hand side ApInfo object |
rhs | right hand side ApInfo object |
Implements ns3::WifiAssocManager.
Definition at line 67 of file wifi-default-assoc-manager.cc.
References ns3::StaWifiMac::ApInfo::m_snr.
|
overrideprotectedvirtual |
Destructor implementation.
This method is called by Dispose() or by the Object's destructor, whichever comes first.
Subclasses are expected to implement their real destruction code in an overridden version of this method and chain up to their parent's implementation once they are done. i.e, for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose() method.
It is safe to call GetObject() from within this method.
Reimplemented from ns3::WifiAssocManager.
Definition at line 58 of file wifi-default-assoc-manager.cc.
References ns3::EventId::Cancel(), ns3::WifiAssocManager::DoDispose(), m_probeRequestEvent, m_waitBeaconEvent, and NS_LOG_FUNCTION.
|
overrideprivatevirtual |
Start a scanning procedure.
This method needs to schedule a call to ScanningTimeout when the scanning procedure is completed.
Implements ns3::WifiAssocManager.
Definition at line 73 of file wifi-default-assoc-manager.cc.
References ns3::ACTIVE, ns3::EventId::Cancel(), EndScanning(), ns3::WifiAssocManager::GetScanParams(), ns3::WifiAssocManager::GetSortedList(), ns3::WifiAssocManager::m_mac, m_probeRequestEvent, m_waitBeaconEvent, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), ns3::Simulator::ScheduleNow(), and ns3::StaWifiMac::SendProbeRequest().
|
protected |
Perform operations to do at the end of a scanning procedure, such as identifying the links to setup in case of 11be MLD devices.
Definition at line 111 of file wifi-default-assoc-manager.cc.
References ns3::WifiAssocManager::CanSetupMultiLink(), ChannelSwitchTimeout(), ns3::WifiAssocManager::GetAllAffiliatedAps(), ns3::WifiAssocManager::GetSetupLinks(), ns3::WifiAssocManager::GetSortedList(), m_channelSwitchInfo, m_channelSwitchTimeout, ns3::WifiAssocManager::m_mac, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::WifiAssocManager::ScanningTimeout(), and ns3::Simulator::Schedule().
Referenced by DoStartScanning().
|
static |
Get the type ID.
Definition at line 30 of file wifi-default-assoc-manager.cc.
References m_channelSwitchTimeout, ns3::MakeTimeAccessor(), ns3::MakeTimeChecker(), ns3::MilliSeconds(), ns3::Seconds(), and ns3::TypeId::SetParent().
|
overridevirtual |
Notify that the given link has completed channel switching.
linkId | the ID of the given link |
Implements ns3::WifiAssocManager.
Definition at line 246 of file wifi-default-assoc-manager.cc.
References m_channelSwitchInfo, NS_LOG_FUNCTION, and ns3::WifiAssocManager::ScanningTimeout().
|
private |
per-link channel switch info
Definition at line 72 of file wifi-default-assoc-manager.h.
Referenced by ChannelSwitchTimeout(), EndScanning(), and NotifyChannelSwitched().
|
private |
maximum delay for channel switching
Definition at line 62 of file wifi-default-assoc-manager.h.
Referenced by EndScanning(), and GetTypeId().
|
private |
probe request event
Definition at line 61 of file wifi-default-assoc-manager.h.
Referenced by CanBeInserted(), DoDispose(), and DoStartScanning().
|
private |
wait beacon event
Definition at line 60 of file wifi-default-assoc-manager.h.
Referenced by CanBeInserted(), DoDispose(), and DoStartScanning().