24 from diagnostic_msgs.msg
import DiagnosticArray, DiagnosticStatus, KeyValue
27 DIAG_NAME =
'Wifi Status (ddwrt)'
33 stat = DiagnosticStatus()
36 stat.level = DiagnosticStatus.OK
39 stat.values.append(KeyValue(key=
'ESSID', value=msg.essid))
40 stat.values.append(KeyValue(key=
'Mac Address', value=msg.macaddr))
41 stat.values.append(KeyValue(key=
'Signal', value=str(msg.signal)))
42 stat.values.append(KeyValue(key=
'Noise', value=str(msg.noise)))
43 stat.values.append(KeyValue(key=
'Sig/Noise', value=str(msg.snr)))
44 stat.values.append(KeyValue(key=
'Channel', value=str(msg.channel)))
45 stat.values.append(KeyValue(key=
'Rate', value=msg.rate))
46 stat.values.append(KeyValue(key=
'TX Power', value=msg.tx_power))
47 stat.values.append(KeyValue(key=
'Quality', value=str(msg.quality)))
53 diag_stat = DiagnosticStatus()
54 diag_stat.message =
'No Updates'
55 diag_stat.name = DIAG_NAME
57 diag_stat.message =
'Updates Stale'
59 diag_stat.level = DiagnosticStatus.WARN
61 diag_stat.level = DiagnosticStatus.ERROR
73 self.
_diag_pub = rospy.Publisher(
'/diagnostics', DiagnosticArray, queue_size=50)
75 self.
_ddwrt_sub = rospy.Subscriber(
'ddwrt/accesspoint', AccessPoint, self.
_cb)
88 if update_diff > WARN_TIME:
93 ddwrt_stat.values.append(KeyValue(key=
'Time Since Update', value=str(update_diff)))
95 error_state = (rospy.get_time() - self.
_start_time) > ERROR_TIME
97 ddwrt_stat.values.append(KeyValue(key=
'Time Since Update', value=
"N/A"))
99 msg = DiagnosticArray()
100 msg.header.stamp = rospy.get_rostime()
101 msg.status.append(ddwrt_stat)
106 if __name__ ==
'__main__':
108 rospy.init_node(
'ddwrt_diag')
109 except rospy.exceptions.ROSInitException:
110 print(
'Wifi monitor is unable to initialize node. Master may not be running.')
114 rate = rospy.Rate(1.0)
117 while not rospy.is_shutdown():
119 wifi_monitor.publish_stats()
120 except KeyboardInterrupt:
122 except Exception
as e:
124 traceback.print_exc()