From 5e3d0126e35059640890bc7bd3d25ab6688f7bbd Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Wed, 18 Jul 2007 14:08:34 +0200 Subject: [PATCH] add default value support to random waypoint --- src/node/random-waypoint-mobility-model.cc | 42 +++++++++++++++++++++- src/node/random-waypoint-mobility-model.h | 2 ++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/node/random-waypoint-mobility-model.cc b/src/node/random-waypoint-mobility-model.cc index c85616a6a..a80a9c944 100644 --- a/src/node/random-waypoint-mobility-model.cc +++ b/src/node/random-waypoint-mobility-model.cc @@ -1,12 +1,35 @@ #include "ns3/simulator.h" #include "ns3/random-variable.h" +#include "ns3/random-variable-default-value.h" +#include "ns3/component-manager.h" #include "random-waypoint-mobility-model.h" #include "random-position.h" namespace ns3 { +static RandomVariableDefaultValue +g_speed ("RandomWaypointSpeed", + "A random variable used to pick the speed of a random waypoint model.", + "Uniform:0.3:0.7"); + +static RandomVariableDefaultValue +g_pause ("RandomWaypointPause", + "A random variable used to pick the pause of a random waypoint model.", + "Constant:2"); + +static ClassIdDefaultValue +g_position ("RandomWaypointPosition", + "A random position model used to pick the next waypoint position.", + RandomPosition::iid, + "RandomPositionRectangle"); + RandomWaypointMobilityModelParameters::RandomWaypointMobilityModelParameters () -{} + : m_speed (g_speed.GetCopy ()), + m_pause (g_pause.GetCopy ()) +{ + m_position = ComponentManager::Create (g_position.GetValue (), + RandomPosition::iid); +} RandomWaypointMobilityModelParameters::RandomWaypointMobilityModelParameters (Ptr randomPosition, const RandomVariable &speed, const RandomVariable &pause) @@ -41,6 +64,23 @@ RandomWaypointMobilityModelParameters::DoDispose (void) m_speed = 0; } +Ptr +RandomWaypointMobilityModelParameters::GetCurrent (void) +{ + static Ptr parameters = 0; + if (parameters == 0 || + g_position.IsDirty () || + g_pause.IsDirty () || + g_speed.IsDirty ()) + { + parameters = Create (); + } + return parameters; +} + +RandomWaypointMobilityModel::RandomWaypointMobilityModel () + : m_parameters (RandomWaypointMobilityModelParameters::GetCurrent ()) +{} RandomWaypointMobilityModel::RandomWaypointMobilityModel (Ptr parameters) : m_parameters (parameters) diff --git a/src/node/random-waypoint-mobility-model.h b/src/node/random-waypoint-mobility-model.h index b56ae997e..8b07040d5 100644 --- a/src/node/random-waypoint-mobility-model.h +++ b/src/node/random-waypoint-mobility-model.h @@ -42,6 +42,7 @@ public: void SetPause (const RandomVariable &pause); private: friend class RandomWaypointMobilityModel; + static Ptr GetCurrent (void); virtual void DoDispose (void); RandomVariable *m_speed; RandomVariable *m_pause; @@ -51,6 +52,7 @@ private: class RandomWaypointMobilityModel : public MobilityModel { public: + RandomWaypointMobilityModel (); RandomWaypointMobilityModel (Ptr parameters); private: void Start (void);