aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/qmimodem/voice_generated.c
diff options
context:
space:
mode:
authorJoey Hewitt <joey@joeyhewitt.com>2017-09-14 19:19:43 -0700
committerJoey Hewitt <joey@joeyhewitt.com>2017-09-14 19:19:43 -0700
commit979fce83a1985b8a43f1b8f49ed746710792375f (patch)
tree0c5922c69a49c0b5935df21e39094a09f2a4bc91 /drivers/qmimodem/voice_generated.c
parentae8ea8cd07a09236c14232dfe3ed932277ce871e (diff)
downloadandroid_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.c26
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;
}