mobility+visualizer+python: A specialized version of GetObject (GetMobilityModel) is now implemented in MobilityModel class. This method is now used by the visualizer to obtain mobility interface.

This trick is necessary in order to use in python mobility models that
are not explicitly exported (or impossible to export) to python bindings
generation.
This commit is contained in:
Alexander Afanasyev committed 2013-07-27 15:30:39 -07:00
1 parent 2b0daaa2dd
commit fcbbf82910
2 files changed
+16 -6

No files matched your search

+10
View File
@@ -75,6 +75,9 @@ public:
*/
int64_t AssignStreams (int64_t stream);
static inline Ptr<MobilityModel>
GetMobilityModel (Ptr<Object> node);
protected:
/**
* Must be invoked by subclasses when the course of the
@@ -118,6 +121,13 @@ private:
};
Ptr<MobilityModel>
MobilityModel::GetMobilityModel (Ptr<Object> node)
{
return node->GetObject<MobilityModel> ();
}
} // namespace ns3
#endif /* MOBILITY_MODEL_H */
+6 -6
View File
@@ -173,7 +173,7 @@ class Node(PyVizObject):
self.emit("query-extra-tooltip-info", lines)
mob = ns3_node.GetObject(ns.mobility.MobilityModel.GetTypeId())
mob = ns.mobility.MobilityModel.GetMobilityModel (ns3_node)
if mob is not None:
lines.append(' <b>Mobility Model</b>: %s' % mob.GetInstanceTypeId().GetName())
@@ -308,7 +308,7 @@ class Node(PyVizObject):
def has_mobility(self):
if self._has_mobility is None:
node = ns.network.NodeList.GetNode(self.node_index)
mobility = node.GetObject(ns.mobility.MobilityModel.GetTypeId())
mobility = ns.mobility.MobilityModel.GetMobilityModel (node)
self._has_mobility = (mobility is not None)
return self._has_mobility
@@ -766,7 +766,7 @@ class Visualizer(gobject.GObject):
node_name = "Node %i" % nodeI
node_view = self.get_node(nodeI)
mobility = node.GetObject(ns.mobility.MobilityModel.GetTypeId())
mobility = ns.mobility.MobilityModel.GetMobilityModel (node)
# print "Mobility type: " + mobility.GetInstanceTypeId().GetName()
if mobility is not None:
node_view.set_color("red")
@@ -877,7 +877,7 @@ class Visualizer(gobject.GObject):
for node in self.nodes.itervalues():
if node.has_mobility:
ns3_node = ns.network.NodeList.GetNode(node.node_index)
mobility = ns3_node.GetObject(ns.mobility.MobilityModel.GetTypeId())
mobility = ns.mobility.MobilityModel.GetMobilityModel (ns3_node)
if mobility is not None:
pos = mobility.GetPosition()
x, y = transform_point_simulation_to_canvas(pos.x, pos.y)
@@ -1236,7 +1236,7 @@ class Visualizer(gobject.GObject):
self.simulation.lock.acquire()
try:
ns3_node = ns.network.NodeList.GetNode(node.node_index)
mob = ns3_node.GetObject(ns.mobility.MobilityModel.GetTypeId())
mob = ns.mobility.MobilityModel.GetMobilityModel (ns3_node)
if mob is None:
return
if self.node_drag_state is not None:
@@ -1253,7 +1253,7 @@ class Visualizer(gobject.GObject):
self.simulation.lock.acquire()
try:
ns3_node = ns.network.NodeList.GetNode(node.node_index)
mob = ns3_node.GetObject(ns.mobility.MobilityModel.GetTypeId())
mob = ns.mobility.MobilityModel.GetMobilityModel (ns3_node)
if mob is None:
return False
if self.node_drag_state is None: