#!/usr/bin/python3 from gi.repository import GLib import sys import dbus import dbus.mainloop.glib def network_property_changed(name, value): print("Network Registration property '%s' changed to '%s'" %\ (name, value)) if name == 'Name' and canexit: mainloop.quit() if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: %s [modem] - Register to PLMN on " %\ (sys.argv[0])) print("Usage: %s [modem] default - Register to default PLMN" %\ (sys.argv[0])) sys.exit(1) canexit = False dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) bus = dbus.SystemBus() manager = dbus.Interface(bus.get_object('org.ofono', '/'), 'org.ofono.Manager') if len(sys.argv) == 3: path = sys.argv[1] plmn = sys.argv[2] else: modems = manager.GetModems() path = modems[0][0] plmn = sys.argv[1] netreg = dbus.Interface(bus.get_object('org.ofono', path), 'org.ofono.NetworkRegistration') netreg.connect_to_signal("PropertyChanged", network_property_changed) props = netreg.GetProperties() print("Status is: '%s', Operator Name is: '%s'" %\ (props['Status'], props['Name'])) if 'LocationAreaCode' in props and 'CellId' in props: print("Location: '%d', Cell: '%d'" %\ (props['LocationAreaCode'], props['CellId'])) if 'Technology' in props: print("Technology: '%s'" % (props['Technology'])) try: if plmn == 'default': netreg.Register() else: obj = bus.get_object('org.ofono', plmn); op = dbus.Interface(obj, 'org.ofono.NetworkOperator') op.Register() except dbus.DBusException as e: print("Unable to register: %s" % e) sys.exit(1) canexit = True mainloop = GLib.MainLoop() mainloop.run()