diff options
author | Paul Kocialkowski <contact@paulk.fr> | 2012-07-06 15:29:24 +0200 |
---|---|---|
committer | Paul Kocialkowski <contact@paulk.fr> | 2012-07-06 15:29:24 +0200 |
commit | 72a86665de9e8283539d6003dc1c64d16237d869 (patch) | |
tree | b94c2c4a2f2efd179268045c5a0162f52882363f /call.c | |
parent | f470c71cafdd62f5d36ce6007be0dde44e65531b (diff) | |
download | hardware_ril_samsung-ril-72a86665de9e8283539d6003dc1c64d16237d869.zip hardware_ril_samsung-ril-72a86665de9e8283539d6003dc1c64d16237d869.tar.gz hardware_ril_samsung-ril-72a86665de9e8283539d6003dc1c64d16237d869.tar.bz2 |
Call: Added last call fail cause support
Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
Diffstat (limited to 'call.c')
-rw-r--r-- | call.c | 39 |
1 files changed, 38 insertions, 1 deletions
@@ -49,6 +49,18 @@ unsigned char ipc2ril_call_list_entry_state(unsigned char call_state) } } +RIL_LastCallFailCause ipc2ril_call_fail_cause(unsigned char end_cause) +{ + switch(end_cause) { + case IPC_CALL_END_CAUSE_NORMAL: + case IPC_CALL_END_CAUSE_REJECTED: + return CALL_FAIL_NORMAL; + case IPC_CALL_END_CAUSE_UNSPECIFIED: + default: + return CALL_FAIL_ERROR_UNSPECIFIED; + } +} + /** * In: RIL_UNSOL_CALL_RING * Ring indication for an incoming call (eg, RING or CRING event). @@ -70,6 +82,13 @@ void ipc_call_incoming(struct ipc_message_info *info) */ void ipc_call_status(struct ipc_message_info *info) { + struct ipc_call_status *call_status = + (struct ipc_call_status *) info->data; + + memcpy(&(ril_state.call_status), call_status, sizeof(struct ipc_call_status)); + + LOGD("Updating Call Status data"); + RIL_onUnsolicitedResponse(RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED, NULL, 0); } @@ -226,9 +245,27 @@ void ril_request_answer(RIL_Token t) } /** + * In: RIL_REQUEST_LAST_CALL_FAIL_CAUSE + * Reason why last call was terminated + */ +void ril_request_last_call_fail_cause(RIL_Token t) +{ + RIL_LastCallFailCause fail_cause; + struct ipc_call_status *call_status = + &(ril_state.call_status); + + fail_cause = ipc2ril_call_fail_cause(call_status->end_cause); + + // Empty global call_status + memset(call_status, 0, sizeof(struct ipc_call_status)); + + RIL_onRequestComplete(t, RIL_E_SUCCESS, &fail_cause, sizeof(RIL_LastCallFailCause)); +} + +/** * In: IPC_CALL_BURST_DTMF * Send DTMF burst. RILJ only sends 1 DTMF tone to send at a time. - * + * * Out: IPC_CALL_BURST_DTMF * It should be possible to send multiple DTMF tones at once in this message. * First byte should be DTMF tones count. |