#!/usr/bin/python import sys import gobject import dbus import dbus.mainloop.glib def ussd_notification_received(content): print("Network sent a Notification: " + content) def ussd_request_received(content): print("Network sent a Request: " + content) ss.Cancel() def ussd_property_changed(name, value): if name != "State": return print("USSD session state is " + value) if __name__ == "__main__": if (len(sys.argv) < 2): print "Usage: %s " % (sys.argv[0]) sys.exit(1) dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) bus = dbus.SystemBus() manager = dbus.Interface(bus.get_object('org.ofono', '/'), 'org.ofono.Manager') modems = manager.GetModems() ss = dbus.Interface(bus.get_object('org.ofono', modems[0][0]), 'org.ofono.SupplementaryServices') props = ss.GetProperties() for p in props: ussd_property_changed(p, props[p]) ss.connect_to_signal("NotificationReceived", ussd_notification_received) ss.connect_to_signal("RequestReceived", ussd_request_received) ss.connect_to_signal("PropertyChanged", ussd_property_changed) print ss.Initiate(sys.argv[1], timeout=100) mainloop = gobject.MainLoop() mainloop.run()