1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3 * Copyright (c) 2009 IITP RAS
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation;
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 *
18 * Author: Pavel Boyko <boyko@iitp.ru>
19 */
20
21 #include "ns3/mesh-wifi-beacon.h"
22 #include "ns3/nstime.h"
23 #include "ns3/wifi-mac-header.h"
24
25 namespace ns3 {
26
MeshWifiBeacon(Ssid ssid,SupportedRates rates,uint64_t us)27 MeshWifiBeacon::MeshWifiBeacon (Ssid ssid, SupportedRates rates, uint64_t us)
28 {
29 m_header.SetSsid (ssid);
30 m_header.SetSupportedRates (rates);
31 m_header.SetBeaconIntervalUs (us);
32 }
33
34 void
AddInformationElement(Ptr<WifiInformationElement> ie)35 MeshWifiBeacon::AddInformationElement (Ptr<WifiInformationElement> ie)
36 {
37 m_elements.AddInformationElement (ie);
38 }
39
40 Time
GetBeaconInterval() const41 MeshWifiBeacon::GetBeaconInterval () const
42 {
43 return MicroSeconds (m_header.GetBeaconIntervalUs ());
44 }
45
46 Ptr<Packet>
CreatePacket()47 MeshWifiBeacon::CreatePacket ()
48 {
49 Ptr<Packet> packet = Create <Packet> ();
50 packet->AddHeader (m_elements);
51 packet->AddHeader (BeaconHeader ());
52 return packet;
53 }
54
55 WifiMacHeader
CreateHeader(Mac48Address address,Mac48Address mpAddress)56 MeshWifiBeacon::CreateHeader (Mac48Address address, Mac48Address mpAddress)
57 {
58 WifiMacHeader hdr;
59 hdr.SetType (WIFI_MAC_MGT_BEACON);
60 hdr.SetAddr1 (Mac48Address::GetBroadcast ());
61 hdr.SetAddr2 (address);
62 hdr.SetAddr3 (mpAddress);
63 hdr.SetDsNotFrom ();
64 hdr.SetDsNotTo ();
65 return hdr;
66 }
67
68 } // namespace ns3
69
70