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)