[Bugfix][T108-GSW][bug-view-1673] gsw get voice disconnect reason error

    Only Configure: No
    Affected branch: unknown
    Affected module: network
    Is it affected on both ZXIC and ASR: only ASR
    Self-test: yes
    Doc Update: no

Change-Id: I7cabac6d376656e7077e44b8124424feed6c9eea
diff --git a/mbtk/libgsw_lib/gsw_voice_interface.c b/mbtk/libgsw_lib/gsw_voice_interface.c
index ab38493..c81e8df 100755
--- a/mbtk/libgsw_lib/gsw_voice_interface.c
+++ b/mbtk/libgsw_lib/gsw_voice_interface.c
@@ -137,41 +137,10 @@
     GSW_END_ABNORMAL,

 } gsw_call_end_reason_enum;

 

-//mbtk end_reason enum define

-typedef struct {

-    char mbtk_end_reason[128];

-    gsw_call_end_reason_enum end_reason;

-}end_reason_t;

-

-end_reason_t g_end_reason[] = {

-{MBTK_VOICE_END_REASON_UNASSIGNED_NUMBER, GSW_PEER_END_NORMAL}, 

-{MBTK_VOICE_END_REASON_NO_ROUTE_DES, GSW_END_ABNORMAL}, 

-{MBTK_VOICE_END_REASON_CHANNEL_UNACCEPTABLE, GSW_END_ABNORMAL}, 

-{MBTK_VOICE_END_REASON_OPERATOR_DETERMINED_BARRING, GSW_END_ABNORMAL}, 

-{MBTK_VOICE_END_REASON_NORMAL_CALL_CLEARING, GSW_LOCAL_END_NORMAL}, 

-{MBTK_VOICE_END_REASON_USER_BUSY, GSW_OTHER_END_NORMAL}, 

-{MBTK_VOICE_END_REASON_NO_USER_RESPONDING, GSW_OTHER_END_NORMAL}, 

-{MBTK_VOICE_END_REASON_USER_ALERTING_NO_ANSWER, GSW_LOCAL_END_NORMAL}, 

-{MBTK_VOICE_END_REASON_CALL_REJECTED, GSW_LOCAL_END_NORMAL}, 

-{MBTK_VOICE_END_REASON_NUMBER_CHANGED, GSW_OTHER_END_NORMAL}, 

-{MBTK_VOICE_END_REASON_PREEMPTION, GSW_OTHER_END_NORMAL}, 

-{MBTK_VOICE_END_REASON_NON_SELECTED_USER_CLEARING, GSW_OTHER_END_NORMAL}, 

-{MBTK_VOICE_END_REASON_DESTINATION_OUT_OF_ORDER, GSW_OTHER_END_NORMAL}, 

-{MBTK_VOICE_END_REASON_INVALID_NUMBER_FORMAT, GSW_OTHER_END_NORMAL}, 

-{MBTK_VOICE_END_REASON_FACILITY_REJECTED, GSW_OTHER_END_NORMAL}, 

-{MBTK_VOICE_END_REASON_STATUS_ENQUIRY, GSW_OTHER_END_NORMAL}, 

-{MBTK_VOICE_END_REASON_NORMAL_UNSPECIFIED, GSW_PEER_END_NORMAL}, 

-{MBTK_VOICE_END_REASON_NO_CIRCUIT_AVAILABLE, GSW_OTHER_END_NORMAL}, 

-{MBTK_VOICE_END_REASON_NETWORK_OUT_OF_ORDER, GSW_END_ABNORMAL}, 

-{MBTK_VOICE_END_REASON_TEMPORARY_FAILURE, GSW_END_ABNORMAL}, 

-{MBTK_VOICE_END_REASON_SWITCHING_EQUIPMENT_CONGESTION, GSW_OTHER_END_NORMAL}, 

-{MBTK_VOICE_END_REASON_ACCESS_INFORMATION_DISCARDED, GSW_OTHER_END_NORMAL}, 

-{MBTK_VOICE_END_REASON_REQUESTED_CIRCUIT_UNAVAILABLE, GSW_OTHER_END_NORMAL}, 

-{MBTK_VOICE_END_REASON_SERVICE_NOT_AVAILABLE, GSW_END_ABNORMAL},

-{MBTK_VOICE_END_REASON_END, GSW_OTHER_END_NORMAL}

-

+const char* g_normal_end_reason[] = {

+MBTK_VOICE_END_REASON_NORMAL_CALL_CLEARING,

+MBTK_VOICE_END_REASON_NORMAL_UNSPECIFIED, 

 };

-

 int gsw_global_end_reason = GSW_OTHER_END_NORMAL;

 

 //----------------end_reason end------------

@@ -297,7 +266,7 @@
 

 #define LOGE(fmt, args...) \

     do{ \

-		char *file_ptr_1001 = __FILE__; \

+        char *file_ptr_1001 = __FILE__; \

         char *ptr_1001 = file_ptr_1001 + strlen(file_ptr_1001) - 1;   \

         char line_1001[10] = {0}; \

         sprintf(line_1001, "%d", __LINE__); \

@@ -460,21 +429,21 @@
     return mbtk_rtp_api_import();

 }

 

-static int end_reason_mbtk_to_gsw(char* mbtk_reason)

+static void end_reason_mbtk_to_gsw(char* mbtk_reason)

 {

     LOGE("mbtk_reason:%s\n", mbtk_reason);

-    gsw_global_end_reason = GSW_OTHER_END_NORMAL;

-    for(int i = 0; 0 != strncmp(g_end_reason[i].mbtk_end_reason, MBTK_VOICE_END_REASON_END, strlen(MBTK_VOICE_END_REASON_END)); i++)

+    gsw_global_end_reason = GSW_END_ABNORMAL;

+    int length=sizeof (g_normal_end_reason)/ sizeof(g_normal_end_reason[0]);

+    for(int i = 0; i<length; i++)

     {

-         if(0 == strncmp(mbtk_reason, g_end_reason[i].mbtk_end_reason, strlen(g_end_reason[i].mbtk_end_reason)))

+         if(0 == strncmp(mbtk_reason, g_normal_end_reason[i], strlen(g_normal_end_reason[i])))

          {

-            gsw_global_end_reason = g_end_reason[i].end_reason;

-            LOGE("gsw_global_end_reason:%d\n", gsw_global_end_reason);

-            break;

+            gsw_global_end_reason=GSW_OTHER_END_NORMAL;

+            return;

          }

     }

 

-    return 0;

+    return;

 }

 

 void gsw_call_state_change_cb(const void *data, int data_len)

@@ -484,7 +453,8 @@
     {

         case MBTK_CLCC:

             {

-				LOGD("RING : %d, %d, %d, %d, %d, %s, %d, %d, end_reason:%s", reg->dir1, reg->dir, reg->state, reg->mode, reg->mpty, reg->phone_number, reg->type, reg->disconnected_id, reg->end_reason);

+                LOGD("RING : %d, %d, %d, %d, %d, %s, %d, %d, end_reason:%s", reg->dir1, reg->dir, reg->state, reg->mode, reg->mpty, reg->phone_number, reg->type, reg->disconnected_id, reg->end_reason);

+                //printf("RING : %d, %d, %d, %d, %d, %s, %d, %d, end_reason:%s\n", reg->dir1, reg->dir, reg->state, reg->mode, reg->mpty, reg->phone_number, reg->type, reg->disconnected_id, reg->end_reason);

                 switch(reg->state)

                 {

                     case 0:

@@ -521,24 +491,25 @@
                 }

 

             }

-			break;

+            break;

         case MBTK_DISCONNECTED:

             {

-				LOGD("RING : call dis connected!");

+                LOGD("RING : call dis connected!");

                 LOGD("RING : %d, %d, %d, %d, %d, %s, %d, %d, end_reason:%s", reg->dir1, reg->dir, reg->state, reg->mode, reg->mpty, reg->phone_number, reg->type, reg->disconnected_id, reg->end_reason);

-				state_t = GSW_VOICE_CALL_END;

+                //printf("RING : %d, %d, %d, %d, %d, %s, %d, %d, end_reason:%s\n", reg->dir1, reg->dir, reg->state, reg->mode, reg->mpty, reg->phone_number, reg->type, reg->disconnected_id, reg->end_reason);

+                state_t = GSW_VOICE_CALL_END;

                 call_id_t = reg->dir1;

                 end_reason_mbtk_to_gsw((char *)reg->end_reason);

-				if(gsw_voice_callback)

+                if(gsw_voice_callback)

                 {

                     gsw_voice_callback(reg->disconnected_id, state_t);

                 }

             }

-			break;

+            break;

         case MBTK_CPAS:

             LOGD("CALL : Call state = %d", reg->pas);

-			switch (reg->pas)

-			{

+            switch (reg->pas)

+            {

                 case MBTK_CALL_RADY:

                     LOGD("CALL: call READY");

                     break;

@@ -563,7 +534,7 @@
                 default:

                     //LOGE("\r\n");

                     break;

-			}

+            }

             break;

         default:

             LOGE("RING : None call_wait = %d", reg->call_wait);

@@ -858,10 +829,8 @@
 int32_t gsw_voice_get_current_call_end_reason(CallHandle handle)

 {

     VOICE_MODULE_INIT_CHECK();

-    

-    int reason = gsw_global_end_reason;

-

-    return reason;

+   

+    return gsw_global_end_reason;

 }