examples/wifi-adhoc.cc
changeset 3912 4d1a61f80745
parent 3893 94f771c1373a
child 4061 359e0a1b5cf8
equal deleted inserted replaced
3911:a9bd53792bc1 3912:4d1a61f80745
    34 class Experiment
    34 class Experiment
    35 {
    35 {
    36 public:
    36 public:
    37   Experiment ();
    37   Experiment ();
    38   Experiment (std::string name);
    38   Experiment (std::string name);
    39   GnuplotDataset Run (const WifiHelper &wifi);
    39   GnuplotDataset Run (const WifiHelper &wifi, const YansWifiPhyHelper &wifiPhy, const YansWifiChannelHelper &wifiChannel);
    40 private:
    40 private:
    41   void ReceivePacket (Ptr<Socket> socket);
    41   void ReceivePacket (Ptr<Socket> socket);
    42   void SetPosition (Ptr<Node> node, Vector position);
    42   void SetPosition (Ptr<Node> node, Vector position);
    43   Vector GetPosition (Ptr<Node> node);
    43   Vector GetPosition (Ptr<Node> node);
    44   void AdvancePosition (Ptr<Node> node);
    44   void AdvancePosition (Ptr<Node> node);
   108   sink->SetRecvCallback (MakeCallback (&Experiment::ReceivePacket, this));
   108   sink->SetRecvCallback (MakeCallback (&Experiment::ReceivePacket, this));
   109   return sink;
   109   return sink;
   110 }
   110 }
   111 
   111 
   112 GnuplotDataset
   112 GnuplotDataset
   113 Experiment::Run (const WifiHelper &wifi)
   113 Experiment::Run (const WifiHelper &wifi, const YansWifiPhyHelper &wifiPhy, const YansWifiChannelHelper &wifiChannel)
   114 {
   114 {
   115   m_bytesTotal = 0;
   115   m_bytesTotal = 0;
   116 
   116 
   117   NodeContainer c;
   117   NodeContainer c;
   118   c.Create (2);
   118   c.Create (2);
   119 
   119 
   120   PacketSocketHelper packetSocket;
   120   PacketSocketHelper packetSocket;
   121   packetSocket.Install (c);
   121   packetSocket.Install (c);
   122 
   122 
   123   NetDeviceContainer devices = wifi.Install (c);
   123   YansWifiPhyHelper phy = wifiPhy;
       
   124   phy.SetChannel (wifiChannel.Create ());
       
   125   NetDeviceContainer devices = wifi.Install (phy, c);
   124 
   126 
   125   MobilityHelper mobility;
   127   MobilityHelper mobility;
   126   Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
   128   Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
   127   positionAlloc->Add (Vector (0.0, 0.0, 0.0));
   129   positionAlloc->Add (Vector (0.0, 0.0, 0.0));
   128   positionAlloc->Add (Vector (5.0, 0.0, 0.0));
   130   positionAlloc->Add (Vector (5.0, 0.0, 0.0));
   166   cmd.Parse (argc, argv);
   168   cmd.Parse (argc, argv);
   167 
   169 
   168   Gnuplot gnuplot = Gnuplot ("reference-rates.png");
   170   Gnuplot gnuplot = Gnuplot ("reference-rates.png");
   169 
   171 
   170   Experiment experiment;
   172   Experiment experiment;
   171   WifiHelper wifi;
   173   WifiHelper wifi = WifiHelper::Default ();
       
   174   YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
       
   175   YansWifiChannelHelper wifiChannel = YansWifiChannelHelper::Default ();
   172   GnuplotDataset dataset;
   176   GnuplotDataset dataset;
   173 
   177 
   174   wifi.SetMac ("ns3::AdhocWifiMac");
   178   wifi.SetMac ("ns3::AdhocWifiMac");
   175 
   179 
   176   NS_LOG_DEBUG ("54");
   180   NS_LOG_DEBUG ("54");
   177   experiment = Experiment ("54mb");
   181   experiment = Experiment ("54mb");
   178   wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
   182   wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
   179                                 "DataMode", StringValue ("wifia-54mbs"));
   183                                 "DataMode", StringValue ("wifia-54mbs"));
   180   dataset = experiment.Run (wifi);
   184   dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
   181   gnuplot.AddDataset (dataset);
   185   gnuplot.AddDataset (dataset);
   182 
   186 
   183   NS_LOG_DEBUG ("48");
   187   NS_LOG_DEBUG ("48");
   184   experiment = Experiment ("48mb");
   188   experiment = Experiment ("48mb");
   185   wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
   189   wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
   186                                 "DataMode", StringValue ("wifia-48mbs"));
   190                                 "DataMode", StringValue ("wifia-48mbs"));
   187   dataset = experiment.Run (wifi);
   191   dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
   188   gnuplot.AddDataset (dataset);
   192   gnuplot.AddDataset (dataset);
   189 
   193 
   190   NS_LOG_DEBUG ("36");
   194   NS_LOG_DEBUG ("36");
   191   experiment = Experiment ("36mb");
   195   experiment = Experiment ("36mb");
   192   wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
   196   wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
   193                                 "DataMode", StringValue ("wifia-36mbs"));
   197                                 "DataMode", StringValue ("wifia-36mbs"));
   194   dataset = experiment.Run (wifi);
   198   dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
   195   gnuplot.AddDataset (dataset);
   199   gnuplot.AddDataset (dataset);
   196 
   200 
   197   NS_LOG_DEBUG ("24");
   201   NS_LOG_DEBUG ("24");
   198   experiment = Experiment ("24mb");
   202   experiment = Experiment ("24mb");
   199   wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
   203   wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
   200                                 "DataMode", StringValue ("wifia-24mbs"));
   204                                 "DataMode", StringValue ("wifia-24mbs"));
   201   dataset = experiment.Run (wifi);
   205   dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
   202   gnuplot.AddDataset (dataset);
   206   gnuplot.AddDataset (dataset);
   203 
   207 
   204   NS_LOG_DEBUG ("18");
   208   NS_LOG_DEBUG ("18");
   205   experiment = Experiment ("18mb");
   209   experiment = Experiment ("18mb");
   206   wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
   210   wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
   207                                 "DataMode", StringValue ("wifia-18mbs"));
   211                                 "DataMode", StringValue ("wifia-18mbs"));
   208   dataset = experiment.Run (wifi);
   212   dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
   209   gnuplot.AddDataset (dataset);
   213   gnuplot.AddDataset (dataset);
   210 
   214 
   211   NS_LOG_DEBUG ("12");
   215   NS_LOG_DEBUG ("12");
   212   experiment = Experiment ("12mb");
   216   experiment = Experiment ("12mb");
   213   wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
   217   wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
   214                                 "DataMode", StringValue ("wifia-12mbs"));
   218                                 "DataMode", StringValue ("wifia-12mbs"));
   215   dataset = experiment.Run (wifi);
   219   dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
   216   gnuplot.AddDataset (dataset);
   220   gnuplot.AddDataset (dataset);
   217 
   221 
   218   NS_LOG_DEBUG ("9");
   222   NS_LOG_DEBUG ("9");
   219   experiment = Experiment ("9mb");
   223   experiment = Experiment ("9mb");
   220   wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
   224   wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
   221                                 "DataMode", StringValue ("wifia-9mbs"));
   225                                 "DataMode", StringValue ("wifia-9mbs"));
   222   dataset = experiment.Run (wifi);
   226   dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
   223   gnuplot.AddDataset (dataset);
   227   gnuplot.AddDataset (dataset);
   224 
   228 
   225   NS_LOG_DEBUG ("6");
   229   NS_LOG_DEBUG ("6");
   226   experiment = Experiment ("6mb");
   230   experiment = Experiment ("6mb");
   227   wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
   231   wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
   228                                 "DataMode", StringValue ("wifia-6mbs"));
   232                                 "DataMode", StringValue ("wifia-6mbs"));
   229   dataset = experiment.Run (wifi);
   233   dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
   230   gnuplot.AddDataset (dataset);
   234   gnuplot.AddDataset (dataset);
   231 
   235 
   232   gnuplot.GenerateOutput (std::cout);
   236   gnuplot.GenerateOutput (std::cout);
   233 
   237 
   234 
   238 
   237 
   241 
   238 
   242 
   239   NS_LOG_DEBUG ("arf");
   243   NS_LOG_DEBUG ("arf");
   240   experiment = Experiment ("arf");
   244   experiment = Experiment ("arf");
   241   wifi.SetRemoteStationManager ("ns3::ArfWifiManager");
   245   wifi.SetRemoteStationManager ("ns3::ArfWifiManager");
   242   dataset = experiment.Run (wifi);
   246   dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
   243   gnuplot.AddDataset (dataset);
   247   gnuplot.AddDataset (dataset);
   244 
   248 
   245   NS_LOG_DEBUG ("aarf");
   249   NS_LOG_DEBUG ("aarf");
   246   experiment = Experiment ("aarf");
   250   experiment = Experiment ("aarf");
   247   wifi.SetRemoteStationManager ("ns3::AarfWifiManager");
   251   wifi.SetRemoteStationManager ("ns3::AarfWifiManager");
   248   dataset = experiment.Run (wifi);
   252   dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
   249   gnuplot.AddDataset (dataset);
   253   gnuplot.AddDataset (dataset);
   250 
   254 
   251   NS_LOG_DEBUG ("ideal");
   255   NS_LOG_DEBUG ("ideal");
   252   experiment = Experiment ("ideal");
   256   experiment = Experiment ("ideal");
   253   wifi.SetRemoteStationManager ("ns3::IdealWifiManager");
   257   wifi.SetRemoteStationManager ("ns3::IdealWifiManager");
   254   dataset = experiment.Run (wifi);
   258   dataset = experiment.Run (wifi, wifiPhy, wifiChannel);
   255   gnuplot.AddDataset (dataset);
   259   gnuplot.AddDataset (dataset);
   256 
   260 
   257   gnuplot.GenerateOutput (std::cout);
   261   gnuplot.GenerateOutput (std::cout);
   258 
   262 
   259   return 0;
   263   return 0;