[Feature][T108][system][task-view-1692]Merged gsw hal code

Only Configure: No
Affected branch: GSW_V1453
Affected module: libgsw
Is it affected on IC: only ASR
Self-test: yes
Doc Update: no

Change-Id: I7fb669b6afc6e2f92a1e86ec8543498eb73120b4
diff --git a/mbtk/libgsw_lib/gsw_at_interface.c b/mbtk/libgsw_lib/gsw_at_interface.c
index 2d9cefd..6620d25 100755
--- a/mbtk/libgsw_lib/gsw_at_interface.c
+++ b/mbtk/libgsw_lib/gsw_at_interface.c
@@ -14,6 +14,8 @@
 #include <dlfcn.h>

 #include <stdbool.h>

 #include "gsw_at_interface.h"

+#include "gsw_hal_errcode.h"

+

 #ifndef LOG_ERR_LEVEL

 #define LOG_ERR_LEVEL  3      /* error conditions */

 #endif

@@ -101,9 +103,6 @@
         } \

         fun_ptr_log(LOG_ERR_LEVEL, "%s#%s: "GSW_AT"" fmt, ptr_1001 + 1, line_1001, ##args); \

     } while(0)

-    

-

-#define GSW_HAL_MEM_INVAILD -2 //表示入参地址为NULL

 

 #define OUT_MAX_SIZE 1024

 #define LINE __LINE__

@@ -346,7 +345,7 @@
     if (num != soc_max)

     {

         LOGE("temperture if not support,num is %d\n",num);

-        return GSW_HAL_FUNC_UNSUPPORT;

+        return GSW_HAL_SUCCESS;

     }

     if (NULL == temp)

     {

diff --git a/mbtk/libgsw_lib/gsw_data_interface.c b/mbtk/libgsw_lib/gsw_data_interface.c
index 9d2af55..b12841e 100755
--- a/mbtk/libgsw_lib/gsw_data_interface.c
+++ b/mbtk/libgsw_lib/gsw_data_interface.c
@@ -660,7 +660,7 @@
         LOGE("mbtk_pdp_state_change_cb_reg fail\n");

         return GSW_HAL_NORMAL_FAIL;

     }

-    

+

     gsw_data_call_evt_cb = evt_cb;

     data_init_flag = 1;

     return GSW_HAL_SUCCESS;

diff --git a/mbtk/libgsw_lib/gsw_eu_ecall_interface.c b/mbtk/libgsw_lib/gsw_eu_ecall_interface.c
index b9d6147..599d240 100755
--- a/mbtk/libgsw_lib/gsw_eu_ecall_interface.c
+++ b/mbtk/libgsw_lib/gsw_eu_ecall_interface.c
@@ -664,7 +664,7 @@
 * @brief init the Europe Ecall voice

 * @param  [in] None

 * @param  [out] None

-* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL

+* @retval GSW_HAL_SUCCESS\GSW_HAL_NORMAL_FAIL

 */

 

 int32_t gsw_eu_ecall_voice_init(void)

@@ -704,7 +704,7 @@
 * @brief deinit the Europe Ecall voice

 * @param  [in] None

 * @param  [out] None

-* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL

+* @retval GSW_HAL_SUCCESS\GSW_HAL_NORMAL_FAIL

 */

 int32_t gsw_eu_ecall_voice_deinit(void)

 {

@@ -742,7 +742,7 @@
 * @brief start a Europe Ecall

 * @param  [in] gsw_eu_ecall_info_t *p_info: ecall info

 * @param  [out] None

-* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL

+* @retval GSW_HAL_SUCCESS\GSW_HAL_NORMAL_FAIL

 */

 int32_t gsw_eu_ecall_start(gsw_eu_ecall_info_t *p_info)

 {

@@ -773,7 +773,8 @@
         //AT+CECALL =0

         ecall_type = MBTK_ECALL_DIAL_TYPE_TEST;

         snprintf(tmp_number,sizeof(tmp_number),"%s",p_info->ecall_number);

-        strncpy((char *)only_info.test_num,tmp_number,RIL_MAX_NUMBER_LEN);

+        strncpy((char *)only_info.test_num,tmp_number,RIL_MAX_NUMBER_LEN-1);

+        only_info.test_num[RIL_MAX_NUMBER_LEN-1]='\0';

         //snprintf((char*)only_info.test_num,sizeof(only_info.test_num),"%s",p_info->ecall_number);

     }

     

@@ -782,7 +783,8 @@
         //AT+CECALL =1

         ecall_type = MBTK_ECALL_DIAL_TYPE_RECONFIG;

         snprintf(tmp_number,sizeof(tmp_number),"%s",p_info->ecall_number);

-        strncpy((char *)only_info.test_num,tmp_number,RIL_MAX_NUMBER_LEN);

+        strncpy((char *)only_info.test_num,tmp_number,RIL_MAX_NUMBER_LEN-1);

+        only_info.test_num[RIL_MAX_NUMBER_LEN-1]='\0';

     }

     

     if(p_info->type == GSW_EU_ECALL_TYPE_EMERGENCY  )

@@ -853,7 +855,7 @@
 * @brief hangup a Europe Ecall

 * @param  [in] None

 * @param  [out] None

-* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL

+* @retval GSW_HAL_SUCCESS\GSW_HAL_NORMAL_FAIL

 */

 int32_t gsw_eu_ecall_hangup(void)

 {

@@ -877,7 +879,7 @@
 * @brief using push mode send msd data

 * @param  [in] GSW_EU_ECALL_STATE_E state: ecall state

 * @param  [out] None

-* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL

+* @retval GSW_HAL_SUCCESS\GSW_HAL_NORMAL_FAIL

 */

 

 int32_t gsw_eu_ecall_updateMsd(const uint8_t *msd, uint32_t msd_len)

@@ -887,7 +889,7 @@
     

     if(msd == NULL || msd_len == 0 ||ecall_info_handle == NULL)

     {

-        return GSW_HAL_NORMAL_FAIL;

+        return GSW_HAL_NO_MEMORY;

     }

 

     //msd

@@ -932,7 +934,7 @@
 * @brief get ecall config

 * @param  [in] None

 * @param  [out] gsw_eu_ecall_config_t *p_config: ecall config

-* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL

+* @retval GSW_HAL_SUCCESS\GSW_HAL_NORMAL_FAIL

 */

 int32_t gsw_eu_ecall_getConfig(gsw_eu_ecall_config_t *p_config)

 {

@@ -940,7 +942,7 @@
     if(ecall_info_handle==NULL || p_config == NULL)

     {

         LOGE("mbtk_ecall_cfg_get() fail.");

-        return GSW_HAL_NORMAL_FAIL;

+        return GSW_HAL_NO_MEMORY;

     }

 

     p_config->fail_redial = fail_redial;

@@ -953,7 +955,7 @@
 * @param  [in] int32_t item: config item

 * @param  [in] gsw_eu_ecall_config_t  *p_config: config info

 * @param  [out] None

-* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL

+* @retval GSW_HAL_SUCCESS\GSW_HAL_NORMAL_FAIL

 */

 

 int32_t gsw_eu_ecall_setConfig(int32_t item, gsw_eu_ecall_config_t *p_config)

@@ -961,7 +963,7 @@
     if(ecall_info_handle == NULL || p_config == NULL)

     {

         LOGE("gsw_eu_ecall_setConfig no init");

-        return GSW_HAL_NORMAL_FAIL;

+        return GSW_HAL_NO_MEMORY;

     }

     

     mbtk_ecall_cfg_info_t cfg_info = {0}; 

@@ -1117,14 +1119,14 @@
  * @brief register the ecall status callback

 * @param  [in] gsw_eu_ecall_status_cb_f cb:callback

 * @param  [out] None

-* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL

+* @retval GSW_HAL_SUCCESS\GSW_HAL_NORMAL_FAIL

 */

 int32_t gsw_eu_ecall_setEventCB(gsw_eu_ecall_event_cb_f cb)

 {

     int ret = -1;

     if(ecall_info_handle==NULL)

     {

-        return GSW_HAL_NORMAL_FAIL;

+        return GSW_HAL_NO_MEMORY;

     }

     

     gsw_eu_ecall_event_cb = cb;

@@ -1168,7 +1170,7 @@
 * @brief register the ecall status callback

 * @param  [in] gsw_eu_ecall_status_cb_f cb:callback

 * @param  [out] None

-* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL

+* @retval GSW_HAL_SUCCESS\GSW_HAL_NORMAL_FAIL

 */

 int32_t gsw_eu_ecall_setStatusCB(gsw_eu_ecall_status_cb_f cb)

 {

diff --git a/mbtk/libgsw_lib/gsw_gnss_interface.c b/mbtk/libgsw_lib/gsw_gnss_interface.c
index 8448a3b..e63576d 100755
--- a/mbtk/libgsw_lib/gsw_gnss_interface.c
+++ b/mbtk/libgsw_lib/gsw_gnss_interface.c
@@ -109,11 +109,6 @@
         } \

         fun_ptr_log(LOG_ERR_LEVEL, "%s#%s: "GSW_GNSS"" fmt, ptr_1001 + 1, line_1001, ##args); \

     } while(0)

-    

-

-// #define GSW_HAL_SUCCESS 0

-#define GSW_HAL_FAIL -1	//表示失败(通用性)

-#define GSW_HAL_MEM_INVAILD -2 //表示入参地址为NULL

 

 #define MOPEN_GNSS_NMEA_MAX_LENGTH  255                 /**  NMEA string maximum length. */

 static gsw_gnss_cb *gsw_cb = NULL;

@@ -187,7 +182,6 @@
     gsw_gnss_cb callback;

 }gsw_gnss_init_configure_t;

 

-

 typedef enum{

     MODE_GPS = 1,                               /**< GPS only */

     MODE_BEIDOU,                                /**< BEIDOU only*/

@@ -250,7 +244,7 @@
     if(ret != 0)

     {

         LOGE("[qser_gnss] mbtk_gnss_setting fail.ret = [%d]", ret);

-        return GSW_HAL_FAIL;

+        return GSW_HAL_NORMAL_FAIL;

     }

     return GSW_HAL_SUCCESS;

 }

@@ -264,7 +258,7 @@
 int gsw_gnss_set_freq(int freq)

 {

     if(!inited)

-        return GSW_HAL_FAIL;

+        return GSW_HAL_NORMAL_FAIL;

 

     int ret;

     if (!strated)

@@ -279,7 +273,7 @@
     if(ret != 0)

     {

         LOGE("[qser_gnss] mbtk_gnss_setting fail.ret = [%d]", ret);

-        return GSW_HAL_FAIL;

+        return GSW_HAL_NORMAL_FAIL;

     }

     return GSW_HAL_SUCCESS;

 }

@@ -290,11 +284,10 @@
  * @retval 0: success

  * @retval other: fail

  */

-int gsw_gnss_set_start_mode(GSW_GNSS_MODE_CONFIGURATION start_mode)

+int32_t gsw_gnss_set_start_mode(GSW_GNSS_MODE_CONFIGURATION start_mode)

 {

     if(!inited)

-        return GSW_HAL_FAIL;

-

+        return GSW_HAL_NORMAL_FAIL;

     int ret;

     if (!strated)

     {

@@ -306,14 +299,14 @@
     if(map_gnss_mode(start_mode) == -1)

     {

         LOGE("[qser_gnss] mbtk_gnss_start_mode con't support");

-        return GSW_HAL_FAIL;

+        return GSW_HAL_NORMAL_FAIL;

     }

     mbtk_gnss_setting=(int(*)(const char *setting_cmd, int))dlsym(dlHandle_gnss, "mbtk_gnss_setting");

     ret = mbtk_gnss_setting(param_buf, QSER_GNSS_TIMEOUT);

     if(ret != 0)

     {

         LOGE("[qser_gnss] mbtk_gnss_setting fail.ret = [%d]", ret);

-        return GSW_HAL_FAIL;

+        return GSW_HAL_NORMAL_FAIL;

     }

     return GSW_HAL_SUCCESS;

 }

@@ -324,11 +317,10 @@
  * @retval 0: success

  * @retval other: fail

  */

-int gsw_gnss_epo_switch(GSW_CONF_SWITCH switch_op)

+int32_t gsw_gnss_epo_switch(GSW_CONF_SWITCH switch_op)

 {

     if(!inited)

-        return GSW_HAL_FAIL;

-

+        return GSW_HAL_NORMAL_FAIL;

     int ret;

     if (!strated)

     {

@@ -343,14 +335,14 @@
         if(ret != 0)

         {

             LOGE("[qser_gnss] mbtk_gnss_eph_download fail.ret = [%d]", ret);

-            return GSW_HAL_FAIL;

+            return GSW_HAL_NORMAL_FAIL;

         }

         mbtk_gnss_eph_inject=(int(*)(int))dlsym(dlHandle_gnss, "mbtk_gnss_eph_inject");

         ret = mbtk_gnss_eph_inject(QSER_GNSS_TIMEOUT);

         if(ret != 0)

         {

             LOGE("[qser_gnss] mbtk_gnss_eph_inject fail.ret = [%d]", ret);

-            return GSW_HAL_FAIL;

+            return GSW_HAL_NORMAL_FAIL;

         }

     }

     return GSW_HAL_SUCCESS;

@@ -377,7 +369,7 @@
 			return;

 		}

 		GSW_GNSS_LOCATION_EXT_T gsw_location;

-        GSW_GNSS_LOCATION_T gsw_location_t;

+        GSW_GNSS_LOCATION_T gsw_location_t = {0};

         mbtk_gnss_location_info_t *locl_info = (mbtk_gnss_location_info_t *)data;

         gsw_location_t.altitude = locl_info->altitude;

         gsw_location_t.latitude = locl_info->latitude;

@@ -400,7 +392,7 @@
     }

 }

 

-int gsw_gnss_init(void)

+int32_t gsw_gnss_init(void)

 {

     int ret;

     if(!inited)

@@ -409,7 +401,7 @@
         fun_ptr_log = (mbtk_log)dlsym(dlHandle_gnss, "mbtk_log");

         if(fun_ptr_log == NULL || dlHandle_gnss == NULL)

         {

-            return GSW_HAL_FAIL;

+            return GSW_HAL_NORMAL_FAIL;

         }

         mbtk_gnss_init=(int(*)(mbtk_gnss_callback_func))dlsym(dlHandle_gnss, "mbtk_gnss_init");

         ret = mbtk_gnss_init(gnss_callback);

@@ -424,13 +416,13 @@
             else

             {

                 LOGE("[GSW_gnss] init mbtk_gnss_ind_set() fail.ret = [%d]", ret);

-                return GSW_HAL_FAIL;

+                return GSW_HAL_NORMAL_FAIL;

             }

         }

         else

         {

             LOGE("[GSW_gnss] mbtk_gnss_init() fail.ret = [%d]", ret);

-            return GSW_HAL_FAIL;

+            return GSW_HAL_NORMAL_FAIL;

         }

     }

 

@@ -443,15 +435,14 @@
  * @retval 0: success

  * @retval other: fail

  */

-int gsw_gnss_reg_cb_group(gsw_gnss_cb callback)

+int32_t gsw_gnss_reg_cb_group(gsw_gnss_cb callback)

 {

     if(!inited)

-        return GSW_HAL_FAIL;

-

+        return GSW_HAL_NORMAL_FAIL;

     if(callback.gsw_location_cb == NULL && callback.gsw_nmea_cb == NULL)

     {

         LOGE("[GSW_gnss] handler_ptr is NULL.");

-        return GSW_HAL_FAIL;

+        return GSW_HAL_NORMAL_FAIL;

     }

     if (gsw_cb == NULL)

     {

@@ -459,7 +450,7 @@
         if (gsw_cb == NULL)

         {

             LOGE("[GSW_gnss] Memory allocation failed.");

-            return GSW_HAL_FAIL;

+            return GSW_HAL_NORMAL_FAIL;

         }

     }

     gsw_cb->gsw_location_cb = callback.gsw_location_cb;

@@ -472,23 +463,23 @@
  * @retval 0: success

  * @retval other: fail

  */

-int gsw_gnss_start(void)

+int32_t gsw_gnss_start(void)

 {

     int ret;

     if(!inited)

-        return GSW_HAL_FAIL;

+        return GSW_HAL_NORMAL_FAIL;

     ret = system("/usr/sbin/gnss_gpio.sh on > /dev/null 2>&1");

     if(ret != 0)

     {

         LOGE("[GSW_gnss] gnss_gpio.sh on fail.ret = [%d]", ret);

-        return GSW_HAL_FAIL;

+        return GSW_HAL_NORMAL_FAIL;

     }

     mbtk_gnss_open=(int(*)(int,int))dlsym(dlHandle_gnss, "mbtk_gnss_open");

     ret = mbtk_gnss_open(255, QSER_GNSS_TIMEOUT);

     if(ret != 0)

     {

         LOGE("[GSW_gnss] mbtk_gnss_open is error.ret = [%d]", ret);

-        return GSW_HAL_FAIL;

+        return GSW_HAL_NORMAL_FAIL;

     }

 

     strated = true;

@@ -511,23 +502,23 @@
  * @retval 0: success

  * @retval other: fail

  */

-int gsw_gnss_stop(void)

+int32_t gsw_gnss_stop(void)

 {

     int ret;

     if(!inited)

-        return GSW_HAL_FAIL;

+        return GSW_HAL_NORMAL_FAIL;

     mbtk_gnss_close=(int(*)(int))dlsym(dlHandle_gnss, "mbtk_gnss_close");

     ret = mbtk_gnss_close(QSER_GNSS_TIMEOUT);

     if(ret != 0)

     {

         LOGE("[GSW_gnss] mbtk_gnss_close is error.ret = [%d]", ret);

-        return GSW_HAL_FAIL;

+        return GSW_HAL_NORMAL_FAIL;

     }

     ret = system("/usr/sbin/gnss_gpio.sh off > /dev/null 2>&1");

     if(ret != 0)

     {

         LOGE("[GSW_gnss] gnss_gpio.sh off fail.ret = [%d]", ret);

-        return GSW_HAL_FAIL;

+        return GSW_HAL_NORMAL_FAIL;

     }

     strated = false;

     return GSW_HAL_SUCCESS;

@@ -539,11 +530,11 @@
  * @retval 0: success

  * @retval other: fail

  */

-int gsw_gnss_deinit(void)

+int32_t gsw_gnss_deinit(void)

 {

     int ret;

     if(!inited)

-        return GSW_HAL_FAIL;

+        return GSW_HAL_NORMAL_FAIL;

     if(inited)

     {

         mbtk_gnss_deinit=(int(*)())dlsym(dlHandle_gnss, "mbtk_gnss_deinit");

@@ -557,7 +548,7 @@
             LOGE("[GSW_gnss] mbtk_gnss_init() fail.ret = [%d]", ret);

             dlclose(dlHandle_gnss);

             dlHandle_gnss = NULL;

-            return GSW_HAL_FAIL;

+            return GSW_HAL_NORMAL_FAIL;

         }

     }

 

@@ -580,7 +571,7 @@
  * @retval 0: success

  * @retval other: fail

  */

-int gsw_gnss_xtra_is_enable(gsw_xtra_state_e state)

+int32_t gsw_gnss_xtra_is_enable(gsw_xtra_state_e state)

 {

     return GSW_HAL_SUCCESS;

 }

@@ -591,11 +582,10 @@
  * @retval 0: success

  * @retval other: fail

  */

-int gsw_gnss_delete_aiding_data(unsigned int flags) /*1-don`t delete == hot_start ; 2-delete EPH == warm start ; 3-delete all == cold start*/

+int32_t gsw_gnss_delete_aiding_data(unsigned int flags) /*1-don`t delete == hot_start ; 2-delete EPH == warm start ; 3-delete all == cold start*/

 {

     if(!inited)

-        return GSW_HAL_FAIL;

-

+        return GSW_HAL_NORMAL_FAIL;

     int ret;

     char param_buf[32] = {0};

     snprintf(param_buf, 32, "$RESET,%u", flags);

@@ -604,7 +594,7 @@
     if(ret != 0)

     {

         LOGE("[qser_gnss] mbtk_gnss_setting fail.ret = [%d]", ret);

-        return GSW_HAL_FAIL;

+        return GSW_HAL_NORMAL_FAIL;

     }

     return GSW_HAL_SUCCESS;

 }

@@ -615,7 +605,23 @@
  * @retval 0: success

  * @retval other: fail

  */

-int gsw_gnss_init_configure_gps(gsw_gnss_init_configure_t init_configure)

+int32_t gsw_gnss_init_configure_gps(gsw_gnss_init_configure_t init_configure)

 {

     return GSW_HAL_SUCCESS;

 }

+

+int gsw_gnss_get_tail_nmea_type(char *tail_type, int len)

+{

+    if(NULL == tail_type){

+        LOGE("get_tail_nmea_type fail, tail_type is NULL");

+        return GSW_HAL_ERROR_GNSS_FAIL;

+    }

+

+    if(len >= 3){

+        strcpy(tail_type, "RMC");

+        return GSW_HAL_GNSS_SUCCESS;

+    }else{

+        LOGE("get_tail_nmea_type fail, len[%d] is too short", len);

+        return GSW_HAL_ERROR_GNSS_FAIL;

+    }

+}

diff --git a/mbtk/libgsw_lib/gsw_hwpin_interface.c b/mbtk/libgsw_lib/gsw_hwpin_interface.c
index 9837b97..d132b01 100755
--- a/mbtk/libgsw_lib/gsw_hwpin_interface.c
+++ b/mbtk/libgsw_lib/gsw_hwpin_interface.c
@@ -8,6 +8,7 @@
 #include <dlfcn.h>

 

 #include "gsw_hwpin_interface.h"

+#include "gsw_hal_errcode.h"

 

 #ifndef LOG_ERR_LEVEL

 #define LOG_ERR_LEVEL  3      /* error conditions */

@@ -96,9 +97,7 @@
         } \

         fun_ptr_log(LOG_ERR_LEVEL, "%s#%s: "GSW_GPIO"" fmt, ptr_1001 + 1, line_1001, ##args); \

     } while(0)

-    

 

-#define GSW_HAL_MEM_INVAILD -2 //表示入参地址为NULL

 #define wakeout 117

 

 typedef enum{

@@ -167,7 +166,6 @@
         return -1;

     }

 

-    memset(pin_index_buffer,0,5);

     sprintf(pin_index_buffer,"%d", gpio);

     result = write(file,pin_index_buffer,strlen(pin_index_buffer));

     if(result < 0)

@@ -199,7 +197,6 @@
         return -1;

     }

 

-    memset(pin_index_buffer,0,5);

     sprintf(pin_index_buffer,"%d", gpio);

     result=write(file,pin_index_buffer,strlen(pin_index_buffer));

     if(result < 0)

@@ -261,8 +258,8 @@
     char path[128];

     int file =-1;

     int result =-1;

-    memset(path,0,128);

-    memset(buffer,0,50);

+    memset(path,0,sizeof(path));

+    memset(buffer,0,sizeof(buffer));

     if (handle())

         return GSW_HAL_NORMAL_FAIL;

 

@@ -396,3 +393,382 @@
     }

     return GSW_HAL_SUCCESS;

 }

+

+#define SYS_LED_DEV_TRIGGER_NODE    "/sys/class/leds/red/trigger"

+#define SYS_LED_DEV_BRIGHTNES_NODE  "/sys/class/leds/red/brightness"

+#define SYS_LED_DEV_DELAY_OFF_NODE  "/sys/class/leds/red/delay_off"

+#define SYS_LED_DEV_DELAY_ON_NODE   "/sys/class/leds/red/delay_on"

+#define EMMC_HEALTH_FILE            "/sys/kernel/debug/mmc0/mmc0:0001/health"

+#define MDM_RESET_MCU               19

+#define MDM_BOOT_MCU_CTRL           31

+#define MDM_PWRMDM_EN               116

+#define MDM_WAKEUP_MCU              117

+

+int gsw_hwpin_mcu_reset(void)

+{

+    if (0 != gsw_gpio_Init(MDM_RESET_MCU, GSW_HAL_PINDIR_OUT, GSW_HAL_LEVEL_LOW, GSW_HAL_PULL_DOWN))

+    {

+        LOGE("init GPIO %d fail!", MDM_RESET_MCU);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    usleep(1000);

+    if (0 != gsw_gpio_SetLevel(MDM_RESET_MCU, GSW_HAL_LEVEL_HIGH))

+    {

+        LOGE("set GPIO %d : %d fail!", MDM_RESET_MCU, GSW_HAL_LEVEL_HIGH);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    usleep(100000);

+    if (0 != gsw_gpio_SetLevel(MDM_RESET_MCU, GSW_HAL_LEVEL_LOW))

+    {

+        LOGE("set GPIO %d : %d fail!", MDM_RESET_MCU, GSW_HAL_LEVEL_LOW);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    usleep(100000);

+    return GSW_HAL_SUCCESS;

+}

+

+int gsw_hwpin_mcu_enter_bootmode(void)

+{

+    if (0 != gsw_gpio_Init(MDM_BOOT_MCU_CTRL, GSW_HAL_PINDIR_OUT, GSW_HAL_LEVEL_LOW, GSW_HAL_PULL_DOWN))

+    {

+        LOGE("init GPIO %d fail!", MDM_BOOT_MCU_CTRL);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    usleep(1000);

+    if (0 != gsw_gpio_SetLevel(MDM_BOOT_MCU_CTRL, GSW_HAL_LEVEL_HIGH))

+    {

+        LOGE("set GPIO %d : %d fail!", MDM_BOOT_MCU_CTRL, GSW_HAL_LEVEL_HIGH);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    usleep(100000);

+    return gsw_hwpin_mcu_reset();

+}

+

+int gsw_hwpin_mcu_exit_bootmode(void)

+{

+    if (0 != gsw_gpio_Init(MDM_BOOT_MCU_CTRL, GSW_HAL_PINDIR_OUT, GSW_HAL_LEVEL_LOW, GSW_HAL_PULL_DOWN))

+    {

+        LOGE("init GPIO %d fail!", MDM_BOOT_MCU_CTRL);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    usleep(1000);

+    if (0 != gsw_gpio_SetLevel(MDM_BOOT_MCU_CTRL, GSW_HAL_LEVEL_LOW))

+    {

+        LOGE("set GPIO %d : %d fail!", MDM_BOOT_MCU_CTRL, GSW_HAL_LEVEL_LOW);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    usleep(100000);

+    return gsw_hwpin_mcu_reset();

+}

+

+int gsw_hwpin_soc_power_keep(void)

+{

+    return 0;

+}

+

+int gsw_hwpin_soc_power_release(void)

+{

+    return 0;

+}

+

+static int _gsw_hwpin_soc_power_down(void)

+{

+    if (0 != gsw_gpio_Init(MDM_PWRMDM_EN, GSW_HAL_PINDIR_OUT, GSW_HAL_LEVEL_LOW, GSW_HAL_PULL_DOWN))

+    {

+        LOGE("init GPIO %d fail!", MDM_BOOT_MCU_CTRL);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    usleep(1000);

+    if (0 != gsw_gpio_SetLevel(MDM_PWRMDM_EN, GSW_HAL_LEVEL_HIGH))

+    {

+        LOGE("set GPIO %d : %d fail!", MDM_PWRMDM_EN, GSW_HAL_LEVEL_HIGH);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    return GSW_HAL_SUCCESS;

+}

+

+int gsw_hwpin_tcam_reset(void)

+{

+    if (gsw_hwpin_mcu_reset() < 0)

+        return GSW_HAL_NORMAL_FAIL;

+    usleep(10000);

+    return _gsw_hwpin_soc_power_down();

+}

+

+int gsw_hwpin_soc_wakeup_mcu(void)

+{

+    if (0 != gsw_setWakeupLevel(GSW_HAL_LEVEL_HIGH))

+    {

+        LOGE("wakeup mcu fail!");

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    return GSW_HAL_SUCCESS;

+}

+

+int gsw_hwpin_soc_wakeup_mcu_gpio_set_low(void)

+{

+    if (0 != gsw_setWakeupLevel(GSW_HAL_LEVEL_LOW))

+    {

+        LOGE("wakeup mcu set low fail!");

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    return GSW_HAL_SUCCESS;

+}

+

+static int _file_read(const char *file, char *value, unsigned int len)

+{

+    int fd = 0;

+    int ret = 0;

+    fd = open(file, O_RDONLY);

+    if(fd <= 0) {

+        LOGE("[hwpin] open file error %d,%s", fd, file);

+        return GSW_HAL_ERROR_FILE_OPEN;

+    }

+    if(value && len > 0) {

+        ret = read(fd, value, len);

+    }

+    close(fd);

+    if(ret < 0) {

+        LOGE("[hwpin] read file error %d,%s",ret, file);

+    }

+    return ret;

+}

+

+static int _file_write(const char *file, char *value)

+{

+    int fd = 0;

+    int ret = 0;

+    fd = open(file, O_WRONLY);

+    if(fd <= 0) {

+        LOGE("[hwpin] open file error %d,%s", fd, file);

+        return GSW_HAL_ERROR_FILE_OPEN;

+    }

+    if(value) {

+        ret = write(fd, value, strlen(value));

+    }

+    close(fd);

+    if(ret < 0) {

+        LOGE("[hwpin] write file error %d,%s",ret, file);

+    }

+    return ret;

+}

+

+int gsw_hwpin_led_red_on(void)

+{

+    return GSW_HAL_SUCCESS;

+}

+

+int gsw_hwpin_led_red_off(void)

+{

+    return GSW_HAL_SUCCESS;

+}

+

+int gsw_hwpin_led_red_blink(int delay_on, int delay_off)

+{

+    return GSW_HAL_SUCCESS;

+}

+

+static bool g_aging_flag = false;

+int gsw_hwpin_led_green_on(void)

+{

+    if (true == g_aging_flag)

+    {

+        LOGI("green on LED file fail g_aging_flag = %d", g_aging_flag);

+        return GSW_HAL_SUCCESS;

+    }

+

+    if (access(SYS_LED_DEV_TRIGGER_NODE, W_OK) != 0)

+    {

+        LOGE("green_on LED file fail %s", SYS_LED_DEV_TRIGGER_NODE);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    if (_file_write(SYS_LED_DEV_TRIGGER_NODE, "none") <= 0)

+    {

+        LOGE("green_on LED write fail %s", SYS_LED_DEV_TRIGGER_NODE);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    if (access(SYS_LED_DEV_BRIGHTNES_NODE, W_OK) != 0)

+    {

+        LOGE("green_on LED file fail %s", SYS_LED_DEV_BRIGHTNES_NODE);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    if (_file_write(SYS_LED_DEV_BRIGHTNES_NODE, "1") <= 0)

+    {

+        LOGE("green_on LED write fail %s", SYS_LED_DEV_BRIGHTNES_NODE);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+    return GSW_HAL_SUCCESS;

+}

+

+int gsw_hwpin_led_green_off(void)

+{

+    if (true == g_aging_flag)

+    {

+        LOGI("green off LED file fail g_aging_flag = %d", g_aging_flag);

+        return GSW_HAL_SUCCESS;

+    }

+

+    if (access(SYS_LED_DEV_TRIGGER_NODE, W_OK) != 0)

+    {

+        LOGE("green_on LED file fail %s", SYS_LED_DEV_TRIGGER_NODE);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    if (_file_write(SYS_LED_DEV_TRIGGER_NODE, "none") <= 0)

+    {

+        LOGE("green_on LED write fail %s", SYS_LED_DEV_TRIGGER_NODE);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    if (access(SYS_LED_DEV_BRIGHTNES_NODE, W_OK) != 0)

+    {

+        LOGE("green_on LED file fail %s", SYS_LED_DEV_BRIGHTNES_NODE);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    if (_file_write(SYS_LED_DEV_BRIGHTNES_NODE, "0") <= 0)

+    {

+        LOGE("green_on LED write fail %s", SYS_LED_DEV_BRIGHTNES_NODE);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    return GSW_HAL_SUCCESS;

+}

+

+int gsw_hwpin_led_green_blink(int delay_on, int delay_off)

+{

+    char buf[32] = {0};

+

+    if (true == g_aging_flag)

+    {

+        LOGI("green blink LED file fail g_aging_flag = %d", g_aging_flag);

+        return GSW_HAL_SUCCESS;

+    }

+

+    if (access(SYS_LED_DEV_TRIGGER_NODE, W_OK) != 0)

+    {

+        LOGE("green_on LED file fail %s", SYS_LED_DEV_TRIGGER_NODE);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    if (_file_write(SYS_LED_DEV_TRIGGER_NODE, "timer") <= 0)

+    {

+        LOGE("green_on LED write fail %s", SYS_LED_DEV_TRIGGER_NODE);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    if (access(SYS_LED_DEV_DELAY_OFF_NODE, W_OK) != 0)

+    {

+        LOGE("green_on LED file fail %s", SYS_LED_DEV_DELAY_OFF_NODE);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    sprintf(buf, "%d", delay_off);

+    if (_file_write(SYS_LED_DEV_DELAY_OFF_NODE, buf) <= 0)

+    {

+        LOGE("green_on LED write fail %s", SYS_LED_DEV_DELAY_OFF_NODE);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    if (access(SYS_LED_DEV_DELAY_ON_NODE, W_OK) != 0)

+    {

+        LOGE("green_on LED file fail %s", SYS_LED_DEV_DELAY_ON_NODE);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    sprintf(buf, "%d", delay_on);

+    if (_file_write(SYS_LED_DEV_DELAY_ON_NODE, buf) <= 0)

+    {

+        LOGE("green_on LED write fail %s", SYS_LED_DEV_DELAY_ON_NODE);

+        return GSW_HAL_NORMAL_FAIL;

+    }

+

+    return GSW_HAL_SUCCESS;

+}

+

+int gsw_hwpin_get_emmc_health(int *written_mbytes, int *health)

+{

+    char buffer[32] = {0};

+    char *p = buffer;

+    char *written_str = buffer;

+    char *health_str = NULL;

+

+    if (!written_mbytes && !health)

+        return GSW_HAL_NORMAL_FAIL;

+

+    if (_file_read(EMMC_HEALTH_FILE, buffer, sizeof(buffer)) <= 0)

+        return -1;

+

+    /* [0000017500-003], all 17500MB has be writtend, 003 is health value(smaller is better) */

+    while (*p != '\0')

+    {

+        if ('-' == *p)

+        {

+            health_str = p + 1;

+            *p = '\0';

+            break;

+        }

+        p++;

+    }

+

+    if (written_mbytes)

+        sscanf(written_str, "%10d", written_mbytes);

+    if (health)

+        sscanf(health_str, "%10d", health);

+

+    return GSW_HAL_SUCCESS;

+}

+

+bool gsw_hwpin_check_emmc_readonly(void)

+{

+    return false;//defualt return normal

+}

+

+int gsw_hwpin_factorytest_ctrl_led(bool aging_flag, int delay_on, int delay_off)

+{

+    LOGI("[hwpin] factory test ctrl led entry");

+    if (false == g_aging_flag)

+    {

+        if (false == aging_flag)

+        {

+            LOGI("[hwpin] factory test ctrl led aging_flag = %d", aging_flag);

+            return GSW_HAL_SUCCESS;

+        }

+        g_aging_flag = aging_flag;

+        LOGI("g_aging_flag 1 value %d", g_aging_flag);

+    }

+    else if (false == aging_flag)

+    {

+        g_aging_flag = aging_flag;

+        LOGI("g_aging_flag 2 value %d", g_aging_flag);

+    }

+

+    gsw_hwpin_led_green_blink(delay_on, delay_off);

+

+    LOGI("[hwpin] factory test ctrl led exit");

+    return GSW_HAL_SUCCESS;

+}

+

+int gsw_hwpin_mute_test(int value)

+{

+    return GSW_HAL_SUCCESS;

+}

+

+int gsw_hwpin_fstrim_emmc(const char *emmc_path)

+{

+    return GSW_HAL_SUCCESS;

+}
\ No newline at end of file
diff --git a/mbtk/libgsw_lib/gsw_nw_interface.c b/mbtk/libgsw_lib/gsw_nw_interface.c
index b613a1a..90da70b 100755
--- a/mbtk/libgsw_lib/gsw_nw_interface.c
+++ b/mbtk/libgsw_lib/gsw_nw_interface.c
@@ -1,8 +1,9 @@
-#include "gsw_nw_interface.h"

+#include <stdbool.h>

 #include <dlfcn.h>

 #include <time.h>

 #include <pthread.h>

 #include <cutils/properties.h>

+#include "gsw_nw_interface.h"

 #define SIG_TIMER 5

 #define MODEM_TIMER 5

 

@@ -135,7 +136,6 @@
     uint32 value15;

 } __attribute__((packed)) mbtk_cell_info_t;

 

-

 typedef struct

 {

     uint8 net_pref;     // mbtk_net_pref_enum

@@ -1266,24 +1266,24 @@
 }

 

 /*

-typedef enum{
-    MBTK_READY_INIT = -1,
-    MBTK_READY_SUCCESS,
-    MBTK_READY_MODEM_FAIL,
-    MBTK_READY_RESPONSE_FAIL,
-    MBTK_READY_SOCKET_FAIL,
-    MBTK_READY_RIL_FAIL
+typedef enum{

+    MBTK_READY_INIT = -1,

+    MBTK_READY_SUCCESS,

+    MBTK_READY_MODEM_FAIL,

+    MBTK_READY_RESPONSE_FAIL,

+    MBTK_READY_SOCKET_FAIL,

+    MBTK_READY_RIL_FAIL

 }mbtk_ready_status_type;

 

-typedef enum gsw_hal_nw_mode_state_type
-{
-    GSW_MODEM_STATE_UNKNOWN = 0,
-    GSW_MODEM_STATE_ONLINE,
-    GSW_MODEM_STATE_OFFLINE,
-    GSW_SDK_STATE_SERVICE_DOWN,
-    GSW_SDK_STATE_SERVICE_UP,// service down->up 需要routectl 重启
-    GSW_SDK_STATE_GPS_DOWN,
-    GSW_SDK_STATE_GPS_UP,
+typedef enum gsw_hal_nw_mode_state_type

+{

+    GSW_MODEM_STATE_UNKNOWN = 0,

+    GSW_MODEM_STATE_ONLINE,

+    GSW_MODEM_STATE_OFFLINE,

+    GSW_SDK_STATE_SERVICE_DOWN,

+    GSW_SDK_STATE_SERVICE_UP,// service down->up 需要routectl 重启

+    GSW_SDK_STATE_GPS_DOWN,

+    GSW_SDK_STATE_GPS_UP,

 } gsw_mode_state_e;

 

 */

@@ -1455,7 +1455,6 @@
 

 }

 

-

 static void gsw_reject_callback(GSW_NW_RADIO_ACCESS_TECH_E rat, GSW_SERVICE_DOMAIN_E domain, int cause)

 {

     LOGE("gsw_reject_callback start,rat = %d,domain = %d,cause = %d\n",rat,domain,cause);

@@ -1845,14 +1844,14 @@
         {

             LOGD("not find mcc");

             strcpy(serving_info->operator_name, "unknown");

-            sprintf(serving_info->reg_plmn, "%d", net.plmn);

+            sprintf(serving_info->reg_plmn, "%u", net.plmn);

         }

 

         else

         {

             LOGD("find mcc\n");

             strcpy(serving_info->operator_name, lynq_operator_mcc_mnc[i].lynq_operator_l);

-            sprintf(serving_info->reg_plmn, "%d", net.plmn);

+            sprintf(serving_info->reg_plmn, "%u", net.plmn);

         }

 

         LOGE("operator_name = %s\n", serving_info->operator_name);

@@ -1888,9 +1887,9 @@
                     LOGE("is lte\n");

                     //LOGE("LTE : tac=%x, PCI=%x, dlEuarfcn=%x, ulEuarfcn=%x, band=%x\n", cell->value1, cell->value2, cell->value3, cell->value4, cell->value5);

                     LOGE("LTE : tac=%d, PCI=%d, dlEuarfcn=%d, ulEuarfcn=%d, band=%d\n", cell->value1, cell->value2, cell->value3, cell->value4, cell->value5);

-                    snprintf(serving_info->tac,sizeof(serving_info->tac),"%d",cell->value1);

+                    snprintf(serving_info->tac,sizeof(serving_info->tac),"%u",cell->value1);

                     strcpy(serving_info->lac,"");

-                    snprintf(serving_info->cell_id,sizeof(serving_info->cell_id),"%d",cell->value10);

+                    snprintf(serving_info->cell_id,sizeof(serving_info->cell_id),"%u",cell->value10);

                     break;

                 }

 

@@ -1898,18 +1897,18 @@
                 {

                     LOGE("is gsm\n");

                     LOGE("GSM : lac=%d, ci=%d, arfcn=%d, bsic=%d\n", cell->value1, cell->value2, cell->value3, cell->value4);

-                    sprintf(serving_info->lac,"%d",cell->value1);

+                    sprintf(serving_info->lac,"%u",cell->value1);

                     memset(serving_info->tac,0,sizeof(serving_info->tac));

-                    sprintf(serving_info->cell_id,"%d",cell->value2);

+                    sprintf(serving_info->cell_id,"%u",cell->value2);

                     break;

                 }    

                 case MBTK_CELL_TYPE_UMTS:

                 {

                     LOGE("is wcdma\n");

                     LOGE("UMTS : lac=%d, ci=%d, arfcn=%d\n", cell->value1, cell->value2, cell->value3);

-                    sprintf(serving_info->lac,"%d",cell->value1);

+                    sprintf(serving_info->lac,"%u",cell->value1);

                     memset(serving_info->tac,0,sizeof(serving_info->tac));

-                    sprintf(serving_info->cell_id,"%d",cell->value2);

+                    sprintf(serving_info->cell_id,"%u",cell->value2);

                     break;

                 }

                 

@@ -1937,7 +1936,7 @@
  * @retval 0: success

  * @retval other: fail

  */

-int gsw_get_netype(int *netype)

+int gsw_get_netype(int32_t *netype)

 {

     int ret = -1;

 

@@ -2015,7 +2014,7 @@
  * @retval 0: success

  * @retval other: fail

  */

-int gsw_set_opmode(int op_mode)

+int gsw_set_opmode(int32_t op_mode)

 {

     mbtk_modem_info_t info;

     int rf_mode = -1;

@@ -2068,7 +2067,7 @@
  * @retval 0: success

  * @retval other: fail

  */

-int gsw_get_mode_preference(int *mode_pref)

+int gsw_get_mode_preference(int32_t *mode_pref)

 {

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

     {

@@ -2105,7 +2104,7 @@
  * @retval 0: success

  * @retval other: fail

  */

-int gsw_set_mode_preference(int mode_pref)

+int gsw_set_mode_preference(int32_t mode_pref)

 {

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

     {

@@ -2142,14 +2141,14 @@
  * @retval 0: success

  * @retval other: fail

  */

-int gsw_get_sig_info(int *csq_value)

+int gsw_get_sig_info(int32_t *csq_value)

 {

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

     {

         return GSW_HAL_NORMAL_FAIL;

     }

 

-    mbtk_signal_info_t signal;

+    mbtk_signal_info_t signal = {0};

     int ret = mbtk_net_signal_get(nw_info_handle, &signal);

     if(ret != 0)

     {

@@ -2242,7 +2241,7 @@
  * @retval csq

  * @retval other: fail

  */

-int gsw_sigInfo_to_csq(int netType, int sigValue)

+int gsw_sigInfo_to_csq(int32_t netType, int32_t sigValue)

 {

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

     {

@@ -2281,7 +2280,7 @@
 {

     char OperatorFN[128];

     char OperatorSH[128];

-    char temp[12] = {0};

+    char temp[12];

     mbtk_net_info_t net;

 

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

@@ -2310,14 +2309,14 @@
             strcpy(OperatorFN, lynq_operator_mcc_mnc[i].lynq_operator_l);

             strcpy(OperatorSH, lynq_operator_mcc_mnc[i].lynq_operator_s);

 

-            memset(temp,0,12);

-            memset(nw_operator_name_infos->mcc,0,4);

-            sprintf(temp, "%d", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)/100);

+            memset(temp,0,sizeof(temp));

+            memset(nw_operator_name_infos->mcc,0,sizeof(nw_operator_name_infos->mcc));

+            sprintf(temp, "%u", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)/100);

             strncpy(nw_operator_name_infos->mcc, temp, strlen(temp));

 

-            memset(temp,0,12);

-            memset(nw_operator_name_infos->mnc,0,4);

-            sprintf(temp, "%d", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)%100);

+            memset(temp,0,sizeof(temp));

+            memset(nw_operator_name_infos->mnc,0,sizeof(nw_operator_name_infos->mnc));

+            sprintf(temp, "%u", (lynq_operator_mcc_mnc[i].lynq_mcc_mnc)%100);

             strncpy(nw_operator_name_infos->mnc, temp, strlen(temp));

         }

 

@@ -2371,7 +2370,7 @@
                 case 0:

                 {

                     LOGD("GSM : lac=%d, ci=%d, arfcn=%d, bsic=%d\n", cell->value1, cell->value2, cell->value3, cell->value4);

-                    char gsm_temp[12];

+                    char gsm_temp[12] = {0};

 

                     cell_info->rat = GSW_NETWORK_RADIO_GSM;

 

@@ -2400,7 +2399,7 @@
                 case 1:

                 {

                     LOGD("UMTS : lac=%d, ci=%d, arfcn=%d\n", cell->value1, cell->value2, cell->value3);

-                    char wcdma_temp[12];

+                    char wcdma_temp[12] = {0};

 

                     cell_info->rat = GSW_NETWORK_RADIO_UMTS;

 

@@ -2429,8 +2428,9 @@
                 case 2:

                 {

                     LOGE("LTE : tac=%d, PCI=%d, dlEuarfcn=%d, ulEuarfcn=%d, band=%d\n", cell->value1, cell->value2, cell->value3, cell->value4, cell->value5);

+                    

+                    char lte_temp[12] = {0};

 

-                    char lte_temp[12];

                     cell_info->rat = GSW_NETWORK_RADIO_LTE;

 

                     cell_info->mcc_valid = 1;

@@ -2517,7 +2517,6 @@
                     char lte_temp[12] = {0};

                     cell_info->ext_info[neibor_count].rat = GSW_NETWORK_RADIO_LTE;

 

-                 

                     cell_info->ext_info[neibor_count].pci = cell->value1;

                     cell_info->ext_info[neibor_count].pci_valid = 1;

 

@@ -2538,6 +2537,8 @@
                           snprintf(lte_temp, sizeof(lte_temp) ,"%X", cell->value6);

                           strncpy(cell_info->ext_info[neibor_count].mcc, lte_temp, sizeof(cell_info->ext_info[neibor_count].mcc));

 

+                          cell_info->ext_info[neibor_count].cell_id = cell->value5;

+                          cell_info->ext_info[neibor_count].cell_id_valid = 1;

 

                           snprintf(lte_temp, sizeof(lte_temp) ,"%X", cell->value7);

                           strncpy(cell_info->ext_info[neibor_count].mnc, lte_temp, sizeof(cell_info->ext_info[neibor_count].mnc));

@@ -2997,3 +2998,32 @@
 

 }

 

+int gsw_get_apn_reserved_id(const char *apn)

+{

+    return 0;

+}

+

+int gsw_set_apn_reserved_id(int reserved_id, const char *apn)

+{

+    return 0;

+}

+

+int gsw_data_call_clear_session(int linkid, Link_Info_s *LinkInf)

+{

+    return 0;

+}

+

+void *gsw_onUnsolicited(void *arg)

+{

+    return 0;

+}

+

+int gsw_sdk_init(void)

+{

+    return 0;

+}

+

+int gsw_get_modem_state_exp(void)

+{

+    return 0;

+}

diff --git a/mbtk/libgsw_lib/gsw_oem_rw_interface.c b/mbtk/libgsw_lib/gsw_oem_rw_interface.c
index 8d34023..2ca2382 100755
--- a/mbtk/libgsw_lib/gsw_oem_rw_interface.c
+++ b/mbtk/libgsw_lib/gsw_oem_rw_interface.c
@@ -261,3 +261,31 @@
     //deinit_fun_handle();

     return GSW_HAL_SUCCESS;

 }

+/**

+ * @brief SDK interface to read data from spec page of flash

+ * @param  [in] read data

+ * @param  [in] size, it must be less than (64 * 4096 - 8)Byte

+ * @retval 0: success

+ * @retval other: fail

+ */

+int gsw_oem_read_data(void *data, unsigned int *len)

+{

+    int ret = 0;

+

+    return ret;

+}

+

+/**

+ * @brief SDK interface to write data to spec page of flash

+ * @param  [in] write data

+ * @param  [in] size, it must be less than (64 * 4096 - 8)Byte

+ * @retval 0: success

+ * @retval other: fail

+ */

+int gsw_oem_write_data(void *data, unsigned int len)

+{

+    int ret = 0;

+

+    return ret;

+}

+

diff --git a/mbtk/libgsw_lib/gsw_ota_ua_interface.c b/mbtk/libgsw_lib/gsw_ota_ua_interface.c
index 1279d7b..5261c0e 100755
--- a/mbtk/libgsw_lib/gsw_ota_ua_interface.c
+++ b/mbtk/libgsw_lib/gsw_ota_ua_interface.c
@@ -110,6 +110,7 @@
         } \
         fun_ptr_log(LOG_ERR_LEVEL, "%s#%s: "GSW_OTA"" fmt, ptr_1001 + 1, line_1001, ##args); \

     } while(0)

+    

 

 typedef enum

 {

@@ -144,8 +145,8 @@
     GSW_UPDATE_NONEEDCANCEL,       //取消升级失败

     GSW_UPDATE_NOGOING             //升级或分区同步正在进行,不可重复操作

 }gsw_update_exit_code_t;

-            

-            

+

+

 typedef struct

 {

     unsigned int percentage; //update progress0-100

@@ -236,7 +237,7 @@
 * @brief Start install modem software

 * @param  [in] char* file_path

 * @param  [out] NULL

-* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL

+* @retval GSW_HAL_SUCCESS\GSW_HAL_NORMAL_FAIL

 */

 int32_t gsw_update_modem_start_autobackup(char* file_path)

 {

@@ -425,7 +426,7 @@
 * @brief Start install modem software

 * @param  [in] char* file_path

 * @param  [out] NULL

-* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL

+* @retval GSW_HAL_SUCCESS\GSW_HAL_NORMAL_FAIL

 */

 int32_t gsw_update_modem_start_nobackup(char* file_path)

 {

@@ -438,7 +439,7 @@
 * @brief get current system

 * @param  [in] NULL

 * @param  [out] NULL

-* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL

+* @retval GSW_HAL_SUCCESS\GSW_HAL_NORMAL_FAIL

 */

 int32_t gsw_update_modem_get_system(void)

 {

@@ -476,7 +477,7 @@
 * @brief cancel update

 * @param  [in] NULL

 * @param  [out] NULL

-* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL

+* @retval GSW_HAL_SUCCESS\GSW_HAL_NORMAL_FAIL

 */

 int32_t gsw_update_modem_cancel(void)

 {

@@ -488,7 +489,7 @@
 * @brief get modem update info

 * @param  [in] NULL

 * @param  [out] gsw_update_info_s 

-* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL

+* @retval GSW_HAL_SUCCESS\GSW_HAL_NORMAL_FAIL

 */

 int32_t gsw_update_modem_get_info(gsw_update_info_s *update_info)

 {

@@ -548,7 +549,7 @@
 * @brief get modem system status

 * @param  [in] NULL

 * @param  [out] gsw_system_status_s 

-* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL

+* @retval GSW_HAL_SUCCESS\GSW_HAL_NORMAL_FAIL

 */

 int32_t gsw_update_modem_get_status(gsw_system_status_s *system_status)

 {

@@ -559,7 +560,7 @@
 * @brief A/B system sync

 * @param  [in] NULL

 * @param  [out] NULL 

-* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL

+* @retval GSW_HAL_SUCCESS\GSW_HAL_NORMAL_FAIL

 */

 int32_t gsw_update_modem_sync(void)

 {

@@ -571,9 +572,27 @@
 * @brief A/B system switch

 * @param  [in] NULL

 * @param  [out] NULL 

-* @retval GSW_HAL_SUCCESS\GSW_HAL_FAIL

+* @retval GSW_HAL_SUCCESS\GSW_HAL_NORMAL_FAIL

 */

 int32_t gsw_update_modem_switch(void)

 {

     return GSW_HAL_SUCCESS;

 }

+

+int32_t gsw_update_modem_process(void *bufdata)

+{

+    return gsw_update_modem_start_autobackup(UPDATE_MODEM_PACKAGE);

+}

+

+int32_t gsw_get_ab_system(gsw_system_type *type)

+{

+    int32_t ret = GSW_HAL_NORMAL_FAIL;

+

+    ret = gsw_update_modem_get_system();

+    if (GSW_HAL_NORMAL_FAIL != ret)

+    {

+        *type = (gsw_system_type)ret;

+    }

+

+    return ret;

+}

diff --git a/mbtk/libgsw_lib/gsw_pm_interface.c b/mbtk/libgsw_lib/gsw_pm_interface.c
index 886a512..f16b5da 100755
--- a/mbtk/libgsw_lib/gsw_pm_interface.c
+++ b/mbtk/libgsw_lib/gsw_pm_interface.c
@@ -32,7 +32,7 @@
 #endif

 

 #define GSW_PM "[HAL][GSW_PM]"

-

+#define GSW_WAKELOCK_NAME "gsw_app_wakelock"

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

     do{ \

         char *file_ptr_1001 = __FILE__; \

@@ -104,8 +104,6 @@
     } while(0)

     

 

-

-#define GSW_HAL_MEM_INVAILD -2 //表示入参地址为NULL

 #define LOCK_MAX_SIZE 129

 typedef void (*GSW_PM_WAKEUPCALLBACK)(int32_t wakeup_in);

 typedef void (*mbtk_lpm_handler_t)(int32_t wakeup_in);

@@ -348,4 +346,44 @@
         }

     }

     return;

-}
\ No newline at end of file
+}

+/**

+ * @brief enable autosleep

+ * @return int : 0 is success , other failed

+ */

+int gswAutoSleepEnable(void)

+{

+    return gsw_autosleep_enable();

+}

+

+/**

+ * @brief disenable autosleep

+ * @return int : 0 is success , other failed

+ */

+int gswAutoSleepDisable(void)

+{

+    return gsw_autosleep_disenable();

+}

+

+/**

+ * @brief modem relase wakeuplock

+ * @return void

+ */

+void gswPMStartSleep(void)

+{

+    gsw_pm_enter_sleep(GSW_WAKELOCK_NAME);

+}

+

+/**

+ * @brief modem add wakeuplock

+ * @return int : 0 is success , other failed

+ */

+int gswPMStopSleep(void)

+{

+    return gsw_pm_exit_sleep(GSW_WAKELOCK_NAME);

+}

+

+int gswPmSDKInit(gsw_pm_wakeup_handler gswPmCallBack)

+{

+    return gsw_pm_sdk_init(gswPmCallBack);

+}

diff --git a/mbtk/libgsw_lib/gsw_tz_interface.c b/mbtk/libgsw_lib/gsw_secrypt_ss_interface.c
similarity index 77%
rename from mbtk/libgsw_lib/gsw_tz_interface.c
rename to mbtk/libgsw_lib/gsw_secrypt_ss_interface.c
index b30f548..d724b0b 100755
--- a/mbtk/libgsw_lib/gsw_tz_interface.c
+++ b/mbtk/libgsw_lib/gsw_secrypt_ss_interface.c
@@ -1,10 +1,11 @@
-
-#include "gsw/gsw_tz_interface.h"
 #include <dlfcn.h>
+#include <stdbool.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 #include <stdint.h>
-#include <stdlib.h>
+#include "gsw_secrypt_ss_interface.h"
+#include "gsw_hal_errcode.h"
 
 #ifndef LOG_ERR_LEVEL
 #define LOG_ERR_LEVEL  3      /* error conditions */
@@ -155,20 +156,15 @@
 static void *dlHandle_mbtk;
 
 typedef uint32_t TEEC_Result;
-
-
 static void (*mbtk_log)(int level, const char *format, ...);
 static void (*mbtk_log_init)(char *path, char *tag);
 
-
-
 int (*prepare_tee_session)(struct test_ctx *ctx);
 void (*terminate_tee_session)(struct test_ctx *ctx);
 TEEC_Result (*read_secure_object)(struct test_ctx *ctx, const char *id,char *data, size_t data_len);
 TEEC_Result (*write_secure_object)(struct test_ctx *ctx, const char *id,char *data, size_t data_len);
 TEEC_Result (*delete_secure_object)(struct test_ctx *ctx, const char *id);
 
-
 static int tee_api_import(void)
 {
 
@@ -254,7 +250,6 @@
     return ret;
 }
 
-
 /**
 * @brief read sensitive data from tee
 * @param  [in] char* in_obj_name :Sensitive data name
@@ -267,11 +262,19 @@
 int32_t gsw_tee_read_secure_data(const char* in_obj_name, char* out_buf, unsigned int* p_out_buf_len)
 {
     if (in_obj_name == NULL || out_buf == NULL)
+    {
         return GSW_HAL_NORMAL_FAIL;
+    }
+        
     int32_t ret = 0;
-    TEEC_Result res;
-    char *tmp_buf = malloc(basic_buf_len * sizeof(char));
-    res = read_secure_object(&ctx, in_obj_name, tmp_buf, basic_buf_len);
+    char *tmp_buf = (char*)malloc(basic_buf_len);
+    if (NULL == tmp_buf)
+    {
+        LOGE("Failed malloc fail");
+        return GSW_HAL_NO_MEMORY;
+    }
+    
+    TEEC_Result res = read_secure_object(&ctx, in_obj_name, tmp_buf, basic_buf_len);
     if (res != TEEC_SUCCESS)
     {
 	LOGE("Failed to read an object from the secure storage");
@@ -283,7 +286,6 @@
     return ret;
 }
 
-
 /**
 * @brief write sensitive data to tee
 * @param  [in] char* in_obj_name :Sensitive data name
@@ -296,8 +298,8 @@
     if (in_obj_name == NULL || in_buf == NULL)
         return GSW_HAL_NORMAL_FAIL;
     int32_t ret = 0;
-    TEEC_Result res;
-    res = write_secure_object(&ctx, in_obj_name,in_buf, in_buf_len);
+
+    TEEC_Result res = write_secure_object(&ctx, in_obj_name,in_buf, in_buf_len);
     if (res != TEEC_SUCCESS)
     {
 	LOGE("Failed to write an object from the secure storage");
@@ -318,17 +320,15 @@
     if (in_obj_name == NULL)
         return GSW_HAL_NORMAL_FAIL;
     int32_t ret = 0;
-    TEEC_Result res;
-    res = delete_secure_object(&ctx, in_obj_name);
+
+    TEEC_Result res = delete_secure_object(&ctx, in_obj_name);
     if (res != TEEC_SUCCESS)
     {
 	LOGE("Failed to delete the object: 0x%x", res);
         ret = GSW_HAL_NORMAL_FAIL;
     }
 
-
     return ret;
-
 }
 
 /**
@@ -341,10 +341,14 @@
     if (in_obj_name == NULL)
         return GSW_HAL_NORMAL_FAIL;
     int32_t ret = 1;
-    TEEC_Result res;
-    char *tmp_buf = malloc(basic_buf_len * sizeof(char));
-    res = read_secure_object(&ctx, in_obj_name, tmp_buf, basic_buf_len);
 
+    char *tmp_buf = (char*)malloc(basic_buf_len);
+    if (NULL == tmp_buf)
+    {
+        LOGE("Failed malloc fail");
+        return GSW_HAL_NO_MEMORY;
+    }
+    TEEC_Result res = read_secure_object(&ctx, in_obj_name, tmp_buf, basic_buf_len);
     if (res == TEEC_ERROR_ITEM_NOT_FOUND)
     {
         LOGE("the obj no found\n");
@@ -390,3 +394,105 @@
     return GSW_HAL_SUCCESS;
 }
 
+int32_t gsw_secure_init(void)
+{
+    static int s_init_flag = 0;
+    if (0xAA55 == s_init_flag)
+    {
+        return GSW_HAL_SUCCESS;
+    }
+    if (GSW_HAL_SUCCESS == gsw_tee_sdk_init())
+    {
+        s_init_flag = 0xAA55;
+        return GSW_HAL_SUCCESS;
+    }
+    LOGE("secure sdk init fail!!!");
+    return GSW_HAL_NORMAL_FAIL;
+}
+
+int32_t gsw_secure_storage_query(const char *objname, int32_t *exist_state)
+{
+#if 0
+    if (NULL == objname || NULL == exist_state)
+    {
+        LOGE("storage query input param error objname %p, exist_state %p",objname, exist_state);
+        return GSW_HAL_ARG_INVALID;
+    }
+    int32_t ret = gsw_secure_init();
+    if (GSW_HAL_SUCCESS != ret)
+    {
+        return ret;
+    }
+    ret = gsw_tee_check_secure_data(objname);
+    if (GSW_HAL_SUCCESS == ret)
+    {
+        *exist_state = 1; //表明数据存在
+    }
+    else
+    {
+        *exist_state = 0;
+    }
+    return ret;
+#else
+    return GSW_HAL_NO_SUPPROT;
+#endif
+}
+
+int32_t gsw_secure_storage_read(const char *objname, uint8_t *outbuf, uint32_t buflen, uint32_t *outlen)
+{
+#if 0
+    if (NULL == objname || NULL == outbuf || NULL == outlen)
+    {
+        LOGE("storage read input param error objname %p, outbuf %p, outlen %p",objname, outbuf, outlen);
+        return GSW_HAL_ARG_INVALID;
+    }
+    int32_t ret = gsw_secure_init();
+    if (GSW_HAL_SUCCESS != ret)
+    {
+        return ret;
+    }
+    *outlen = buflen;
+    return gsw_tee_read_secure_data(objname, (char*)outbuf, outlen);
+#else
+    return GSW_HAL_NO_SUPPROT;
+#endif
+
+}
+
+int32_t gsw_secure_storage_write(const char *objname, const uint8_t *inbuf, uint32_t inlen)
+{
+#if 0
+    if (NULL == objname || NULL == inbuf || 0 == inlen)
+    {
+        LOGE("storage write input param error objname %p, outbuf %p, inlen %u",objname, inbuf, inlen);
+        return GSW_HAL_ARG_INVALID;
+    }
+    int32_t ret = gsw_secure_init();
+    if (GSW_HAL_SUCCESS != ret)
+    {
+        return ret;
+    }
+    return gsw_tee_write_secure_data(objname, (char*)inbuf, inlen);
+#else
+    return GSW_HAL_NO_SUPPROT;
+#endif
+}
+
+int32_t gsw_secure_storage_delete(const char *objname)
+{
+#if 0
+    if (NULL == objname)
+    {
+        LOGE("storage delete input param error objname %p",objname);
+        return GSW_HAL_ARG_INVALID;
+    }
+    int32_t ret = gsw_secure_init();
+    if (GSW_HAL_SUCCESS != ret)
+    {
+        return ret;
+    }
+    return gsw_tee_delete_secure_data(objname);
+#else
+    return GSW_HAL_NO_SUPPROT;
+#endif
+}
diff --git a/mbtk/libgsw_lib/gsw_sim_interface.c b/mbtk/libgsw_lib/gsw_sim_interface.c
index 97be112..b4c8873 100755
--- a/mbtk/libgsw_lib/gsw_sim_interface.c
+++ b/mbtk/libgsw_lib/gsw_sim_interface.c
@@ -1,7 +1,8 @@
-#include "gsw_nw_interface.h"

+#include <stdbool.h>

 #include <unistd.h>

 #include <dlfcn.h>

 #include <time.h>

+#include "gsw_nw_interface.h"

 

 #define MBTK_BUFF_TEMP_SIZE_32  32

 #define MBTK_ERR_OK             0

diff --git a/mbtk/libgsw_lib/gsw_sms_interface.c b/mbtk/libgsw_lib/gsw_sms_interface.c
index 52fc1a3..a0d74e7 100755
--- a/mbtk/libgsw_lib/gsw_sms_interface.c
+++ b/mbtk/libgsw_lib/gsw_sms_interface.c
@@ -1,9 +1,10 @@
-#include "gsw_nw_interface.h"
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdint.h>
 #include <dlfcn.h>
 #include <time.h>
+#include "gsw_nw_interface.h"
 
 typedef unsigned short uint16_t;
 typedef unsigned int uint32_t;
@@ -108,7 +109,6 @@
 #define MAX_PDU_SIZE 512
 #define MAX_DATE_SIZE 32
 
-
 GSW_SMS_Callback_fun gsw_sms_callback = NULL;
 
 #define lib_mbtk_path "/lib/libmbtk_lib.so"
@@ -487,7 +487,7 @@
  * @retval 0: success
  * @retval other: fail
  */
-int gsw_sms_sdk_init(int token)
+int gsw_sms_sdk_init(int32_t token)
 {
     handle = token;
     int ret = -1;
@@ -798,23 +798,20 @@
         if (p1 && p2 && p2 > p1)
         {
             len_t = p2 - p1 - 1;
-            char* substr_t = NULL;
-            substr_t = (char *)malloc(len_t + 1);
-            if(substr_t == NULL)
+            substr = malloc(len_t + 1);
+            if (NULL == substr)
             {
-                LOGE("malloc substr_t fail\n");
-                return GSW_HAL_ARG_INVALID;
+                LOGE("substr = NULL, malloc faill!!!\n");
+                return GSW_HAL_NO_MEMORY;
             }
-            strncpy(substr_t, p1 + 1, len_t);
-            substr_t[len_t] = '\0';
-
-            substr = substr_t;
-            
+            strncpy(substr, p1 + 1, len_t);
+            substr[len_t] = '\0';            
             memcpy(smsc, substr, strlen(substr));
             memcpy(sms_center_address, substr, strlen(substr));
 
             LOGE("qser_sms_getsmscenteraddress success, smsc = %s\n", sms_center_address);
-            free(substr_t);
+            free(substr);
+            substr = NULL;
         }
         else
         {
diff --git a/mbtk/libgsw_lib/gsw_sys_interface.c b/mbtk/libgsw_lib/gsw_sys_interface.c
index 7aa2734..27050c6 100755
--- a/mbtk/libgsw_lib/gsw_sys_interface.c
+++ b/mbtk/libgsw_lib/gsw_sys_interface.c
@@ -1,3 +1,9 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <string.h>
 #include "gsw_sys_interface.h"
 
 #define  LOG_LEVLE_CONFIG_FILE "/etc/telinit"
@@ -121,5 +127,3 @@
 
 	return GSW_HAL_NORMAL_FAIL;
 }
-
-
diff --git a/mbtk/libgsw_lib/gsw_uart_interface.c b/mbtk/libgsw_lib/gsw_uart_interface.c
index d16fa69..e09aefd 100755
--- a/mbtk/libgsw_lib/gsw_uart_interface.c
+++ b/mbtk/libgsw_lib/gsw_uart_interface.c
@@ -13,6 +13,8 @@
 

 #include "gsw_uart_interface.h"

 

+#define MODEM_CONNECT_MCU_PORT      "/dev/ttyS1"

+

 #ifndef LOG_ERR_LEVEL

 #define LOG_ERR_LEVEL  3      /* error conditions */

 #endif

@@ -138,9 +140,6 @@
     return GSW_HAL_SUCCESS;

 }

 

-

-

-

 int32_t gsw_uart_open_ex(int8_t *port, gsw_hal_uart_baudrate baudrate, uint32_t bits, int8_t parity, uint32_t stop)

 {

     if (handle())

@@ -303,7 +302,7 @@
     return fd;

 }

 

-void gsw_uart_flush(int fd)

+void gsw_uart_flush(int32_t fd)

 {

     if (handle())

         return;

@@ -317,7 +316,6 @@
     //return GSW_HAL_SUCCESS;

 }

 

-

 int gsw_uart_read(int fd, unsigned char *buffer, int len, int timeout_ms)

 {

     if (handle())

@@ -407,9 +405,6 @@
     return GSW_HAL_SUCCESS;

 }

 

-

-

-

 void gsw_uart_close(int fd)

 {

     if (handle())

@@ -434,3 +429,7 @@
     //return GSW_HAL_SUCCESS;

 }

 

+int gsw_uart_open(unsigned int baudrate,  unsigned int bits, char parity, unsigned int stop)

+{

+    return gsw_uart_open_ex((int8_t *)MODEM_CONNECT_MCU_PORT, (gsw_hal_uart_baudrate)baudrate, bits, parity, stop);

+}

diff --git a/mbtk/libgsw_lib/libgsw_usb_interface.c b/mbtk/libgsw_lib/gsw_usb_interface.c
similarity index 88%
rename from mbtk/libgsw_lib/libgsw_usb_interface.c
rename to mbtk/libgsw_lib/gsw_usb_interface.c
index 1b912bd..20076fb 100755
--- a/mbtk/libgsw_lib/libgsw_usb_interface.c
+++ b/mbtk/libgsw_lib/gsw_usb_interface.c
@@ -10,15 +10,13 @@
 #include <stdint.h>
 #include <sys/ioctl.h>
 #include <dlfcn.h>
-
-
 #include "gsw_usb_interface.h"
 
 #define TMP_USB_RESTART "/sbin/tmp_usb_init"
 #define USB_OPEN 3300
 #define USB_CLOSE 3329
 
-int gsw_usb_permanent_switch(EN_GSW_USB_SWITCH_TYPE type)
+int32_t gsw_usb_permanent_switch(EN_GSW_USB_SWITCH_TYPE type)
 {
     int ret;
     char cmd[256];
@@ -29,7 +27,7 @@
     return ret;
 }
 
-int gsw_usb_tempporary_switch(EN_GSW_USB_SWITCH_TYPE type)
+int32_t gsw_usb_temporary_switch(EN_GSW_USB_SWITCH_TYPE type)
 {
     int ret;
     char cmd[256];
diff --git a/mbtk/libgsw_lib/gsw_voice_interface.c b/mbtk/libgsw_lib/gsw_voice_interface.c
index c81e8df..e1dae08 100755
--- a/mbtk/libgsw_lib/gsw_voice_interface.c
+++ b/mbtk/libgsw_lib/gsw_voice_interface.c
@@ -141,6 +141,7 @@
 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------------

diff --git a/mbtk/libgsw_lib/gsw_wifi_interface_sdk.c b/mbtk/libgsw_lib/gsw_wifi_interface_sdk.c
old mode 100644
new mode 100755
index 89a593e..3fb163f
--- a/mbtk/libgsw_lib/gsw_wifi_interface_sdk.c
+++ b/mbtk/libgsw_lib/gsw_wifi_interface_sdk.c
@@ -1777,7 +1777,7 @@
     }
     pclose(output);
     buffer[strcspn(buffer, "\n")] = '\0';
-    sscanf(buffer, "%x %d %s %s %s", &info->base_info.auth, &info->rssi, info->base_info.ap_ssid, info->base_info.ap_ip, info->base_info.ap_mac);
+    sscanf(buffer, "%x %d %31s %31s %31s", (int*)&info->base_info.auth, &info->rssi, info->base_info.ap_ssid, info->base_info.ap_ip, info->base_info.ap_mac);
     info->status = GSW_WIFI_AP_STATUS_ENABLE;
     return GSW_HAL_SUCCESS;
 }
@@ -2199,4 +2199,9 @@
     }
     sleep(1);
     return GSW_HAL_SUCCESS;
+}
+
+int gsw_wifi_sta_disconnect(char *ssid)
+{
+    return GSW_HAL_SUCCESS;
 }
\ No newline at end of file