def gen_accesspoint_msg(iface): msg = AccessPoint() msg.essid = iface.essid msg.macaddr = iface.bssid msg.signal = iface.wifi_signal msg.noise = iface.wifi_noise msg.snr = msg.signal - msg.noise msg.quality = iface.wifi_quality msg.rate = iface.wifi_rate msg.tx_power = iface.wifi_txpower msg.channel = MultiInterfaceDiagPublisher.frequency_to_channel(iface.wifi_frequency) return msg
def _publish_status(self): now = rospy.get_rostime() # current_iface_id ai = self.interface_selector.active_interfaces if not ai or ai[0] not in self._interfaces: index = -1 else: index = self._interfaces.index(ai[0]) self.iface_id_pub.publish(index) # accesspoint best_active = self.interface_selector.radio_manager.best_active for iface in self._wireless_interfaces: msg = self.gen_accesspoint_msg(iface) msg.header.stamp = now self.all_ap_pub[iface].publish(msg) if iface == best_active: self.ap_pub.publish(msg) if best_active is None: self.ap_pub.publish(AccessPoint()) # status msg = MultiInterfaceStatus() for iface in self._interfaces: msg.interfaces.append(self.gen_status_msg(iface)) self.status_pub.publish(msg) # diagnostics diags = [] diags.append(('Tunnel Interface', self.interface_selector.tunnel_interface)) if self.interface_selector.active_interfaces and \ self.interface_selector.active_interfaces[0].score != self.interface_selector.TERRIBLE_INTERFACE: act_iface = self.interface_selector.active_interfaces[0] diags.append(('Active Interface', act_iface.iface )) diags += act_iface.diags if act_iface.goodness > 95: diag_summary = "Active interface %s running strong"%act_iface.iface diag_level = 0 elif act_iface.goodness > 50: diag_summary = "Active interface %s is lossy"%act_iface.iface diag_level = 1 else: if act_iface.goodness > 0: diag_summary = "Active interface %s is very poor"%act_iface.iface else: diag_summary = "Active interface %s is failing to ping"%act_iface.iface diag_level = 2 else: diags.append(('Active Interface', "none")) diag_summary = 'No active interface' diag_level = 2 ds = self.fill_diags("synthetic interface", diag_summary, self.hostname, diags) ds.level = diag_level statuses = [ds] for iface in self._interfaces: status = iface.status if status == InterfaceStatus.STATE_ADDR and iface.ping_loss < 100: status = InterfaceStatus.STATE_PINGING diag_summary = "Connected (goodness %f, reliability %f)"%(iface.goodness, iface.reliability) else: diag_summary = STATUSES[status] ds = self.fill_diags(iface.iface, diag_summary, self.hostname, iface.diags) statuses.append(ds) da = DiagnosticArray() da.header.stamp = rospy.get_rostime() da.status = statuses self.diag_pub.publish(da)
def gen_accesspoint_msg(iface): msg = AccessPoint() msg.essid = iface.essid msg.macaddr = iface.bssid msg.signal = iface.wifi_signal msg.noise = iface.wifi_noise msg.snr = msg.signal - msg.noise msg.quality = iface.wifi_quality msg.rate = iface.wifi_rate msg.tx_power = iface.wifi_txpower msg.channel = IEEE80211_Channels.get_channel(iface.wifi_frequency * 1e6) return msg
def fetchCurrentAP(self): url = "http://%s/Status_Wireless.live.asp" % self.hostname response = self.newBrowser().open(url) body = response.read() line = None lines = body.split("\n") d = {} for line in lines: line = line[1:-1] line = line.replace(" ", "") parts = line.split("::", 1) if len(parts) == 2: d[parts[0]] = parts[1] essid = d.get('wl_ssid', '') wl_channel = d.get('wl_channel', '').split()[0] channel = int(wl_channel) rate = d.get('wl_rate', '') signal = None noise = None snr = None quality = None tx_power = d.get('wl_xmit', '') active_wireless = d.get('active_wireless', None) ap = None if active_wireless: active_wireless = active_wireless.replace("'", "") parts = active_wireless.split(",") macaddr = parts[0] interface = parts[1] if len(parts) == 7: signal = int(parts[4]) noise = int(parts[5]) snr = int(parts[6]) quality = signal * 1.24 + 116 else: signal = int(parts[5]) noise = int(parts[6]) snr = int(parts[7]) quality = int(parts[8]) / 10 #self.fetchBandwidthStats(interface) #make sure that we put a stamp on things header = Header() header.stamp = rospy.Time.now() ap = AccessPoint(header=header, essid=essid, macaddr=macaddr, signal=signal, noise=noise, snr=snr, channel=channel, rate=rate, quality=quality, tx_power=tx_power) return ap
def __init__(self): self.ap = AccessPoint() self.t = time.time() self._pick_ap()
def gen_accesspoint_msg(iface): msg = AccessPoint() msg.essid = iface.essid msg.macaddr = iface.bssid msg.signal = iface.wifi_signal msg.noise = iface.wifi_noise msg.snr = msg.signal - msg.noise msg.quality = iface.wifi_quality msg.rate = iface.wifi_rate msg.tx_power = iface.wifi_txpower msg.channel = MultiInterfaceDiagPublisher.frequency_to_channel( iface.wifi_frequency) return msg