Home | History | Annotate | Download | only in examples
      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 propertiesChanged(properties):
     17 	if properties.has_key("State"):
     18 		print "PropertiesChanged: State: %s" % (properties["State"])
     19 
     20 def scanDone(success):
     21 	print "Scan done: success=%s" % success
     22 
     23 def bssAdded(bss, properties):
     24 	print "BSS added: %s" % (bss)
     25 
     26 def bssRemoved(bss):
     27 	print "BSS removed: %s" % (bss)
     28 
     29 def wpsEvent(name, args):
     30 	print "WPS event: %s" % (name)
     31 	print args
     32 
     33 def credentials(cred):
     34 	print "WPS credentials: %s" % (cred)
     35 
     36 def main():
     37 	dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
     38 	global bus
     39 	bus = dbus.SystemBus()
     40 	wpas_obj = bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_OPATH)
     41 
     42 	if len(sys.argv) != 2:
     43 		print "Missing ifname argument"
     44 		os._exit(1)
     45 
     46 	wpas = dbus.Interface(wpas_obj, WPAS_DBUS_INTERFACE)
     47 	bus.add_signal_receiver(scanDone,
     48 				dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
     49 				signal_name="ScanDone")
     50 	bus.add_signal_receiver(bssAdded,
     51 				dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
     52 				signal_name="BSSAdded")
     53 	bus.add_signal_receiver(bssRemoved,
     54 				dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
     55 				signal_name="BSSRemoved")
     56 	bus.add_signal_receiver(propertiesChanged,
     57 				dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
     58 				signal_name="PropertiesChanged")
     59 	bus.add_signal_receiver(wpsEvent,
     60 				dbus_interface=WPAS_DBUS_WPS_INTERFACE,
     61 				signal_name="Event")
     62 	bus.add_signal_receiver(credentials,
     63 				dbus_interface=WPAS_DBUS_WPS_INTERFACE,
     64 				signal_name="Credentials")
     65 
     66 	ifname = sys.argv[1]
     67 
     68 	path = wpas.GetInterface(ifname)
     69 	if_obj = bus.get_object(WPAS_DBUS_SERVICE, path)
     70 	if_obj.Set(WPAS_DBUS_WPS_INTERFACE, 'ProcessCredentials',
     71 		   dbus.Boolean(1),
     72 		   dbus_interface=dbus.PROPERTIES_IFACE)
     73 	wps = dbus.Interface(if_obj, WPAS_DBUS_WPS_INTERFACE)
     74 	wps.Start({'Role': 'enrollee', 'Type': 'pbc'})
     75 
     76 	gobject.MainLoop().run()
     77 
     78 if __name__ == "__main__":
     79 	main()
     80 
     81