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");