#!/usr/bin/python3 import sys import dbus if (len(sys.argv) < 2): print("Usage: %s [modem] " % (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))