--- a/src/node/hierarchical-mobility-model.cc Thu Jul 19 10:21:27 2007 +0200
+++ b/src/node/hierarchical-mobility-model.cc Thu Jul 19 10:28:48 2007 +0200
@@ -77,6 +77,16 @@
position.z - parentPosition.z);
m_child->Set (childPosition);
}
+Speed
+HierarchicalMobilityModel::DoGetSpeed (void) const
+{
+ Speed parentSpeed = m_parent->GetSpeed ();
+ Speed childSpeed = m_child->GetSpeed ();
+ Speed speed (parentSpeed.dx + childSpeed.dx,
+ parentSpeed.dy + childSpeed.dy,
+ parentSpeed.dz + childSpeed.dz);
+ return speed;
+}
void
HierarchicalMobilityModel::ParentChanged (Ptr<const MobilityModel> model)
--- a/src/node/hierarchical-mobility-model.h Thu Jul 19 10:21:27 2007 +0200
+++ b/src/node/hierarchical-mobility-model.h Thu Jul 19 10:28:48 2007 +0200
@@ -38,6 +38,7 @@
private:
virtual Position DoGet (void) const;
virtual void DoSet (const Position &position);
+ virtual Speed DoGetSpeed (void) const;
void ParentChanged (Ptr<const MobilityModel> model);
void ChildChanged (Ptr<const MobilityModel> model);
--- a/src/node/mobility-model.cc Thu Jul 19 10:21:27 2007 +0200
+++ b/src/node/mobility-model.cc Thu Jul 19 10:28:48 2007 +0200
@@ -39,6 +39,11 @@
{
return DoGet ();
}
+Speed
+MobilityModel::GetSpeed (void) const
+{
+ return DoGetSpeed ();
+}
void
MobilityModel::Set (double x, double y, double z)
--- a/src/node/mobility-model.h Thu Jul 19 10:21:27 2007 +0200
+++ b/src/node/mobility-model.h Thu Jul 19 10:28:48 2007 +0200
@@ -23,6 +23,7 @@
#include "ns3/object.h"
#include "position.h"
+#include "speed.h"
namespace ns3 {
@@ -45,9 +46,9 @@
* Unit is meters
*/
Position Get (void) const;
-
void Set (double x, double y, double z);
void Set (const Position &position);
+ Speed GetSpeed (void) const;
/**
* \param position a reference to another position object instance
* \returns the distance between the two objects.
@@ -74,6 +75,7 @@
*/
virtual Position DoGet (void) const = 0;
virtual void DoSet (const Position &position) = 0;
+ virtual Speed DoGetSpeed (void) const = 0;
};
}; // namespace ns3
--- a/src/node/random-direction-mobility-model.cc Thu Jul 19 10:21:27 2007 +0200
+++ b/src/node/random-direction-mobility-model.cc Thu Jul 19 10:28:48 2007 +0200
@@ -186,6 +186,11 @@
Simulator::Remove (m_event);
m_event = Simulator::ScheduleNow (&RandomDirectionMobilityModel::Start, this);
}
+Speed
+RandomDirectionMobilityModel::DoGetSpeed (void) const
+{
+ return m_helper.GetSpeed ();
+}
--- a/src/node/random-direction-mobility-model.h Thu Jul 19 10:21:27 2007 +0200
+++ b/src/node/random-direction-mobility-model.h Thu Jul 19 10:28:48 2007 +0200
@@ -72,6 +72,7 @@
virtual void DoDispose (void);
virtual Position DoGet (void) const;
virtual void DoSet (const Position &position);
+ virtual Speed DoGetSpeed (void) const;
static const double PI;
Ptr<RandomDirectionParameters> m_parameters;
--- a/src/node/random-walk-2d-mobility-model.cc Thu Jul 19 10:21:27 2007 +0200
+++ b/src/node/random-walk-2d-mobility-model.cc Thu Jul 19 10:28:48 2007 +0200
@@ -192,6 +192,12 @@
Simulator::Remove (m_event);
m_event = Simulator::ScheduleNow (&RandomWalk2dMobilityModel::Start, this);
}
+Speed
+RandomWalk2dMobilityModel::DoGetSpeed (void) const
+{
+ return m_helper.GetSpeed ();
+}
+
} // namespace ns3
--- a/src/node/random-walk-2d-mobility-model.h Thu Jul 19 10:21:27 2007 +0200
+++ b/src/node/random-walk-2d-mobility-model.h Thu Jul 19 10:28:48 2007 +0200
@@ -111,6 +111,7 @@
virtual void DoDispose (void);
virtual Position DoGet (void) const;
virtual void DoSet (const Position &position);
+ virtual Speed DoGetSpeed (void) const;
StaticSpeedHelper m_helper;
EventId m_event;
--- a/src/node/random-waypoint-mobility-model.cc Thu Jul 19 10:21:27 2007 +0200
+++ b/src/node/random-waypoint-mobility-model.cc Thu Jul 19 10:28:48 2007 +0200
@@ -122,6 +122,11 @@
Simulator::Remove (m_event);
Simulator::ScheduleNow (&RandomWaypointMobilityModel::Start, this);
}
+Speed
+RandomWaypointMobilityModel::DoGetSpeed (void) const
+{
+ return m_helper.GetSpeed ();
+}
} // namespace ns3
--- a/src/node/random-waypoint-mobility-model.h Thu Jul 19 10:21:27 2007 +0200
+++ b/src/node/random-waypoint-mobility-model.h Thu Jul 19 10:28:48 2007 +0200
@@ -60,6 +60,8 @@
void Start (void);
virtual Position DoGet (void) const;
virtual void DoSet (const Position &position);
+ virtual Speed DoGetSpeed (void) const;
+
StaticSpeedHelper m_helper;
Ptr<RandomWaypointMobilityModelParameters> m_parameters;
EventId m_event;
--- a/src/node/static-mobility-model.cc Thu Jul 19 10:21:27 2007 +0200
+++ b/src/node/static-mobility-model.cc Thu Jul 19 10:28:48 2007 +0200
@@ -22,22 +22,15 @@
namespace ns3 {
-const InterfaceId StaticMobilityModel::iid = MakeInterfaceId ("StaticMobilityModel", MobilityModel::iid);
-const ClassId StaticMobilityModel::cid = MakeClassId<StaticMobilityModel,double, double> ("StaticMobilityModel",
- StaticMobilityModel::iid);
-
+const ClassId StaticMobilityModel::cid = MakeClassId<StaticMobilityModel> ("StaticMobilityModel",
+ MobilityModel::iid);
+
StaticMobilityModel::StaticMobilityModel ()
- : m_x (0.0), m_y (0.0), m_z (0.0)
{
SetInterfaceId (StaticMobilityModel::iid);
}
-StaticMobilityModel::StaticMobilityModel (double x, double y)
- : m_x (x), m_y (y), m_z (0.0)
-{
- SetInterfaceId (StaticMobilityModel::iid);
-}
-StaticMobilityModel::StaticMobilityModel (double x, double y, double z)
- : m_x (x), m_y (y), m_z (z)
+StaticMobilityModel::StaticMobilityModel (const Position &position)
+ : m_position (position)
{
SetInterfaceId (StaticMobilityModel::iid);
}
@@ -47,24 +40,18 @@
Position
StaticMobilityModel::DoGet (void) const
{
- return Position (m_x, m_y, m_z);
+ return m_position;
}
void
StaticMobilityModel::DoSet (const Position &position)
{
- bool changed = false;
- if (m_x != position.x || m_y != position.y || m_z != position.z)
- {
- changed = true;
- }
- m_x = position.x;
- m_y = position.y;
- m_z = position.z;
- if (changed)
- {
- NotifyCourseChange ();
- }
+ m_position = position;
+ NotifyCourseChange ();
+}
+Speed
+StaticMobilityModel::DoGetSpeed (void) const
+{
+ return Speed ();
}
-
}; // namespace ns3
--- a/src/node/static-mobility-model.h Thu Jul 19 10:21:27 2007 +0200
+++ b/src/node/static-mobility-model.h Thu Jul 19 10:28:48 2007 +0200
@@ -34,37 +34,25 @@
class StaticMobilityModel : public MobilityModel
{
public:
- static const InterfaceId iid;
static const ClassId cid;
/**
* Create a position located at coordinates (0,0,0)
*/
StaticMobilityModel ();
/**
- * \param x x coordinate
- * \param y y coordinate
- *
- * Create a position located at coordinates (x,y,0).
- * Unit is meters
- */
- StaticMobilityModel (double x, double y);
- /**
- * \param x x coordinate
- * \param y y coordinate
- * \param z z coordinate
*
* Create a position located at coordinates (x,y,z).
* Unit is meters
*/
- StaticMobilityModel (double x, double y, double z);
+ StaticMobilityModel (const Position &position);
virtual ~StaticMobilityModel ();
private:
virtual Position DoGet (void) const;
virtual void DoSet (const Position &position);
- double m_x;
- double m_y;
- double m_z;
+ virtual Speed DoGetSpeed (void) const;
+
+ Position m_position;
};
}; // namespace ns3
--- a/src/node/static-speed-mobility-model.cc Thu Jul 19 10:21:27 2007 +0200
+++ b/src/node/static-speed-mobility-model.cc Thu Jul 19 10:28:48 2007 +0200
@@ -68,5 +68,10 @@
m_helper.InitializePosition (position);
NotifyCourseChange ();
}
+Speed
+StaticSpeedMobilityModel::DoGetSpeed (void) const
+{
+ return m_helper.GetSpeed ();
+}
}; // namespace ns3
--- a/src/node/static-speed-mobility-model.h Thu Jul 19 10:21:27 2007 +0200
+++ b/src/node/static-speed-mobility-model.h Thu Jul 19 10:28:48 2007 +0200
@@ -64,6 +64,7 @@
private:
virtual Position DoGet (void) const;
virtual void DoSet (const Position &position);
+ virtual Speed DoGetSpeed (void) const;
void Update (void) const;
StaticSpeedHelper m_helper;
};