mirror of git://git.sysmocom.de/ofono
hfp: Handle extra CCWA event
When a call is waitng, CCWA event is sent and call object in state WAITING is created. on ReleaseAndAnswer it is promoted to INCOMING and later to ACTIVE. iPhones send an extra CCWA event when active call is ended. This extra event is creating a second call object in state WAITING. It is not possible to have two WAITING calls, but previously waiting call was already promoted to INCOMING. For a brief time we have two calls from the same number, one INCOMING and one WAITING. Later WAITING one is removed. As we cannot have a waiting and incoming call at the same time, ignore CCWA when there is already an INCOMING call. < \r\n+CIEV: 3,3\r\n < \r\n+CIEV: 2,1\r\n < \r\n+CIEV: 3,0\r\n < \r\n+CCWA: "01234567890",129,1,"Me"\r\n < \r\n+CIEV: 3,1\r\n > AT+CLCC\r < \r\n+CLCC: 1,0,0,0,0,"09876543210",129,"Me"\r\n < \r\n+CLCC: 2,1,5,0,0,"01234567890",129,"Me"\r\n < \r\nOK\r\n < \r\n+CIEV: 2,0\r\n < \r\n+CCWA: "01234567890",129,1,"Me"\r\n < \r\n+CIEV: 2,1\r\n < \r\n+CIEV: 3,0\r\n > AT+CLCC\r < \r\n+CLCC: 2,1,0,0,0,"01234567890",129,"Me"\r\n < \r\nOK\r\n
This commit is contained in:
parent
9ec8d03c7c
commit
4e9cbcdb89
|
@ -715,6 +715,16 @@ static void ccwa_notify(GAtResult *result, gpointer user_data)
|
|||
at_util_call_compare_by_status))
|
||||
return;
|
||||
|
||||
/* some phones may send extra CCWA after active call is ended
|
||||
* this would trigger creation of second call in state 'WAITING'
|
||||
* as our previous WAITING call has been promoted to INCOMING
|
||||
*/
|
||||
if (g_slist_find_custom(vd->calls,
|
||||
GINT_TO_POINTER(CALL_STATUS_INCOMING),
|
||||
at_util_call_compare_by_status))
|
||||
return;
|
||||
|
||||
|
||||
g_at_result_iter_init(&iter, result);
|
||||
|
||||
if (!g_at_result_iter_next(&iter, "+CCWA:"))
|
||||
|
|
Loading…
Reference in New Issue