diff --git a/mbtk/libgsw_lib/gsw_ecall.c b/mbtk/libgsw_lib/gsw_eu_ecall_interface.c
similarity index 95%
rename from mbtk/libgsw_lib/gsw_ecall.c
rename to mbtk/libgsw_lib/gsw_eu_ecall_interface.c
index 88c73dd..b9d6147 100755
--- a/mbtk/libgsw_lib/gsw_ecall.c
+++ b/mbtk/libgsw_lib/gsw_eu_ecall_interface.c
@@ -11,7 +11,7 @@
 #include <stdbool.h>
 #include <pthread.h>
 
-#include "gsw_ecall.h"
+#include "gsw_eu_ecall_interface.h"
 
 #define RIL_MAX_NUMBER_LEN 40
 #define MBTK_ECALL_MSD_LEN_MAX      600
@@ -477,7 +477,7 @@
     handle = dlopen(LIB_PATH, RTLD_NOW);
     if (handle == NULL) 
     {
-        return GSW_HAL_FAIL;
+        return GSW_HAL_NORMAL_FAIL;
     }
 
     if(fun_ptr_log == NULL)
@@ -485,7 +485,7 @@
         fun_ptr_log = (mbtk_log)dlsym(handle, "mbtk_log");
         if(fun_ptr_log ==  NULL)
         {
-            return GSW_HAL_FAIL;
+            return GSW_HAL_NORMAL_FAIL;
         }
     }
 
@@ -494,7 +494,7 @@
         mbtk_log_init_ptr = (mbtk_log_init)dlsym(handle, "mbtk_log_init");
         if(mbtk_log_init_ptr ==  NULL)
         {
-            return GSW_HAL_FAIL;            
+            return GSW_HAL_NORMAL_FAIL;            
         }
     }
     
@@ -503,7 +503,7 @@
         mbtk_info_handle_get_ptr = (mbtk_info_handle_get)dlsym(handle, "mbtk_info_handle_get");
         if(mbtk_info_handle_get_ptr ==  NULL)
         {
-            return GSW_HAL_FAIL;            
+            return GSW_HAL_NORMAL_FAIL;            
         }
     }
     
@@ -512,7 +512,7 @@
         mbtk_info_handle_free_ptr = (mbtk_info_handle_free)dlsym(handle, "mbtk_info_handle_free");
         if(mbtk_info_handle_free_ptr ==  NULL)
         {
-            return GSW_HAL_FAIL;            
+            return GSW_HAL_NORMAL_FAIL;            
         }
     }
     
@@ -523,7 +523,7 @@
         mbtk_ecall_msd_set_ptr = (mbtk_ecall_msd_set)dlsym(handle, "mbtk_ecall_msd_set");
         if(mbtk_ecall_msd_set_ptr ==  NULL)
         {
-            return GSW_HAL_FAIL;            
+            return GSW_HAL_NORMAL_FAIL;            
         }
     }
 
@@ -532,7 +532,7 @@
         mbtk_ecall_push_ptr = (mbtk_ecall_push)dlsym(handle, "mbtk_ecall_push");
         if(mbtk_ecall_push_ptr ==  NULL)
         {
-            return GSW_HAL_FAIL;            
+            return GSW_HAL_NORMAL_FAIL;            
         }
     }
     if(mbtk_ecall_only_set_ptr == NULL)
@@ -540,7 +540,7 @@
         mbtk_ecall_only_set_ptr = (mbtk_ecall_only_set)dlsym(handle, "mbtk_ecall_only_set");
         if(mbtk_ecall_only_set_ptr ==  NULL)
         {
-            return GSW_HAL_FAIL;            
+            return GSW_HAL_NORMAL_FAIL;            
         }
     }
 
@@ -549,7 +549,7 @@
         mbtk_ecall_reg_set_ptr = (mbtk_ecall_reg_set)dlsym(handle, "mbtk_ecall_reg_set");
         if(mbtk_ecall_reg_set_ptr ==  NULL)
         {
-            return GSW_HAL_FAIL;            
+            return GSW_HAL_NORMAL_FAIL;            
         }
     }            
     if(mbtk_ecall_dial_start_ptr == NULL)
@@ -557,7 +557,7 @@
         mbtk_ecall_dial_start_ptr = (mbtk_ecall_dial_start)dlsym(handle, "mbtk_ecall_dial_start");
         if(mbtk_ecall_dial_start_ptr ==  NULL)
         {
-            return GSW_HAL_FAIL;            
+            return GSW_HAL_NORMAL_FAIL;            
         }
     }
     
@@ -566,7 +566,7 @@
         mbtk_ecall_mode_set_ptr = (mbtk_ecall_mode_set)dlsym(handle, "mbtk_ecall_mode_set");
         if(mbtk_ecall_mode_set_ptr ==  NULL)
         {
-            return GSW_HAL_FAIL;            
+            return GSW_HAL_NORMAL_FAIL;            
         }
     }
 
@@ -575,7 +575,7 @@
         mbtk_ecall_cfg_set_ptr = (mbtk_ecall_cfg_set)dlsym(handle, "mbtk_ecall_cfg_set");
         if(mbtk_ecall_cfg_set_ptr ==  NULL)
         {
-            return GSW_HAL_FAIL;            
+            return GSW_HAL_NORMAL_FAIL;            
         }
     }
     if(mbtk_ecall_cfg_get_ptr == NULL)
@@ -583,7 +583,7 @@
         mbtk_ecall_cfg_get_ptr = (mbtk_ecall_cfg_get)dlsym(handle, "mbtk_ecall_cfg_get");
         if(mbtk_ecall_cfg_get_ptr ==  NULL)
         {
-            return GSW_HAL_FAIL;            
+            return GSW_HAL_NORMAL_FAIL;            
         }
     }
     if(mbtk_ecall_state_change_cb_reg_ptr == NULL)
@@ -591,7 +591,7 @@
         mbtk_ecall_state_change_cb_reg_ptr = (mbtk_ecall_state_change_cb_reg)dlsym(handle, "mbtk_ecall_state_change_cb_reg");
         if(mbtk_ecall_state_change_cb_reg_ptr ==  NULL)
         {
-            return GSW_HAL_FAIL;            
+            return GSW_HAL_NORMAL_FAIL;            
         }
     }
     
@@ -600,7 +600,7 @@
         mbtk_call_state_change_cb_reg_ptr = (mbtk_call_state_change_cb_reg)dlsym(handle, "mbtk_call_state_change_cb_reg");
         if(mbtk_call_state_change_cb_reg_ptr ==  NULL)
         {
-            return GSW_HAL_FAIL;            
+            return GSW_HAL_NORMAL_FAIL;            
         }
     }
     
@@ -673,7 +673,7 @@
     ret = mbtk_ecall_api_import();
     if(ret <0)
     {
-        return GSW_HAL_FAIL;
+        return GSW_HAL_NORMAL_FAIL;
     }
 
     mbtk_log_init_ptr("syslog", "GSW_ECALL");
@@ -682,7 +682,7 @@
     if(ecall_info_handle == NULL)
     {
         LOGE("mbtk_info_handle_get_ptr fail!!!");
-        return GSW_HAL_FAIL;
+        return GSW_HAL_NORMAL_FAIL;
     }
     
     if(ecall_init_flag == 0)
@@ -693,7 +693,7 @@
     if(ret < 0)
     {
         LOGE("mbtk_call_state_change_cb_reg_ptr failed");
-        return GSW_HAL_FAIL;
+        return GSW_HAL_NORMAL_FAIL;
     }
     return GSW_HAL_SUCCESS;
 
@@ -712,7 +712,7 @@
     if(ecall_info_handle == NULL || ecall_init_flag ==0)
     {
         LOGE("No init can not deinit");
-        return GSW_HAL_FAIL;
+        return GSW_HAL_NORMAL_FAIL;
     }
 
     g_thread_running = false;
@@ -759,12 +759,12 @@
     
     if(ecall_init_flag !=1)
     {
-        return GSW_HAL_FAIL;
+        return GSW_HAL_NORMAL_FAIL;
     }
     
     if(p_info == NULL || p_info->msd_len > GSW_EU_ECALL_MAX_MSD )
     {
-        return GSW_HAL_FAIL;
+        return GSW_HAL_NORMAL_FAIL;
     }
 
     
@@ -813,7 +813,7 @@
     if (ret != 0)
     {
         LOGE("mbtk_ecall_only_set_success failed");
-        return GSW_HAL_FAIL;
+        return GSW_HAL_NORMAL_FAIL;
     }
 
     //set msd
@@ -821,7 +821,7 @@
     if (ret != 0)
     {
         LOGE("mbtk_ecall_msd_set_ptr failed");
-        return GSW_HAL_FAIL;
+        return GSW_HAL_NORMAL_FAIL;
     }
 
     //dial
@@ -829,7 +829,7 @@
     if (ret != 0)
     {
         LOGE("mbtk_ecall_dial_start_ptr failed");
-        return GSW_HAL_FAIL;
+        return GSW_HAL_NORMAL_FAIL;
     }
     
     //push mst
@@ -839,7 +839,7 @@
         g_msd_send_status = GSW_EU_ECALL_MSD_TRANS_STATUS_FAILURE;
         mbtk_send_singnal();
         LOGE("mbtk_ecall_push_ptr failed");
-        return GSW_HAL_FAIL;
+        return GSW_HAL_NORMAL_FAIL;
     }
     
     g_msd_send_status = GSW_EU_ECALL_MSD_TRANS_STATUS_SUCCESS;
@@ -860,14 +860,14 @@
     int32_t ret = -1;
     if(ecall_info_handle == NULL)
     {
-        return GSW_HAL_FAIL;
+        return GSW_HAL_NORMAL_FAIL;
     }
    
     ret = mbtk_ecall_dial_start_ptr(ecall_info_handle,MBTK_ECALL_DIAL_TYPE_RELEASE);
     if(ret != 0)
     {
         LOGE("hangup ecall faile ");
-        return GSW_HAL_FAIL;
+        return GSW_HAL_NORMAL_FAIL;
     }
 
     return GSW_HAL_SUCCESS;
@@ -887,7 +887,7 @@
     
     if(msd == NULL || msd_len == 0 ||ecall_info_handle == NULL)
     {
-        return GSW_HAL_MEM_INVAILD;
+        return GSW_HAL_NORMAL_FAIL;
     }
 
     //msd
@@ -899,7 +899,7 @@
     if (ret != 0)
     {
         LOGE("mbtk_ecall_msd_get_ptr failed");  
-        return GSW_HAL_FAIL;
+        return GSW_HAL_NORMAL_FAIL;
     }
     return GSW_HAL_SUCCESS;
     
@@ -911,7 +911,7 @@
     int ret = -1;
     if(ecall_info_handle == NULL)
     {
-        return GSW_HAL_FAIL;
+        return GSW_HAL_NORMAL_FAIL;
     }
 
     ret = mbtk_ecall_push_ptr(ecall_info_handle);
@@ -919,7 +919,7 @@
     {   
         g_msd_send_status = GSW_EU_ECALL_MSD_TRANS_STATUS_FAILURE;
         mbtk_send_singnal();
-        return GSW_HAL_FAIL;
+        return GSW_HAL_NORMAL_FAIL;
     }
      g_msd_send_status = GSW_EU_ECALL_MSD_TRANS_STATUS_SUCCESS;
      mbtk_send_singnal();
@@ -940,7 +940,7 @@
     if(ecall_info_handle==NULL || p_config == NULL)
     {
         LOGE("mbtk_ecall_cfg_get() fail.");
-        return GSW_HAL_MEM_INVAILD;
+        return GSW_HAL_NORMAL_FAIL;
     }
 
     p_config->fail_redial = fail_redial;
@@ -961,7 +961,7 @@
     if(ecall_info_handle == NULL || p_config == NULL)
     {
         LOGE("gsw_eu_ecall_setConfig no init");
-        return GSW_HAL_MEM_INVAILD;
+        return GSW_HAL_NORMAL_FAIL;
     }
     
     mbtk_ecall_cfg_info_t cfg_info = {0}; 
@@ -989,7 +989,7 @@
     if (ret < 0) 
     {
         LOGE("mbtk_ecall_cfg_set_ptr fail");
-        return GSW_HAL_FAIL;
+        return GSW_HAL_NORMAL_FAIL;
     }
     return GSW_HAL_SUCCESS;
 
@@ -1124,7 +1124,7 @@
     int ret = -1;
     if(ecall_info_handle==NULL)
     {
-        return GSW_HAL_MEM_INVAILD;
+        return GSW_HAL_NORMAL_FAIL;
     }
     
     gsw_eu_ecall_event_cb = cb;
@@ -1135,7 +1135,7 @@
          {
 
             LOGE("mbtk_ecall_state_change_cb_reg_ptr failed");
-            return GSW_HAL_FAIL;
+            return GSW_HAL_NORMAL_FAIL;
         }
         g_setevent_cb = true;
     }
@@ -1175,7 +1175,7 @@
     int ret = -1;
     if(ecall_info_handle==NULL)
     {
-        return GSW_HAL_FAIL;
+        return GSW_HAL_NORMAL_FAIL;
     }
     gsw_eu_ecall_status_cb = cb;
     if (!g_thread_running) 
@@ -1185,7 +1185,7 @@
         {
             LOGE("pthread_create failed");
             g_thread_running = false;
-            return GSW_HAL_FAIL;
+            return GSW_HAL_NORMAL_FAIL;
         }
         g_thread_running = true;
     }
