How to hangup outgoing call, before terminating end answers?
Hi,
Currently when a call is created with Dial method the object path for the call (e.g. /modem1/voicecall01) is returned only after the terminating end has answered to the call. So is it possible to Hangup the call from the originating end before terminating end answers the call?
Create the call:
$ dbus-send --print-reply --system --dest=org.ofono /modem1 org.ofono.VoiceCallManager.Dial string:"+358000000000" string:"default"
The following do not work as the /modem1/voicecall01 does not exist:
$ dbus-send --system --print-reply --dest=org.ofono /modem1/voicecall01 org.ofono.VoiceCall.Hangup Error org.freedesktop.DBus.Error.UnknownMethod: Method "Hangup" with signature "" on interface "org.ofono.VoiceCall" doesn't exist
$ dbus-send --system --print-reply --dest=org.ofono /modem1/voicecall01 org.ofono.VoiceCall.Busy Error org.freedesktop.DBus.Error.UnknownMethod: Method "Busy" with signature "" on interface "org.ofono.VoiceCall" doesn't exist
The VoiceCallManager.HangupAll does not work either:
$ dbus-send --print-reply --system --dest=org.ofono /modem1 org.ofono.VoiceCallManager.HangupAll Error org.ofono.Error.InProgress: Operation already in progress
Regards,
Marko
Hi Marko,
Quoted 6 lines
Hi,
Currently when a call is created with Dial method the object path for the call (e.g. /modem1/voicecall01) is returned only after the terminating end has answered to the call. So is it possible to Hangup the call from the originating end before terminating end answers the call?
So this very much depends on the modem. Most (sane) modems return an OK final response to the ATD when they start dialing. Some will then accept regular AT+CHLD commands to terminate the outgoing call, others have a vendor specific command for doing so. The broken ones return an OK/BUSY/NO CARRIER for the ATD only when connected/busy/timed out, in which case there's no standard way to abort that I know of.
This might be an area where I'd like to hear some feedback, whether an additional dial_abort function pointer is required in the voicecall plugin.
However, the entire 27.007 spec for voice calls is utterly broken, there's no way to get it right. If your modems support vendor extensions for call control, in particular call state reporting, I suggest using those. I expect all major vendors have implemented such features in their modems. I don't expect the reference implementation to be used in practice, as it is too battery inefficient.
Quoted 12 lines
Create the call:
$ dbus-send --print-reply --system --dest=org.ofono /modem1 org.ofono.VoiceCallManager.Dial string:"+358000000000" string:"default"The following do not work as the /modem1/voicecall01 does not exist:
$ dbus-send --system --print-reply --dest=org.ofono /modem1/voicecall01 org.ofono.VoiceCall.Hangup Error org.freedesktop.DBus.Error.UnknownMethod: Method "Hangup" with signature "" on interface "org.ofono.VoiceCall" doesn't exist
Quoted 4 lines
$ dbus-send --system --print-reply --dest=org.ofono /modem1/voicecall01 org.ofono.VoiceCall.Busy Error org.freedesktop.DBus.Error.UnknownMethod: Method "Busy" with signature "" on interface "org.ofono.VoiceCall" doesn't exist
So you can only use this one on an incoming or waiting call.
Quoted 6 lines
The VoiceCallManager.HangupAll does not work either:
$ dbus-send --print-reply --system --dest=org.ofono /modem1 org.ofono.VoiceCallManager.HangupAll Error org.ofono.Error.InProgress: Operation already in progress
Regards,
-Denis
Li
Hi Marko,
Quoted 5 lines
The following do not work as the /modem1/voicecall01 does not exist:
$ dbus-send --system --print-reply --dest=org.ofono /modem1/voicecall01 org.ofono.VoiceCall.Hangup Error org.freedesktop.DBus.Error.UnknownMethod: Method "Hangup" with signature "" on interface "org.ofono.VoiceCall" doesn't exist
It's normal if the voicecall01 didn't be setup
Quoted 6 lines
$ dbus-send --system --print-reply --dest=org.ofono /modem1/voicecall01 org.ofono.VoiceCall.Busy Error org.freedesktop.DBus.Error.UnknownMethod: Method "Busy" with signature "" on interface "org.ofono.VoiceCall" doesn't exist
Busy only for waiting and incoming call
Quoted 5 lines
The VoiceCallManager.HangupAll does not work either:
$ dbus-send --print-reply --system --dest=org.ofono /modem1 org.ofono.VoiceCallManager.HangupAll Error org.ofono.Error.InProgress: Operation already in progress
It should be a bug if you use real modem
In phonesim the outgoing call be accepted quickly so can't find this issue.
I had same problem with a "phone" in real network; I assume its phone limitation before.
Quoted 8 lines
Regards,
Marko
_______________________________________________
ofono mailing list
ofono(a)ofono.org
http://lists.ofono.org/listinfo/ofono
Quoted 14 lines · On Mon, 17 Aug 2009 12:26:57 +0300 Marko Saukko <[email protected]> wrote:
Hi,
Currently when a call is created with Dial method the object path for the call (e.g. /modem1/voicecall01) is returned only after the terminating end has answered to the call. So is it possible to Hangup the call from the originating end before terminating end answers the call?
Create the call:
$ dbus-send --print-reply --system --dest=org.ofono /modem1 org.ofono.VoiceCallManager.Dial string:"+358000000000" string:"default"
Quoted 5 lines
The following do not work as the /modem1/voicecall01 does not exist:
$ dbus-send --system --print-reply --dest=org.ofono /modem1/voicecall01 org.ofono.VoiceCall.Hangup Error org.freedesktop.DBus.Error.UnknownMethod: Method "Hangup" with signature "" on interface "org.ofono.VoiceCall" doesn't exist
FWIW, I just tried this on my G1 and it worked fine:
localhost:~/ofono# !109 dbus-send --system --print-reply --dest=org.ofono / org.ofono.at.Manager.Create string:"dev:/dev/smd0" string:"at" method return sender=:1.0 -> dest=:1.1 reply_serial=2 object path "/modem1" localhost:~/ofono# dbus-send --system --print-reply --dest=org.ofono /modem1 org.ofono.VoiceCallManager.Dial string:"617501XXXX" string:"default" method return sender=:1.0 -> dest=:1.2 reply_serial=2 object path "/modem1/voicecall01" localhost:~/ofono# dbus-send --system --print-reply --dest=org.ofono /modem1/voicecall01 org.ofono.VoiceCall.Hangup method return sender=:1.0 -> dest=:1.3 reply_serial=2
Hangup returned successfully prior to the other end picking up.