gnss: add agps api
Change-Id: I8d778a303bc59b22f1ac31cfbe8439e98d94d448
diff --git a/mbtk/liblynq_lib/src/lynq_gnss.c b/mbtk/liblynq_lib/src/lynq_gnss.c
index b02ea4d..3b5236c 100755
--- a/mbtk/liblynq_lib/src/lynq_gnss.c
+++ b/mbtk/liblynq_lib/src/lynq_gnss.c
@@ -9,6 +9,8 @@
#define QSER_RESULT_SUCCESS 0
#define QSER_RESULT_FAIL -1
#define QSER_GNSS_TIMEOUT 5
+#define QSER_AGNSS_DOWNLOAD_TIMEPUT 60
+#define QSER_AGNSS_INJECT_TIMEOUT 20
/**********************************VARIABLE***********************************/
static bool inited = FALSE;
@@ -85,7 +87,7 @@
if(check_state[i] >= '0' && check_state[i] <= '9')
{
memcpy(time, check_state + i, 6);
- LOGE("[qser_gnss] %s.", time);
+ //LOGE("[qser_gnss] %s.", time);
}
else
{
@@ -98,7 +100,7 @@
if(check_state[i] >= '0' && check_state[i] <= '9')
{
memcpy(time + 6, check_state + i, 6);
- LOGE("[qser_gnss] %s.", time);
+ //LOGE("[qser_gnss] %s.", time);
break;
}
else
@@ -411,20 +413,36 @@
LOGE("[qser_gnss] api not init.");
return QSER_RESULT_FAIL;
}
-
- if(host != NULL)
+
+ memset(qser_agps_info_save.host, 0x0, QSER_LEN_MAX);
+ if(host != NULL && strlen(host) > 0 && strlen(host) < QSER_LEN_MAX)
{
- memcpy(qser_agps_info_save.host, host, QSER_LEN_MAX);
+ memcpy(qser_agps_info_save.host, host, strlen(host));
}
- if(id != NULL)
+ memset(qser_agps_info_save.id, 0x0, QSER_LEN_MAX);
+ if(id != NULL && strlen(id) > 0 && strlen(id) < QSER_LEN_MAX)
{
- memcpy(qser_agps_info_save.id, id, QSER_LEN_MAX);
+ memcpy(qser_agps_info_save.id, id, strlen(id));
}
- if(password != NULL)
+ memset(qser_agps_info_save.passwd, 0x0, QSER_LEN_MAX);
+ if(password != NULL && strlen(password) > 0 && strlen(password) < QSER_LEN_MAX)
{
- memcpy(qser_agps_info_save.passwd, password, QSER_LEN_MAX);
+ memcpy(qser_agps_info_save.passwd, password, strlen(password));
+ }
+
+ gnss_err_enum ret = GNSS_ERR_UNKNOWN;
+ char write_buff[512] = {0};
+ int write_length = 0;
+ write_length = snprintf(write_buff, 512, "$AGPSCFG,%s,%s,%s", strlen(qser_agps_info_save.host) > 0 ? qser_agps_info_save.host : "NULL",
+ strlen(qser_agps_info_save.id) > 0 ? qser_agps_info_save.id : "NULL",
+ strlen(qser_agps_info_save.passwd) > 0 ? qser_agps_info_save.passwd : "NULL");
+ ret = mbtk_gnss_setting(write_buff, QSER_GNSS_TIMEOUT);
+ if(ret != GNSS_ERR_OK)
+ {
+ LOGE("[qser_gnss] mbtk_gnss_setting fail.ret = [%d]", ret);
+ return QSER_RESULT_FAIL;
}
return QSER_RESULT_SUCCESS;
}
@@ -436,6 +454,14 @@
LOGE("[qser_gnss] api not init.");
return QSER_RESULT_FAIL;
}
+
+ gnss_err_enum ret = GNSS_ERR_UNKNOWN;
+ ret = mbtk_gnss_eph_download(QSER_AGNSS_DOWNLOAD_TIMEPUT);
+ if(ret != GNSS_ERR_OK)
+ {
+ LOGE("[qser_gnss] mbtk_gnss_eph_download fail.ret = [%d]", ret);
+ return QSER_RESULT_FAIL;
+ }
return QSER_RESULT_SUCCESS;
}
@@ -448,6 +474,14 @@
LOGE("[qser_gnss] h_gnss is error.");
return QSER_RESULT_FAIL;
}
+
+ gnss_err_enum ret = GNSS_ERR_UNKNOWN;
+ ret = mbtk_gnss_eph_inject(QSER_AGNSS_INJECT_TIMEOUT);
+ if(ret != GNSS_ERR_OK)
+ {
+ LOGE("[qser_gnss] mbtk_gnss_eph_inject fail.ret = [%d]", ret);
+ return QSER_RESULT_FAIL;
+ }
return QSER_RESULT_SUCCESS;
}