examples/mixed-wireless.cc
author Tom Henderson <tomh@tomh.org>
Sat, 17 May 2008 12:08:20 -0700
changeset 3125 d2d8a36cfd23
parent 3015 94d9153aee09
child 3137 fbd18f80a77a
permissions -rw-r--r--
s/ns3::Udp/ns3::UdpSocketFactory
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     2
/*
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     3
 * This program is free software; you can redistribute it and/or modify
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     4
 * it under the terms of the GNU General Public License version 2 as
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     5
 * published by the Free Software Foundation;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     6
 *
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     7
 * This program is distributed in the hope that it will be useful,
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     8
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
     9
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    10
 * GNU General Public License for more details.
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    11
 *
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    12
 * You should have received a copy of the GNU General Public License
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    13
 * along with this program; if not, write to the Free Software
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    14
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    15
 *
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    16
 */
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    17
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    18
//
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    19
// This ns-3 example demonstrates the use of helper functions to ease 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    20
// the construction of simulation scenarios.  
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    21
// 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    22
// The simulation topology consists of a mixed wired and wireless
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    23
// scenario in which a hierarchical mobility model is used.
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    24
//
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    25
// The simulation layout consists of N backbone routers interconnected
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    26
// by an ad hoc wifi network.
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    27
// Each backbone router also has a local 802.11 network and is connected
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    28
// to a local LAN.  An additional set of (K-1) nodes are connected to
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    29
// this backbone.  Finally, a local LAN is connected to each router
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    30
// on the backbone, with L-1 additional hosts.  
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    31
//
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    32
// The nodes are populated with TCP/IP stacks, and OLSR unicast routing
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    33
// on the backbone.  An example UDP transfer is shown.  The simulator
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    34
// be configured to output tcpdumps or traces from different nodes.
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    35
//
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    36
//
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    37
//          +--------------------------------------------------------+
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    38
//          |                                                        |
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    39
//          |              802.11 ad hoc, ns-2 mobility              | 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    40
//          |                                                        |
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    41
//          +--------------------------------------------------------+
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    42
//                   |       o o o (N backbone routers)       |
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    43
//               +--------+                               +--------+
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    44
//     wired LAN | mobile |                     wired LAN | mobile |
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    45
//    -----------| router |                    -----------| router |
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    46
//               ---------                                ---------
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    47
//                   |                                        |
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    48
//          +----------------+                       +----------------+
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    49
//          |     802.11     |                       |     802.11     |
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    50
//          |      net       |                       |       net      |
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    51
//          |   K-1 hosts    |                       |   K-1 hosts    |
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    52
//          +----------------+                       +----------------+
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    53
//
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    54
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    55
#include <fstream>
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    56
#include "ns3/core-module.h"
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    57
#include "ns3/common-module.h"
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    58
#include "ns3/node-module.h"
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    59
#include "ns3/helper-module.h"
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    60
#include "ns3/mobility-module.h"
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    61
#include "ns3/contrib-module.h"
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    62
#include "ns3/wifi-module.h"
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    63
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    64
using namespace ns3;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    65
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    66
//
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    67
// Define logging keyword for this file
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    68
//
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    69
NS_LOG_COMPONENT_DEFINE ("MixedWireless");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    70
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    71
//
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    72
// This function will be used below as a trace sink
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    73
// 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    74
#ifdef ENABLE_FOR_TRACING_EXAMPLE
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    75
static void
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    76
CourseChangeCallback (std::string path, Ptr<const MobilityModel> model)
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    77
{
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    78
  Vector position = model->GetPosition ();
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    79
  std::cout << "CourseChange " << path << " x=" << position.x << ", y=" << position.y << ", z=" << position.z << std::endl;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    80
}
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    81
#endif
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    82
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    83
int 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    84
main (int argc, char *argv[])
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    85
{
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    86
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    87
  // First, we declare and initialize a few local variables that control some 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    88
  // simulation parameters.
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    89
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    90
  uint32_t backboneNodes = 10;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    91
  uint32_t infraNodes = 5;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    92
  uint32_t lanNodes = 5;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    93
  uint32_t stopTime = 10;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    94
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    95
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    96
  // Simulation defaults are typically set next, before command line
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    97
  // arguments are parsed.
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
    98
  //
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2896
diff changeset
    99
  Config::SetDefault ("ns3::OnOffApplication::PacketSize", StringValue ("210"));
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2896
diff changeset
   100
  Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("448kb/s"));
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   101
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   102
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   103
  // For convenience, we add the local variables to the command line argument
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   104
  // system so that they can be overridden with flags such as 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   105
  // "--backboneNodes=20"
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   106
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   107
  CommandLine cmd;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   108
  cmd.AddValue("backboneNodes", "number of backbone nodes", backboneNodes);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   109
  cmd.AddValue ("infraNodes", "number of leaf nodes", infraNodes);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   110
  cmd.AddValue("lanNodes", "number of LAN nodes", lanNodes);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   111
  cmd.AddValue("stopTime", "simulation stop time (seconds)", stopTime);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   112
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   113
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   114
  // The system global variables and the local values added to the argument
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   115
  // system can be overridden by command line arguments by using this call.
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   116
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   117
  cmd.Parse (argc, argv);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   118
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   119
  // The metadata system (off by default) is used by ascii tracing below
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   120
  Packet::EnableMetadata ();
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   121
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   122
  /////////////////////////////////////////////////////////////////////////// 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   123
  //                                                                       //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   124
  // Construct the backbone                                                //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   125
  //                                                                       //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   126
  /////////////////////////////////////////////////////////////////////////// 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   127
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   128
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   129
  // Create a container to manage the nodes of the adhoc (backbone) network.
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   130
  // Later we'll create the rest of the nodes we'll need.
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   131
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   132
  NodeContainer backbone;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   133
  backbone.Create (backboneNodes);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   134
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   135
  // Create the backbone wifi net devices and install them into the nodes in 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   136
  // our container
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   137
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   138
  WifiHelper wifi;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   139
  wifi.SetMac ("ns3::AdhocWifiMac");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   140
  wifi.SetPhy ("ns3::WifiPhy");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   141
  NetDeviceContainer backboneDevices = wifi.Install (backbone);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   142
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   143
  // Add the IPv4 protocol stack to the nodes in our container
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   144
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   145
  InternetStackHelper internet;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   146
  internet.Install (backbone);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   147
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   148
  // Assign IPv4 addresses to the device drivers (actually to the associated
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   149
  // IPv4 interfaces) we just created.
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   150
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   151
  Ipv4AddressHelper ipAddrs;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   152
  ipAddrs.SetBase ("192.168.0.0", "255.255.255.0");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   153
  ipAddrs.Assign (backboneDevices);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   154
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   155
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   156
  // The ad-hoc network nodes need a mobility model so we aggregate one to 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   157
  // each of the nodes we just finished building.  
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   158
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   159
  MobilityHelper mobility;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   160
  Ptr<ListPositionAllocator> positionAlloc = 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   161
    CreateObject<ListPositionAllocator> ();
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   162
  positionAlloc->Add (Vector (0.0, 0.0, 0.0));
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   163
  positionAlloc->Add (Vector (5.0, 0.0, 0.0));
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   164
  mobility.SetPositionAllocator (positionAlloc);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   165
  mobility.SetMobilityModel ("ns3::RandomDirection2dMobilityModel",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2896
diff changeset
   166
                             "Bounds", RectangleValue (Rectangle (0, 1000, 0, 1000)),
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2896
diff changeset
   167
                             "Speed", RandomVariableValue (ConstantVariable (2000)),
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2896
diff changeset
   168
                             "Pause", RandomVariableValue (ConstantVariable (0.2)));
2998
b991704f870f Fix two nits that escaped checkin
Tom Henderson <tomh@tomh.org>
parents: 2997
diff changeset
   169
  mobility.Install (backbone);
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   170
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   171
  /////////////////////////////////////////////////////////////////////////// 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   172
  //                                                                       //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   173
  // Construct the LANs                                                    //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   174
  //                                                                       //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   175
  /////////////////////////////////////////////////////////////////////////// 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   176
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   177
  // Reset the address base-- all of the CSMA networks will be in
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   178
  // the "172.16 address space
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   179
  ipAddrs.SetBase ("172.16.0.0", "255.255.255.0");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   180
2995
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   181
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   182
  for (uint32_t i = 0; i < backboneNodes; ++i)
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   183
    {
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   184
      NS_LOG_INFO ("Configuring local area network for backbone node " << i);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   185
      //
2995
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   186
      // Create a container to manage the nodes of the LAN.  We need
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   187
      // two containers here; one with all of the new nodes, and one
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   188
      // with all of the nodes including new and existing nodes
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   189
      //
2995
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   190
      NodeContainer newLanNodes;
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   191
      newLanNodes.Create (lanNodes - 1);
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   192
      // Now, create the container with all nodes on this link
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   193
      NodeContainer lan (backbone.Get (i), newLanNodes);
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   194
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   195
      // Create the CSMA net devices and install them into the nodes in our 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   196
      // collection.
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   197
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   198
      CsmaHelper csma;
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2896
diff changeset
   199
      csma.SetChannelParameter ("BitRate", DataRateValue (DataRate (5000000)));
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2896
diff changeset
   200
      csma.SetChannelParameter ("Delay", TimeValue (MilliSeconds (2)));
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   201
      NetDeviceContainer lanDevices = csma.Install (lan);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   202
      //
2995
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   203
      // Add the IPv4 protocol stack to the new LAN nodes
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   204
      //
2995
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   205
      internet.Install (newLanNodes);
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   206
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   207
      // Assign IPv4 addresses to the device drivers (actually to the 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   208
      // associated IPv4 interfaces) we just created.
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   209
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   210
      ipAddrs.Assign (lanDevices);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   211
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   212
      // Assign a new network prefix for the next LAN, according to the
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   213
      // network mask initialized above
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   214
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   215
      ipAddrs.NewNetwork ();
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   216
    }
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   217
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   218
  /////////////////////////////////////////////////////////////////////////// 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   219
  //                                                                       //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   220
  // Construct the mobile networks                                         //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   221
  //                                                                       //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   222
  /////////////////////////////////////////////////////////////////////////// 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   223
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   224
  // Reset the address base-- all of the 802.11 networks will be in
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   225
  // the "10.0" address space
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   226
  ipAddrs.SetBase ("10.0.0.0", "255.255.255.0");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   227
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   228
  for (uint32_t i = 0; i < backboneNodes; ++i)
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   229
    {
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   230
      NS_LOG_INFO ("Configuring wireless network for backbone node " << i);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   231
      //
2995
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   232
      // Create a container to manage the nodes of the LAN.  We need
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   233
      // two containers here; one with all of the new nodes, and one
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   234
      // with all of the nodes including new and existing nodes
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   235
      //
2995
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   236
      NodeContainer newInfraNodes;
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   237
      newInfraNodes.Create (infraNodes - 1);
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   238
      // Now, create the container with all nodes on this link
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   239
      NodeContainer infra (backbone.Get (i), newInfraNodes);
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   240
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   241
      // Create another ad hoc network and devices
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   242
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   243
      WifiHelper wifiInfra;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   244
      wifiInfra.SetMac ("ns3::AdhocWifiMac");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   245
      wifiInfra.SetPhy ("ns3::WifiPhy");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   246
      NetDeviceContainer infraDevices = wifiInfra.Install (infra);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   247
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   248
      // Add the IPv4 protocol stack to the nodes in our container
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   249
      //
2995
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   250
      internet.Install (newInfraNodes);
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   251
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   252
      // Assign IPv4 addresses to the device drivers (actually to the associated
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   253
      // IPv4 interfaces) we just created.
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   254
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   255
      ipAddrs.Assign (infraDevices);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   256
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   257
      // Assign a new network prefix for each mobile network, according to 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   258
      // the network mask initialized above
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   259
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   260
      ipAddrs.NewNetwork ();
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   261
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   262
      // The new wireless nodes need a mobility model so we aggregate one 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   263
      // to each of the nodes we just finished building.
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   264
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   265
      Ptr<ListPositionAllocator> subnetAlloc = 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   266
        CreateObject<ListPositionAllocator> ();
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   267
      for (uint32_t j = 0; j < infra.GetN (); ++j)
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   268
        {
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   269
          subnetAlloc->Add (Vector (0.0, j, 0.0));
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   270
        }
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   271
      mobility.EnableNotifier ();
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   272
      mobility.PushReferenceMobilityModel (backbone.Get (i));
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   273
      mobility.SetPositionAllocator (subnetAlloc);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   274
      mobility.SetMobilityModel ("ns3::RandomDirection2dMobilityModel",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2896
diff changeset
   275
                                 "Bounds", RectangleValue (Rectangle (-25, 25, -25, 25)),
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2896
diff changeset
   276
                                 "Speed", RandomVariableValue (ConstantVariable (30)),
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2896
diff changeset
   277
                                 "Pause", RandomVariableValue (ConstantVariable (0.4)));
2998
b991704f870f Fix two nits that escaped checkin
Tom Henderson <tomh@tomh.org>
parents: 2997
diff changeset
   278
      mobility.Install (infra);
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   279
    }
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   280
  /////////////////////////////////////////////////////////////////////////// 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   281
  //                                                                       //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   282
  // Routing configuration                                                 //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   283
  //                                                                       //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   284
  /////////////////////////////////////////////////////////////////////////// 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   285
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   286
  NS_LOG_INFO ("Enabling OLSR routing on all backbone nodes");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   287
  OlsrHelper olsr;
2995
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   288
  olsr.Install (backbone);
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   289
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   290
  /////////////////////////////////////////////////////////////////////////// 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   291
  //                                                                       //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   292
  // Application configuration                                             //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   293
  //                                                                       //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   294
  /////////////////////////////////////////////////////////////////////////// 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   295
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   296
  // Create the OnOff application to send UDP datagrams of size
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   297
  // 210 bytes at a rate of 448 Kb/s, between two nodes
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   298
  NS_LOG_INFO ("Create Applications.");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   299
  uint16_t port = 9;   // Discard port (RFC 863)
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   300
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   301
  // Let's make sure that the user does not define too few LAN nodes
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   302
  // to make this example work.  We need lanNodes >= 5
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   303
  NS_ASSERT (lanNodes >= 5);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   304
  Ptr<Node> appSource = NodeList::GetNode (11);  
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   305
  Ptr<Node> appSink = NodeList::GetNode (13);  
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   306
  Ipv4Address remoteAddr = Ipv4Address ("172.16.0.5");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   307
3125
d2d8a36cfd23 s/ns3::Udp/ns3::UdpSocketFactory
Tom Henderson <tomh@tomh.org>
parents: 3015
diff changeset
   308
  OnOffHelper onoff ("ns3::UdpSocketFactory", 
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   309
                     Address (InetSocketAddress (remoteAddr, port)));
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2896
diff changeset
   310
  onoff.SetAttribute ("OnTime", RandomVariableValue (ConstantVariable (1)));
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2896
diff changeset
   311
  onoff.SetAttribute ("OffTime", RandomVariableValue (ConstantVariable (0)));
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   312
  ApplicationContainer apps = onoff.Install (appSource);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   313
  apps.Start (Seconds (3.0));
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   314
  apps.Stop (Seconds (20.0));
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   315
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   316
  // Create a packet sink to receive these packets
3125
d2d8a36cfd23 s/ns3::Udp/ns3::UdpSocketFactory
Tom Henderson <tomh@tomh.org>
parents: 3015
diff changeset
   317
  PacketSinkHelper sink ("ns3::UdpSocketFactory", 
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   318
                         InetSocketAddress (Ipv4Address::GetAny (), port));
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   319
  apps = sink.Install (appSink);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   320
  apps.Start (Seconds (3.0));
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   321
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   322
  /////////////////////////////////////////////////////////////////////////// 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   323
  //                                                                       //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   324
  // Tracing configuration                                                 //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   325
  //                                                                       //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   326
  /////////////////////////////////////////////////////////////////////////// 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   327
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   328
  NS_LOG_INFO ("Configure Tracing.");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   329
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   330
  // Let's set up some ns-2-like ascii traces, using another helper class
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   331
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   332
  // Look at nodes 11, 13 only
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   333
  // XXX todo
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   334
  // asciiTrace.TraceQueues ("/NodeList/11|13/DeviceList/0");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   335
  // asciiTrace.TraceNetDeviceRx ("/NodeList/11|13/DeviceList/0");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   336
  std::ofstream ascii;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   337
  ascii.open ("mixed-wireless.tr");
2996
a83b94e277d4 EnablePcap()->EnablePcapAll(); EnableAscii()->EnableAsciiAll()
Tom Henderson <tomh@tomh.org>
parents: 2995
diff changeset
   338
  WifiHelper::EnableAsciiAll (ascii);
a83b94e277d4 EnablePcap()->EnablePcapAll(); EnableAscii()->EnableAsciiAll()
Tom Henderson <tomh@tomh.org>
parents: 2995
diff changeset
   339
  CsmaHelper::EnableAsciiAll (ascii);
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   340
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   341
  // Let's do a pcap trace on the backbone devices
3015
94d9153aee09 update pcap trace setup filename
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2998
diff changeset
   342
  WifiHelper::EnablePcap ("mixed-wireless", backboneDevices); 
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   343
  // Let's additionally trace the application Sink, ifIndex 0
3015
94d9153aee09 update pcap trace setup filename
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2998
diff changeset
   344
  CsmaHelper::EnablePcap ("mixed-wireless", appSink->GetId (), 0);
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   345
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   346
#ifdef ENABLE_FOR_TRACING_EXAMPLE
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   347
  Config::Connect ("/NodeList/*/$MobilityModelNotifier/CourseChange",
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   348
    MakeCallback (&CourseChangeCallback));
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   349
#endif
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   350
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   351
  /////////////////////////////////////////////////////////////////////////// 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   352
  //                                                                       //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   353
  // Run simulation                                                        //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   354
  //                                                                       //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   355
  /////////////////////////////////////////////////////////////////////////// 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   356
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   357
  NS_LOG_INFO ("Run Simulation.");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   358
  Simulator::StopAt (Seconds (stopTime));
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   359
  Simulator::Run ();    
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   360
  Simulator::Destroy ();
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   361
}