[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;
}