5 from visualizer.base import Link, transform_distance_canvas_to_simulation
21 def __init__(self, parent_canvas_item, sta, dev):
22 """! Initialize function.
23 @param self The object pointer.
24 @param parent_canvas_item: parent canvas
25 @param sta The STA node
34 visibility=goocanvas.ITEM_HIDDEN)
37 stroke_color_rgba=0xC00000FF,
38 line_dash=goocanvas.LineDash([2.0, 2.0 ]))
39 self.invisible_line.props.pointer_events = (goocanvas.EVENTS_STROKE_MASK
40 |goocanvas.EVENTS_FILL_MASK
41 |goocanvas.EVENTS_PAINTED_MASK)
42 self.canvas_item.set_data(
"pyviz-object", self)
43 self.canvas_item.lower(
None)
48 @param self The object pointer.
54 if self.
node2 is not None:
55 self.node2.remove_link(self)
57 if self.
node2 is None:
58 self.canvas_item.set_property(
"visibility", goocanvas.ITEM_HIDDEN)
60 self.node2.add_link(self)
61 self.canvas_item.set_property(
"visibility", goocanvas.ITEM_VISIBLE)
65 """! Update points function.
66 @param self The object pointer.
69 if self.
node2 is None:
71 pos1_x, pos1_y = self.node1.get_position()
72 pos2_x, pos2_y = self.node2.get_position()
73 points = goocanvas.Points([(pos1_x, pos1_y), (pos2_x, pos2_y)])
74 self.visible_line.set_property(
"points", points)
75 self.invisible_line.set_property(
"points", points)
78 """! Destroy function.
79 @param self The object pointer.
82 self.canvas_item.destroy()
87 """! Destroy function.
88 @param self The object pointer.
89 @param tooltip The tooltip.
92 pos1_x, pos1_y = self.node1.get_position()
93 pos2_x, pos2_y = self.node2.get_position()
97 mac = self.dev.GetMac()
98 tooltip.set_text((
"WiFi link between STA Node %i and AP Node %i; distance=%.2f m.\n"
101 % (self.node1.node_index, self.node2.node_index, d,
102 mac.GetSsid(), mac.GetBssid()))
111 """! Initialize function.
112 @param self The object pointer.
113 @param dummy_viz A dummy visualizer
120 """! Scan nodes function.
121 @param self The object pointer.
122 @param viz The visualizer object
125 for (sta_netdevice, viz_node, wifi_link)
in self.
stations:
131 for node
in viz.nodes.itervalues():
132 ns3_node = ns.network.NodeList.GetNode(node.node_index)
133 for devI
in range(ns3_node.GetNDevices()):
134 dev = ns3_node.GetDevice(devI)
135 if not isinstance(dev, ns.wifi.WifiNetDevice):
137 wifi_mac = dev.GetMac()
138 if isinstance(wifi_mac, ns.wifi.StaWifiMac):
139 wifi_link =
WifiLink(viz.links_group, node, dev)
140 self.stations.append((dev, node, wifi_link))
141 elif isinstance(wifi_mac, ns.wifi.ApWifiMac):
142 bssid = ns.network.Mac48Address.ConvertFrom(dev.GetAddress())
148 """! Simulation Periodic Update function.
149 @param self The object pointer.
150 @param viz The visualizer object
153 for (sta_netdevice, viz_node, wifi_link)
in self.
stations:
154 if not sta_netdevice.IsLinkUp():
155 wifi_link.set_ap(
None)
157 bssid = str(sta_netdevice.GetMac().GetBssid())
158 if bssid ==
'00:00:00:00:00:00':
159 wifi_link.set_ap(
None)
165 """! Update View function.
166 @param self The object pointer.
167 @param viz The visualizer object
170 for (dummy_sta_netdevice, dummy_viz_node, wifi_link)
in self.
stations:
171 if wifi_link
is not None:
172 wifi_link.update_points()
177 viz.connect(
"simulation-periodic-update", link_monitor.simulation_periodic_update)
178 viz.connect(
"update-view", link_monitor.update_view)
179 viz.connect(
"topology-scanned", link_monitor.scan_nodes)
def tooltip_query(self, tooltip)
Destroy function.
def simulation_periodic_update(self, viz)
Simulation Periodic Update function.
def __init__(self, dummy_viz)
Initialize function.
def update_points(self)
Update points function.
invisible_line
invisible line
def update_view(self, viz)
Update View function.
canvas_item
parent_canvas_item
def set_ap(self, ap)
Set AP.
access_points
bssid -> node
def scan_nodes(self, viz)
Scan nodes function.
def __init__(self, parent_canvas_item, sta, dev)
Initialize function.
def destroy(self)
Destroy function.
stations
list of (sta_netdevice, viz_node, wifi_link)
def transform_distance_canvas_to_simulation(d)