Hi Guillaume,

> >>   Makefile.am      |    3 ++-
> >>   test/hangup-call |   39 +++++++++++++++++++++++++++++++++++++++
> >>   2 files changed, 41 insertions(+), 1 deletions(-)
> >>   create mode 100755 test/hangup-call
> >>
> >> diff --git a/Makefile.am b/Makefile.am
> >> index a689483..534245e 100644
> >> --- a/Makefile.am
> >> +++ b/Makefile.am
> >> @@ -624,7 +624,8 @@ test_scripts = test/backtrace \
> >>            test/swap-calls \
> >>            test/release-and-answer \
> >>            test/hold-and-answer \
> >> -          test/hangup-call-state
> >> +          test/hangup-call-state \
> >> +          test/hangup-call
> >>   
> >>   if TEST
> >>   testdir = $(pkglibdir)/test
> >> diff --git a/test/hangup-call b/test/hangup-call
> >> new file mode 100755
> >> index 0000000..926efc4
> >> --- /dev/null
> >> +++ b/test/hangup-call
> >> @@ -0,0 +1,39 @@
> >> +#!/usr/bin/python
> >> +
> >> +import sys
> >> +import dbus
> >> +
> >> +bus = dbus.SystemBus()
> >> +
> >> +manager = dbus.Interface(bus.get_object('org.ofono', '/'),
> >> +                                          'org.ofono.Manager')
> >> +
> >> +modems = manager.GetModems()
> >> +path = modems[0][0]
> >> +
> >> +manager = dbus.Interface(bus.get_object('org.ofono', path),
> >> +                                          'org.ofono.VoiceCallManager')
> >> +
> >> +calls = manager.GetCalls()
> >> +if (len(calls) == 0):
> >> +  print "No calls available"
> >> +  sys.exit(1)
> >> +
> >> +if (len(sys.argv) < 2):
> >> +  i = 0
> >> +  for path, properties in calls:
> >> +          multi = properties["Multiparty"]
> >> +          print "Call ID [ %d ] Multiparty %d" % (i, multi)
> >> +          print
> >> +          i += 1
> >> +
> >> +  print "Usage: %s [ Call ID ]" % (sys.argv[0])
> >> +  print
> >> +  sys.exit(1)
> >> +
> >> +path = calls[int(sys.argv[1])][0]
> >> +
> >> +call = dbus.Interface(bus.get_object('org.ofono', path),
> >> +                                          'org.ofono.VoiceCall')
> >> +
> >> +call.Hangup()
> > why are we not just asking to provide the object path as argument and
> > then list-calls can be used to determine which call to hang up. That way
> > also the hangup-call-state hack is not needed.
> >
> > Using the object path also makes this less racy since we identify the
> > call by object path and not a random number that might no longer be
> > valid.
> 
> We can use voicecall path indeed, however this script will not be enough 
> to clear all the remote parties of a multiparty call at once.
> For instance, I have a 3GPP test case that ask me to do this:
>      - create a multiparty call with 3 parties
>      - create a new single call
>      - clear multiparty call in held
> 
> I could either use the hangup-call-state script (with held argument) 
> either create a new script using HangupMultiparty() method from 
> voicecallmanager API (like there is a hangup-all script).
> One of those scripts would avoid to call thrice hangup-call for a 
> multiparty call with 3 party for instance.

sounds to me that hangup-multiparty script is a good idea.

Regards

Marcel


_______________________________________________
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono

Reply via email to