dbus: Set ProcessCredentials to get WPS Credential signal
[libeap.git] / wpa_supplicant / examples / wpas-dbus-new-wps.py
1 #!/usr/bin/python
2
3 import dbus
4 import sys, os
5 import time
6 import gobject
7 from dbus.mainloop.glib import DBusGMainLoop
8
9 WPAS_DBUS_SERVICE = "fi.w1.wpa_supplicant1"
10 WPAS_DBUS_INTERFACE = "fi.w1.wpa_supplicant1"
11 WPAS_DBUS_OPATH = "/fi/w1/wpa_supplicant1"
12
13 WPAS_DBUS_INTERFACES_INTERFACE = "fi.w1.wpa_supplicant1.Interface"
14 WPAS_DBUS_WPS_INTERFACE = "fi.w1.wpa_supplicant1.Interface.WPS"
15
16 def stateChanged(newState, oldState):
17         print "StateChanged(%s -> %s)" % (oldState, newState)
18
19 def scanDone(success):
20         print "Scan done: success=%s" % success
21
22 def bssAdded(bss, properties):
23         print "BSS added: %s" % (bss)
24
25 def bssRemoved(bss):
26         print "BSS removed: %s" % (bss)
27
28 def wpsEvent(name, args):
29         print "WPS event: %s" % (name)
30         print args
31
32 def credentials(cred):
33         print "WPS credentials: %s" % (cred)
34
35 def main():
36         dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
37         global bus
38         bus = dbus.SystemBus()
39         wpas_obj = bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_OPATH)
40
41         if len(sys.argv) != 2:
42                 print "Missing ifname argument"
43                 os._exit(1)
44
45         wpas = dbus.Interface(wpas_obj, WPAS_DBUS_INTERFACE)
46         bus.add_signal_receiver(scanDone,
47                                 dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
48                                 signal_name="ScanDone")
49         bus.add_signal_receiver(bssAdded,
50                                 dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
51                                 signal_name="BSSAdded")
52         bus.add_signal_receiver(bssRemoved,
53                                 dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
54                                 signal_name="BSSRemoved")
55         bus.add_signal_receiver(stateChanged,
56                                 dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
57                                 signal_name="StateChanged")
58         bus.add_signal_receiver(wpsEvent,
59                                 dbus_interface=WPAS_DBUS_WPS_INTERFACE,
60                                 signal_name="Event")
61         bus.add_signal_receiver(credentials,
62                                 dbus_interface=WPAS_DBUS_WPS_INTERFACE,
63                                 signal_name="Credentials")
64
65         ifname = sys.argv[1]
66
67         path = wpas.GetInterface(ifname)
68         if_obj = bus.get_object(WPAS_DBUS_SERVICE, path)
69         if_obj.Set(WPAS_DBUS_WPS_INTERFACE, 'ProcessCredentials',
70                    dbus.Boolean(1),
71                    dbus_interface=dbus.PROPERTIES_IFACE)
72         wps = dbus.Interface(if_obj, WPAS_DBUS_WPS_INTERFACE)
73         wps.Start({'Role': 'enrollee', 'Type': 'pbc'})
74
75         gobject.MainLoop().run()
76
77 if __name__ == "__main__":
78         main()
79