1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
#!/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()
|