A Discrete-Event Network Simulator
API
mesh-wifi-beacon.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2009 IITP RAS
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation;
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, write to the Free Software
15  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16  *
17  * Author: Pavel Boyko <boyko@iitp.ru>
18  */
19 
20 #include "mesh-wifi-beacon.h"
21 
22 #include "ns3/nstime.h"
23 #include "ns3/wifi-mac-header.h"
24 
25 namespace ns3
26 {
27 
29 {
30  m_header.Get<Ssid>() = ssid;
31  m_header.Get<SupportedRates>() = rates.rates;
34 }
35 
36 void
38 {
40 }
41 
42 Time
44 {
46 }
47 
50 {
51  Ptr<Packet> packet = Create<Packet>();
52  packet->AddHeader(m_elements);
53  packet->AddHeader(BeaconHeader());
54  return packet;
55 }
56 
59 {
60  WifiMacHeader hdr;
63  hdr.SetAddr2(address);
64  hdr.SetAddr3(mpAddress);
65  hdr.SetDsNotFrom();
66  hdr.SetDsNotTo();
67  return hdr;
68 }
69 
70 } // namespace ns3
The Extended Supported Rates Information Element.
an EUI-48 address
Definition: mac48-address.h:46
static Mac48Address GetBroadcast()
bool AddInformationElement(Ptr< WifiInformationElement > element)
add an IE, if maxSize has exceeded, returns false
WifiMacHeader CreateHeader(Mac48Address address, Mac48Address mpAddress)
Create Wifi header for beacon frame.
Time GetBeaconInterval() const
Returns the beacon interval of Wifi beacon.
Ptr< Packet > CreatePacket()
Create frame = { beacon header + all information elements sorted by ElementId () }.
MgtBeaconHeader BeaconHeader() const
Read standard Wifi beacon header.
MgtBeaconHeader m_header
Beacon header.
void AddInformationElement(Ptr< WifiInformationElement > ie)
Add information element.
MeshWifiBeacon(Ssid ssid, AllSupportedRates rates, uint64_t us)
C-tor.
MeshInformationElementVector m_elements
List of information elements added.
void SetBeaconIntervalUs(uint64_t us)
Set the beacon interval in microseconds unit.
Definition: mgt-headers.cc:81
uint64_t GetBeaconIntervalUs() const
Return the beacon interval in microseconds unit.
Definition: mgt-headers.cc:75
void AddHeader(const Header &header)
Add header to this packet.
Definition: packet.cc:268
The IEEE 802.11 SSID Information Element.
Definition: ssid.h:36
The Supported Rates Information Element.
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:105
Implements the IEEE 802.11 MAC header.
void SetDsNotFrom()
Un-set the From DS bit in the Frame Control field.
void SetAddr1(Mac48Address address)
Fill the Address 1 field with the given address.
virtual void SetType(WifiMacType type, bool resetToDsFromDs=true)
Set Type/Subtype values with the correct values depending on the given type.
void SetAddr2(Mac48Address address)
Fill the Address 2 field with the given address.
void SetAddr3(Mac48Address address)
Fill the Address 3 field with the given address.
void SetDsNotTo()
Un-set the To DS bit in the Frame Control field.
Time MicroSeconds(uint64_t value)
Construct a Time in the indicated unit.
Definition: nstime.h:1350
address
Definition: first.py:47
Every class exported by the ns3 library is enclosed in the ns3 namespace.
@ WIFI_MAC_MGT_BEACON
ssid
Definition: third.py:93
Struct containing all supported rates.
SupportedRates rates
supported rates
std::optional< ExtendedSupportedRatesIE > extendedRates
supported extended rates