[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();