osmo-gsm-tester/selftest/dbus_test/ofono_client.py

58 lines
1.4 KiB
Python
Raw Normal View History

#!/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 threading
import pprint
from gi.repository import GLib
loop = GLib.MainLoop()
def propchanged(*args, **kwargs):
print('-> PROP CHANGED: %r %r' % (args, kwargs))
class GlibMainloop(threading.Thread):
def run(self):
loop.run()
ml = GlibMainloop()
ml.start()
try:
bus = SystemBus()
print('\n- list modems')
root = bus.get("org.ofono", '/')
print(root.Introspect())
modems = sorted(root.GetModems())
pprint.pprint(modems)
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(modem.GetProperties())
time.sleep(1)
print('\n- set Powered = False')
modem.SetProperty('Powered', Variant('b', False))
print('call returned')
print(modem.GetProperties())
finally:
loop.quit()
ml.join()