58 lines
1.4 KiB
Python
Executable File
58 lines
1.4 KiB
Python
Executable File
#!/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()
|