examples/wireless/multirate.cc
author Tom Henderson <tomh@tomh.org>
Mon, 21 Feb 2011 09:11:37 -0800
changeset 6823 a27f86fb4e55
parent 6674 52f8688d6d01
child 6847 138f00c56381
permissions -rw-r--r--
Merge node and common modules into new network module
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"
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
    53
#include "ns3/helper-module.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
    54
#include "ns3/mobility-module.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
    55
#include "ns3/contrib-module.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
    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"
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
    58
#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
    59
#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
    60
#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
    61
#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
    62
7bd503be20c9 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
#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
    64
#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
    65
7bd503be20c9 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
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
    67
7bd503be20c9 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
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
    69
7bd503be20c9 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
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
    71
{
7bd503be20c9 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
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
    73
7bd503be20c9 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
  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
    75
  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
    76
  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
    77
                        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
    78
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
    79
  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
    80
  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
    81
  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
    82
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
    83
  uint32_t GetScenario () { return scenario; }
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    84
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    85
  std::string GetRtsThreshold () { return rtsThreshold; }
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    86
  std::string GetOutputFileName () { return outputFileName; }
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    87
  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
    88
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
    89
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
    90
7bd503be20c9 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
  Vector GetPosition (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
    92
  Ptr<Socket> SetupPacketReceive (Ptr<Node> node);
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
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
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
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;
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
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
    {
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   168
      bytesTotal += packet->GetSize();
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
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   173
Experiment::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
   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
Vector
7bd503be20c9 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
Experiment::GetPosition (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
   185
{
7bd503be20c9 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
  Ptr<MobilityModel> mobility = node->GetObject<MobilityModel> ();
7bd503be20c9 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
  return mobility->GetPosition ();
7bd503be20c9 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
7bd503be20c9 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
/**
7bd503be20c9 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
 * 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
   193
 * 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
   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
 */
7bd503be20c9 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
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
   197
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
   198
{
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   199
  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
   200
  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
   201
    {
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   202
      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
   203
        {
7bd503be20c9 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
          //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
   205
          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
   206
            {
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   207
              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
   208
            }
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   209
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
   210
          //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
   211
          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
   212
            {
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   213
              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
   214
            }
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   215
        }
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
   216
      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
   217
        {
7bd503be20c9 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
          //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
   219
          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
   220
            {
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   221
              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
   222
            }
7bd503be20c9 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
          //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
   225
          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
   226
            {
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   227
              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
   228
            }
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   229
        }
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
   230
    }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   231
}
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   232
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   233
/**
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   234
 * 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
   235
 *
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
NodeContainer
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   238
Experiment::GenerateNeighbors (NodeContainer c, uint32_t senderId)
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   239
{
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   240
  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
   241
  uint32_t limit = senderId + 2;
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   242
  for (uint32_t i= senderId - 2; i <= limit; i++)
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
      //must ensure the boundaries for other topologies
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   245
      nc.Add(c.Get(i));
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   246
      nc.Add(c.Get(i + 10));
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   247
      nc.Add(c.Get(i + 20));
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   248
      nc.Add(c.Get(i - 10));
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   249
      nc.Add(c.Get(i - 20));
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   250
    }
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   251
  return nc;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   252
}
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   253
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   254
/**
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
   255
 * 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
   256
 * 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
   257
 * 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
   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
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
   260
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
   261
{
7bd503be20c9 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
  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
   263
  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
   264
  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
   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
  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
   267
    {
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   268
      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
   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
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   272
/**
7bd503be20c9 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
 * 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
   275
 * 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
   276
 *
7bd503be20c9 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
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
   279
Experiment::SendMultiDestinations(Ptr<Node> sender, 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
   280
{
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   281
7bd503be20c9 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
  // UniformVariable params: (Xrange, Yrange)
7bd503be20c9 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
  UniformVariable uv(0, 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
   284
7bd503be20c9 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
  // ExponentialVariable params: (mean, upperbound)
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   286
  ExponentialVariable ev(expMean, 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
   287
6311
f8ca463163fd update multirate example for test.py
Duy Nguyen <duy@soe.ucsc.edu>
parents: 6310
diff changeset
   288
  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
   289
  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
   290
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   291
  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
   292
    {
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   293
      stop = start + ev.GetValue();
7bd503be20c9 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
      NS_LOG_DEBUG("Start=" << start << " Stop=" << 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
   295
7bd503be20c9 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
      do {
7bd503be20c9 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
          destIndex = (uint32_t) uv.GetValue();
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   298
        } while ( (c.Get(destIndex))->GetId () == sender->GetId ());
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   299
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   300
      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
   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
      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
   303
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   304
      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
   305
        {
7bd503be20c9 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
          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
   307
        }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   308
    }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   309
}
7bd503be20c9 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
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   311
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
   312
Experiment::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
   313
{
7bd503be20c9 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
7bd503be20c9 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 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
   316
  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
   317
7bd503be20c9 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> 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
   319
  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
   320
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   321
  Ipv4InterfaceAddress iaddrServer = ipv4Server->GetAddress(1,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
   322
  Ipv4InterfaceAddress iaddrClient = ipv4Client->GetAddress(1,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
   323
7bd503be20c9 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 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
   325
  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
   326
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   327
  NS_LOG_DEBUG("Set up Server Device " <<  (server->GetDevice(0))->GetAddress () 
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   328
                                       << " with ip " << ipv4AddrServer
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
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
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   331
  NS_LOG_DEBUG("Set up Client Device " <<  (client->GetDevice(0))->GetAddress () 
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   332
                                       << " with ip " << ipv4AddrClient
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   333
                                       << " position (" << clientPos.x << "," << clientPos.y << "," << clientPos.z << ")"
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   334
                                       << "\n");
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
   335
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
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
  // Equipping the source  node with OnOff Application used for sending 
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   338
  OnOffHelper onoff ("ns3::UdpSocketFactory", Address(InetSocketAddress(Ipv4Address("10.0.0.1"), 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
   339
  onoff.SetAttribute ("OnTime", RandomVariableValue (ConstantVariable (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
   340
  onoff.SetAttribute ("OffTime", RandomVariableValue (ConstantVariable (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
   341
  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
   342
  onoff.SetAttribute ("PacketSize", UintegerValue (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
   343
  onoff.SetAttribute ("Remote", AddressValue(InetSocketAddress (ipv4AddrServer, 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
   344
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   345
  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
   346
  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
   347
  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
   348
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   349
  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
   350
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   351
}
7bd503be20c9 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
7bd503be20c9 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
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
   354
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
   355
                 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
   356
{
7bd503be20c9 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
7bd503be20c9 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
7bd503be20c9 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
  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
   360
  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
   361
  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
   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
  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
   364
  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
   365
7bd503be20c9 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
  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
   367
  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
   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
  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
   371
  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
   372
7bd503be20c9 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
  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
   374
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
   375
  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
   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
      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
   378
      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
   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
  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
   382
7bd503be20c9 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
  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
   384
    {
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   385
      internet.SetRoutingHelper(list);
7bd503be20c9 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
    }
7bd503be20c9 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
  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
   388
7bd503be20c9 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
7bd503be20c9 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
  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
   391
  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
   392
7bd503be20c9 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
  Ipv4InterfaceContainer ipInterfaces;
7bd503be20c9 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
  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
   395
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
   396
  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
   397
  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
   398
                              "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
   399
                              "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
   400
                              "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
   401
                              "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
   402
                              "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
   403
                              "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
   404
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   405
  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
   406
7bd503be20c9 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
  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
   408
    {
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   409
      //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
   410
      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
   411
                              "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
   412
                              "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
   413
                              "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
   414
    }
7bd503be20c9 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
  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
   416
7bd503be20c9 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
//    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
   419
//    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
   420
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   421
  if ( scenario == 1 && enableRouting)
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   422
    {
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   423
      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
   424
    }
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   425
  else if ( scenario == 2)
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   426
    {
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   427
      //All flows begin at the same time
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   428
      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
   429
        {
6314
55b81e453f3f cleaned up and fixed valgrind error in multirate example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 6312
diff changeset
   430
          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
   431
        }
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   432
    }
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   433
  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
   434
    {
7bd503be20c9 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
      AssignNeighbors(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
   436
      //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
   437
      //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
   438
      //you might have to change these values for other grids 
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   439
      NS_LOG_DEBUG(">>>>>>>>>region A<<<<<<<<<");
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   440
      SendMultiDestinations(c.Get(22), containerA);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   441
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   442
      NS_LOG_DEBUG(">>>>>>>>>region B<<<<<<<<<");
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   443
      SendMultiDestinations(c.Get(26), containerB);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   444
7bd503be20c9 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
      NS_LOG_DEBUG(">>>>>>>>>region 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
   446
      SendMultiDestinations(c.Get(72), containerC);
7bd503be20c9 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
7bd503be20c9 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
      NS_LOG_DEBUG(">>>>>>>>>region D<<<<<<<<<");
7bd503be20c9 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
      SendMultiDestinations(c.Get(76), containerD);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   450
    }
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   451
  else if ( scenario == 4)
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   452
    {
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   453
      //GenerateNeighbors(NodeContainer, uint32_t sender)
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   454
      //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
   455
      //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
   456
      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
   457
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   458
      c1 = GenerateNeighbors(c, 22);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   459
      c2 = GenerateNeighbors(c, 24);;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   460
      c3 = GenerateNeighbors(c, 26);;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   461
      c4 = GenerateNeighbors(c, 42);;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   462
      c5 = GenerateNeighbors(c, 44);;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   463
      c6 = GenerateNeighbors(c, 46);;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   464
      c7 = GenerateNeighbors(c, 62);;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   465
      c8 = GenerateNeighbors(c, 64);;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   466
      c9 = GenerateNeighbors(c, 66);;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   467
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   468
      SendMultiDestinations(c.Get(22), c1);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   469
      SendMultiDestinations(c.Get(24), c2);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   470
      SendMultiDestinations(c.Get(26), c3);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   471
      SendMultiDestinations(c.Get(42), c4);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   472
      SendMultiDestinations(c.Get(44), c5);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   473
      SendMultiDestinations(c.Get(46), c6);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   474
      SendMultiDestinations(c.Get(62), c7);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   475
      SendMultiDestinations(c.Get(64), c8);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   476
      SendMultiDestinations(c.Get(66), c9);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   477
    }
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
   478
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   479
  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
   480
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   481
  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
   482
    {
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   483
      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
   484
    }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   485
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   486
  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
   487
    {
6014
d251d4a44fde checkpoint
Craig Dowell <craigdo@ee.washington.edu>
parents: 5884
diff changeset
   488
      AsciiTraceHelper ascii;
d251d4a44fde checkpoint
Craig Dowell <craigdo@ee.washington.edu>
parents: 5884
diff changeset
   489
      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
   490
    }
7bd503be20c9 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
  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
   493
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   494
  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
   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
      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
   497
      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
   498
    }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   499
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   500
  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
   501
  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
   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
  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
   504
    {
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   505
      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
   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
7bd503be20c9 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
  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
   509
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
   510
  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
   511
}
7bd503be20c9 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
7bd503be20c9 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
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
   514
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
   515
{
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   516
  // 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
   517
  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
   518
  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
   519
  cmd.AddValue ("totalTime", "simulation time", totalTime);
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   520
  cmd.AddValue ("rtsThreshold", "rts threshold", rtsThreshold);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   521
  cmd.AddValue ("rateManager", "type of rate", rateManager);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   522
  cmd.AddValue ("outputFileName", "output filename", outputFileName);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   523
  cmd.AddValue ("enableRouting", "enable Routing", enableRouting);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   524
  cmd.AddValue ("enableMobility", "enable Mobility", enableMobility);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   525
  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
   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
  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
   528
  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
   529
}
7bd503be20c9 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
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   531
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
   532
{
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   533
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   534
  Experiment experiment;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   535
  experiment = Experiment ("multirate");
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   536
6314
55b81e453f3f cleaned up and fixed valgrind error in multirate example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 6312
diff changeset
   537
  //for commandline input
6312
903f0ede458b disable flowmonitor for multirate example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 6311
diff changeset
   538
  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
   539
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   540
  // 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
   541
  Config::SetDefault ("ns3::WifiRemoteStationManager::FragmentationThreshold", StringValue ("2200"));
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   542
  Config::SetDefault ("ns3::WifiRemoteStationManager::RtsCtsThreshold", StringValue (experiment.GetRtsThreshold()));
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   543
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   544
  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
   545
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   546
  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
   547
  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
   548
  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
   549
7bd503be20c9 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
  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
   551
  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
   552
  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
   553
  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
   554
  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
   555
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6648
diff changeset
   556
  wifiMac.SetType ("ns3::AdhocWifiMac",
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6648
diff changeset
   557
                   "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
   558
  wifi.SetStandard (WIFI_PHY_STANDARD_holland);
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   559
  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
   560
6310
b95c8e9f82db fixed bug 890
Nicola Baldo <nbaldo@cttc.es>
parents: 6014
diff changeset
   561
  NS_LOG_INFO ("Scenario: " << experiment.GetScenario ());
b95c8e9f82db fixed bug 890
Nicola Baldo <nbaldo@cttc.es>
parents: 6014
diff changeset
   562
  NS_LOG_INFO ("Rts Threshold: " << experiment.GetRtsThreshold());
b95c8e9f82db fixed bug 890
Nicola Baldo <nbaldo@cttc.es>
parents: 6014
diff changeset
   563
  NS_LOG_INFO ("Name:  " << experiment.GetOutputFileName());
b95c8e9f82db fixed bug 890
Nicola Baldo <nbaldo@cttc.es>
parents: 6014
diff changeset
   564
  NS_LOG_INFO ("Rate:  " << experiment.GetRateManager());
b95c8e9f82db fixed bug 890
Nicola Baldo <nbaldo@cttc.es>
parents: 6014
diff changeset
   565
  NS_LOG_INFO ("Routing: " << experiment.IsRouting());
b95c8e9f82db fixed bug 890
Nicola Baldo <nbaldo@cttc.es>
parents: 6014
diff changeset
   566
  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
   567
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   568
  dataset = experiment.Run (wifi, wifiPhy, wifiMac, wifiChannel, mobility);
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   569
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
   570
  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
   571
  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
   572
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   573
  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
   574
}