20 #include "ns3/mobility-helper.h"
21 #include "ns3/mobility-model.h"
22 #include "ns3/position-allocator.h"
23 #include "ns3/hierarchical-mobility-model.h"
25 #include "ns3/pointer.h"
26 #include "ns3/config.h"
27 #include "ns3/simulator.h"
28 #include "ns3/names.h"
29 #include "ns3/string.h"
38 m_position = CreateObjectWithAttributes<RandomRectanglePositionAllocator>
39 (
"X",
StringValue (
"ns3::ConstantRandomVariable[Constant=0.0]"),
40 "Y",
StringValue (
"ns3::ConstantRandomVariable[Constant=0.0]"));
139 NS_FATAL_ERROR (
"The requested mobility model is not a mobility model: \""<<
145 object->AggregateObject (model);
152 CreateObjectWithAttributes<HierarchicalMobilityModel> (
"Child",
PointerValue (model),
165 Ptr<Node> node = Names::Find<Node> (nodeName);
185 if (v <= 1e-4 && v >= -1e-4)
189 else if (v <= 1e-3 && v >= 0)
193 else if (v >= -1e-3 && v <= 0)
208 <<
" node=" << node->
GetId ();
209 Vector pos = mobility->GetPosition ();
213 Vector vel = mobility->GetVelocity ();
217 std::streamsize saved_precision = os->precision ();
218 std::ios::fmtflags saved_flags = os->flags ();
220 os->setf (std::ios::fixed,std::ios::floatfield);
221 *os <<
" pos=" << pos.
x <<
":" << pos.
y <<
":" << pos.
z
222 <<
" vel=" << vel.
x <<
":" << vel.
y <<
":" << vel.
z
224 os->flags (saved_flags);
225 os->precision (saved_precision);
231 std::ostringstream oss;
232 oss <<
"/NodeList/" << nodeid <<
"/$ns3::MobilityModel/CourseChange";
252 int64_t currentStream = stream;
264 return (currentStream - stream);
static void EnableAscii(Ptr< OutputStreamWrapper > stream, NodeContainer n)
int64_t AssignStreams(int64_t stream)
TypeId GetTypeId(void) const
smart pointer class similar to boost::intrusive_ptr
std::vector< Ptr< Node > >::const_iterator Iterator
hold variables of type string
Hold a value for an Attribute.
Callback< R > MakeBoundCallback(R(*fnPtr)(TX), ARG a1)
void SetTypeId(TypeId tid)
Iterator End(void) const
Get an iterator which indicates past-the-last Node in the container.
int64_t AssignStreams(NodeContainer c, int64_t stream)
void PushReferenceMobilityModel(Ptr< Object > reference)
#define NS_FATAL_ERROR(msg)
fatal error handling
Ptr< PositionAllocator > m_position
Keep track of the current position and velocity of an object.
static double DoRound(double v)
void Install(Ptr< Node > node) const
"Layout" a single node according to the current position allocator type.
Ptr< Object > Create(void) const
static void CourseChanged(Ptr< OutputStreamWrapper > stream, Ptr< const MobilityModel > mobility)
void AggregateObject(Ptr< Object > other)
static void EnableAscii(Ptr< OutputStreamWrapper > stream, uint32_t nodeid)
keep track of a set of node pointers.
hold objects of type Ptr<T>
Iterator Begin(void) const
Get an iterator which refers to the first Node in the container.
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())
std::string reference
reference tag
std::string GetName(void) const
void Set(std::string name, const AttributeValue &value)
void SetPosition(const Vector &position)
static NodeContainer GetGlobal(void)
Create a NodeContainer that contains a list of all nodes created through NodeContainer::Create() and ...
std::vector< Ptr< MobilityModel > > m_mobilityStack
instantiate subclasses of ns3::Object.
NS_LOG_COMPONENT_DEFINE("PacketLossCounter")
uint32_t GetId(void) const
#define NS_LOG_DEBUG(msg)
static void EnableAsciiAll(Ptr< OutputStreamWrapper > stream)
std::string GetMobilityModelType(void) const
void PopReferenceMobilityModel(void)
void SetPositionAllocator(Ptr< PositionAllocator > allocator)
Ptr< T > GetObject(void) const
void ConnectWithoutContext(std::string path, const CallbackBase &cb)
std::ostream * GetStream(void)
Allocate a set of positions. The allocation strategy is implemented in subclasses.