| #!/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] <number>" % (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() |