gnss: add agps api
Change-Id: I8d778a303bc59b22f1ac31cfbe8439e98d94d448
diff --git a/mbtk/libmbtk_gnss/mbtk_gnss.c b/mbtk/libmbtk_gnss/mbtk_gnss.c
index 18e8bbf..cf9af27 100755
--- a/mbtk/libmbtk_gnss/mbtk_gnss.c
+++ b/mbtk/libmbtk_gnss/mbtk_gnss.c
@@ -114,7 +114,7 @@
if(write_len > 0)
{
- // log_hex("DATA_SEND", msg, write_len);
+ //log_hex("DATA_SEND", msg, write_len);
return write_len;
}
else
@@ -835,7 +835,7 @@
}
// gnss_setting:cmd
- char cmd[32] = {0};
+ char cmd[1024] = {0};
snprintf(cmd, sizeof(cmd), "gnss_setting:%s", setting_cmd);
sock_write(gnss_cli_fd, cmd, strlen(cmd));
@@ -920,6 +920,70 @@
}
}
+gnss_err_enum mbtk_gnss_eph_download(int timeout)
+{
+ if(gnss_cli_fd < 0) {
+ LOGW("GNSS client not inited.");
+ return GNSS_ERR_UNKNOWN;
+ }
+
+ if(gnss_busy) {
+ LOGE("BUSY");
+ return GNSS_ERR_BUSY;
+ } else {
+ gnss_result = GNSS_ERR_OK;
+ gnss_busy = TRUE;
+ if(timeout > 0) {
+ mbtk_timer_set(gnss_timer_cb, timeout * 1000);
+ }
+
+ // gnss_agnss_get:<eph_data>,<alam_flag>
+ char cmd[32] = {0};
+ snprintf(cmd, sizeof(cmd), "gnss_agnss_get:%d,0", (int)GNSS_EPH_CFG);
+ sock_write(gnss_cli_fd, cmd, strlen(cmd));
+
+ pthread_mutex_lock(&gnss_mutex);
+ pthread_cond_wait(&gnss_cond, &gnss_mutex);
+ pthread_mutex_unlock(&gnss_mutex);
+
+ gnss_busy = FALSE;
+
+ return gnss_result;
+ }
+}
+
+gnss_err_enum mbtk_gnss_eph_inject(int timeout)
+{
+ if(gnss_cli_fd < 0) {
+ LOGW("GNSS client not inited.");
+ return GNSS_ERR_UNKNOWN;
+ }
+
+ if(gnss_busy) {
+ LOGE("BUSY");
+ return GNSS_ERR_BUSY;
+ } else {
+ gnss_result = GNSS_ERR_OK;
+ gnss_busy = TRUE;
+ if(timeout > 0) {
+ mbtk_timer_set(gnss_timer_cb, timeout * 1000);
+ }
+
+ // gnss_agnss_set
+ char cmd[32] = {0};
+ snprintf(cmd, sizeof(cmd), "gnss_agnss_set");
+ sock_write(gnss_cli_fd, cmd, strlen(cmd));
+
+ pthread_mutex_lock(&gnss_mutex);
+ pthread_cond_wait(&gnss_cond, &gnss_mutex);
+ pthread_mutex_unlock(&gnss_mutex);
+
+ gnss_busy = FALSE;
+
+ return gnss_result;
+ }
+}
+
void mbtk_gnss_lib_info_print()
{
MBTK_SOURCE_INFO_PRINT("mbtk_gnss_lib");