| import dbus, dbus.mainloop.glib, gobject, sys, time |
| |
| ssid = sys.argv[1] |
| wait_timeout = sys.argv[2] |
| |
| bus_loop = dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) |
| bus = dbus.SystemBus(mainloop=bus_loop) |
| manager = dbus.Interface(bus.get_object("org.chromium.flimflam", "/"), |
| "org.chromium.flimflam.Manager") |
| |
| mprops = manager.GetProperties() |
| for path in mprops["Services"]: |
| service = dbus.Interface(bus.get_object("org.chromium.flimflam", path), |
| "org.chromium.flimflam.Service") |
| sprops = service.GetProperties() |
| if sprops.get("Name", None) != ssid: |
| continue |
| wait_time = 0 |
| try: |
| service.Disconnect() |
| while wait_time < wait_timeout: |
| sprops = service.GetProperties() |
| state = sprops.get("State", None) |
| # print>>sys.stderr, "time %3.1f state %s" % (wait_time, state) |
| if state == "idle": |
| break |
| time.sleep(.5) |
| wait_time += .5 |
| except: |
| pass |
| print "disconnect in %3.1f secs" % wait_time |
| break |
| sys.exit(0) |
| |