#!/usr/bin/python import gobject import dbus import dbus.mainloop.glib import sys def hangup_all(): print "Hanging up" vcmanager.HangupAll() def print_calls(value): for p in value: call = dbus.Interface(bus.get_object('org.ofono', p), 'org.ofono.VoiceCall') properties = call.GetProperties() status = properties['State'] lineid = properties['LineIdentification'] print "Call %s, Status: %s, LineId: %s" %\ (p, status, lineid) def voicecalls_property_changed(name, value): if name == 'Calls': print "Call list modification>" if len(value) == 0: print "No calls in systems" else: print_calls(value) else: print "VoiceCallManager property: '%s' changed to '%s'" %\ (name, value) def voicecall_property_changed(name, value): print "Voicecall property: '%s' changed to '%s'" % (name, value) 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.GetProperties()['Modems'] modem = modems[0] print modems 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("PropertyChanged", voicecalls_property_changed) properties = vcmanager.GetProperties() print properties['Calls'] voicecalls_property_changed('Calls', properties['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) gobject.timeout_add(10000, hangup_all) mainloop = gobject.MainLoop() mainloop.run()