| #!/usr/bin/python3 |
| |
| import sys |
| import dbus |
| |
| if (len(sys.argv) < 2): |
| print("Usage: %s [modem] <ussd-string>" % (sys.argv[0])) |
| sys.exit(1) |
| |
| bus = dbus.SystemBus() |
| |
| manager = dbus.Interface(bus.get_object('org.ofono', '/'), |
| 'org.ofono.Manager') |
| |
| modems = manager.GetModems() |
| |
| if (len(sys.argv) == 2): |
| path = modems[0][0] |
| ussdstring = sys.argv[1] |
| else: |
| path = sys.argv[1] |
| ussdstring = sys.argv[2] |
| |
| ussd = dbus.Interface(bus.get_object('org.ofono', path), |
| 'org.ofono.SupplementaryServices') |
| |
| properties = ussd.GetProperties() |
| state = properties["State"] |
| |
| print("State: %s" % (state)) |
| |
| if state == "idle": |
| result = ussd.Initiate(ussdstring, timeout=100) |
| print(result[0] + ": " + result[1]) |
| elif state == "user-response": |
| print(ussd.Respond(ussdstring, timeout=100)) |
| else: |
| sys.exit(1); |
| |
| properties = ussd.GetProperties() |
| state = properties["State"] |
| |
| if state == "idle": |
| sys.exit(0) |
| |
| print("State: %s" % (state)) |
| |
| while state == "user-response": |
| response = input("Enter response: ") |
| |
| print(ussd.Respond(response, timeout=100)) |
| |
| properties = ussd.GetProperties() |
| state = properties["State"] |
| |
| if state != "idle": |
| print("State: %s" % (state)) |