A Discrete-Event Network Simulator
API
wifi-phy-configuration.cc
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2016 Tom Henderson
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: Tom Henderson <tomh@tomh.org>
19  */
20 
21 #include <string>
22 #include "ns3/core-module.h"
23 #include "ns3/config-store-module.h"
24 #include "ns3/network-module.h"
25 #include "ns3/wifi-module.h"
26 
27 // This example shows (and tests) some possible configurations for
28 // the Wi-Fi physical layer, particularly the interaction between
29 // WifiHelper.SetStandard () and the physical layer channel number,
30 // center frequency, and channel width.
31 
32 using namespace ns3;
33 
34 NS_LOG_COMPONENT_DEFINE ("WifiPhyConfigurationExample");
35 
36 
39 {
40  Ptr<WifiNetDevice> wnd = nc.Get (0)->GetObject<WifiNetDevice> ();
41  Ptr<WifiPhy> wp = wnd->GetPhy ();
42  return wp->GetObject<YansWifiPhy> ();
43 }
44 
45 void
47 {
48  if (enabled)
49  {
50  ConfigStore outputConfig;
51  outputConfig.ConfigureAttributes ();
52  }
53 }
54 
55 int main (int argc, char *argv[])
56 {
57  uint32_t testCase = 0;
58  bool printAttributes = false;
59 
61  cmd.AddValue ("testCase", "Test case", testCase);
62  cmd.AddValue ("printAttributes", "If true, print out attributes", printAttributes);
63  cmd.Parse (argc, argv);
64 
65  NodeContainer wifiStaNode;
66  wifiStaNode.Create (1);
68  wifiApNode.Create (1);
69 
72  phy.SetChannel (channel.Create ());
74  wifi.SetRemoteStationManager ("ns3::IdealWifiManager");
75 
76  // Configure and declare other generic components of this example
77  Ssid ssid;
78  ssid = Ssid ("wifi-phy-configuration");
79  WifiMacHelper macSta;
80  macSta.SetType ("ns3::StaWifiMac",
81  "Ssid", SsidValue (ssid),
82  "ActiveProbing", BooleanValue (false));
83  WifiMacHelper macAp;
84  macAp.SetType ("ns3::ApWifiMac",
85  "Ssid", SsidValue (ssid),
86  "BeaconInterval", TimeValue (MicroSeconds (102400)),
87  "BeaconGeneration", BooleanValue (true));
88  NetDeviceContainer staDevice;
89  NetDeviceContainer apDevice;
90  Ptr<YansWifiPhy> phySta;
91  Config::SetDefault ("ns3::ConfigStore::Filename", StringValue ("output-attributes-" + std::to_string (testCase) + ".txt"));
92  Config::SetDefault ("ns3::ConfigStore::FileFormat", StringValue ("RawText"));
93  Config::SetDefault ("ns3::ConfigStore::Mode", StringValue ("Save"));
94 
95  switch (testCase)
96  {
97  case 0:
98  // Default configuration, without WifiHelper::SetStandard or WifiHelper
99  phySta = CreateObject<YansWifiPhy> ();
100  // The default results in an invalid configuration of channel 0,
101  // width 20, and frequency 0 MHz
102  NS_ASSERT (phySta->GetChannelNumber () == 0);
103  NS_ASSERT (phySta->GetChannelWidth () == 20);
104  NS_ASSERT (phySta->GetFrequency () == 0);
105  PrintAttributesIfEnabled (printAttributes);
106  break;
107 
108  // The following cases test the setting of WifiPhyStandard alone;
109  // i.e. without further channel number/width/frequency configuration
110 
111  case 1:
112  // By default, WifiHelper will use WIFI_PHY_STANDARD_80211a
113  staDevice = wifi.Install (phy, macSta, wifiStaNode.Get(0));
114  apDevice = wifi.Install (phy, macAp, wifiApNode.Get(0));
115  phySta = GetYansWifiPhyPtr (staDevice);
116  // We expect channel 36, width 20, frequency 5180
117  NS_ASSERT (phySta->GetChannelNumber () == 36);
118  NS_ASSERT (phySta->GetChannelWidth () == 20);
119  NS_ASSERT (phySta->GetFrequency () == 5180);
120  PrintAttributesIfEnabled (printAttributes);
121  break;
122  case 2:
124  staDevice = wifi.Install (phy, macSta, wifiStaNode.Get(0));
125  apDevice = wifi.Install (phy, macAp, wifiApNode.Get(0));
126  phySta = GetYansWifiPhyPtr (staDevice);
127  // We expect channel 1, width 22, frequency 2412
128  NS_ASSERT (phySta->GetChannelNumber () == 1);
129  NS_ASSERT (phySta->GetChannelWidth () == 22);
130  NS_ASSERT (phySta->GetFrequency () == 2412);
131  PrintAttributesIfEnabled (printAttributes);
132  break;
133  case 3:
135  staDevice = wifi.Install (phy, macSta, wifiStaNode.Get(0));
136  apDevice = wifi.Install (phy, macAp, wifiApNode.Get(0));
137  phySta = GetYansWifiPhyPtr (staDevice);
138  // We expect channel 1, width 20, frequency 2412
139  NS_ASSERT (phySta->GetChannelNumber () == 1);
140  NS_ASSERT (phySta->GetChannelWidth () == 20);
141  NS_ASSERT (phySta->GetFrequency () == 2412);
142  PrintAttributesIfEnabled (printAttributes);
143  break;
144  case 4:
146  staDevice = wifi.Install (phy, macSta, wifiStaNode.Get(0));
147  apDevice = wifi.Install (phy, macAp, wifiApNode.Get(0));
148  phySta = GetYansWifiPhyPtr (staDevice);
149  // We expect channel 36, width 20, frequency 5180
150  NS_ASSERT (phySta->GetChannelNumber () == 36);
151  NS_ASSERT (phySta->GetChannelWidth () == 20);
152  NS_ASSERT (phySta->GetFrequency () == 5180);
153  PrintAttributesIfEnabled (printAttributes);
154  break;
155  case 5:
157  staDevice = wifi.Install (phy, macSta, wifiStaNode.Get(0));
158  apDevice = wifi.Install (phy, macAp, wifiApNode.Get(0));
159  phySta = GetYansWifiPhyPtr (staDevice);
160  // We expect channel 1, width 20, frequency 2412
161  NS_ASSERT (phySta->GetChannelNumber () == 1);
162  NS_ASSERT (phySta->GetChannelWidth () == 20);
163  NS_ASSERT (phySta->GetFrequency () == 2412);
164  PrintAttributesIfEnabled (printAttributes);
165  break;
166  case 6:
168  staDevice = wifi.Install (phy, macSta, wifiStaNode.Get(0));
169  apDevice = wifi.Install (phy, macAp, wifiApNode.Get(0));
170  phySta = GetYansWifiPhyPtr (staDevice);
171  // We expect channel 42, width 80, frequency 5210
172  NS_ASSERT (phySta->GetChannelNumber () == 42);
173  NS_ASSERT (phySta->GetChannelWidth () == 80);
174  NS_ASSERT (phySta->GetFrequency () == 5210);
175  PrintAttributesIfEnabled (printAttributes);
176  break;
177  case 7:
179  staDevice = wifi.Install (phy, macSta, wifiStaNode.Get(0));
180  apDevice = wifi.Install (phy, macAp, wifiApNode.Get(0));
181  phySta = GetYansWifiPhyPtr (staDevice);
182  // We expect channel 172, width 10, frequency 5860
183  NS_ASSERT (phySta->GetChannelNumber () == 172);
184  NS_ASSERT (phySta->GetChannelWidth () == 10);
185  NS_ASSERT (phySta->GetFrequency () == 5860);
186  PrintAttributesIfEnabled (printAttributes);
187  break;
188  case 8:
190  staDevice = wifi.Install (phy, macSta, wifiStaNode.Get(0));
191  apDevice = wifi.Install (phy, macAp, wifiApNode.Get(0));
192  phySta = GetYansWifiPhyPtr (staDevice);
193  // We expect channel 0, width 5, frequency 5860
194  // Channel 0 because 5MHz channels are not officially defined
195  NS_ASSERT (phySta->GetChannelNumber () == 0);
196  NS_ASSERT (phySta->GetChannelWidth () == 5);
197  NS_ASSERT (phySta->GetFrequency () == 5860);
198  PrintAttributesIfEnabled (printAttributes);
199  break;
200  case 9:
202  staDevice = wifi.Install (phy, macSta, wifiStaNode.Get(0));
203  apDevice = wifi.Install (phy, macAp, wifiApNode.Get(0));
204  phySta = GetYansWifiPhyPtr (staDevice);
205  // We expect channel 36, width 20, frequency 5180
206  NS_ASSERT (phySta->GetChannelNumber () == 36);
207  NS_ASSERT (phySta->GetChannelWidth () == 20);
208  NS_ASSERT (phySta->GetFrequency () == 5180);
209  PrintAttributesIfEnabled (printAttributes);
210  break;
211  case 10:
213  phy.Set ("ChannelNumber", UintegerValue(44));
214  staDevice = wifi.Install (phy, macSta, wifiStaNode.Get(0));
215  apDevice = wifi.Install (phy, macAp, wifiApNode.Get(0));
216  phySta = GetYansWifiPhyPtr (staDevice);
217  // We expect channel 44, width 20, frequency 5220
218  NS_ASSERT (phySta->GetChannelNumber () == 44);
219  NS_ASSERT (phySta->GetChannelWidth () == 20);
220  NS_ASSERT (phySta->GetFrequency () == 5220);
221  PrintAttributesIfEnabled (printAttributes);
222  break;
223 
224  case 11:
226  phy.Set ("ChannelNumber", UintegerValue(44));
227  staDevice = wifi.Install (phy, macSta, wifiStaNode.Get(0));
228  apDevice = wifi.Install (phy, macAp, wifiApNode.Get(0));
229  phySta = GetYansWifiPhyPtr (staDevice);
230  // Post-install reconfiguration to channel number 40
231  Config::Set ("/NodeList/0/DeviceList/*/$ns3::WifiNetDevice/Phy/$ns3::YansWifiPhy/ChannelNumber", UintegerValue(40));
232  Config::Set ("/NodeList/1/DeviceList/*/$ns3::WifiNetDevice/Phy/$ns3::YansWifiPhy/ChannelNumber", UintegerValue(40));
233  // We expect channel 40, width 20, frequency 5200
234  NS_ASSERT (phySta->GetChannelNumber () == 40);
235  NS_ASSERT (phySta->GetChannelWidth () == 20);
236  NS_ASSERT (phySta->GetFrequency () == 5200);
237  PrintAttributesIfEnabled (printAttributes);
238  break;
239 
240  case 12:
242  phy.Set ("ChannelNumber", UintegerValue (44));
243  staDevice = wifi.Install (phy, macSta, wifiStaNode.Get(0));
244  apDevice = wifi.Install (phy, macAp, wifiApNode.Get(0));
245  phySta = GetYansWifiPhyPtr (staDevice);
246  // Post-install reconfiguration to channel width 40 MHz
247  Config::Set ("/NodeList/0/DeviceList/*/$ns3::WifiNetDevice/Phy/$ns3::YansWifiPhy/ChannelWidth", UintegerValue(40));
248  Config::Set ("/NodeList/1/DeviceList/*/$ns3::WifiNetDevice/Phy/$ns3::YansWifiPhy/ChannelWidth", UintegerValue(40));
249  // Although channel 44 is configured originally for 20 MHz, we
250  // allow it to be used for 40 MHz here
251  NS_ASSERT (phySta->GetChannelNumber () == 44);
252  NS_ASSERT (phySta->GetChannelWidth () == 40);
253  NS_ASSERT (phySta->GetFrequency () == 5220);
254  PrintAttributesIfEnabled (printAttributes);
255  break;
256 
257  case 13:
258  Config::SetDefault ("ns3::WifiPhy::ChannelNumber", UintegerValue (44));
260  staDevice = wifi.Install (phy, macSta, wifiStaNode.Get(0));
261  apDevice = wifi.Install (phy, macAp, wifiApNode.Get(0));
262  phySta = GetYansWifiPhyPtr (staDevice);
263  // Post-install reconfiguration to channel width 40 MHz
264  Config::Set ("/NodeList/0/DeviceList/*/$ns3::WifiNetDevice/Phy/$ns3::YansWifiPhy/ChannelWidth", UintegerValue(40));
265  Config::Set ("/NodeList/1/DeviceList/*/$ns3::WifiNetDevice/Phy/$ns3::YansWifiPhy/ChannelWidth", UintegerValue(40));
266  // Although channel 44 is configured originally for 20 MHz, we
267  // allow it to be used for 40 MHz here
268  NS_ASSERT (phySta->GetChannelNumber () == 44);
269  NS_ASSERT (phySta->GetChannelWidth () == 40);
270  NS_ASSERT (phySta->GetFrequency () == 5220);
271  PrintAttributesIfEnabled (printAttributes);
272  break;
273 
274  case 14:
275  // Test that setting Frequency to a non-standard value will zero the
276  // channel number
277  Config::SetDefault ("ns3::WifiPhy::Frequency", UintegerValue (5281));
279  staDevice = wifi.Install (phy, macSta, wifiStaNode.Get(0));
280  apDevice = wifi.Install (phy, macAp, wifiApNode.Get(0));
281  phySta = GetYansWifiPhyPtr (staDevice);
282  // We expect channel number to be zero since frequency doesn't match
283  NS_ASSERT (phySta->GetChannelNumber () == 0);
284  NS_ASSERT (phySta->GetChannelWidth () == 20);
285  NS_ASSERT (phySta->GetFrequency () == 5281);
286  PrintAttributesIfEnabled (printAttributes);
287  break;
288 
289  case 15:
290  // Test that setting Frequency to a standard value will set the
291  // channel number correctly
292  Config::SetDefault ("ns3::WifiPhy::Frequency", UintegerValue (5500));
294  staDevice = wifi.Install (phy, macSta, wifiStaNode.Get (0));
295  apDevice = wifi.Install (phy, macAp, wifiApNode.Get (0));
296  phySta = GetYansWifiPhyPtr (staDevice);
297  // We expect channel number to be 100 due to frequency 5500
298  NS_ASSERT (phySta->GetChannelNumber () == 100);
299  NS_ASSERT (phySta->GetChannelWidth () == 20);
300  NS_ASSERT (phySta->GetFrequency () == 5500);
301  PrintAttributesIfEnabled (printAttributes);
302  break;
303 
304  case 16:
305  // Define a new channel number
307  staDevice = wifi.Install (phy, macSta, wifiStaNode.Get (0));
308  apDevice = wifi.Install (phy, macAp, wifiApNode.Get (0));
309  phySta = GetYansWifiPhyPtr (staDevice);
310  // This case will error exit due to invalid channel number unless
311  // we provide the DefineChannelNumber() below
312  phySta->DefineChannelNumber (99, WIFI_PHY_STANDARD_80211n_5GHZ, 5185, 40);
313  phySta->SetAttribute ("ChannelNumber", UintegerValue (99));
314  PrintAttributesIfEnabled (printAttributes);
315  break;
316 
317  case 17:
318  // Test how channel number behaves when frequency is non-standard
320  staDevice = wifi.Install (phy, macSta, wifiStaNode.Get(0));
321  apDevice = wifi.Install (phy, macAp, wifiApNode.Get(0));
322  phySta = GetYansWifiPhyPtr (staDevice);
323  phySta->SetAttribute ("Frequency", UintegerValue (5181));
324  // We expect channel number to be 0 due to unknown center frequency 5181
325  NS_ASSERT (phySta->GetChannelNumber () == 0);
326  NS_ASSERT (phySta->GetChannelWidth () == 20);
327  NS_ASSERT (phySta->GetFrequency () == 5181);
328  phySta->SetAttribute ("Frequency", UintegerValue (5180));
329  // We expect channel number to be 36 due to known center frequency 5180
330  NS_ASSERT (phySta->GetChannelNumber () == 36);
331  NS_ASSERT (phySta->GetChannelWidth () == 20);
332  NS_ASSERT (phySta->GetFrequency () == 5180);
333  phySta->SetAttribute ("Frequency", UintegerValue (5179));
334  // We expect channel number to be 0 due to unknown center frequency 5179
335  NS_ASSERT (phySta->GetChannelNumber () == 0);
336  NS_ASSERT (phySta->GetChannelWidth () == 20);
337  NS_ASSERT (phySta->GetFrequency () == 5179);
338  phySta->SetAttribute ("ChannelNumber", UintegerValue (36));
339  NS_ASSERT (phySta->GetChannelNumber () == 36);
340  NS_ASSERT (phySta->GetChannelWidth () == 20);
341  NS_ASSERT (phySta->GetFrequency () == 5180);
342  PrintAttributesIfEnabled (printAttributes);
343  break;
344 
345  case 18:
346  // Set both channel and frequency to consistent values
348  staDevice = wifi.Install (phy, macSta, wifiStaNode.Get(0));
349  apDevice = wifi.Install (phy, macAp, wifiApNode.Get(0));
350  phySta = GetYansWifiPhyPtr (staDevice);
351  phySta->SetAttribute ("Frequency", UintegerValue (5200));
352  phySta->SetAttribute ("ChannelNumber", UintegerValue (40));
353  NS_ASSERT (phySta->GetChannelNumber () == 40);
354  NS_ASSERT (phySta->GetChannelWidth () == 20);
355  NS_ASSERT (phySta->GetFrequency () == 5200);
356  // Set both channel and frequency to inconsistent values
357  phySta->SetAttribute ("Frequency", UintegerValue (5200));
358  phySta->SetAttribute ("ChannelNumber", UintegerValue (36));
359  // We expect channel number to be 36
360  NS_ASSERT (phySta->GetChannelNumber () == 36);
361  NS_ASSERT (phySta->GetChannelWidth () == 20);
362  NS_ASSERT (phySta->GetFrequency () == 5180);
363  phySta->SetAttribute ("ChannelNumber", UintegerValue (36));
364  phySta->SetAttribute ("Frequency", UintegerValue (5200));
365  // We expect channel number to be 40
366  NS_ASSERT (phySta->GetChannelNumber () == 40);
367  NS_ASSERT (phySta->GetChannelWidth () == 20);
368  NS_ASSERT (phySta->GetFrequency () == 5200);
369  phySta->SetAttribute ("Frequency", UintegerValue (5179));
370  phySta->SetAttribute ("ChannelNumber", UintegerValue (36));
371  // We expect channel number to be 36
372  NS_ASSERT (phySta->GetChannelNumber () == 36);
373  NS_ASSERT (phySta->GetChannelWidth () == 20);
374  NS_ASSERT (phySta->GetFrequency () == 5180);
375  phySta->SetAttribute ("ChannelNumber", UintegerValue (36));
376  phySta->SetAttribute ("Frequency", UintegerValue (5179));
377  // We expect channel number to be 0
378  NS_ASSERT (phySta->GetChannelNumber () == 0);
379  NS_ASSERT (phySta->GetChannelWidth () == 20);
380  NS_ASSERT (phySta->GetFrequency () == 5179);
381  PrintAttributesIfEnabled (printAttributes);
382  break;
383 
384  default:
385  std::cerr << "Invalid testcase number " << testCase << std::endl;
386  exit (1);
387  break;
388  }
389 
390  // No need to Simulator::Run (); this is a configuration example
392 }
ERP-OFDM PHY (Clause 19, Section 19.5)
tuple channel
Definition: third.py:85
void Set(std::string name, const AttributeValue &v)
Definition: wifi-helper.cc:112
Introspection did not find any typical Config paths.
Definition: config-store.h:54
OFDM PHY for the 5 GHz band (Clause 17 with 5 MHz channel bandwidth)
AttributeValue implementation for Boolean.
Definition: boolean.h:34
HT OFDM PHY for the 5 GHz band (clause 20)
Ptr< YansWifiChannel > Create(void) const
void SetRemoteStationManager(std::string type, 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())
Definition: wifi-helper.cc:683
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
Definition: object.h:462
Hold variables of type string.
Definition: string.h:41
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr stored in this container at a given index.
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.
void Set(std::string path, const AttributeValue &value)
Definition: config.cc:769
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
Definition: assert.h:67
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition: log.h:201
OFDM PHY for the 5 GHz band (Clause 17 with 10 MHz channel bandwidth)
void PrintAttributesIfEnabled(bool enabled)
HT OFDM PHY for the 2.4 GHz band (clause 20)
static YansWifiPhyHelper Default(void)
Create a phy helper in a default working state.
helps to create WifiNetDevice objects
Definition: wifi-helper.h:231
tuple cmd
Definition: second.py:35
virtual NetDeviceContainer Install(const WifiPhyHelper &phy, const WifiMacHelper &mac, NodeContainer c) const
Definition: wifi-helper.cc:712
void SetChannel(Ptr< YansWifiChannel > channel)
Ptr< WifiPhy > GetPhy(void) const
virtual uint16_t GetChannelNumber(void) const
Return current channel number.
Definition: wifi-phy.cc:1329
tuple phy
Definition: third.py:86
AttributeValue implementation for Time.
Definition: nstime.h:957
bool DefineChannelNumber(uint16_t channelNumber, enum WifiPhyStandard standard, uint32_t frequency, uint32_t channelWidth)
Add a channel definition to the WifiPhy.
Definition: wifi-phy.cc:930
Hold an unsigned integer type.
Definition: uinteger.h:44
holds a vector of ns3::NetDevice pointers
virtual void SetStandard(enum WifiPhyStandard standard)
Definition: wifi-helper.cc:706
Hold together all Wifi-related objects.
virtual uint32_t GetFrequency(void) const
Definition: wifi-phy.cc:1143
Parse command-line arguments.
Definition: command-line.h:205
static void Destroy(void)
Execute the events scheduled with ScheduleDestroy().
Definition: simulator.cc:165
This is intended to be the configuration used in this paper: Gavin Holland, Nitin Vaidya and Paramvir...
tuple wifiApNode
Definition: third.py:83
virtual uint32_t GetChannelWidth(void) const
Definition: wifi-phy.cc:1157
Every class exported by the ns3 library is enclosed in the ns3 namespace.
keep track of a set of node pointers.
VHT OFDM PHY (clause 22)
802.11 PHY layer modelThis PHY implements a model of 802.11a.
Definition: yans-wifi-phy.h:47
DSSS PHY (Clause 15) and HR/DSSS PHY (Clause 18)
Ptr< YansWifiPhy > GetYansWifiPhyPtr(const NetDeviceContainer &nc)
tuple ssid
Definition: third.py:93
manage and create wifi channel objects for the yans model.
create MAC layers for a ns3::WifiNetDevice.
The IEEE 802.11 SSID Information Element.
Definition: ssid.h:38
virtual void SetType(std::string type, 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::string n8="", const AttributeValue &v8=EmptyAttributeValue(), std::string n9="", const AttributeValue &v9=EmptyAttributeValue(), std::string n10="", const AttributeValue &v10=EmptyAttributeValue())
void ConfigureAttributes(void)
void AddValue(const std::string &name, const std::string &help, T &value)
Add a program argument, assigning to POD.
Definition: command-line.h:495
Ptr< Node > Get(uint32_t i) const
Get the Ptr stored in this container at a given index.
AttributeValue implementation for Ssid.
Definition: ssid.h:95
void SetDefault(std::string name, const AttributeValue &value)
Definition: config.cc:774
void Parse(int argc, char *argv[])
Parse the program arguments.
Time MicroSeconds(uint64_t value)
Construct a Time in the indicated unit.
Definition: nstime.h:911
tuple wifi
Definition: third.py:89
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful.
Definition: object-base.cc:191