[Bugfix][T108-GSW][bug-view-1473] change gsw_reset_modem from sim module to nw module

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

Change-Id: Id20dde78474bc49b3cfe02d85e2371b2203e203f
diff --git a/mbtk/libgsw_lib/gsw_nw_interface.c b/mbtk/libgsw_lib/gsw_nw_interface.c
index 9005bbd..a21aec5 100755
--- a/mbtk/libgsw_lib/gsw_nw_interface.c
+++ b/mbtk/libgsw_lib/gsw_nw_interface.c
@@ -14,6 +14,10 @@
 #define ENTRY_LENGTH 6

 #define FPLMN_ARRAY_SIZE (FPLMN_STRING_LENGTH / 6) + 1

 

+#define MBTK_ERR_OK             0

+#define GSW_IMEI_LENGTH 20+1

+

+

 #ifndef FALSE

 #define FALSE   (0)

 #endif

@@ -328,6 +332,8 @@
 int (*mbtk_radio_state_change_cb_reg)(mbtk_info_handle_t* handle, mbtk_info_callback_func cb);

 int (*mbtk_oos_get)(mbtk_info_handle_t* handle, mbtk_oos_info *oos_info);

 int (*mbtk_oos_set)(mbtk_info_handle_t* handle, mbtk_oos_info *oos_info);

+int (*mbtk_imei_get)(mbtk_info_handle_t* handle, void *imei);

+

 

 static void (*mbtk_log)(int level, const char *format, ...);

 static void (*mbtk_log_init)(char *path, char *tag);

@@ -603,6 +609,13 @@
         LOGE("mbtk_oos_set dlsym fail\n");

         return GSW_HAL_NORMAL_FAIL;

     }

+  

+    mbtk_imei_get = (int (*)(mbtk_info_handle_t* handle, void *imei))dlsym(dlHandle_mbtk, "mbtk_imei_get");

+   if (mbtk_imei_get == NULL) 

+   {

+       LOGE("mbtk_imei_get dlsym fail\n");

+       return GSW_HAL_NORMAL_FAIL;

+   }

 

     return GSW_HAL_SUCCESS;

 }

@@ -1486,10 +1499,10 @@
 {

 

     int ret = -1;

-    LOGE("gsw_get_nwinfo start\n");

+    printf("gsw_get_nwinfo start\n");

     if (nw_init_flag == 0 || nw_info_handle == NULL)

     {

-        LOGE("nw_sdk_deinit not init\n");

+        printf("nw_sdk_deinit not init\n");

         return GSW_HAL_NORMAL_FAIL;

     }

 

@@ -1999,6 +2012,10 @@
  */

 int gsw_sigInfo_to_csq(int netType, int sigValue)

 {

+    if (nw_init_flag == 0 || nw_info_handle == NULL)

+    {

+        return GSW_HAL_NORMAL_FAIL;

+    }

     switch(netType)

     {

         case 1:

@@ -2107,7 +2124,7 @@
 

     if (nw_init_flag == 0 || nw_info_handle == NULL)

     {

-        LOGE("nw_sdk_deinit not init\n");

+        printf("nw_sdk_deinit not init\n");

         return GSW_HAL_NORMAL_FAIL;

     }

 

@@ -2461,7 +2478,7 @@
  */

 int gsw_remove_forbidden_networks(gsw_nw_plmn_list_t *plmn_list)

 {

-    LOGE("gsw_remove_forbidden_networks enter\n");

+    printf("gsw_remove_forbidden_networks enter\n");

     if (nw_init_flag == 0 || nw_info_handle == NULL)

     {

         return GSW_HAL_NORMAL_FAIL;

@@ -2646,5 +2663,80 @@
     return GSW_HAL_SUCCESS;

 }

 

+/**

+ * @brief get imei function

+ * @param  [in] len imei length,max is 20

+ * @param  [out] imei return imei from this func

+ * @retval 0: success

+ * @retval other: fail

+ */

+int gsw_get_imei(int len, char *imei)

+{

+    int ret = -1;

 

+    if (nw_init_flag == 0 || nw_info_handle == NULL)

+    {

+        printf("nw sdk has been deinit\n");

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    if(imei == NULL)

+    {

+        LOGE("imei is NULL.");

+        return GSW_HAL_ARG_INVALID;

+    }

+

+    if(len < GSW_IMEI_LENGTH)

+    {

+        LOGE("imei len is too short,len = %d\n", len);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    ret = mbtk_imei_get(nw_info_handle, (void *)imei);

+    if(ret != MBTK_ERR_OK)

+    {

+        LOGE("[gsw_nw] mbtk_imei_get fail [err = %d].", ret);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    return GSW_HAL_SUCCESS;

+}

+

+/**

+ * @brief reset modem stack only, notice: after use this method, all ril sdk

+ * need restart by app, means network, sim, sms, data need deinit then init!

+ * @param  

+ * @retval 0: success

+ * @retval other: fail

+ */

+int gsw_reset_modem(void)

+{

+    int ret = -1;

+    if (nw_init_flag == 0 || nw_info_handle == NULL)

+    {

+        printf("nw sdk has been deinit\n");

+        return GSW_HAL_NORMAL_FAIL;

+    }

+    mbtk_modem_info_t info;

+    info.fun = MBTK_DEV_MODEM_MIN_FUN;

+    info.rst = 0;

+

+    ret = mbtk_set_modem_fun(nw_info_handle, &info);

+    if(ret)

+    {

+        LOGE("[gsw_nw] mbtk_set_modem_fun 0 fail [err = %d].", ret);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    sleep(1);

+

+    info.fun = MBTK_DEV_MODEM_FULL_FUN;

+    ret = mbtk_set_modem_fun(nw_info_handle, &info);

+    if(ret)

+    {

+        LOGE("[gsw_nw] mbtk_set_modem_fun 1 fail [err = %d].", ret);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+    return GSW_HAL_SUCCESS;

+}