Added comments in mesh.cc
authorKirill Andreev <andreev@iitp.ru>
Thu, 10 Sep 2009 14:13:48 +0400
changeset 5181 22f73ce46375
parent 5180 689a0ed6de25
child 5182 7f7925e2cd7e
Added comments in mesh.cc
examples/mesh.cc
--- a/examples/mesh.cc	Tue Sep 08 11:41:44 2009 +0400
+++ b/examples/mesh.cc	Thu Sep 10 14:13:48 2009 +0400
@@ -16,6 +16,31 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  * Author: Kirill Andreev <andreev@iitp.ru>
+ *
+ *
+ * By default this script creates m_xSize * m_ySize square grid topology with
+ * IEEE802.11s stack installed at each node with peering management
+ * and HWMP protocol.
+ * The side of the square cell is defined by m_step parameter.
+ * When topology is created, UDP ping is installed to opposite corners
+ * by diagonals. packet size of the UDP ping and interval between two
+ * successive packets is configurable.
+ * 
+ *  m_xSize * step
+ *  |<--------->|
+ *   step
+ *  |<--->|
+ *  * --- * --- * <---Ping sink  _
+ *  | \   |   / |                ^
+ *  |   \ | /   |                |
+ *  * --- * --- * m_ySize * step |
+ *  |   / | \   |                |
+ *  | /   |   \ |                |
+ *  * --- * --- *                _
+ *  ^ Ping source
+ *
+ *  See also MeshTest::Configure to read more about configurable
+ *  parameters.
  */
 
 
@@ -97,16 +122,20 @@
   CommandLine cmd;
   cmd.AddValue ("x-size", "Number of nodes in a row grid. [6]", m_xSize);
   cmd.AddValue ("y-size", "Number of rows in a grid. [6]", m_ySize);
-  cmd.AddValue ("m_step",   "Size of edge in our grid, meters. [100 m]", m_step);
+  cmd.AddValue ("step",   "Size of edge in our grid, meters. [100 m]", m_step);
+  /*
+   * As soon as starting node means that it sends a beacon,
+   * simultaneous start is not good.
+   */
   cmd.AddValue ("start",  "Maximum random start delay, seconds. [0.1 s]", m_randomStart);
   cmd.AddValue ("time",  "Simulation time, seconds [100 s]", m_totalTime);
-  cmd.AddValue ("packet-interval",  "Interval between packets, seconds [0.001 s]", m_packetInterval);
-  cmd.AddValue ("packet-size",  "Size of packets", m_packetSize);
+  cmd.AddValue ("packet-interval",  "Interval between packets in UDP ping, seconds [0.001 s]", m_packetInterval);
+  cmd.AddValue ("packet-size",  "Size of packets in UDP ping", m_packetSize);
   cmd.AddValue ("interfaces", "Number of radio interfaces used by each mesh point. [1]", m_nIfaces);
-  cmd.AddValue ("m_channels",   "Use different frequency m_channels for different interfaces. [0]", m_chan);
-  cmd.AddValue ("m_pcap",   "Enable PCAP traces on interfaces. [0]", m_pcap);
-  cmd.AddValue ("m_stack",  "Type of protocol m_stack. ns3::Dot11sStack by default", m_stack);
-  cmd.AddValue ("m_root", "Mac address of m_root mesh point", m_root);
+  cmd.AddValue ("channels",   "Use different frequency channels for different interfaces. [0]", m_chan);
+  cmd.AddValue ("pcap",   "Enable PCAP traces on interfaces. [0]", m_pcap);
+  cmd.AddValue ("stack",  "Type of protocol stack. ns3::Dot11sStack by default", m_stack);
+  cmd.AddValue ("root", "Mac address of root mesh point in HWMP", m_root);
   
   cmd.Parse (argc, argv);
   NS_LOG_DEBUG ("Grid:" << m_xSize << "*" << m_ySize);
@@ -115,13 +144,20 @@
 void
 MeshTest::CreateNodes ()
 { 
+  /*
+   * Create m_ySize*m_xSize stations to form a grid topology
+   */
   nodes.Create (m_ySize*m_xSize);
-  // Setting m_channel
+  // Configure YansWifiChannel
   YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
   YansWifiChannelHelper wifiChannel = YansWifiChannelHelper::Default ();
   wifiPhy.SetChannel (wifiChannel.Create ());
+  /*
+   * Create mesh helper and set stack installer to it
+   * Stack installer creates all needed protocols and install them to
+   * mesh point device
+   */
   mesh = MeshHelper::Default ();
-  // Install mesh point devices & protocols
   mesh.SetStackInstaller (m_stack, "Root", Mac48AddressValue (Mac48Address (m_root.c_str ())));
   if (m_chan)
     {
@@ -131,11 +167,12 @@
     {
       mesh.SetSpreadInterfaceChannels (MeshHelper::ZERO_CHANNEL);
     }
-  //MeshInterfaceHelper interface = MeshInterfaceHelper::Default ();
   mesh.SetMacType ("RandomStart", TimeValue (Seconds(m_randomStart)));
+  // Set number of interfaces - default is single-interface mesh point
   mesh.SetNumberOfInterfaces (m_nIfaces);
+  // Install protocols and return container if MeshPointDevices
   meshDevices = mesh.Install (wifiPhy, nodes);
-  // Setup mobility
+  // Setup mobility - static grid topology
   MobilityHelper mobility;
   mobility.SetPositionAllocator ("ns3::GridPositionAllocator",
                                  "MinX", DoubleValue (0.0),
@@ -152,8 +189,8 @@
 void
 MeshTest::InstallInternetStack ()
 {
-  InternetStackHelper m_stack;
-  m_stack.Install (nodes);
+  InternetStackHelper internetStack;
+  internetStack.Install (nodes);
   Ipv4AddressHelper address;
   address.SetBase ("10.1.1.0", "255.255.255.0");
   interfaces = address.Assign (meshDevices);