| #!/usr/bin/env python3 |
| |
| ''' |
| Power on and off some modem on ofono, while running the glib main loop in a |
| thread and receiving modem state changes by dbus signals. |
| ''' |
| |
| from pydbus import SystemBus, Variant |
| import time |
| import pprint |
| |
| from gi.repository import GLib |
| glib_main_loop = GLib.MainLoop() |
| glib_main_ctx = glib_main_loop.get_context() |
| |
| def propchanged(*args, **kwargs): |
| print('-> PROP CHANGED: %r %r' % (args, kwargs)) |
| |
| |
| def pump(): |
| global glib_main_ctx |
| print('pump?') |
| while glib_main_ctx.pending(): |
| print('* pump') |
| glib_main_ctx.iteration() |
| |
| def wait(condition): |
| pump() |
| while not condition(): |
| time.sleep(.1) |
| pump() |
| |
| bus = SystemBus() |
| |
| print('\n- list modems') |
| root = bus.get("org.ofono", '/') |
| print(root.Introspect()) |
| modems = sorted(root.GetModems()) |
| pprint.pprint(modems) |
| pump() |
| |
| first_modem_path = modems[0][0] |
| print('\n- first modem %r' % first_modem_path) |
| modem = bus.get("org.ofono", first_modem_path) |
| modem.PropertyChanged.connect(propchanged) |
| |
| print(modem.Introspect()) |
| print(modem.GetProperties()) |
| |
| print('\n- set Powered = True') |
| modem.SetProperty('Powered', Variant('b', True)) |
| print('call returned') |
| print('- pump dbus events') |
| pump() |
| pump() |
| print('sleep 1') |
| time.sleep(1) |
| pump() |
| |
| |
| print('- modem properties:') |
| print(modem.GetProperties()) |
| |
| |
| print('\n- set Powered = False') |
| modem.SetProperty('Powered', Variant('b', False)) |
| print('call returned') |
| |
| print(modem.GetProperties()) |
| |
| # vim: tabstop=4 shiftwidth=4 expandtab |