#!/usr/bin/python import gobject import dbus import dbus.mainloop.glib import sys def hangup_all(): print "Hanging up" vcmanager.HangupAll() def print_calls(): calls = vcmanager.GetCalls() if (len(calls) != 0): print "No calls available" else: for path, properties in calls: print " [ %s ]" % (path) for key in properties.keys(): val = str(properties[key]) print " %s = %s" % (key, val) print def voicecalls_call_added(path, properties): print " Voice Call [ %s ] Added" % (path) for key in properties.keys(): val = str(properties[key]) print " %s = %s" % (key, val) print def voicecalls_call_removed(path): print " Voice Call [ %s ] Removed" % (path) def voicecall_property_changed(name, value): print "Voicecall property: '%s' changed to '%s'" % (name, value) def voicecall_disconnect_reason(reason): print "Voicecall disconnect reason: '%s'" % (reason) if __name__ == "__main__": global vcmanager if (len(sys.argv) < 2): print "Usage: %s [modem] " % (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() modem = modems[0][0] if (len(sys.argv) == 3): modem = sys.argv[1] number = sys.argv[2] else: number = sys.argv[1] print "Using modem %s" % modem vcmanager = dbus.Interface(bus.get_object('org.ofono', modem), 'org.ofono.VoiceCallManager') vcmanager.connect_to_signal("CallAdded", voicecalls_call_added) vcmanager.connect_to_signal("CallRemoved", voicecalls_call_removed) print_calls() print "Dialing %s..." % number obj = vcmanager.Dial(number, "") print "Dialing in progress, got obj: %s" % (obj) call = dbus.Interface(bus.get_object('org.ofono', obj), 'org.ofono.VoiceCall') properties = call.GetProperties() print "State: %s, Number: %s" %\ (properties['State'], properties['LineIdentification']) call.connect_to_signal("PropertyChanged", voicecall_property_changed) call.connect_to_signal("DisconnectReason", voicecall_disconnect_reason) gobject.timeout_add(1000000, hangup_all) mainloop = gobject.MainLoop() mainloop.run()