5 from visualizer.base import Link, transform_distance_canvas_to_simulation
8 def __init__(self, parent_canvas_item, sta, dev):
15 visibility=goocanvas.ITEM_HIDDEN)
18 stroke_color_rgba=0xC00000FF,
19 line_dash=goocanvas.LineDash([2.0, 2.0 ]))
20 self.invisible_line.props.pointer_events = (goocanvas.EVENTS_STROKE_MASK
21 |goocanvas.EVENTS_FILL_MASK
22 |goocanvas.EVENTS_PAINTED_MASK)
23 self.canvas_item.set_data(
"pyviz-object", self)
24 self.canvas_item.lower(
None)
30 if self.
node2 is not None:
31 self.node2.remove_link(self)
33 if self.
node2 is None:
34 self.canvas_item.set_property(
"visibility", goocanvas.ITEM_HIDDEN)
36 self.node2.add_link(self)
37 self.canvas_item.set_property(
"visibility", goocanvas.ITEM_VISIBLE)
41 if self.
node2 is None:
43 pos1_x, pos1_y = self.node1.get_position()
44 pos2_x, pos2_y = self.node2.get_position()
45 points = goocanvas.Points([(pos1_x, pos1_y), (pos2_x, pos2_y)])
46 self.visible_line.set_property(
"points", points)
47 self.invisible_line.set_property(
"points", points)
50 self.canvas_item.destroy()
55 pos1_x, pos1_y = self.node1.get_position()
56 pos2_x, pos2_y = self.node2.get_position()
60 mac = self.dev.GetMac()
61 tooltip.set_text((
"WiFi link between STA Node %i and AP Node %i; distance=%.2f m.\n"
64 % (self.node1.node_index, self.node2.node_index, d,
65 mac.GetSsid(), mac.GetBssid()))
74 for (sta_netdevice, viz_node, wifi_link)
in self.
stations:
80 for node
in viz.nodes.itervalues():
81 ns3_node = ns.network.NodeList.GetNode(node.node_index)
82 for devI
in range(ns3_node.GetNDevices()):
83 dev = ns3_node.GetDevice(devI)
84 if not isinstance(dev, ns.wifi.WifiNetDevice):
86 wifi_mac = dev.GetMac()
87 if isinstance(wifi_mac, ns.wifi.StaWifiMac):
88 wifi_link =
WifiLink(viz.links_group, node, dev)
89 self.stations.append((dev, node, wifi_link))
90 elif isinstance(wifi_mac, ns.wifi.ApWifiMac):
91 bssid = ns.network.Mac48Address.ConvertFrom(dev.GetAddress())
97 for (sta_netdevice, viz_node, wifi_link)
in self.
stations:
98 if not sta_netdevice.IsLinkUp():
99 wifi_link.set_ap(
None)
101 bssid = str(sta_netdevice.GetMac().GetBssid())
102 if bssid ==
'00:00:00:00:00:00':
103 wifi_link.set_ap(
None)
109 for (dummy_sta_netdevice, dummy_viz_node, wifi_link)
in self.
stations:
110 if wifi_link
is not None:
111 wifi_link.update_points()
116 viz.connect(
"simulation-periodic-update", link_monitor.simulation_periodic_update)
117 viz.connect(
"update-view", link_monitor.update_view)
118 viz.connect(
"topology-scanned", link_monitor.scan_nodes)
def simulation_periodic_update
def transform_distance_canvas_to_simulation