examples/mixed-wireless.cc
author Florian Westphal <fw@strlen.de>
Wed, 03 Sep 2008 23:24:59 +0200
changeset 3595 693faf7f4e9b
parent 3536 087b1b45b3b5
child 3906 01acc159ffb1
permissions -rw-r--r--
nsc: Fix build problem if gtk config store is disabled gtk config store pulled in libdl.so for us, so things fail to link of the config store isn't enabled. This makes nsc pull in libdl itself when its enabled.
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
  /////////////////////////////////////////////////////////////////////////// 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   120
  //                                                                       //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   121
  // Construct the backbone                                                //
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
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
  // 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
   127
  // 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
   128
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   129
  NodeContainer backbone;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   130
  backbone.Create (backboneNodes);
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
  // 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
   133
  // our container
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
  WifiHelper wifi;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   136
  wifi.SetMac ("ns3::AdhocWifiMac");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   137
  wifi.SetPhy ("ns3::WifiPhy");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   138
  NetDeviceContainer backboneDevices = wifi.Install (backbone);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   139
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   140
  // 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
   141
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   142
  InternetStackHelper internet;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   143
  internet.Install (backbone);
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
  // 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
   146
  // IPv4 interfaces) we just created.
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
  Ipv4AddressHelper ipAddrs;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   149
  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
   150
  ipAddrs.Assign (backboneDevices);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   151
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   152
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   153
  // 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
   154
  // each of the nodes we just finished building.  
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
  MobilityHelper mobility;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   157
  Ptr<ListPositionAllocator> positionAlloc = 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   158
    CreateObject<ListPositionAllocator> ();
3079
68f79ef69388 ensure that the list of positions is long enough
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3015
diff changeset
   159
  double x = 0.0;
68f79ef69388 ensure that the list of positions is long enough
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3015
diff changeset
   160
  for (uint32_t i = 0; i < backboneNodes; ++i)
68f79ef69388 ensure that the list of positions is long enough
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3015
diff changeset
   161
    {
68f79ef69388 ensure that the list of positions is long enough
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3015
diff changeset
   162
      positionAlloc->Add (Vector (x, 0.0, 0.0));
68f79ef69388 ensure that the list of positions is long enough
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3015
diff changeset
   163
      x += 5.0;
68f79ef69388 ensure that the list of positions is long enough
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3015
diff changeset
   164
    }
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   165
  mobility.SetPositionAllocator (positionAlloc);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   166
  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
   167
                             "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
   168
                             "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
   169
                             "Pause", RandomVariableValue (ConstantVariable (0.2)));
2998
b991704f870f Fix two nits that escaped checkin
Tom Henderson <tomh@tomh.org>
parents: 2997
diff changeset
   170
  mobility.Install (backbone);
2896
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
  //                                                                       //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   174
  // Construct the LANs                                                    //
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
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   178
  // 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
   179
  // the "172.16 address space
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   180
  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
   181
2995
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   182
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   183
  for (uint32_t i = 0; i < backboneNodes; ++i)
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   184
    {
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   185
      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
   186
      //
2995
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   187
      // 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
   188
      // 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
   189
      // 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
   190
      //
2995
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   191
      NodeContainer newLanNodes;
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   192
      newLanNodes.Create (lanNodes - 1);
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   193
      // 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
   194
      NodeContainer lan (backbone.Get (i), newLanNodes);
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   195
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   196
      // 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
   197
      // collection.
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   198
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   199
      CsmaHelper csma;
3381
3cdd9d60f7c7 bug 232, references to Parameter obsolete
Craig Dowell <craigdo@ee.washington.edu>
parents: 3257
diff changeset
   200
      csma.SetChannelAttribute ("DataRate", 
3257
ba198dad54a2 CSMA Cleanup, XXX in echo apps, clarification of point-to-point data rates in dox
Craig Dowell <craigdo@ee.washington.edu>
parents: 3174
diff changeset
   201
        DataRateValue (DataRate (5000000)));
3381
3cdd9d60f7c7 bug 232, references to Parameter obsolete
Craig Dowell <craigdo@ee.washington.edu>
parents: 3257
diff changeset
   202
      csma.SetChannelAttribute ("Delay", TimeValue (MilliSeconds (2)));
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   203
      NetDeviceContainer lanDevices = csma.Install (lan);
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
      // 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
   206
      //
2995
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   207
      internet.Install (newLanNodes);
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   208
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   209
      // 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
   210
      // associated IPv4 interfaces) we just created.
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
      ipAddrs.Assign (lanDevices);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   213
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   214
      // 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
   215
      // network mask initialized above
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
      ipAddrs.NewNetwork ();
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
  /////////////////////////////////////////////////////////////////////////// 
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
  // Construct the mobile networks                                         //
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
  /////////////////////////////////////////////////////////////////////////// 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   225
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   226
  // 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
   227
  // the "10.0" address space
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   228
  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
   229
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   230
  for (uint32_t i = 0; i < backboneNodes; ++i)
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   231
    {
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   232
      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
   233
      //
2995
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   234
      // 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
   235
      // 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
   236
      // 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
   237
      //
2995
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   238
      NodeContainer newInfraNodes;
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   239
      newInfraNodes.Create (infraNodes - 1);
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   240
      // 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
   241
      NodeContainer infra (backbone.Get (i), newInfraNodes);
2896
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
      // Create another ad hoc network and devices
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   244
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   245
      WifiHelper wifiInfra;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   246
      wifiInfra.SetMac ("ns3::AdhocWifiMac");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   247
      wifiInfra.SetPhy ("ns3::WifiPhy");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   248
      NetDeviceContainer infraDevices = wifiInfra.Install (infra);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   249
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   250
      // 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
   251
      //
2995
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   252
      internet.Install (newInfraNodes);
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   253
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   254
      // 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
   255
      // IPv4 interfaces) we just created.
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
      ipAddrs.Assign (infraDevices);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   258
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   259
      // 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
   260
      // the network mask initialized above
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
      ipAddrs.NewNetwork ();
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   263
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   264
      // 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
   265
      // 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
   266
      //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   267
      Ptr<ListPositionAllocator> subnetAlloc = 
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   268
        CreateObject<ListPositionAllocator> ();
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   269
      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
   270
        {
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   271
          subnetAlloc->Add (Vector (0.0, j, 0.0));
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   272
        }
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   273
      mobility.PushReferenceMobilityModel (backbone.Get (i));
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   274
      mobility.SetPositionAllocator (subnetAlloc);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   275
      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
   276
                                 "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
   277
                                 "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
   278
                                 "Pause", RandomVariableValue (ConstantVariable (0.4)));
2998
b991704f870f Fix two nits that escaped checkin
Tom Henderson <tomh@tomh.org>
parents: 2997
diff changeset
   279
      mobility.Install (infra);
2896
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
  //                                                                       //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   283
  // Routing configuration                                                 //
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
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   287
  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
   288
  OlsrHelper olsr;
2995
b72805b3ca69 Align helper API use of Install()
Tom Henderson <tomh@tomh.org>
parents: 2896
diff changeset
   289
  olsr.Install (backbone);
2896
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
  //                                                                       //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   293
  // Application configuration                                             //
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
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   297
  // 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
   298
  // 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
   299
  NS_LOG_INFO ("Create Applications.");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   300
  uint16_t port = 9;   // Discard port (RFC 863)
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   301
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   302
  // 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
   303
  // 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
   304
  NS_ASSERT (lanNodes >= 5);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   305
  Ptr<Node> appSource = NodeList::GetNode (11);  
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   306
  Ptr<Node> appSink = NodeList::GetNode (13);  
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   307
  Ipv4Address remoteAddr = Ipv4Address ("172.16.0.5");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   308
3125
d2d8a36cfd23 s/ns3::Udp/ns3::UdpSocketFactory
Tom Henderson <tomh@tomh.org>
parents: 3015
diff changeset
   309
  OnOffHelper onoff ("ns3::UdpSocketFactory", 
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   310
                     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
   311
  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
   312
  onoff.SetAttribute ("OffTime", RandomVariableValue (ConstantVariable (0)));
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   313
  ApplicationContainer apps = onoff.Install (appSource);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   314
  apps.Start (Seconds (3.0));
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   315
  apps.Stop (Seconds (20.0));
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   316
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   317
  // Create a packet sink to receive these packets
3125
d2d8a36cfd23 s/ns3::Udp/ns3::UdpSocketFactory
Tom Henderson <tomh@tomh.org>
parents: 3015
diff changeset
   318
  PacketSinkHelper sink ("ns3::UdpSocketFactory", 
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   319
                         InetSocketAddress (Ipv4Address::GetAny (), port));
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   320
  apps = sink.Install (appSink);
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   321
  apps.Start (Seconds (3.0));
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
  //                                                                       //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   325
  // Tracing configuration                                                 //
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
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   329
  NS_LOG_INFO ("Configure Tracing.");
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   330
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   331
  // 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
   332
  //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   333
  std::ofstream ascii;
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   334
  ascii.open ("mixed-wireless.tr");
2996
a83b94e277d4 EnablePcap()->EnablePcapAll(); EnableAscii()->EnableAsciiAll()
Tom Henderson <tomh@tomh.org>
parents: 2995
diff changeset
   335
  WifiHelper::EnableAsciiAll (ascii);
a83b94e277d4 EnablePcap()->EnablePcapAll(); EnableAscii()->EnableAsciiAll()
Tom Henderson <tomh@tomh.org>
parents: 2995
diff changeset
   336
  CsmaHelper::EnableAsciiAll (ascii);
3080
030e4a88c6d7 remove XXX
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3079
diff changeset
   337
  // Look at nodes 11, 13 only
030e4a88c6d7 remove XXX
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3079
diff changeset
   338
  //WifiHelper::EnableAscii (ascii, 11, 0); 
030e4a88c6d7 remove XXX
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3079
diff changeset
   339
  //WifiHelper::EnableAscii (ascii, 13, 0); 
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
3021
5b1479210da3 Removed TraceContext and TraceResolver references, removed MobilityModelNotifier class, and minor changes on samples/main-random-walk.cc.
tjkopena@cs.drexel.edu
parents: 2998
diff changeset
   347
  Config::Connect ("/NodeList/*/$MobilityModel/CourseChange",
2896
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
3080
030e4a88c6d7 remove XXX
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3079
diff changeset
   351
2896
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
  //                                                                       //
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   354
  // Run simulation                                                        //
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
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   358
  NS_LOG_INFO ("Run Simulation.");
3174
efeb6e5c276d Make Application::Start/Stop times relative, Simulator::StopAt(time) renamed to Simulator::Stop(time) and time also made relative, to improve consistency of the API which uses relative times everywhere else. Closes bug #191.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3137
diff changeset
   359
  Simulator::Stop (Seconds (stopTime));
2896
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   360
  Simulator::Run ();    
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   361
  Simulator::Destroy ();
cb77c96e6149 revive mixed-wireless example from Simutools tutorial
Tom Henderson <tomh@tomh.org>
parents:
diff changeset
   362
}