examples/wireless/multirate.cc
author Tom Henderson <tomh@tomh.org>
Tue, 29 Dec 2009 09:39:52 -0800
changeset 5884 46614fa27eae
parent 5369 86beb5869f67
child 6014 d251d4a44fde
permissions -rw-r--r--
remove reference to scratch/ directory in wireless examples
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
 *
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    23
 * INSTRUCTIONS:
7bd503be20c9 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
 *
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    32
 * To compile with commandline(useful for varying parameters or configurations):
5884
46614fa27eae remove reference to scratch/ directory in wireless examples
Tom Henderson <tomh@tomh.org>
parents: 5369
diff changeset
    33
 * ./waf --run "multirate --packetSize=2000 --totalTime=50"
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
 *
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    46
 * To monitor the files
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
 *
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    49
 * Sidenote: Simulation might take sometime 
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
    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
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    52
#include "ns3/core-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
    53
#include "ns3/common-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/node-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/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
    56
#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
    57
#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
    58
#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
    59
#include "ns3/wifi-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
    60
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    61
#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
    62
#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
    63
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    64
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
    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
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
    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
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
    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
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
    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
  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
    73
  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
    74
  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
    75
                        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
    76
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
    77
  bool CommandSetup (int argc, char **argv);
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    78
  bool IsRouting () { return (enableRouting == 1) ? 1:0; }
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    79
  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
    80
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    81
  uint32_t GetScenario () {return scenario; }
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    82
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    83
  std::string GetRtsThreshold () { return rtsThreshold; }
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    84
  std::string GetOutputFileName () { return outputFileName; }
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    85
  std::string GetRateManager () { return rateManager; }
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    86
  
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
    87
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
    88
7bd503be20c9 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
  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
    90
  Ptr<Socket> SetupPacketReceive (Ptr<Node> node);
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    91
  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
    92
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
    93
  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
    94
  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
    95
  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
    96
  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
    97
  void CheckThroughput ();
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
    98
  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
    99
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   100
  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
   101
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   102
  double totalTime; 
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   103
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   104
  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
   105
  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
   106
  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
   107
  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
   108
  uint32_t 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
   109
  uint32_t expMean;
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   110
  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
   111
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   112
  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
   113
  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
   114
  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
   115
  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
   116
  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
   117
7bd503be20c9 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
  NodeContainer containerA, containerB, containerC, containerD; 
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   119
  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
   120
};
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   121
7bd503be20c9 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
Experiment::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
   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
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   125
Experiment::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
   126
  m_output (name),
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   127
  totalTime (50), //use shorter time for faster simulation 
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   128
  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
   129
  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
   130
  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
   131
  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
   132
  port (5000),
7bd503be20c9 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
  expMean (4), //flows being exponentially distributed
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   134
  scenario (4), 
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   135
  enablePcap (false), // will flood the directory with *.pcap files
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   136
  enableTracing (true),
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   137
  enableFlowMon (true),
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   138
  enableRouting (false),
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   139
  enableMobility (false),
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   140
  rtsThreshold ("2200"), //0 for enabling rts/cts
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   141
  rateManager ("ns3::MinstrelWifiManager"),
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   142
  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
   143
{
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   144
  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
   145
}
7bd503be20c9 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
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
   148
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
   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
  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
   151
  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
   152
  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
   153
  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
   154
  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
   155
7bd503be20c9 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
  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
   157
}
7bd503be20c9 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
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
   160
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
   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
  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
   163
  while (packet = socket->Recv ())
7bd503be20c9 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
  {
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   165
    bytesTotal += packet->GetSize();
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
   166
  }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   167
}
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   168
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   169
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
   170
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
   171
{
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   172
  double mbs = ((bytesTotal * 8.0) /1000000);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   173
  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
   174
  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
   175
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   176
  Simulator::Schedule (Seconds (1.0), &Experiment::CheckThroughput, 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
   177
}
7bd503be20c9 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
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   179
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
   180
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
   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
  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
   183
  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
   184
}
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   185
7bd503be20c9 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
/**
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   187
 *
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   188
 * 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
   189
 * 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
   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
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
   193
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
   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
  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
   196
  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
   197
    {
7bd503be20c9 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
      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
   199
        {
7bd503be20c9 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
          //lower 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
   201
	  if ( i < totalNodes/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
   202
	    {
7bd503be20c9 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
	      containerA.Add(c.Get(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
   204
            }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   205
      
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   206
          //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
   207
          if ( i >= (uint32_t)(4*totalNodes)/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
   208
	    {
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   209
	      containerC.Add(c.Get(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
   210
            }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   211
	}
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   212
      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
   213
        {
7bd503be20c9 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
          //lower 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
   215
	  if ( i < totalNodes/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
   216
	    {
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   217
	      containerB.Add(c.Get(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
   218
            }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   219
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   220
          //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
   221
          if ( i >= (uint32_t)(4*totalNodes)/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
   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
	      containerD.Add(c.Get(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
   224
            }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   225
	}
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   226
    }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   227
}
7bd503be20c9 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
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   229
/**
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   230
 * 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
   231
 *
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   232
 */
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   233
NodeContainer
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   234
Experiment::GenerateNeighbors (NodeContainer c, uint32_t senderId)
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
  NodeContainer nc;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   237
  uint32_t limit = senderId + 2;  
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   238
  for (uint32_t i= senderId - 2; i <= limit; i++)
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
      //must ensure the boundaries for other topologies
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   241
      nc.Add(c.Get(i));
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   242
      nc.Add(c.Get(i + 10));
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   243
      nc.Add(c.Get(i + 20));
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   244
      nc.Add(c.Get(i - 10));
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   245
      nc.Add(c.Get(i - 20));
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   246
    }
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   247
  return nc;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   248
}
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   249
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   250
/**
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
   251
 * 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
   252
 * 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
   253
 * 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
   254
 */
7bd503be20c9 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
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
   256
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
   257
{
7bd503be20c9 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
  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
   259
  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
   260
  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
   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
  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
   263
    {
5268
d28ac98e0ed9 fix build for gcc 3.4.6
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5266
diff changeset
   264
      ApplicationSetup (c.Get(uvSrc.RandomVariable::GetInteger()), c.Get(uvDest.RandomVariable::GetInteger()) ,  1, 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
   265
    }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   266
}
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   267
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   268
/**
7bd503be20c9 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
 * 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
   271
 * 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
   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
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
   275
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
   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
  // 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
   279
  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
   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
  // 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
   282
  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
   283
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   284
  double start=1, stop=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
   285
  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
   286
7bd503be20c9 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
  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
   288
    {
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   289
      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
   290
      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
   291
7bd503be20c9 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
      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
   293
          destIndex = (uint32_t) uv.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
      } while ( (c.Get(destIndex))->GetId () == sender->GetId ());
7bd503be20c9 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
      ApplicationSetup (sender, c.Get(destIndex) ,  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
   297
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   298
      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
   299
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   300
      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
   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
          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
   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
    }
7bd503be20c9 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
7bd503be20c9 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
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
   308
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
   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
  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
   312
  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
   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
  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
   315
  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
   316
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   317
  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
   318
  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
   319
7bd503be20c9 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
  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
   321
  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
   322
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   323
  NS_LOG_DEBUG("Set up Server Device " <<  (server->GetDevice(0))->GetAddress () 
7bd503be20c9 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
            << " with ip " << ipv4AddrServer 
7bd503be20c9 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
            << " position (" << serverPos.x << "," << serverPos.y << "," << serverPos.z << ")");
7bd503be20c9 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 Client Device " <<  (client->GetDevice(0))->GetAddress () 
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   328
            << " with ip " << ipv4AddrClient 
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   329
            << " position (" << clientPos.x << "," << clientPos.y << "," << clientPos.z << ")"
7bd503be20c9 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
            << "\n");
7bd503be20c9 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
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   332
   
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   333
  // 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
   334
  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
   335
  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
   336
  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
   337
  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
   338
  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
   339
  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
   340
7bd503be20c9 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
  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
   342
  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
   343
  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
   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
/*
7bd503be20c9 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
  // Select either Sink Method 1 or 2 for setting up 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
   347
  // one using a helper vs one without
7bd503be20c9 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
  // Sink: Method 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
   349
  Address sinkAddr(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
   350
  PacketSinkHelper sinkHelper ("ns3::UdpSocketFactory", sinkAddr);
7bd503be20c9 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
  ApplicationContainer sinkApp = sinkHelper.Install (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
   352
  sinkApp.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
   353
  sinkApp.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
   354
*/
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   355
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   356
  // Sink: Method 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
   357
  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
   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
}
7bd503be20c9 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
7bd503be20c9 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
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
   362
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
   363
                 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
   364
{
7bd503be20c9 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
7bd503be20c9 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
  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
   368
  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
   369
  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
   370
7bd503be20c9 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
  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
   372
  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
   373
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   374
  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
   375
  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
   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
7bd503be20c9 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
  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
   379
  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
   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
  Ipv4ListRoutingHelper 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
   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
      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
   386
      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
   387
    }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   388
7bd503be20c9 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
  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
   390
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   391
  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
   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
      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
   394
    }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   395
  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
   396
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   397
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   398
  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
   399
  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
   400
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   401
  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
   402
  ipInterfaces = address.Assign(devices);
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   403
  
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   404
  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
   405
  mobil.SetPositionAllocator ("ns3::GridPositionAllocator",
7bd503be20c9 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
                                "MinX", DoubleValue (0.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
   407
                                "MinY", DoubleValue (0.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
   408
                                "DeltaX", DoubleValue (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
   409
                                "DeltaY", DoubleValue (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
   410
                                "GridWidth", UintegerValue (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
   411
                                "LayoutType", StringValue ("RowFirst"));
7bd503be20c9 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
7bd503be20c9 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
  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
   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
  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
   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
      //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
   418
      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
   419
                              "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
   420
                              "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
   421
                              "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
   422
    }
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   423
  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
   424
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   425
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   426
//    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
   427
//    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
   428
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   429
  if ( scenario == 1 && enableRouting)
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   430
    {
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   431
      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
   432
    }
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   433
  else if ( scenario == 2)
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   434
    {
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   435
      //All flows begin at the same time
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   436
      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
   437
        {
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   438
          ApplicationSetup (c.Get (i), c.Get (i+1),  1, totalTime);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   439
        }
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   440
    }
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   441
  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
   442
    {
7bd503be20c9 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
      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
   444
      //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
   445
      //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
   446
      //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
   447
      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
   448
      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
   449
7bd503be20c9 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
      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
   451
      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
   452
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   453
      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
   454
      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
   455
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   456
      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
   457
      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
   458
    }
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   459
  else if ( scenario == 4)
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   460
    {
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   461
      //GenerateNeighbors(NodeContainer, uint32_t sender)
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   462
      //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
   463
      //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
   464
      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
   465
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   466
      c1 = GenerateNeighbors(c, 22);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   467
      c2 = GenerateNeighbors(c, 24);;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   468
      c3 = GenerateNeighbors(c, 26);;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   469
      c4 = GenerateNeighbors(c, 42);;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   470
      c5 = GenerateNeighbors(c, 44);;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   471
      c6 = GenerateNeighbors(c, 46);;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   472
      c7 = GenerateNeighbors(c, 62);;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   473
      c8 = GenerateNeighbors(c, 64);;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   474
      c9 = GenerateNeighbors(c, 66);;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   475
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   476
      SendMultiDestinations(c.Get(22), c1);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   477
      SendMultiDestinations(c.Get(24), c2);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   478
      SendMultiDestinations(c.Get(26), c3);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   479
      SendMultiDestinations(c.Get(42), c4);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   480
      SendMultiDestinations(c.Get(44), c5);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   481
      SendMultiDestinations(c.Get(46), c6);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   482
      SendMultiDestinations(c.Get(62), c7);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   483
      SendMultiDestinations(c.Get(64), c8);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   484
      SendMultiDestinations(c.Get(66), c9);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   485
    }
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
   486
7bd503be20c9 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
  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
   488
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   489
  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
   490
    {
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   491
      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
   492
    }
7bd503be20c9 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 (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
   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
      std::ofstream ascii;
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   497
      ascii.open ((GetOutputFileName() + ".tr").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
   498
      phy.EnableAsciiAll (ascii);
7bd503be20c9 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
7bd503be20c9 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
  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
   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
    {
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   505
      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
   506
      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
   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
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   509
  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
   510
  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
   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
  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
   513
    {
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   514
      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
   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
7bd503be20c9 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
  Simulator::Destroy ();
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   518
  
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   519
  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
   520
}
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   521
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   522
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
   523
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
   524
{
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   525
  // 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
   526
  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
   527
  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
   528
  cmd.AddValue ("totalTime", "simulation time", totalTime);
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   529
  cmd.AddValue ("rtsThreshold", "rts threshold", rtsThreshold);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   530
  cmd.AddValue ("rateManager", "type of rate", rateManager);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   531
  cmd.AddValue ("outputFileName", "output filename", outputFileName);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   532
  cmd.AddValue ("enableRouting", "enable Routing", enableRouting);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   533
  cmd.AddValue ("enableMobility", "enable Mobility", enableMobility);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   534
  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
   535
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   536
  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
   537
  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
   538
}
7bd503be20c9 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
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   540
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
   541
{
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   542
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   543
  Experiment experiment;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   544
  experiment = Experiment ("multirate");
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   545
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   546
  //for commandline input
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   547
  if (!experiment.CommandSetup(argc, argv))
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   548
    {
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   549
      std::cout << "Configuration failed..." << std::endl;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   550
      exit(1);
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   551
    }
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   552
7bd503be20c9 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
  // disable fragmentation
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   554
  // 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
   555
  Config::SetDefault ("ns3::WifiRemoteStationManager::FragmentationThreshold", StringValue ("2200"));
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   556
  Config::SetDefault ("ns3::WifiRemoteStationManager::RtsCtsThreshold", StringValue (experiment.GetRtsThreshold()));
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   557
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   558
  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
   559
7bd503be20c9 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
  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
   561
  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
   562
  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
   563
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   564
  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
   565
  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
   566
  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
   567
  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
   568
  Ssid ssid = Ssid ("Testbed");
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   569
  
7bd503be20c9 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
  wifiMac.SetType ("ns3::AdhocWifiMac", "Ssid", SsidValue(ssid));
7bd503be20c9 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
  wifi.SetStandard (WIFI_PHY_STANDARD_holland);
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   572
  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
   573
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   574
  //printing out selection confirmation
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   575
  std::cout << "Scenario: " << experiment.GetScenario () << std::endl;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   576
  std::cout << "Rts Threshold: " << experiment.GetRtsThreshold() << std::endl;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   577
  std::cout << "Name:  " << experiment.GetOutputFileName() << std::endl;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   578
  std::cout << "Rate:  " << experiment.GetRateManager() << std::endl;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   579
  std::cout << "Routing: " << experiment.IsRouting() << std::endl;
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   580
  std::cout << "Mobility: " << experiment.IsMobility() << std::endl;
5256
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   581
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   582
  dataset = experiment.Run (wifi, wifiPhy, wifiMac, wifiChannel, mobility);
5266
dd5b22749a78 Update multirate.cc example
Duy Nguyen <duy@soe.ucsc.edu>
parents: 5256
diff changeset
   583
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
   584
  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
   585
  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
   586
7bd503be20c9 Replace multi-rate-first.cc and multi-rate-second.cc with better example multirate.cc
Duy Nguyen <duy@soe.ucsc.edu>
parents:
diff changeset
   587
  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
   588
}