A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
yans-wifi-helper.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2008 INRIA
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: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
19  */
20 
21 #ifndef YANS_WIFI_HELPER_H
22 #define YANS_WIFI_HELPER_H
23 
24 #include "wifi-helper.h"
25 #include "ns3/trace-helper.h"
26 #include "ns3/yans-wifi-channel.h"
27 
28 namespace ns3 {
29 
38 {
39 public:
45 
52  static YansWifiChannelHelper Default (void);
53 
82  void AddPropagationLoss (std::string name,
83  std::string n0 = "", const AttributeValue &v0 = EmptyAttributeValue (),
84  std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (),
85  std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (),
86  std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue (),
87  std::string n4 = "", const AttributeValue &v4 = EmptyAttributeValue (),
88  std::string n5 = "", const AttributeValue &v5 = EmptyAttributeValue (),
89  std::string n6 = "", const AttributeValue &v6 = EmptyAttributeValue (),
90  std::string n7 = "", const AttributeValue &v7 = EmptyAttributeValue ());
112  void SetPropagationDelay (std::string name,
113  std::string n0 = "", const AttributeValue &v0 = EmptyAttributeValue (),
114  std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (),
115  std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (),
116  std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue (),
117  std::string n4 = "", const AttributeValue &v4 = EmptyAttributeValue (),
118  std::string n5 = "", const AttributeValue &v5 = EmptyAttributeValue (),
119  std::string n6 = "", const AttributeValue &v6 = EmptyAttributeValue (),
120  std::string n7 = "", const AttributeValue &v7 = EmptyAttributeValue ());
121 
127  Ptr<YansWifiChannel> Create (void) const;
128 
141  int64_t AssignStreams (Ptr<YansWifiChannel> c, int64_t stream);
142 
143 
144 private:
145  std::vector<ObjectFactory> m_propagationLoss;
147 };
148 
149 
161  public PcapHelperForDevice,
163 {
164 public:
170 
174  static YansWifiPhyHelper Default (void);
175 
187  void SetChannel (std::string channelName);
194  void Set (std::string name, const AttributeValue &v);
216  void SetErrorRateModel (std::string name,
217  std::string n0 = "", const AttributeValue &v0 = EmptyAttributeValue (),
218  std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (),
219  std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (),
220  std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue (),
221  std::string n4 = "", const AttributeValue &v4 = EmptyAttributeValue (),
222  std::string n5 = "", const AttributeValue &v5 = EmptyAttributeValue (),
223  std::string n6 = "", const AttributeValue &v6 = EmptyAttributeValue (),
224  std::string n7 = "", const AttributeValue &v7 = EmptyAttributeValue ());
225 
232  {
236  };
237 
248 
256  uint32_t GetPcapDataLinkType (void) const;
257 
258 
259 protected:
272 static void PcapSniffTxEvent (Ptr<PcapFileWrapper> file,
273  Ptr<const Packet> packet,
274  uint16_t channelFreqMhz,
275  uint16_t channelNumber,
276  uint32_t rate,
277  WifiPreamble preamble,
278  WifiTxVector txVector,
279  struct mpduInfo aMpdu);
293 static void PcapSniffRxEvent (Ptr<PcapFileWrapper> file,
294  Ptr<const Packet> packet,
295  uint16_t channelFreqMhz,
296  uint16_t channelNumber,
297  uint32_t rate,
298  WifiPreamble preamble,
299  WifiTxVector txVector,
300  struct mpduInfo aMpdu,
301  struct signalNoiseDbm signalNoise);
302 
303 
304 private:
312  virtual Ptr<WifiPhy> Create (Ptr<Node> node, Ptr<NetDevice> device) const;
313 
325  virtual void EnablePcapInternal (std::string prefix,
326  Ptr<NetDevice> nd,
327  bool promiscuous,
328  bool explicitFilename);
329 
341  virtual void EnableAsciiInternal (Ptr<OutputStreamWrapper> stream,
342  std::string prefix,
343  Ptr<NetDevice> nd,
344  bool explicitFilename);
345 
349  uint32_t m_pcapDlt;
350 };
351 
352 } //namespace ns3
353 
354 #endif /* YANS_WIFI_HELPER_H */
Base class providing common user-level ascii trace operations for helpers representing net devices...
Definition: trace-helper.h:636
void AddPropagationLoss(std::string name, std::string n0="", const AttributeValue &v0=EmptyAttributeValue(), std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue())
tuple channel
Definition: third.py:85
uint32_t GetPcapDataLinkType(void) const
Get the data link type of PCAP traces to be used.
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:73
void SetErrorRateModel(std::string name, std::string n0="", const AttributeValue &v0=EmptyAttributeValue(), std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue())
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
Ptr< YansWifiChannel > Create(void) const
Make it easy to create and manage PHY objects for the yans model.
static YansWifiChannelHelper Default(void)
Create a channel helper in a default working state.
Hold a value for an Attribute.
Definition: attribute.h:68
create PHY objects
Definition: wifi-helper.h:47
Include Prism monitor mode information.
Base class providing common user-level pcap operations for helpers representing net devices...
Definition: trace-helper.h:547
void SetPcapDataLinkType(enum SupportedPcapDataLinkTypes dlt)
Set the data link type of PCAP traces to be used.
virtual void EnableAsciiInternal(Ptr< OutputStreamWrapper > stream, std::string prefix, Ptr< NetDevice > nd, bool explicitFilename)
Enable ascii trace output on the indicated net device.
void Set(std::string name, const AttributeValue &v)
static YansWifiPhyHelper Default(void)
Create a phy helper in a default working state.
YansWifiChannelHelper()
Create a channel helper without any parameter set.
Include Radiotap link layer information.
IEEE 802.11 Wireless LAN headers on packets.
WifiPreamble
The type of preamble to be used by an IEEE 802.11 transmission.
Definition: wifi-preamble.h:30
void SetChannel(Ptr< YansWifiChannel > channel)
A class for an empty attribute value.
Definition: attribute.h:234
YansWifiPhyHelper()
Create a phy helper without any parameter set.
ObjectFactory m_errorRateModel
static void PcapSniffTxEvent(Ptr< PcapFileWrapper > file, Ptr< const Packet > packet, uint16_t channelFreqMhz, uint16_t channelNumber, uint32_t rate, WifiPreamble preamble, WifiTxVector txVector, struct mpduInfo aMpdu)
static void PcapSniffRxEvent(Ptr< PcapFileWrapper > file, Ptr< const Packet > packet, uint16_t channelFreqMhz, uint16_t channelNumber, uint32_t rate, WifiPreamble preamble, WifiTxVector txVector, struct mpduInfo aMpdu, struct signalNoiseDbm signalNoise)
virtual void EnablePcapInternal(std::string prefix, Ptr< NetDevice > nd, bool promiscuous, bool explicitFilename)
Enable pcap output the indicated net device.
Ptr< YansWifiChannel > m_channel
manage and create wifi channel objects for the yans model.
Instantiate subclasses of ns3::Object.
virtual Ptr< WifiPhy > Create(Ptr< Node > node, Ptr< NetDevice > device) const
void SetPropagationDelay(std::string name, std::string n0="", const AttributeValue &v0=EmptyAttributeValue(), std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue())
std::vector< ObjectFactory > m_propagationLoss
SupportedPcapDataLinkTypes
An enumeration of the pcap data link types (DLTs) which this helper supports.
int64_t AssignStreams(Ptr< YansWifiChannel > c, int64_t stream)
Assign a fixed random variable stream number to the random variables used by the channel.