diff options
author | Joey Hewitt <joey@joeyhewitt.com> | 2017-09-14 19:19:43 -0700 |
---|---|---|
committer | Joey Hewitt <joey@joeyhewitt.com> | 2017-09-14 19:19:43 -0700 |
commit | 979fce83a1985b8a43f1b8f49ed746710792375f (patch) | |
tree | 0c5922c69a49c0b5935df21e39094a09f2a4bc91 /drivers/qmimodem/voice_generated.c | |
parent | ae8ea8cd07a09236c14232dfe3ed932277ce871e (diff) | |
download | android_external_ofono-979fce83a1985b8a43f1b8f49ed746710792375f.tar.gz android_external_ofono-979fce83a1985b8a43f1b8f49ed746710792375f.tar.bz2 android_external_ofono-979fce83a1985b8a43f1b8f49ed746710792375f.zip |
qmimodem: reimplement release_specific()
Works better with inactive calls, I think. My testcase is rejecting an
incoming call. Without this patch, caller gets abrupt call ended. With
it, they get bounced to voicemail (or presumably whatever else the
network/callee has configured)
Diffstat (limited to 'drivers/qmimodem/voice_generated.c')
-rw-r--r-- | drivers/qmimodem/voice_generated.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/drivers/qmimodem/voice_generated.c b/drivers/qmimodem/voice_generated.c index 3440be43..3d26ab23 100644 --- a/drivers/qmimodem/voice_generated.c +++ b/drivers/qmimodem/voice_generated.c @@ -56,8 +56,8 @@ enum parse_error qmi_voice_dial_call_parse( return err; } -int qmi_voice_end_call( - struct qmi_voice_end_call_arg *arg, +int qmi_voice_manage_call( + struct qmi_voice_manage_call_arg *arg, struct qmi_service *service, qmi_result_func_t func, void *user_data, @@ -69,16 +69,22 @@ int qmi_voice_end_call( if (!param) goto error; + if (!qmi_param_append_uint8( + param, + 0x1, + arg->ss_call_type)) + goto error; + if (arg->call_id_set) { if (!qmi_param_append_uint8( param, - 0x1, + 0x10, arg->call_id)) goto error; } if (qmi_service_send(service, - 0x21, + 0x31, param, func, user_data, @@ -89,17 +95,15 @@ error: return 1; } -enum parse_error qmi_voice_end_call_parse( +enum parse_error qmi_voice_manage_call_parse( struct qmi_result *qmi_result, - struct qmi_voice_end_call_result *result) + struct qmi_voice_manage_call_result *result) { - int err = NONE; - /* optional */ - if (qmi_result_get_uint8(qmi_result, 0x10, &result->call_id)) - result->call_id_set = 1; + if (qmi_result_get_uint16(qmi_result, 0x10, &result->failcause)) + result->failcause_set = 1; - return err; + return NONE; } |