[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