A Discrete-Event Network Simulator
API
ns3::Ns2MobilityHelper Class Reference

Helper class which can read ns-2 movement files and configure nodes mobility. More...

#include "ns2-mobility-helper.h"

+ Collaboration diagram for ns3::Ns2MobilityHelper:

Classes

class  ObjectStore
 a class to hold input objects internally More...
 

Public Member Functions

 Ns2MobilityHelper (std::string filename)
 
void Install () const
 Read the ns2 trace file and configure the movement patterns of all nodes contained in the global ns3::NodeList whose nodeId is matches the nodeId of the nodes in the trace file. More...
 
template<typename T >
void Install (T begin, T end) const
 

Private Member Functions

void ConfigNodesMovements (const ObjectStore &store) const
 Parses ns-2 mobility file to create ns-3 mobility events. More...
 
Ptr< ConstantVelocityMobilityModelGetMobilityModel (std::string idString, const ObjectStore &store) const
 Get or create a ConstantVelocityMobilityModel corresponding to idString. More...
 

Private Attributes

std::string m_filename
 filename of file containing ns-2 mobility trace More...
 

Detailed Description

Helper class which can read ns-2 movement files and configure nodes mobility.

This implementation is based on the ns2 movement documentation of ns2 as described in http://www.isi.edu/nsnam/ns/doc/node172.html

Valid trace files use the following ns2 statements:

  $node set X_ x1
  $node set Y_ y1
  $node set Z_ z1
  $ns at $time $node setdest x2 y2 speed
  $ns at $time $node set X_ x1
  $ns at $time $node set Y_ Y1
  $ns at $time $node set Z_ Z1

Note that initial position statements may also appear at the end of the mobility file like this:

  $ns at $time $node setdest x2 y2 speed
  $ns at $time $node set X_ x1
  $ns at $time $node set Y_ Y1
  $ns at $time $node set Z_ Z1
  $node set X_ x1
  $node set Y_ y1
  $node set Z_ z1

The following tools are known to support this format:

See usage example in examples/mobility/ns2-mobility-trace.cc

Bug:
Rounding errors may cause movement to diverge from the mobility pattern in ns-2 (using the same trace). See https://www.nsnam.org/bugzilla/show_bug.cgi?id=1316

Definition at line 77 of file ns2-mobility-helper.h.

Constructor & Destructor Documentation

◆ Ns2MobilityHelper()

ns3::Ns2MobilityHelper::Ns2MobilityHelper ( std::string  filename)
Parameters
filenamefilename of file which contains the ns2 movement trace.

Definition at line 233 of file ns2-mobility-helper.cc.

References create-module::file, m_filename, and NS_FATAL_ERROR.

Member Function Documentation

◆ ConfigNodesMovements()

void ns3::Ns2MobilityHelper::ConfigNodesMovements ( const ObjectStore store) const
private

Parses ns-2 mobility file to create ns-3 mobility events.

Parameters
storeObject store containing ns-3 mobility models

Definition at line 266 of file ns2-mobility-helper.cc.

References ns3::ParseResult::dvals, create-module::file, GetMobilityModel(), ns3::GetNodeIdInt(), ns3::GetNodeIdString(), ns3::IsNumber(), ns3::IsSchedMobilityPos(), ns3::IsSchedSetPos(), ns3::IsSetInitialPos(), m_filename, ns3::DestinationPoint::m_finalPosition, NS_LOG_DEBUG, NS_LOG_ERROR, NS_LOG_LOGIC, NS_LOG_WARN, ns3::ParseNs2Line(), ns3::SetInitialPosition(), ns3::SetMovement(), ns3::SetSchedPosition(), and ns3::ParseResult::tokens.

Referenced by Install().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetMobilityModel()

Ptr< ConstantVelocityMobilityModel > ns3::Ns2MobilityHelper::GetMobilityModel ( std::string  idString,
const ObjectStore store 
) const
private

Get or create a ConstantVelocityMobilityModel corresponding to idString.

Parameters
idStringstring name for a node
storeObject store containing ns-3 mobility models
Returns
pointer to a ConstantVelocityMobilityModel

Definition at line 245 of file ns2-mobility-helper.cc.

References ns3::Ns2MobilityHelper::ObjectStore::Get().

Referenced by ConfigNodesMovements().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Install() [1/2]

void ns3::Ns2MobilityHelper::Install ( ) const

Read the ns2 trace file and configure the movement patterns of all nodes contained in the global ns3::NodeList whose nodeId is matches the nodeId of the nodes in the trace file.

Definition at line 864 of file ns2-mobility-helper.cc.

References ns3::NodeList::Begin(), and ns3::NodeList::End().

+ Here is the call graph for this function:

◆ Install() [2/2]

template<typename T >
void ns3::Ns2MobilityHelper::Install ( begin,
end 
) const
Parameters
beginan iterator which points to the start of the input object array.
endan iterator which points to the end of the input object array.

Read the ns2 trace file and configure the movement patterns of all input objects. Each input object is identified by a unique node id which reflects the index of the object in the input array.

Definition at line 150 of file ns2-mobility-helper.h.

References ConfigNodesMovements().

+ Here is the call graph for this function:

Member Data Documentation

◆ m_filename

std::string ns3::Ns2MobilityHelper::m_filename
private

filename of file containing ns-2 mobility trace

Definition at line 140 of file ns2-mobility-helper.h.

Referenced by Ns2MobilityHelper(), and ConfigNodesMovements().


The documentation for this class was generated from the following files: