gnssd: add 8122 agps func
Change-Id: Ie87dcafc1da9cf5cffd9f5397f1640f19aa36aab
diff --git a/mbtk/mbtk_gnssd/agps/agnss_http_download.c b/mbtk/mbtk_gnssd/agps/agnss_http_download.c
new file mode 100755
index 0000000..a9ca306
--- /dev/null
+++ b/mbtk/mbtk_gnssd/agps/agnss_http_download.c
@@ -0,0 +1,115 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <string.h>
+#include <errno.h>
+#include <arpa/inet.h>
+
+#include "agnss_http_download.h"
+#include "mbtk_log.h"
+#include "mbtk_http.h"
+
+#define HTTP_RESULT_SUCCESS 0
+#define HTTP_RESULT_FAIL -1
+
+static char eph_file_path[128] = {0};
+static int eph_file_fd = -1;
+
+static void http_data_cb_func(int session_id, mbtk_http_data_type_enum type, void *data,int data_len)
+{
+ int ret = 0;
+
+ if(type == MBTK_HTTP_DATA_HEADER)
+ {
+ LOGD("Header(%d):%s", data_len, (char*)data);
+ if(eph_file_fd > 0)
+ {
+ return;
+ }
+ unlink(eph_file_path);
+ eph_file_fd = open(eph_file_path, O_RDWR|O_CREAT|O_TRUNC, 0644);
+ if (eph_file_fd < 0)
+ {
+ LOGD("file open error");
+ }
+ else
+ {
+ LOGD("agnss file open: %d", eph_file_fd);
+ }
+ }
+ else if(type == MBTK_HTTP_DATA_CONTENT)
+ {
+ LOGD("http Data(%d)", data_len);
+
+ ret = write(eph_file_fd, (char*)data, data_len);
+ if (ret < 0)
+ {
+ LOGE("%s: error writing to file!", __FUNCTION__);
+ }
+ else if (ret < data_len)
+ {
+ LOGD("%s: wrote less the buffer size!", __FUNCTION__);
+ }
+ else
+ {
+ //
+ }
+ }
+ else
+ {
+ LOGD(">>>>>Complete<<<<<");
+ if(eph_file_fd <= 0)
+ {
+ return;
+ }
+ close(eph_file_fd);
+ eph_file_fd = -1;
+ }
+}
+
+int eph_data_from_http_get(char *host, const char *path)
+{
+ if(host == NULL || path == NULL || strlen(path) == 0)
+ {
+ LOGE("eph_data_from_http_get param is error.");
+ }
+
+ int http_handle = mbtk_http_handle_get(TRUE, http_data_cb_func);
+ if(http_handle < 0)
+ {
+ LOGE("mbtk_http_handle_get() fail.");
+ return HTTP_RESULT_FAIL;
+ }
+ int http_session = mbtk_http_session_create(http_handle, HTTP_OPTION_GET, HTTP_VERSION_1_1);
+ if(http_handle < 0)
+ {
+ LOGE("mbtk_http_session_create() fail.");
+ goto error;
+ }
+
+ memcpy(eph_file_path, path, strlen(path));
+ if(mbtk_http_session_url_set(http_handle, http_session, host))
+ {
+ LOGE("mbtk_http_session_url_set() fail.\n");
+ goto error;
+ }
+ if(mbtk_http_session_start(http_handle, http_session))
+ {
+ LOGE("mbtk_http_session_start() fail.\n");
+ goto error;
+ }
+ if(mbtk_http_handle_free(http_handle))
+ {
+ LOGE("mbtk_http_handle_free() fail.");
+ return HTTP_RESULT_FAIL;
+ }
+
+ return HTTP_RESULT_SUCCESS;
+error:
+ mbtk_http_handle_free(http_handle);
+ return HTTP_RESULT_FAIL;
+}
+