A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
main-random-walk.cc
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2006,2007 INRIA
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  */
18 
19 #include "ns3/core-module.h"
20 #include "ns3/mobility-module.h"
21 
22 using namespace ns3;
23 
24 static void
25 CourseChange (std::string foo, Ptr<const MobilityModel> mobility)
26 {
27  Vector pos = mobility->GetPosition ();
28  Vector vel = mobility->GetVelocity ();
29  std::cout << Simulator::Now () << ", model=" << mobility << ", POS: x=" << pos.x << ", y=" << pos.y
30  << ", z=" << pos.z << "; VEL:" << vel.x << ", y=" << vel.y
31  << ", z=" << vel.z << std::endl;
32 }
33 
34 int main (int argc, char *argv[])
35 {
36  Config::SetDefault ("ns3::RandomWalk2dMobilityModel::Mode", StringValue ("Time"));
37  Config::SetDefault ("ns3::RandomWalk2dMobilityModel::Time", StringValue ("2s"));
38  Config::SetDefault ("ns3::RandomWalk2dMobilityModel::Speed", StringValue ("ns3::ConstantRandomVariable[Constant=1.0]"));
39  Config::SetDefault ("ns3::RandomWalk2dMobilityModel::Bounds", StringValue ("0|200|0|200"));
40 
41  CommandLine cmd;
42  cmd.Parse (argc, argv);
43 
44  NodeContainer c;
45  c.Create (100);
46 
47  MobilityHelper mobility;
48  mobility.SetPositionAllocator ("ns3::RandomDiscPositionAllocator",
49  "X", StringValue ("100.0"),
50  "Y", StringValue ("100.0"),
51  "Rho", StringValue ("ns3::UniformRandomVariable[Min=0|Max=30]"));
52  mobility.SetMobilityModel ("ns3::RandomWalk2dMobilityModel",
53  "Mode", StringValue ("Time"),
54  "Time", StringValue ("2s"),
55  "Speed", StringValue ("ns3::ConstantRandomVariable[Constant=1.0]"),
56  "Bounds", StringValue ("0|200|0|200"));
57  mobility.InstallAll ();
58  Config::Connect ("/NodeList/*/$ns3::MobilityModel/CourseChange",
60 
61  Simulator::Stop (Seconds (100.0));
62 
63  Simulator::Run ();
64 
66  return 0;
67 }
void InstallAll(void)
Perform the work of MobilityHelper::Install on all nodes which exist in the simulation.
double x
x coordinate of vector
Definition: vector.h:49
smart pointer class similar to boost::intrusive_ptr
Definition: ptr.h:60
hold variables of type string
Definition: string.h:18
int main(int argc, char *argv[])
static void Run(void)
Run the simulation until one of:
Definition: simulator.cc:157
Vector GetPosition(void) const
void Connect(std::string path, const CallbackBase &cb)
Definition: config.cc:728
a 3d vector
Definition: vector.h:31
Vector GetVelocity(void) const
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
Definition: callback.h:1242
Parse command-line arguments.
Definition: command-line.h:177
static void Destroy(void)
Every event scheduled by the Simulator::insertAtDestroy method is invoked.
Definition: simulator.cc:121
void SetDefault(std::string name, const AttributeValue &value)
Definition: config.cc:667
keep track of a set of node pointers.
void SetMobilityModel(std::string type, std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue(), std::string n8="", const AttributeValue &v8=EmptyAttributeValue(), std::string n9="", const AttributeValue &v9=EmptyAttributeValue())
double y
y coordinate of vector
Definition: vector.h:53
static Time Now(void)
Return the "current simulation time".
Definition: simulator.cc:180
Helper class used to assign positions and mobility models to nodes.
static void Stop(void)
If an event invokes this method, it will be the last event scheduled by the Simulator::run method bef...
Definition: simulator.cc:165
void Parse(int argc, char *argv[])
Parse the program arguments.
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
void SetPositionAllocator(Ptr< PositionAllocator > allocator)
Set the position allocator which will be used to allocate the initial position of every node initiali...
static void CourseChange(std::string foo, Ptr< const MobilityModel > mobility)
double z
z coordinate of vector
Definition: vector.h:57