| #!/usr/bin/python3 |
| |
| import sys |
| import dbus |
| |
| bus = dbus.SystemBus() |
| |
| manager = dbus.Interface(bus.get_object('org.ofono', '/'), 'org.ofono.Manager') |
| |
| if (len(sys.argv) == 3): |
| modem = sys.argv[1] |
| context_idx = int(sys.argv[2]) - 1 |
| else: |
| modem = None |
| modems = manager.GetModems() |
| for path, properties in modems: |
| if "org.ofono.ConnectionManager" in properties["Interfaces"]: |
| modem = path |
| break |
| if (modem is None): |
| exit(2) |
| if (len(sys.argv) == 1): |
| context_idx = 0 |
| elif (len(sys.argv) == 2): |
| context_idx = int(sys.argv[1]) - 1 |
| else: |
| print("Usage: %s [modem] [context_number]" % (sys.argv[0])) |
| exit(1) |
| |
| modemapi = dbus.Interface(bus.get_object('org.ofono', modem), 'org.ofono.Modem') |
| properties = modemapi.GetProperties() |
| |
| if "org.ofono.ConnectionManager" not in properties["Interfaces"]: |
| print("org.ofono.ConnectionManager not found") |
| exit(2) |
| |
| connman = dbus.Interface(bus.get_object('org.ofono', modem), |
| 'org.ofono.ConnectionManager') |
| |
| contexts = connman.GetContexts() |
| |
| if (len(contexts) == 0): |
| print("No context available") |
| sys.exit(1) |
| |
| path = contexts[context_idx][0] |
| |
| context = dbus.Interface(bus.get_object('org.ofono', path), |
| 'org.ofono.ConnectionContext') |
| |
| try: |
| context.SetProperty("Active", dbus.Boolean(0)) |
| except dbus.DBusException as e: |
| print("Error deactivating %s: %s" % (path, str(e))) |
| exit(2) |