The existing call will be automatically put on hold if there is an
existing active call when dialing. On some modems the dial request
returns only after the dialed call is active and the existing call has
been put on hold.
However, on isimodem driver the dial request returns immediately before
the existing call has changed its status. With isimodem driver the
dial_handle_result() selected the existing call from the list when it
should have created a new one.
The dial result handling now guards againt returning a previously dialed
active call as result.
This patch was generated by the following semantic patch
(http://coccinelle.lip6.fr/)
// <smpl>
@fix disable is_null,isnt_null1@
expression *E;
@@
- !E
+ E == NULL
// </smpl>
This provides a way for other atoms to send DTMF tones during a call.
It is assumed that vc->driver->send_tone returns only after the tones
have finished being emitted.
In this version Dbus DTMF requests are in the same queue as STK
requests.
One of the clean-up commits changed the semantics of the dial request
callback's parameter (NULL if call setup failed, non-NULL if success
or user cancelled).
The callback is only invoked when the call is CONNECTED (becomes
active). Cancel ensures that the callback will not be called and
does nothing more in this version, it's an open question if we
want to release the call.
This patch fixes problem for modems that cannot terminate
DIALING/ALERTING calls with CHUP=1X. The main change is that
voicecall driver's hangup function is split into the functions
hangup_all and hangup_active.
Changes:
- In cases where hangup previously was used, hangup_all is used
if implemented otherwise hangup_active is used.
- Call in state DIALING/ALERTING is released with hangup_active if
implemented.
- manager_hangup_all will simply call hangup_all if implemented.
- manager_hangup_all will release calls in state
ALERTING/DIALING/INCOMING using hangup_active otherwise
release_specific.