A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
wifi-default-assoc-manager.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2022 Universita' degli Studi di Napoli Federico II
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 * Author: Stefano Avallone <stavallo@unina.it>
7 */
8
9#ifndef WIFI_DEFAULT_ASSOC_MANAGER_H
10#define WIFI_DEFAULT_ASSOC_MANAGER_H
11
12#include "wifi-assoc-manager.h"
13
14namespace ns3
15{
16
17class StaWifiMac;
18
19/**
20 * @ingroup wifi
21 *
22 * Default wifi Association Manager.
23 */
25{
26 public:
27 /**
28 * @brief Get the type ID.
29 * @return the object TypeId
30 */
31 static TypeId GetTypeId();
33 ~WifiDefaultAssocManager() override;
34
35 void NotifyChannelSwitched(uint8_t linkId) override;
36 bool Compare(const StaWifiMac::ApInfo& lhs, const StaWifiMac::ApInfo& rhs) const override;
37
38 protected:
39 void DoDispose() override;
40 bool CanBeInserted(const StaWifiMac::ApInfo& apInfo) const override;
41 bool CanBeReturned(const StaWifiMac::ApInfo& apInfo) const override;
42
43 /**
44 * Perform operations to do at the end of a scanning procedure, such as
45 * identifying the links to setup in case of 11be MLD devices.
46 */
47 void EndScanning();
48
49 private:
50 void DoStartScanning() override;
51
52 /**
53 * Take action upon the expiration of the timer set when requesting channel
54 * switch on the given link.
55 *
56 * @param linkId the ID of the given link
57 */
58 void ChannelSwitchTimeout(uint8_t linkId);
59
60 EventId m_waitBeaconEvent; ///< wait beacon event
61 EventId m_probeRequestEvent; ///< probe request event
62 Time m_channelSwitchTimeout; ///< maximum delay for channel switching
63
64 /** Channel switch info */
66 {
67 EventId timer; ///< timer
68 Mac48Address apLinkAddress; ///< AP link address
69 Mac48Address apMldAddress; ///< AP MLD address
70 };
71
72 std::vector<ChannelSwitchInfo> m_channelSwitchInfo; ///< per-link channel switch info
73};
74
75} // namespace ns3
76
77#endif /* WIFI_DEFAULT_ASSOC_MANAGER_H */
An identifier for simulation events.
Definition event-id.h:45
an EUI-48 address
Simulation virtual time values and global simulation resolution.
Definition nstime.h:94
a unique identifier for an interface.
Definition type-id.h:49
Abstract base class for the Association Manager, which manages scanning and association for single li...
Default wifi Association Manager.
void EndScanning()
Perform operations to do at the end of a scanning procedure, such as identifying the links to setup i...
void DoDispose() override
Destructor implementation.
EventId m_probeRequestEvent
probe request event
void DoStartScanning() override
Start a scanning procedure.
bool CanBeInserted(const StaWifiMac::ApInfo &apInfo) const override
Allow subclasses to choose whether the given ApInfo shall be considered and hence inserted in the sor...
Time m_channelSwitchTimeout
maximum delay for channel switching
void NotifyChannelSwitched(uint8_t linkId) override
Notify that the given link has completed channel switching.
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.
EventId m_waitBeaconEvent
wait beacon event
static TypeId GetTypeId()
Get the type ID.
void ChannelSwitchTimeout(uint8_t linkId)
Take action upon the expiration of the timer set when requesting channel switch on the given link.
std::vector< ChannelSwitchInfo > m_channelSwitchInfo
per-link channel switch info
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 ...
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
Definition ptr.h:436
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Struct to hold information regarding observed AP through active/passive scanning.