examples/wireless/multirate.cc
author Mitch Watrous
Mon, 13 Aug 2012 16:08:13 -0700
changeset 8966 060dba23e9bb
parent 7733 abd63101a73a
child 8996 d0e0a162a990
permissions -rw-r--r--
Replace src/application usage of RandomVariable with RandomVariableStream
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
     2
/*
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
     3
 * This program is free software; you can redistribute it and/or modify
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
     4
 * it under the terms of the GNU General Public License version 2 as
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
     5
 * published by the Free Software Foundation;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
     6
 *
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
     7
 * This program is distributed in the hope that it will be useful,
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
     8
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
     9
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    10
 * GNU General Public License for more details.
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    11
 *
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    12
 * You should have received a copy of the GNU General Public License
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    13
 * along with this program; if not, write to the Free Software
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    14
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    15
 *
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    16
 * Author: Duy Nguyen <duy@soe.ucsc.edu>
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    17
 */
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    18
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    19
/**
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    20
 * Scenarios: 100 nodes, multiple simultaneous flows, multi-hop ad hoc, routing,
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    21
 * and mobility
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    22
 *
6314
55b81e453f3f cleaned up and fixed valgrind error in multirate example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 6312
diff changeset
    23
 * QUICK INSTRUCTIONS:
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    24
 *
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    25
 * To optimize build: 
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    26
 * ./waf -d optimized configure
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    27
 * ./waf
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    28
 *
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    29
 * To compile:
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    30
 * ./waf --run multirate
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    31
 *
6314
55b81e453f3f cleaned up and fixed valgrind error in multirate example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 6312
diff changeset
    32
 * To compile with command line(useful for varying parameters):
55b81e453f3f cleaned up and fixed valgrind error in multirate example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 6312
diff changeset
    33
 * ./waf --run "multirate --totalTime=0.3s --rateManager=ns3::MinstrelWifiManager"
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    34
 *
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    35
 * To turn on NS_LOG:
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    36
 * export NS_LOG=multirate=level_all
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    37
 * (can only view log if built with ./waf -d debug configure)
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    38
 *
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    39
 * To debug:
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    40
 * ./waf --shell
5884
46614fa27eae remove reference to scratch/ directory in wireless examples
Tom Henderson <tomh@tomh.org>
parents: 5369
diff changeset
    41
 * gdb ./build/debug/examples/wireless/multirate
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    42
 *
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    43
 * To view pcap files:
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    44
 * tcpdump -nn -tt -r filename.pcap
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    45
 *
6311
f8ca463163fd update multirate example for test.py
Duy Nguyen <duy@soe.ucsc.edu>
parents: 6310
diff changeset
    46
 * To monitor the files:
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    47
 * tail -f filename.pcap
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    48
 *
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    49
 */
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    50
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    51
#include "ns3/core-module.h"
6823
a27f86fb4e55 Merge node and common modules into new network module
Tom Henderson <tomh@tomh.org>
parents: 6674
diff changeset
    52
#include "ns3/network-module.h"
6847
138f00c56381 Move applications to a single module
Mitch Watrous <watrous@u.washington.edu>
parents: 6823
diff changeset
    53
#include "ns3/applications-module.h"
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    54
#include "ns3/mobility-module.h"
6941
9d2c79c992d7 Split contrib module into config-store and tools
Mitch Watrous <watrous@u.washington.edu>
parents: 6865
diff changeset
    55
#include "ns3/tools-module.h"
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    56
#include "ns3/random-variable.h"
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    57
#include "ns3/wifi-module.h"
6848
1f453ad50ef3 Converts csma, emu, tap-bridge, point-to-point, wifi and wimax modules into modular format
Lalith Suresh <suresh.lalith@gmail.com>
parents: 6847
diff changeset
    58
#include "ns3/internet-module.h"
6632
1f0ce8e8a810 flow-monitor-helper.h is no longer part of the helper module
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 6314
diff changeset
    59
#include "ns3/flow-monitor-helper.h"
6640
8285fbb8b04d Fix some examples, broken after bridge/olsr reorganization
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 6632
diff changeset
    60
#include "ns3/olsr-helper.h"
6648
d1785ce489c5 Module layout rework for static-routing, list-routing, global-routing
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 6640
diff changeset
    61
#include "ns3/ipv4-static-routing-helper.h"
d1785ce489c5 Module layout rework for static-routing, list-routing, global-routing
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 6640
diff changeset
    62
#include "ns3/ipv4-list-routing-helper.h"
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    63
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    64
#include <iostream>
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    65
#include <fstream>
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    66
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    67
NS_LOG_COMPONENT_DEFINE ("multirate");
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    68
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    69
using namespace ns3;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    70
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    71
class Experiment
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    72
{
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    73
public:
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    74
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    75
  Experiment ();
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    76
  Experiment (std::string name);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    77
  Gnuplot2dDataset Run (const WifiHelper &wifi, const YansWifiPhyHelper &wifiPhy,
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    78
                        const NqosWifiMacHelper &wifiMac, const YansWifiChannelHelper &wifiChannel, const MobilityHelper &mobility);
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    79
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    80
  bool CommandSetup (int argc, char **argv);
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
    81
  bool IsRouting () { return (enableRouting == 1) ? 1 : 0; }
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
    82
  bool IsMobility () { return (enableMobility == 1) ? 1 : 0; }
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    83
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
    84
  uint32_t GetScenario () { return scenario; }
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    85
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    86
  std::string GetRtsThreshold () { return rtsThreshold; }
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    87
  std::string GetOutputFileName () { return outputFileName; }
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    88
  std::string GetRateManager () { return rateManager; }
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
    89
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    90
private:
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    91
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    92
  Ptr<Socket> SetupPacketReceive (Ptr<Node> node);
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
    93
  NodeContainer GenerateNeighbors (NodeContainer c, uint32_t senderId);
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    94
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    95
  void ApplicationSetup (Ptr<Node> client, Ptr<Node> server, double start, double stop);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    96
  void AssignNeighbors (NodeContainer c);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    97
  void SelectSrcDest (NodeContainer c);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    98
  void ReceivePacket (Ptr<Socket> socket);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    99
  void CheckThroughput ();
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   100
  void SendMultiDestinations (Ptr<Node> sender, NodeContainer c);
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   101
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   102
  Gnuplot2dDataset m_output;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   103
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   104
  double totalTime; 
6314
55b81e453f3f cleaned up and fixed valgrind error in multirate example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 6312
diff changeset
   105
  double expMean;
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   106
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   107
  uint32_t bytesTotal;
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   108
  uint32_t packetSize;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   109
  uint32_t gridSize; 
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   110
  uint32_t nodeDistance;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   111
  uint32_t port;
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   112
  uint32_t scenario;
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   113
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   114
  bool enablePcap;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   115
  bool enableTracing;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   116
  bool enableFlowMon;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   117
  bool enableRouting;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   118
  bool enableMobility;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   119
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   120
  NodeContainer containerA, containerB, containerC, containerD; 
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   121
  std::string rtsThreshold, rateManager, outputFileName;
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   122
};
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   123
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   124
Experiment::Experiment ()
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   125
{
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   126
}
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   127
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   128
Experiment::Experiment (std::string name) :
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   129
  m_output (name),
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   130
  totalTime (0.3),
6314
55b81e453f3f cleaned up and fixed valgrind error in multirate example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 6312
diff changeset
   131
  expMean (0.1), //flows being exponentially distributed
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   132
  bytesTotal (0),
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   133
  packetSize (2000),
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   134
  gridSize (10), //10x10 grid  for a total of 100 nodes
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   135
  nodeDistance (30),
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   136
  port (5000),
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   137
  scenario (4),
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   138
  enablePcap (false),
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   139
  enableTracing (true),
6312
903f0ede458b disable flowmonitor for multirate example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 6311
diff changeset
   140
  enableFlowMon (false),
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   141
  enableRouting (false),
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   142
  enableMobility (false),
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   143
  rtsThreshold ("2200"), //0 for enabling rts/cts
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   144
  rateManager ("ns3::MinstrelWifiManager"),
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   145
  outputFileName ("minstrel")
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   146
{
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   147
  m_output.SetStyle (Gnuplot2dDataset::LINES);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   148
}
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   149
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   150
Ptr<Socket>
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   151
Experiment::SetupPacketReceive (Ptr<Node> node)
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   152
{
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   153
  TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory");
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   154
  Ptr<Socket> sink = Socket::CreateSocket (node, tid);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   155
  InetSocketAddress local = InetSocketAddress (Ipv4Address::GetAny (), port);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   156
  sink->Bind (local);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   157
  sink->SetRecvCallback (MakeCallback (&Experiment::ReceivePacket, this));
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   158
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   159
  return sink;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   160
}
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   161
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   162
void
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   163
Experiment::ReceivePacket (Ptr<Socket> socket)
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   164
{
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   165
  Ptr<Packet> packet;
7733
abd63101a73a Add parenthesis in while (packet = socket->Recv ()) to make clang++ (LLVM) happy
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 7704
diff changeset
   166
  while ((packet = socket->Recv ()))
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   167
    {
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   168
      bytesTotal += packet->GetSize ();
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   169
    }
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   170
}
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   171
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   172
void
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   173
Experiment::CheckThroughput ()
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   174
{
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   175
  double mbs = ((bytesTotal * 8.0) /1000000);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   176
  bytesTotal = 0;
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   177
  m_output.Add ((Simulator::Now ()).GetSeconds (), mbs);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   178
6311
f8ca463163fd update multirate example for test.py
Duy Nguyen <duy@soe.ucsc.edu>
parents: 6310
diff changeset
   179
  //check throughput every 1/10 of a second 
f8ca463163fd update multirate example for test.py
Duy Nguyen <duy@soe.ucsc.edu>
parents: 6310
diff changeset
   180
  Simulator::Schedule (Seconds (0.1), &Experiment::CheckThroughput, this);
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   181
}
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   182
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   183
/**
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   184
 *
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   185
 * Take the grid map, divide it into 4 quadrants
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   186
 * Assign all nodes from each quadrant to a specific container 
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   187
 * 
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   188
 */
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   189
void
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   190
Experiment::AssignNeighbors (NodeContainer c)
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   191
{
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   192
  uint32_t totalNodes = c.GetN ();
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   193
  for (uint32_t i=0; i< totalNodes; i++)
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   194
    {
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   195
      if ( (i % gridSize) <= (gridSize/2 - 1))
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   196
        {
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   197
          //lower left quadrant
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   198
          if ( i < totalNodes/2 )
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   199
            {
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   200
              containerA.Add (c.Get (i));
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   201
            }
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   202
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   203
          //upper left quadrant
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   204
          if ( i >= (uint32_t)(4*totalNodes)/10 )
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   205
            {
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   206
              containerC.Add (c.Get (i));
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   207
            }
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   208
        }
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   209
      if ( (i % gridSize) >= (gridSize/2 - 1))
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   210
        {
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   211
          //lower right quadrant
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   212
          if ( i < totalNodes/2 )
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   213
            {
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   214
              containerB.Add (c.Get (i));
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   215
            }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   216
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   217
          //upper right quadrant
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   218
          if ( i >= (uint32_t)(4*totalNodes)/10  )
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   219
            {
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   220
              containerD.Add (c.Get (i));
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   221
            }
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   222
        }
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   223
    }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   224
}
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   225
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   226
/**
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   227
 * Generate 1-hop and 2-hop neighbors of a node in grid topology
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   228
 *
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   229
 */
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   230
NodeContainer
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   231
Experiment::GenerateNeighbors (NodeContainer c, uint32_t senderId)
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   232
{
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   233
  NodeContainer nc;
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   234
  uint32_t limit = senderId + 2;
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   235
  for (uint32_t i= senderId - 2; i <= limit; i++)
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   236
    {
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   237
      //must ensure the boundaries for other topologies
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   238
      nc.Add (c.Get (i));
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   239
      nc.Add (c.Get (i + 10));
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   240
      nc.Add (c.Get (i + 20));
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   241
      nc.Add (c.Get (i - 10));
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   242
      nc.Add (c.Get (i - 20));
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   243
    }
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   244
  return nc;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   245
}
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   246
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   247
/**
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   248
 * Sources and destinations are randomly selected such that a node 
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   249
 * may be the source for multiple destinations and a node maybe a destination 
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   250
 * for multiple sources. 
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   251
 */
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   252
void
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   253
Experiment::SelectSrcDest (NodeContainer c)
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   254
{
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   255
  uint32_t totalNodes = c.GetN ();
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   256
  UniformVariable uvSrc (0, totalNodes/2 -1);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   257
  UniformVariable uvDest (totalNodes/2, totalNodes);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   258
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   259
  for (uint32_t i=0; i < totalNodes/3; i++)
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   260
    {
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   261
      ApplicationSetup (c.Get (uvSrc.RandomVariable::GetInteger ()), c.Get (uvDest.RandomVariable::GetInteger ()),  0, totalTime);
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   262
    }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   263
}
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   264
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   265
/**
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   266
 *
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   267
 * A sender node will  set up a flow to each of the its neighbors
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   268
 * in its quadrant randomly.  All the flows are exponentially distributed
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   269
 *
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   270
 */
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   271
void
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   272
Experiment::SendMultiDestinations (Ptr<Node> sender, NodeContainer c)
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   273
{
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   274
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   275
  // UniformVariable params: (Xrange, Yrange)
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   276
  UniformVariable uv (0, c.GetN ());
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   277
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   278
  // ExponentialVariable params: (mean, upperbound)
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   279
  ExponentialVariable ev (expMean, totalTime);
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   280
6311
f8ca463163fd update multirate example for test.py
Duy Nguyen <duy@soe.ucsc.edu>
parents: 6310
diff changeset
   281
  double start=0.0, stop=totalTime;
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   282
  uint32_t destIndex; 
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   283
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   284
  for (uint32_t i=0; i < c.GetN (); i++)
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   285
    {
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   286
      stop = start + ev.GetValue ();
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   287
      NS_LOG_DEBUG ("Start=" << start << " Stop=" << stop);
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   288
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   289
      do {
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   290
          destIndex = (uint32_t) uv.GetValue ();
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   291
        } while ( (c.Get (destIndex))->GetId () == sender->GetId ());
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   292
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   293
      ApplicationSetup (sender, c.Get (destIndex),  start, stop);
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   294
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   295
      start = stop;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   296
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   297
      if(start > totalTime) 
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   298
        {
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   299
          break;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   300
        }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   301
    }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   302
}
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   303
7704
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   304
Vector
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   305
GetPosition (Ptr<Node> node)
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   306
{
7704
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   307
  Ptr<MobilityModel> mobility = node->GetObject<MobilityModel> ();
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   308
  return mobility->GetPosition ();
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   309
}
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   310
7704
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   311
std::string
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   312
PrintPosition (Ptr<Node> client, Ptr<Node> server)
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   313
{
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   314
  Vector serverPos = GetPosition (server);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   315
  Vector clientPos = GetPosition (client);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   316
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   317
  Ptr<Ipv4> ipv4Server = server->GetObject<Ipv4>();
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   318
  Ptr<Ipv4> ipv4Client = client->GetObject<Ipv4>();
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   319
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   320
  Ipv4InterfaceAddress iaddrServer = ipv4Server->GetAddress (1,0);
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   321
  Ipv4InterfaceAddress iaddrClient = ipv4Client->GetAddress (1,0);
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   322
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   323
  Ipv4Address ipv4AddrServer = iaddrServer.GetLocal ();
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   324
  Ipv4Address ipv4AddrClient = iaddrClient.GetLocal ();
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   325
7704
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   326
  std::ostringstream oss;
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   327
  oss << "Set up Server Device " <<  (server->GetDevice (0))->GetAddress ()
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   328
                                 << " with ip " << ipv4AddrServer
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   329
                                 << " position (" << serverPos.x << "," << serverPos.y << "," << serverPos.z << ")";
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   330
7704
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   331
  oss << "Set up Client Device " <<  (client->GetDevice (0))->GetAddress ()
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   332
                                 << " with ip " << ipv4AddrClient
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   333
                                 << " position (" << clientPos.x << "," << clientPos.y << "," << clientPos.z << ")"
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   334
                                 << "\n";
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   335
  return oss.str ();
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   336
}
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   337
7704
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   338
void
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   339
Experiment::ApplicationSetup (Ptr<Node> client, Ptr<Node> server, double start, double stop)
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   340
{
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   341
  Ptr<Ipv4> ipv4Server = server->GetObject<Ipv4> ();
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   342
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   343
  Ipv4InterfaceAddress iaddrServer = ipv4Server->GetAddress (1,0);
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   344
  Ipv4Address ipv4AddrServer = iaddrServer.GetLocal ();
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   345
aef733235832 Bug 1170: Formulate best practices for dealing with unused debug variables.
Andrey Mazo <mazo@iitp.ru>
parents: 7256
diff changeset
   346
  NS_LOG_DEBUG (PrintPosition (client, server));
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   347
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   348
  // Equipping the source  node with OnOff Application used for sending 
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   349
  OnOffHelper onoff ("ns3::UdpSocketFactory", Address (InetSocketAddress (Ipv4Address ("10.0.0.1"), port)));
8966
060dba23e9bb Replace src/application usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 7733
diff changeset
   350
  onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
060dba23e9bb Replace src/application usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 7733
diff changeset
   351
  onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   352
  onoff.SetAttribute ("DataRate", DataRateValue (DataRate (60000000)));
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   353
  onoff.SetAttribute ("PacketSize", UintegerValue (packetSize));
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   354
  onoff.SetAttribute ("Remote", AddressValue (InetSocketAddress (ipv4AddrServer, port)));
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   355
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   356
  ApplicationContainer apps = onoff.Install (client);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   357
  apps.Start (Seconds (start));
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   358
  apps.Stop (Seconds (stop));
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   359
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   360
  Ptr<Socket> sink = SetupPacketReceive (server);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   361
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   362
}
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   363
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   364
Gnuplot2dDataset
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   365
Experiment::Run (const WifiHelper &wifi, const YansWifiPhyHelper &wifiPhy,
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   366
                 const NqosWifiMacHelper &wifiMac, const YansWifiChannelHelper &wifiChannel, const MobilityHelper &mobility)
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   367
{
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   368
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   369
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   370
  uint32_t nodeSize = gridSize*gridSize;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   371
  NodeContainer c;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   372
  c.Create (nodeSize);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   373
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   374
  YansWifiPhyHelper phy = wifiPhy;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   375
  phy.SetChannel (wifiChannel.Create ());
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   376
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   377
  NqosWifiMacHelper mac = wifiMac;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   378
  NetDeviceContainer devices = wifi.Install (phy, mac, c);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   379
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   380
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   381
  OlsrHelper olsr;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   382
  Ipv4StaticRoutingHelper staticRouting;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   383
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   384
  Ipv4ListRoutingHelper list;
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   385
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   386
  if (enableRouting)
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   387
    {
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   388
      list.Add (staticRouting, 0);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   389
      list.Add (olsr, 10);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   390
    }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   391
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   392
  InternetStackHelper internet;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   393
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   394
  if (enableRouting)
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   395
    {
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   396
      internet.SetRoutingHelper (list);  // has effect on the next Install ()
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   397
    }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   398
  internet.Install (c);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   399
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   400
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   401
  Ipv4AddressHelper address;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   402
  address.SetBase ("10.0.0.0", "255.255.255.0");
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   403
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   404
  Ipv4InterfaceContainer ipInterfaces;
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   405
  ipInterfaces = address.Assign (devices);
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   406
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   407
  MobilityHelper mobil= mobility;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   408
  mobil.SetPositionAllocator ("ns3::GridPositionAllocator",
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   409
                              "MinX", DoubleValue (0.0),
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   410
                              "MinY", DoubleValue (0.0),
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   411
                              "DeltaX", DoubleValue (nodeDistance),
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   412
                              "DeltaY", DoubleValue (nodeDistance),
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   413
                              "GridWidth", UintegerValue (gridSize),
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   414
                              "LayoutType", StringValue ("RowFirst"));
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   415
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   416
  mobil.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   417
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   418
  if (enableMobility && enableRouting)
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   419
    {
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   420
      //Rectangle (xMin, xMax, yMin, yMax)
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   421
      mobil.SetMobilityModel ("ns3::RandomDirection2dMobilityModel",
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   422
                              "Bounds", RectangleValue (Rectangle (0, 500, 0, 500)),
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   423
                              "Speed", RandomVariableValue (ConstantVariable (10)),
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   424
                              "Pause", RandomVariableValue (ConstantVariable (0.2)));
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   425
    }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   426
  mobil.Install (c);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   427
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   428
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   429
//    NS_LOG_INFO ("Enabling global routing on all nodes");
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   430
//    Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   431
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   432
  if ( scenario == 1 && enableRouting)
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   433
    {
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   434
      SelectSrcDest (c);
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   435
    }
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   436
  else if ( scenario == 2)
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   437
    {
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   438
      //All flows begin at the same time
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   439
      for (uint32_t i = 0; i < nodeSize - 1; i = i+2)
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   440
        {
6314
55b81e453f3f cleaned up and fixed valgrind error in multirate example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 6312
diff changeset
   441
          ApplicationSetup (c.Get (i), c.Get (i+1),  0, totalTime);
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   442
        }
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   443
    }
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   444
  else if ( scenario == 3)
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   445
    {
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   446
      AssignNeighbors (c);
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   447
      //Note: these senders are hand-picked in order to ensure good coverage
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   448
      //for 10x10 grid, basically one sender for each quadrant
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   449
      //you might have to change these values for other grids 
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   450
      NS_LOG_DEBUG (">>>>>>>>>region A<<<<<<<<<");
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   451
      SendMultiDestinations (c.Get (22), containerA);
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   452
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   453
      NS_LOG_DEBUG (">>>>>>>>>region B<<<<<<<<<");
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   454
      SendMultiDestinations (c.Get (26), containerB);
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   455
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   456
      NS_LOG_DEBUG (">>>>>>>>>region C<<<<<<<<<");
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   457
      SendMultiDestinations (c.Get (72), containerC);
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   458
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   459
      NS_LOG_DEBUG (">>>>>>>>>region D<<<<<<<<<");
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   460
      SendMultiDestinations (c.Get (76), containerD);
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   461
    }
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   462
  else if ( scenario == 4)
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   463
    {
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   464
      //GenerateNeighbors(NodeContainer, uint32_t sender)
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   465
      //Note: these senders are hand-picked in order to ensure good coverage
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   466
      //you might have to change these values for other grids 
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   467
      NodeContainer c1, c2, c3, c4, c5, c6, c7, c8, c9;
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   468
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   469
      c1 = GenerateNeighbors (c, 22);
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   470
      c2 = GenerateNeighbors (c, 24);;
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   471
      c3 = GenerateNeighbors (c, 26);;
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   472
      c4 = GenerateNeighbors (c, 42);;
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   473
      c5 = GenerateNeighbors (c, 44);;
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   474
      c6 = GenerateNeighbors (c, 46);;
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   475
      c7 = GenerateNeighbors (c, 62);;
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   476
      c8 = GenerateNeighbors (c, 64);;
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   477
      c9 = GenerateNeighbors (c, 66);;
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   478
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   479
      SendMultiDestinations (c.Get (22), c1);
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   480
      SendMultiDestinations (c.Get (24), c2);
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   481
      SendMultiDestinations (c.Get (26), c3);
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   482
      SendMultiDestinations (c.Get (42), c4);
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   483
      SendMultiDestinations (c.Get (44), c5);
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   484
      SendMultiDestinations (c.Get (46), c6);
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   485
      SendMultiDestinations (c.Get (62), c7);
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   486
      SendMultiDestinations (c.Get (64), c8);
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   487
      SendMultiDestinations (c.Get (66), c9);
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   488
    }
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   489
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   490
  CheckThroughput ();
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   491
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   492
  if (enablePcap)
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   493
    {
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   494
      phy.EnablePcapAll (GetOutputFileName ());
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   495
    }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   496
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   497
  if (enableTracing)
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   498
    {
6014
d251d4a44fde checkpoint
Craig Dowell <craigdo@ee.washington.edu>
parents: 5884
diff changeset
   499
      AsciiTraceHelper ascii;
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   500
      phy.EnableAsciiAll (ascii.CreateFileStream (GetOutputFileName () + ".tr"));
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   501
    }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   502
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   503
  Ptr<FlowMonitor> flowmon;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   504
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   505
  if (enableFlowMon)
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   506
    {
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   507
      FlowMonitorHelper flowmonHelper;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   508
      flowmon = flowmonHelper.InstallAll ();
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   509
    }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   510
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   511
  Simulator::Stop (Seconds (totalTime));
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   512
  Simulator::Run ();
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   513
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   514
  if (enableFlowMon)
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   515
    {
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   516
      flowmon->SerializeToXmlFile ((GetOutputFileName () + ".flomon"), false, false);
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   517
    }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   518
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   519
  Simulator::Destroy ();
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   520
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   521
  return m_output;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   522
}
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   523
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   524
bool
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   525
Experiment::CommandSetup (int argc, char **argv)
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   526
{
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   527
  // for commandline input
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   528
  CommandLine cmd;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   529
  cmd.AddValue ("packetSize", "packet size", packetSize);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   530
  cmd.AddValue ("totalTime", "simulation time", totalTime);
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   531
  cmd.AddValue ("rtsThreshold", "rts threshold", rtsThreshold);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   532
  cmd.AddValue ("rateManager", "type of rate", rateManager);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   533
  cmd.AddValue ("outputFileName", "output filename", outputFileName);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   534
  cmd.AddValue ("enableRouting", "enable Routing", enableRouting);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   535
  cmd.AddValue ("enableMobility", "enable Mobility", enableMobility);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   536
  cmd.AddValue ("scenario", "scenario ", scenario);
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   537
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   538
  cmd.Parse (argc, argv);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   539
  return true;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   540
}
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   541
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   542
int main (int argc, char *argv[])
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   543
{
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   544
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   545
  Experiment experiment;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   546
  experiment = Experiment ("multirate");
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   547
6314
55b81e453f3f cleaned up and fixed valgrind error in multirate example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 6312
diff changeset
   548
  //for commandline input
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   549
  experiment.CommandSetup (argc, argv);
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   550
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   551
  // set value to 0 for enabling fragmentation
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   552
  Config::SetDefault ("ns3::WifiRemoteStationManager::FragmentationThreshold", StringValue ("2200"));
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   553
  Config::SetDefault ("ns3::WifiRemoteStationManager::RtsCtsThreshold", StringValue (experiment.GetRtsThreshold ()));
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   554
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   555
  std::ofstream outfile ((experiment.GetOutputFileName ()+ ".plt").c_str ());
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   556
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   557
  MobilityHelper mobility;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   558
  Gnuplot gnuplot;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   559
  Gnuplot2dDataset dataset;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   560
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   561
  WifiHelper wifi = WifiHelper::Default ();
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   562
  NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default ();
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   563
  YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   564
  YansWifiChannelHelper wifiChannel = YansWifiChannelHelper::Default ();
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   565
  Ssid ssid = Ssid ("Testbed");
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   566
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6648
diff changeset
   567
  wifiMac.SetType ("ns3::AdhocWifiMac",
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   568
                   "Ssid", SsidValue (ssid));
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   569
  wifi.SetStandard (WIFI_PHY_STANDARD_holland);
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   570
  wifi.SetRemoteStationManager (experiment.GetRateManager ());
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   571
6310
b95c8e9f82db fixed bug 890
Nicola Baldo <nbaldo@cttc.es>
parents: 6014
diff changeset
   572
  NS_LOG_INFO ("Scenario: " << experiment.GetScenario ());
7256
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   573
  NS_LOG_INFO ("Rts Threshold: " << experiment.GetRtsThreshold ());
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   574
  NS_LOG_INFO ("Name:  " << experiment.GetOutputFileName ());
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   575
  NS_LOG_INFO ("Rate:  " << experiment.GetRateManager ());
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   576
  NS_LOG_INFO ("Routing: " << experiment.IsRouting ());
b04ba6772f8c rerun check-style.py at default level to enforce space after function name
Tom Henderson <tomh@tomh.org>
parents: 7231
diff changeset
   577
  NS_LOG_INFO ("Mobility: " << experiment.IsMobility ());
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   578
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   579
  dataset = experiment.Run (wifi, wifiPhy, wifiMac, wifiChannel, mobility);
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   580
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   581
  gnuplot.AddDataset (dataset);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   582
  gnuplot.GenerateOutput (outfile);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   583
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   584
  return 0;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   585
}