A Discrete-Event Network Simulator
API
sta-wifi-mac.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2006, 2009 INRIA
4  * Copyright (c) 2009 MIRKO BANCHI
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation;
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  *
19  * Authors: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
20  * Mirko Banchi <mk.banchi@gmail.com>
21  */
22 
23 #ifndef STA_WIFI_MAC_H
24 #define STA_WIFI_MAC_H
25 
27 #include "mgt-headers.h"
28 
31 class HeAggregationTest;
32 
33 namespace ns3 {
34 
35 class SupportedRates;
36 class CapabilityInformation;
37 
44 struct ApInfo
45 {
48  double m_snr;
52 };
53 
107 {
108 public:
110  friend class ::TwoLevelAggregationTest;
112  friend class ::AmpduAggregationTest;
114  friend class ::HeAggregationTest;
119  static TypeId GetTypeId (void);
120 
121  StaWifiMac ();
122  virtual ~StaWifiMac ();
123 
130 
139  void Enqueue (Ptr<const Packet> packet, Mac48Address to);
140 
144  void SetWifiPhy (const Ptr<WifiPhy> phy);
145 
151  bool IsAssociated (void) const;
152 
153 
154 private:
158  enum MacState
159  {
166  };
167 
173  void SetActiveProbing (bool enable);
179  bool GetActiveProbing (void) const;
180 
187  void Receive (Ptr<Packet> packet, const WifiMacHeader *hdr);
219  void UpdateCandidateApList (ApInfo newApInfo);
220 
225  void SendProbeRequest (void);
234  void SendAssociationRequest (bool isReassoc);
238  void SendCfPollResponse (void);
243  void TryToEnsureAssociated (void);
248  void AssocRequestTimeout (void);
253  void StartScanning (void);
259  void ScanningTimeout (void);
265  bool IsWaitAssocResp (void) const;
269  void MissedBeacons (void);
275  void RestartBeaconWatchdog (Time delay);
282  SupportedRates GetSupportedRates (void) const;
288  void SetState (MacState value);
298  void SetEdcaParameters (AcIndex ac, uint32_t cwMin, uint32_t cwMax, uint8_t aifsn, Time txopLimit);
305 
309  void PhyCapabilitiesChanged (void);
310 
311  void DoInitialize (void);
312 
324  std::vector<ApInfo> m_candidateAps;
325  // Note: std::multiset<ApInfo> might be a candidate container to implement
326  // this sorted list, but we are using a std::vector because we want to sort
327  // based on SNR but find duplicates based on BSSID, and in practice this
328  // candidate vector should not be too large.
329 
333 };
334 
335 } //namespace ns3
336 
337 #endif /* STA_WIFI_MAC_H */
void SetWifiPhy(const Ptr< WifiPhy > phy)
bool m_activeProbing
Flag whether active probing is used or not.
Definition: sta-wifi-mac.h:49
TracedCallback< Mac48Address > m_deAssocLogger
deassoc logger
Definition: sta-wifi-mac.h:331
double m_snr
SNR.
Definition: sta-wifi-mac.h:48
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:102
Time m_assocRequestTimeout
assoc request timeout
Definition: sta-wifi-mac.h:316
void Receive(Ptr< Packet > packet, const WifiMacHeader *hdr)
Handle a received packet.
bool GetActiveProbing(void) const
Return whether active probing is enabled.
void DoInitialize(void)
Initialize() implementation.
void SetEdcaParameters(AcIndex ac, uint32_t cwMin, uint32_t cwMax, uint8_t aifsn, Time txopLimit)
Set the EDCA parameters.
void SetState(MacState value)
Set the current MAC state.
std::vector< ApInfo > m_candidateAps
list of candidate APs to associate
Definition: sta-wifi-mac.h:324
void AssocRequestTimeout(void)
This method is called after the association timeout occurred.
Time m_probeRequestTimeout
probe request timeout
Definition: sta-wifi-mac.h:315
Forward calls to a chain of Callback.
void StartScanning(void)
Start the scanning process which trigger active or passive scanning based on the active probing flag...
Struct to hold information regarding observed AP through active/passive scanning. ...
Definition: sta-wifi-mac.h:44
void UpdateCandidateApList(ApInfo newApInfo)
Update list of candidate AP to associate.
Mac48Address m_bssid
BSSID.
Definition: sta-wifi-mac.h:46
TracedCallback< Mac48Address > m_assocLogger
assoc logger
Definition: sta-wifi-mac.h:330
EventId m_assocRequestEvent
assoc request event
Definition: sta-wifi-mac.h:319
Time m_waitBeaconTimeout
wait beacon timeout
Definition: sta-wifi-mac.h:314
The Supported Rates Information ElementThis class knows how to serialise and deserialise the Supporte...
Capability information.
void SetWifiRemoteStationManager(const Ptr< WifiRemoteStationManager > stationManager)
Set up WifiRemoteStationManager associated with this StaWifiMac.
phy
Definition: third.py:86
The Wifi MAC high model for a STA or AP in a BSS.
MacState
The current MAC state of the STA.
Definition: sta-wifi-mac.h:158
void SendProbeRequest(void)
Forward a probe request packet to the DCF.
CapabilityInformation GetCapabilities(void) const
Return the Capability information of the current STA.
void UpdateApInfoFromBeacon(MgtBeaconHeader beacon, Mac48Address apAddr, Mac48Address bssid)
Update associated AP&#39;s information from beacon.
SupportedRates GetSupportedRates(void) const
Return an instance of SupportedRates that contains all rates that we support including HT rates...
Mac48Address m_apAddr
AP MAC address.
Definition: sta-wifi-mac.h:47
MacState m_state
MAC state.
Definition: sta-wifi-mac.h:313
void MissedBeacons(void)
This method is called after we have not received a beacon from the AP.
MgtProbeResponseHeader m_probeResp
Probe Response header.
Definition: sta-wifi-mac.h:51
void ScanningTimeout(void)
This method is called after wait beacon timeout or wait probe request timeout has occurred...
void SendCfPollResponse(void)
Forward a CF-Poll response packet to the CFP queue.
uint32_t m_maxMissedBeacons
maximum missed beacons
Definition: sta-wifi-mac.h:322
EventId m_beaconWatchdog
beacon watchdog
Definition: sta-wifi-mac.h:320
void UpdateApInfoFromProbeResp(MgtProbeResponseHeader probeResp, Mac48Address apAddr, Mac48Address bssid)
Update AP&#39;s information from probe response.
virtual ~StaWifiMac()
Every class exported by the ns3 library is enclosed in the ns3 namespace.
void PhyCapabilitiesChanged(void)
Indicate that PHY capabilities have changed.
static TypeId GetTypeId(void)
Get the type ID.
Definition: sta-wifi-mac.cc:42
an EUI-48 address
Definition: mac48-address.h:43
void RestartBeaconWatchdog(Time delay)
Restarts the beacon timer.
void TryToEnsureAssociated(void)
Try to ensure that we are associated with an AP by taking an appropriate action depending on the curr...
MgtBeaconHeader m_beacon
Beacon header.
Definition: sta-wifi-mac.h:50
EventId m_waitBeaconEvent
wait beacon event
Definition: sta-wifi-mac.h:317
Two Level Aggregation Test.
void SetActiveProbing(bool enable)
Enable or disable active probing.
Ampdu Aggregation Test.
Implement the header for management frames of type association and reassociation response.
Definition: mgt-headers.h:318
void UpdateApInfoFromAssocResp(MgtAssocResponseHeader assocResp, Mac48Address apAddr)
Update AP&#39;s information from association response.
An identifier for simulation events.
Definition: event-id.h:53
802.11ax aggregation test which permits 64 or 256 MPDUs in A-MPDU according to the negociated buffer ...
void Enqueue(Ptr< const Packet > packet, Mac48Address to)
bool IsWaitAssocResp(void) const
Return whether we are waiting for an association response from an AP.
Time m_beaconWatchdogEnd
beacon watchdog end
Definition: sta-wifi-mac.h:321
bool m_activeProbing
active probing
Definition: sta-wifi-mac.h:323
EventId m_probeRequestEvent
probe request event
Definition: sta-wifi-mac.h:318
Implement the header for management frames of type probe response.
Definition: mgt-headers.h:612
a unique identifier for an interface.
Definition: type-id.h:58
AcIndex
This enumeration defines the Access Categories as an enumeration with values corresponding to the AC ...
Definition: qos-utils.h:38
Implement the header for management frames of type beacon.
Definition: mgt-headers.h:841
Implements the IEEE 802.11 MAC header.
void SendAssociationRequest(bool isReassoc)
Forward an association or reassociation request packet to the DCF.
bool IsAssociated(void) const
Return whether we are associated with an AP.
TracedCallback< Time > m_beaconArrival
beacon arrival logger
Definition: sta-wifi-mac.h:332
The Wifi MAC high model for a non-AP STA in a BSS.
Definition: sta-wifi-mac.h:106