move ns-2 mobility example to mobility module
authorTom Henderson <tomh@tomh.org>
Fri, 21 Sep 2012 12:43:24 -0700
changeset 9082 0eda8dc57eff
parent 9079 1e5921e6507d
child 9083 4a2ea4b54d41
move ns-2 mobility example to mobility module
examples/mobility/ns2-mobility-trace.cc
src/mobility/examples/ns2-mobility-trace.cc
src/mobility/examples/wscript
--- a/examples/mobility/ns2-mobility-trace.cc	Fri Sep 21 13:47:41 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2007 INRIA
- *               2009,2010 Contributors
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * Author: Martín Giachino <martin.giachino@gmail.com>
- *
- *
- * This example demonstrates the use of Ns2TransmobilityHelper class to work with mobility.
- *
- * Detailed example description.
- *
- *  - intended usage: this should be used in order to load ns2 movement trace files into ns3.
- *  - behavior:
- *      - Ns2TransmobilityHelperTrace object is created, whith the specified trace file. At this moment, only
- *      specify the file, and no movements are scheduled.
- *      - A log file is created, using the log file name argument.
- *      - A node container is created with the correct node number specified in the command line.
- *      - Use Install method of Ns2TransmobilityHelperTrace to set mobility to nodes. At this moment, file is
- *      read line by line, and the movement is scheduled in the simulator.
- *      - A callback is configured, so each time a node changes its course a log message is printed.
- *  - expected output: example prints out messages generated by each read line from the ns2 movement trace file.
- *                     For each line, it shows if the line is correct, or of it has errors and in this case it will
- *                     be ignored.
- *
- * Usage of ns2-mobility-trace:
- *
- *          ./waf --run "examples/mobility/ns2-mobility-trace \
- *                --traceFile=/home/mgiachino/ns-3-dev/examples/mobility/default.ns_movements
- *                 --nodeNum=2  --duration=100.0 --logFile=ns2-mobility-trace.log"
- *
- *          NOTE: ns2-traces-file could be an absolute or relative path. You could use the file default.ns_movements
- *                included in the same directory that the present file.
- *          NOTE 2: Number of nodes present in the trace file must match with the command line argument.
- *                  Note that you must know it before to be able to load it.
- *          NOTE 3: Duration must be a positive number. Note that you must know it before to be able to load it.
- */
-
-
-#include <iostream>
-#include <fstream>
-#include <sstream>
-
-#include "ns3/core-module.h"
-#include "ns3/mobility-module.h"
-#include "ns3/mobility-module.h"
-#include "ns3/ns2-mobility-helper.h"
-
-using namespace ns3;
-
-// Prints actual position and velocity when a course change event occurs
-static void
-CourseChange (std::ostream *os, std::string foo, Ptr<const MobilityModel> mobility)
-{
-  Vector pos = mobility->GetPosition (); // Get position
-  Vector vel = mobility->GetVelocity (); // Get velocity
-
-  // Prints position and velocities
-  *os << Simulator::Now () << " POS: x=" << pos.x << ", y=" << pos.y
-      << ", z=" << pos.z << "; VEL:" << vel.x << ", y=" << vel.y
-      << ", z=" << vel.z << std::endl;
-}
-
-// Example to use ns2 traces file in ns3
-int main (int argc, char *argv[])
-{
-  std::string traceFile;
-  std::string logFile;
-
-  int    nodeNum;
-  double duration;
-
-  // Enable logging from the ns2 helper
-  LogComponentEnable ("Ns2MobilityHelper",LOG_LEVEL_DEBUG);
-
-  // Parse command line attribute
-  CommandLine cmd;
-  cmd.AddValue ("traceFile", "Ns2 movement trace file", traceFile);
-  cmd.AddValue ("nodeNum", "Number of nodes", nodeNum);
-  cmd.AddValue ("duration", "Duration of Simulation", duration);
-  cmd.AddValue ("logFile", "Log file", logFile);
-  cmd.Parse (argc,argv);
-
-  // Check command line arguments
-  if (traceFile.empty () || nodeNum <= 0 || duration <= 0 || logFile.empty ())
-    {
-      std::cout << "Usage of " << argv[0] << " :\n\n"
-      "./waf --run \"ns2-mobility-trace"
-      " --traceFile=/home/mgiachino/ns-3-dev/examples/mobility/default.ns_movements"
-      " --nodeNum=2 --duration=100.0 --logFile=main-ns2-mob.log\" \n\n"
-      "NOTE: ns2-traces-file could be an absolute or relative path. You could use the file default.ns_movements\n"
-      "      included in the same directory that the present file.\n\n"
-      "NOTE 2: Number of nodes present in the trace file must match with the command line argument and must\n"
-      "        be a positive number. Note that you must know it before to be able to load it.\n\n"
-      "NOTE 3: Duration must be a positive number. Note that you must know it before to be able to load it.\n\n";
-
-      return 0;
-    }
-
-  // Create Ns2MobilityHelper with the specified trace log file as parameter
-  Ns2MobilityHelper ns2 = Ns2MobilityHelper (traceFile);
-
-  // open log file for output
-  std::ofstream os;
-  os.open (logFile.c_str ());
-
-
-
-  // Create all nodes.
-  NodeContainer stas;
-  stas.Create (nodeNum);
-
-  ns2.Install (); // configure movements for each node, while reading trace file
-
-  // Configure callback for logging
-  Config::Connect ("/NodeList/*/$ns3::MobilityModel/CourseChange",
-                   MakeBoundCallback (&CourseChange, &os));
-
-  Simulator::Stop (Seconds (duration));
-  Simulator::Run ();
-  Simulator::Destroy ();
-
-  os.close (); // close log file
-  return 0;
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/mobility/examples/ns2-mobility-trace.cc	Fri Sep 21 12:43:24 2012 -0700
@@ -0,0 +1,138 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2007 INRIA
+ *               2009,2010 Contributors
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Martín Giachino <martin.giachino@gmail.com>
+ *
+ *
+ * This example demonstrates the use of Ns2TransmobilityHelper class to work with mobility.
+ *
+ * Detailed example description.
+ *
+ *  - intended usage: this should be used in order to load ns2 movement trace files into ns3.
+ *  - behavior:
+ *      - Ns2TransmobilityHelperTrace object is created, whith the specified trace file. At this moment, only
+ *      specify the file, and no movements are scheduled.
+ *      - A log file is created, using the log file name argument.
+ *      - A node container is created with the correct node number specified in the command line.
+ *      - Use Install method of Ns2TransmobilityHelperTrace to set mobility to nodes. At this moment, file is
+ *      read line by line, and the movement is scheduled in the simulator.
+ *      - A callback is configured, so each time a node changes its course a log message is printed.
+ *  - expected output: example prints out messages generated by each read line from the ns2 movement trace file.
+ *                     For each line, it shows if the line is correct, or of it has errors and in this case it will
+ *                     be ignored.
+ *
+ * Usage of ns2-mobility-trace:
+ *
+ *          ./waf --run "examples/mobility/ns2-mobility-trace \
+ *                --traceFile=/home/mgiachino/ns-3-dev/examples/mobility/default.ns_movements
+ *                 --nodeNum=2  --duration=100.0 --logFile=ns2-mobility-trace.log"
+ *
+ *          NOTE: ns2-traces-file could be an absolute or relative path. You could use the file default.ns_movements
+ *                included in the same directory that the present file.
+ *          NOTE 2: Number of nodes present in the trace file must match with the command line argument.
+ *                  Note that you must know it before to be able to load it.
+ *          NOTE 3: Duration must be a positive number. Note that you must know it before to be able to load it.
+ */
+
+
+#include <iostream>
+#include <fstream>
+#include <sstream>
+
+#include "ns3/core-module.h"
+#include "ns3/mobility-module.h"
+#include "ns3/mobility-module.h"
+#include "ns3/ns2-mobility-helper.h"
+
+using namespace ns3;
+
+// Prints actual position and velocity when a course change event occurs
+static void
+CourseChange (std::ostream *os, std::string foo, Ptr<const MobilityModel> mobility)
+{
+  Vector pos = mobility->GetPosition (); // Get position
+  Vector vel = mobility->GetVelocity (); // Get velocity
+
+  // Prints position and velocities
+  *os << Simulator::Now () << " POS: x=" << pos.x << ", y=" << pos.y
+      << ", z=" << pos.z << "; VEL:" << vel.x << ", y=" << vel.y
+      << ", z=" << vel.z << std::endl;
+}
+
+// Example to use ns2 traces file in ns3
+int main (int argc, char *argv[])
+{
+  std::string traceFile;
+  std::string logFile;
+
+  int    nodeNum;
+  double duration;
+
+  // Enable logging from the ns2 helper
+  LogComponentEnable ("Ns2MobilityHelper",LOG_LEVEL_DEBUG);
+
+  // Parse command line attribute
+  CommandLine cmd;
+  cmd.AddValue ("traceFile", "Ns2 movement trace file", traceFile);
+  cmd.AddValue ("nodeNum", "Number of nodes", nodeNum);
+  cmd.AddValue ("duration", "Duration of Simulation", duration);
+  cmd.AddValue ("logFile", "Log file", logFile);
+  cmd.Parse (argc,argv);
+
+  // Check command line arguments
+  if (traceFile.empty () || nodeNum <= 0 || duration <= 0 || logFile.empty ())
+    {
+      std::cout << "Usage of " << argv[0] << " :\n\n"
+      "./waf --run \"ns2-mobility-trace"
+      " --traceFile=/home/mgiachino/ns-3-dev/examples/mobility/default.ns_movements"
+      " --nodeNum=2 --duration=100.0 --logFile=main-ns2-mob.log\" \n\n"
+      "NOTE: ns2-traces-file could be an absolute or relative path. You could use the file default.ns_movements\n"
+      "      included in the same directory that the present file.\n\n"
+      "NOTE 2: Number of nodes present in the trace file must match with the command line argument and must\n"
+      "        be a positive number. Note that you must know it before to be able to load it.\n\n"
+      "NOTE 3: Duration must be a positive number. Note that you must know it before to be able to load it.\n\n";
+
+      return 0;
+    }
+
+  // Create Ns2MobilityHelper with the specified trace log file as parameter
+  Ns2MobilityHelper ns2 = Ns2MobilityHelper (traceFile);
+
+  // open log file for output
+  std::ofstream os;
+  os.open (logFile.c_str ());
+
+
+
+  // Create all nodes.
+  NodeContainer stas;
+  stas.Create (nodeNum);
+
+  ns2.Install (); // configure movements for each node, while reading trace file
+
+  // Configure callback for logging
+  Config::Connect ("/NodeList/*/$ns3::MobilityModel/CourseChange",
+                   MakeBoundCallback (&CourseChange, &os));
+
+  Simulator::Stop (Seconds (duration));
+  Simulator::Run ();
+  Simulator::Destroy ();
+
+  os.close (); // close log file
+  return 0;
+}
--- a/src/mobility/examples/wscript	Fri Sep 21 13:47:41 2012 +0200
+++ b/src/mobility/examples/wscript	Fri Sep 21 12:43:24 2012 -0700
@@ -16,3 +16,6 @@
                                  ['core', 'mobility'])
     obj.source = 'main-random-walk.cc'
 
+    obj = bld.create_ns3_program('ns2-mobility-trace', 
+                                 ['core', 'mobility'])
+    obj.source = 'ns2-mobility-trace.cc'