mirror of git://git.sysmocom.de/ofono
hfp: Synchronize call state in case of +CHUP error
It is possible for the phone to accept Dial request but not actually dial. This leaves a voicecall object in state 'dialling' that cannot be removed. Proposed workaround is to trigger AT+CLCC when an error is returned for Hangup. As the call is not on the list, this would remove this hanging object and signal CallRemoved. Windows Phone trace with this fix: ofonod[273]: > ATD1;\r ofonod[273]: < \r\nOK\r\n ofonod[273]: src/voicecall.c:dial_handle_result() Registering new call: 1 ofonod[273]: < \r\n+CIEV: 5,4\r\n ofonod[273]: src/network.c:ofono_netreg_strength_notify() strength 80 ofonod[273]: > AT+CHUP\r ofonod[273]: < \r\nERROR\r\n ofonod[273]: src/voicecall.c:generic_callback() command failed with error: Unknown error type ofonod[273]: > AT+CLCC\r ofonod[273]: < \r\nOK\r\n ofonod[273]: src/voicecall.c:ofono_voicecall_disconnected() Got disconnection event for id: 1, reason: 2
This commit is contained in:
parent
8be0245664
commit
3e6bbc676f
|
@ -333,6 +333,10 @@ static void generic_cb(gboolean ok, GAtResult *result, gpointer user_data)
|
|||
}
|
||||
}
|
||||
|
||||
if (!ok && vd->calls)
|
||||
g_at_chat_send(vd->chat, "AT+CLCC", clcc_prefix,
|
||||
clcc_poll_cb, req->vc, NULL);
|
||||
|
||||
req->cb(&error, req->data);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue