dbus: Add example script for fetching all properties with Getall
authorJouni Malinen <j@w1.fi>
Fri, 1 Jan 2010 09:00:11 +0000 (11:00 +0200)
committerJouni Malinen <j@w1.fi>
Fri, 1 Jan 2010 09:00:11 +0000 (11:00 +0200)
wpa_supplicant/examples/wpas-dbus-new-getall.py [new file with mode: 0755]

diff --git a/wpa_supplicant/examples/wpas-dbus-new-getall.py b/wpa_supplicant/examples/wpas-dbus-new-getall.py
new file mode 100755 (executable)
index 0000000..ea4a48a
--- /dev/null
@@ -0,0 +1,116 @@
+#!/usr/bin/python
+
+import dbus
+import sys, os
+import time
+import gobject
+
+WPAS_DBUS_SERVICE = "fi.w1.wpa_supplicant1"
+WPAS_DBUS_INTERFACE = "fi.w1.wpa_supplicant1"
+WPAS_DBUS_OPATH = "/fi/w1/wpa_supplicant1"
+
+WPAS_DBUS_INTERFACES_INTERFACE = "fi.w1.wpa_supplicant1.Interface"
+WPAS_DBUS_INTERFACES_OPATH = "/fi/w1/wpa_supplicant1/Interfaces"
+WPAS_DBUS_BSS_INTERFACE = "fi.w1.wpa_supplicant1.Interface.BSS"
+
+def showBss(bss):
+       net_obj = bus.get_object(WPAS_DBUS_SERVICE, bss)
+       net = dbus.Interface(net_obj, WPAS_DBUS_BSS_INTERFACE)
+       props = net_obj.GetAll(WPAS_DBUS_BSS_INTERFACE,
+                              dbus_interface=dbus.PROPERTIES_IFACE)
+       print props
+       props = net_obj.Get(WPAS_DBUS_BSS_INTERFACE, 'Properties',
+                           dbus_interface=dbus.PROPERTIES_IFACE)
+       #print props
+
+       # Convert the byte-array for SSID and BSSID to printable strings
+       bssid = ""
+       for item in props['BSSID']:
+               bssid = bssid + ":%02x" % item
+       bssid = bssid[1:]
+       ssid = byte_array_to_string(props["SSID"])
+
+       wpa = "no"
+       if props.has_key("WPAIE"):
+               wpa = "yes"
+       wpa2 = "no"
+       if props.has_key("RSNIE"):
+               wpa2 = "yes"
+       freq = 0
+       if props.has_key("Frequency"):
+               freq = props["Frequency"]
+       caps = props["Capabilities"]
+       qual = props["Quality"]
+       level = props["Level"]
+       noise = props["Noise"]
+       maxrate = props["MaxRate"] / 1000000
+
+       print "  %s  ::  ssid='%s'  wpa=%s  wpa2=%s  quality=%d%%  rate=%d  freq=%d" % (bssid, ssid, wpa, wpa2, qual, maxrate, freq)
+
+def scanDone(success):
+       gobject.MainLoop().quit()
+       print "Scan done: success=%s" % success
+       
+       res = if_obj.Get(WPAS_DBUS_INTERFACES_INTERFACE, 'BSSs',
+                        dbus_interface=dbus.PROPERTIES_IFACE)
+       props = if_obj.GetAll(WPAS_DBUS_INTERFACES_INTERFACE,
+                             dbus_interface=dbus.PROPERTIES_IFACE)
+       print props
+
+       print "Scanned wireless networks:"
+       for opath in res:
+               print opath
+               showBss(opath)
+
+def main():
+       bus = dbus.SystemBus()
+       wpas_obj = bus.get_object("fi.w1.wpa_supplicant1",
+                                 "/fi/w1/wpa_supplicant1")
+       props = wpas_obj.GetAll("fi.w1.wpa_supplicant1",
+                               dbus_interface=dbus.PROPERTIES_IFACE)
+       print "GetAll(fi.w1.wpa_supplicant1, /fi/w1/wpa_supplicant1):"
+       print props
+
+       if len(sys.argv) != 2:
+               os._exit(1)
+
+       ifname = sys.argv[1]
+
+       wpas = dbus.Interface(wpas_obj, "fi.w1.wpa_supplicant1")
+       path = wpas.GetInterface(ifname)
+       if_obj = bus.get_object("fi.w1.wpa_supplicant1", path)
+       props = if_obj.GetAll("fi.w1.wpa_supplicant1.Interface",
+                             dbus_interface=dbus.PROPERTIES_IFACE)
+       print
+       print "GetAll(fi.w1.wpa_supplicant1.Interface, %s):" % (path)
+       print props
+
+       props = if_obj.GetAll("fi.w1.wpa_supplicant1.Interface.WPS",
+                             dbus_interface=dbus.PROPERTIES_IFACE)
+       print
+       print "GetAll(fi.w1.wpa_supplicant1.Interface.WPS, %s):" % (path)
+       print props
+
+       res = if_obj.Get("fi.w1.wpa_supplicant1.Interface", 'BSSs',
+                        dbus_interface=dbus.PROPERTIES_IFACE)
+       if len(res) > 0:
+               bss_obj = bus.get_object("fi.w1.wpa_supplicant1", res[0])
+               props = bss_obj.GetAll("fi.w1.wpa_supplicant1.Interface.BSS",
+                                      dbus_interface=dbus.PROPERTIES_IFACE)
+               print
+               print "GetAll(fi.w1.wpa_supplicant1.Interface.BSS, %s):" % (res[0])
+               print props
+
+       res = if_obj.Get("fi.w1.wpa_supplicant1.Interface", 'Networks',
+                        dbus_interface=dbus.PROPERTIES_IFACE)
+       if len(res) > 0:
+               net_obj = bus.get_object("fi.w1.wpa_supplicant1", res[0])
+               props = net_obj.GetAll("fi.w1.wpa_supplicant1.Interface.Network",
+                                      dbus_interface=dbus.PROPERTIES_IFACE)
+               print
+               print "GetAll(fi.w1.wpa_supplicant1.Interface.Network, %s):" % (res[0])
+               print props
+
+if __name__ == "__main__":
+       main()
+