[Bugfix][T108][bug-view-1698] get voice call disconnect reason wrong when peer reject call
Only Configure: No
Affected branch: unknown
Affected module: voice
Is it affected : only ASR
Self-test: yes
Doc Update: no
Change-Id: I93562c24fdf1e3d532d7eb732f02eab6d1cbe59e
diff --git a/mbtk/libgsw_lib/gsw_voice_interface.c b/mbtk/libgsw_lib/gsw_voice_interface.c
index 499ada1..ce4fd2f 100755
--- a/mbtk/libgsw_lib/gsw_voice_interface.c
+++ b/mbtk/libgsw_lib/gsw_voice_interface.c
@@ -138,10 +138,18 @@
GSW_END_ABNORMAL,
} gsw_call_end_reason_enum;
-const char* g_normal_end_reason[] = {
-MBTK_VOICE_END_REASON_NORMAL_CALL_CLEARING,
-MBTK_VOICE_END_REASON_NORMAL_UNSPECIFIED,
+typedef struct {
+ char mbtk_end_reason[64];
+ gsw_call_end_reason_enum end_reason;
+}end_reason_map_t;
+
+end_reason_map_t g_end_reason_map[4] = {
+{MBTK_VOICE_END_REASON_NORMAL_CALL_CLEARING, GSW_OTHER_END_NORMAL},
+{MBTK_VOICE_END_REASON_NORMAL_UNSPECIFIED, GSW_OTHER_END_NORMAL},
+{MBTK_VOICE_END_REASON_USER_ALERTING_NO_ANSWER, GSW_PEER_END_NORMAL},
+{MBTK_VOICE_END_REASON_CALL_REJECTED, GSW_PEER_END_NORMAL},
};
+
int gsw_global_end_reason = GSW_OTHER_END_NORMAL;
//----------------end_reason end------------
@@ -149,8 +157,6 @@
typedef uint32_t voice_client_handle_type;
-
-
static mbtk_info_handle_t* call_info_handle = NULL;
static int level_call = 0;
int gsw_voice_init_flag = 0;
@@ -334,17 +340,17 @@
{
LOGE(GSW_VOICE,"mbtk_reason:%s\n", mbtk_reason);
gsw_global_end_reason = GSW_END_ABNORMAL;
- int length=sizeof (g_normal_end_reason)/ sizeof(g_normal_end_reason[0]);
+
+ int length=sizeof (g_end_reason_map)/ sizeof(g_end_reason_map[0]);
for(int i = 0; i<length; i++)
{
- if(0 == strncmp(mbtk_reason, g_normal_end_reason[i], strlen(g_normal_end_reason[i])))
+ if(0 == strncmp(mbtk_reason, g_end_reason_map[i].mbtk_end_reason, strlen(g_end_reason_map[i].mbtk_end_reason)))
{
- gsw_global_end_reason=GSW_OTHER_END_NORMAL;
+ gsw_global_end_reason = g_end_reason_map[i].end_reason;
+ LOGE(GSW_VOICE,"mbtk call end reason %s gsw reason:%d\n", mbtk_reason,gsw_global_end_reason);
return;
}
}
-
- return;
}
void gsw_call_state_change_cb(const void *data, int data_len)
@@ -443,7 +449,6 @@
}
}
-
/**
* @brief init voice sdk,and register the status indicated callback function
* @param [in] CallStateInd ind: status indicated callback function
@@ -452,8 +457,6 @@
*/
int32_t gsw_voice_sdk_init(CallStateInd ind)
{
- int ret;
-
if (gsw_voice_init_flag == 1 && call_info_handle != NULL)
{
return GSW_HAL_SUCCESS;
@@ -465,18 +468,15 @@
return GSW_HAL_ARG_INVALID;
}
- ret = mbtk_call_api_import();
+ int ret = mbtk_call_api_import();
if(ret != 0)
{
LOGE(GSW_VOICE,"[gsw_voice_sdk_init]mbtk_call_api_import fail\n");
return GSW_HAL_NORMAL_FAIL;
}
- if(ret < 0)
- {
- LOGE(GSW_VOICE,"mbtk_call_api_import fail,ret = %d\n",ret);
- return GSW_HAL_NORMAL_FAIL;
- }
+
+
if(call_info_handle == NULL)
{
call_info_handle = mbtk_info_handle_get();