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;
 }