hfp: Synchronize call state in case of +CHUP error
authorKuba Pawlak <kubax.t.pawlak@intel.com>
Wed, 5 Aug 2015 12:36:09 +0000 (14:36 +0200)
committerDenis Kenzior <denkenz@gmail.com>
Wed, 5 Aug 2015 16:15:33 +0000 (11:15 -0500)
commit3e6bbc676fa2573d3733a6b0fa4010d3d61c6001
tree1153a465658e13b3254076c2025387e018eca4cb
parent8be02456649f5a26771f70754659fafd5039efe9
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
drivers/hfpmodem/voicecall.c