[Bugfix][T106BUG-398]when gnss not init,qser_Gnss_download_tle ret 0
Only Configure:No
Affected branch:master
Affected module:gnss
Is it affected on both ZXIC and MTK:only ZXIC
Self-test:Yes
Doc Update:NO
Change-Id: I9a7a7d8fc9c9c096a22285d63cf30b3dac7b18ad
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp
index 4b7bba9..c879eb5 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp
@@ -44,6 +44,7 @@
LYNQ_INJECT_TIME_INTO_T time_test;
int g_gnss_sync_enable_flag = 0;
int g_gnss_sync_done = 0;
+int inited = 0;
int qser_Gnss_Init(uint32_t *h_gnss)
{
@@ -58,17 +59,28 @@
if(NULL == login_information_t)
{
ALOGE("malloc memory error\n");
+ ret = lynq_gnss_client_deinit(h_gnss);
+ if(ret)
+ {
+ ALOGE("Deinit faild\n");
+ }
return -1;
}
login_information_t->host = NULL;
login_information_t->id = NULL;
login_information_t->password = NULL;
}
+ inited = 1;
return 0;
}
int qser_Gnss_Deinit(uint32_t h_gnss)
{
+ if(!inited)
+ {
+ ALOGE("has not been initiated\n");
+ return -1;
+ }
ret = lynq_gnss_client_deinit(h_gnss);
if(ret)
{
@@ -79,11 +91,17 @@
free(login_information_t);
login_information_t = NULL;
}
+ inited = 0;
return 0;
}
int qser_AddRxIndMsgHandler(gnss_handler_func_t handler_ptr,uint32_t h_gnss)
{
+ if(!inited)
+ {
+ ALOGE("has not been initiated\n");
+ return -1;
+ }
struct mbtk_gnss_handle_t *gnss_handle = (struct mbtk_gnss_handle_t *)h_gnss;
if(0 == h_gnss && NULL == handler_ptr)
{
@@ -106,6 +124,11 @@
int qser_Set_Indications(uint32_t h_gnss,e_msg_id_t type)
{
+ if(!inited)
+ {
+ ALOGE("has not been initiated\n");
+ return -1;
+ }
struct mbtk_gnss_handle_t *gnss_handle = (struct mbtk_gnss_handle_t *)h_gnss;
printf("type in\n");
switch(type)
@@ -142,6 +165,11 @@
/*need set system time in advance*/
int qser_Gnss_InjectTime(uint32_t h_gnss,LYNQ_INJECT_TIME_INTO_T *time_info)
{
+ if(!inited)
+ {
+ ALOGE("has not been initiated\n");
+ return -1;
+ }
time_t tNOW =time(NULL);
struct timeb tmNOW;
struct tm *ptm = {0};
@@ -170,8 +198,12 @@
}
int qser_Gnss_Start(uint32_t h_gnss)
{
+ if(!inited)
+ {
+ ALOGE("has not been initiated\n");
+ return -1;
+ }
struct mbtk_gnss_handle_t *gnss_handle = (struct mbtk_gnss_handle_t *)h_gnss;
-
char gnss_sync_enable[24] = "";
lynq_get_value("lynq_uci", "lynq_sync_time", "lynq_gnss_sync_time_enable" , gnss_sync_enable);
g_gnss_sync_enable_flag = atoi(gnss_sync_enable);
@@ -184,7 +216,7 @@
ret = set_baudrate(gnss_handle->dev_fd, B115200);
if(-1 == ret)
{
- return -2;
+ return -2;
}
}
else if(gpio21_value == 0)
@@ -192,7 +224,7 @@
ret = set_baudrate(gnss_handle->dev_fd, B9600);
if(-1 == ret)
{
- return -2;
+ return -2;
}
}
return 0;
@@ -200,6 +232,11 @@
int qser_Gnss_Stop(uint32_t h_gnss)
{
+ if(!inited)
+ {
+ ALOGE("has not been initiated\n");
+ return -1;
+ }
lynq_open_gps(0);
return 0;
}
@@ -222,6 +259,11 @@
int ret;
int buf_lenth;
unsigned char *send_buf;
+ if(!inited)
+ {
+ ALOGE("has not been initiated\n");
+ return -1;
+ }
struct mbtk_gnss_handle_t *gnss_handle = (struct mbtk_gnss_handle_t *)h_gnss;
switch(frequency)
{
@@ -275,6 +317,11 @@
int qser_Gnss_Delete_Aiding_Data(uint32_t h_gnss,DELETE_AIDING_DATA_TYPE_T flags)
{
char send_buf[60] = {0};
+ if(!inited)
+ {
+ ALOGE("has not been initiated\n");
+ return -1;
+ }
struct mbtk_gnss_handle_t *gnss_handle = (struct mbtk_gnss_handle_t *)h_gnss;
switch(flags)
{
@@ -381,6 +428,11 @@
int qser_Gnss_download_tle()
{
int ret;
+ if(!inited)
+ {
+ ALOGE("has not been initiated\n");
+ return -1;
+ }
if(gpio21_value == 0)
{
ret = mopen_gnss_download_tle();
@@ -413,6 +465,11 @@
int qser_Gnss_injectEphemeris(uint32_t h_gnss)
{
int ret;
+ if(!inited)
+ {
+ ALOGE("has not been initiated\n");
+ return -1;
+ }
if(gpio21_value == 0)
{
ret = mopen_gnss_injects_aidpos(h_gnss);