gnss: add T108 agps api
Change-Id: If0efbf5fa712c01fd6b5ce5da7f9a201c8b125ae
diff --git a/mbtk/mbtk_lib/src/mbtk_gnss_5311.c b/mbtk/mbtk_lib/src/mbtk_gnss_5311.c
index a3df60c..2a5540a 100755
--- a/mbtk/mbtk_lib/src/mbtk_gnss_5311.c
+++ b/mbtk/mbtk_lib/src/mbtk_gnss_5311.c
@@ -34,6 +34,10 @@
#define MBTK_GNSS_UBUS_SET "gnss_setting"
#define MBTK_GNSS_UBUS_SET_PARAM "gnss_setting_param"
#define MBTK_GNSS_UBUS_GET_STATUS "gnss_get_state"
+#define MBTK_GNSS_UBUS_AGPS_SERVER "server_name"
+#define MBTK_GNSS_UBUS_ALAM_FLAG "alam_flag"
+#define MBTK_GNSS_UBUS_GET_AGPS "gnss_get_agps"
+#define MBTK_GNSS_UBUS_SET_AGPS "gnss_set_agps"
#define MBTK_RESULT_FAIL -1
#define MBTK_RESULT_SUCCESS 0
@@ -341,7 +345,8 @@
char nmea_buf[1025] = {0};
struct epoll_event events[2];
int ne, nevents;
- int cmd = -1, ret = -1;
+ int ret = -1;
+ char cmd = 0;
char c;
int pos = 0;
@@ -384,6 +389,7 @@
do {
ret = read( fd, &cmd, 1 );
} while (ret < 0 && errno == EINTR);
+ LOGE("[mbtk_gnss_api] entry nmea thread quit cmd = [%d]!", cmd);
if (cmd == 1)
{
epoll_deregister( epoll_fd, control_fd );
@@ -451,7 +457,7 @@
if(nmea_state.init == 1)
{
LOGE("[mbtk_gnss_api] nmea thread is open.");
- return MBTK_RESULT_FAIL;
+ return MBTK_RESULT_SUCCESS;
}
mbtk_gnss_open_port(&nmea_state.fd, MBTK_GNSS_NMEA_PORT, O_RDWR | O_NONBLOCK | O_NOCTTY, 1);
@@ -611,6 +617,7 @@
LOGE("[mbtk_gnss_api] mbtk_gnss_nmea_thread_init fail.");
return MBTK_GNSS_RESULT_FAIL;
}
+
return MBTK_GNSS_RESULT_SUCCESS;
}
@@ -641,7 +648,7 @@
//UBUS_STATUS_OK
ret = mbtk_invoke_reply_data_cb(MBTK_GNSS_UBUS_SERVER, MBTK_GNSS_UBUS_INIT, outBlob.head,
- (ubus_data_handler_t *)mbtk_gnss_ubus_result_callback, &ubus_gnss_result, 8000);
+ (ubus_data_handler_t *)mbtk_gnss_ubus_result_callback, &ubus_gnss_result, 25000);
blob_buf_free(&outBlob);
if (ret != 0)
{
@@ -887,6 +894,82 @@
return MBTK_GNSS_RESULT_SUCCESS;
}
+MBTK_GNSS_5311_RESULT_TYPE mbtk_gnss_5311_download_tle(char *host, int alam_flag)
+{
+ if (mbtk_gnss_uloop_init == 0)
+ {
+ LOGE("[mbtk_gnss_api] gnss not init.");
+ return MBTK_GNSS_RESULT_DOWNLOAD_FAIL;
+ }
+
+ if(mbtk_gnss_status == MBTK_GNSS_CLOSE)
+ {
+ LOGE("[mbtk_gnss_api] gnss not open.");
+ return MBTK_GNSS_RESULT_DOWNLOAD_FAIL;
+ }
+
+ int ret = -1;
+ MBTK_GNSS_5311_RESULT_TYPE ubus_gnss_result = MBTK_GNSS_RESULT_DOWNLOAD_SUCCESS;
+ struct blob_buf outBlob;
+ memset(&outBlob, 0, sizeof(outBlob));
+
+ blob_buf_init(&outBlob, 0);
+ blobmsg_add_string(&outBlob, MBTK_GNSS_UBUS_AGPS_SERVER, host);
+ blobmsg_add_u32(&outBlob, MBTK_GNSS_UBUS_ALAM_FLAG, alam_flag);
+
+ //UBUS_STATUS_OK
+ ret = mbtk_invoke_reply_data_cb(MBTK_GNSS_UBUS_SERVER, MBTK_GNSS_UBUS_GET_AGPS, outBlob.head,
+ (ubus_data_handler_t *)mbtk_gnss_ubus_result_callback, &ubus_gnss_result, 8000);
+ blob_buf_free(&outBlob);
+ if (ret != 0)
+ {
+ LOGE("[mbtk_gnss_api] mbtk_invoke_reply_data_cb fail.");
+ return MBTK_GNSS_RESULT_DOWNLOAD_FAIL;
+ }
+
+ if(ubus_gnss_result != MBTK_GNSS_RESULT_DOWNLOAD_SUCCESS)
+ {
+ LOGE("[mbtk_gnss_api] ubus_gnss_result = [%d].", ubus_gnss_result);
+ return MBTK_GNSS_RESULT_DOWNLOAD_FAIL;
+ }
+
+ return MBTK_GNSS_RESULT_DOWNLOAD_SUCCESS;
+}
+
+MBTK_GNSS_5311_RESULT_TYPE mbtk_gnss_injectEphemeris(void)
+{
+ if (mbtk_gnss_uloop_init == 0)
+ {
+ LOGE("[mbtk_gnss_api] gnss not init.");
+ return MBTK_GNSS_RESULT_SEND_FAIL;
+ }
+
+ if(mbtk_gnss_status == MBTK_GNSS_CLOSE)
+ {
+ LOGE("[mbtk_gnss_api] gnss not open.");
+ return MBTK_GNSS_RESULT_SEND_FAIL;
+ }
+
+ int ret = -1;
+ MBTK_GNSS_5311_RESULT_TYPE ubus_gnss_result = MBTK_GNSS_RESULT_SUCCESS;
+
+ //UBUS_STATUS_OK
+ ret = mbtk_invoke_reply_data_cb(MBTK_GNSS_UBUS_SERVER, MBTK_GNSS_UBUS_SET_AGPS, NULL,
+ (ubus_data_handler_t *)mbtk_gnss_ubus_result_callback, &ubus_gnss_result, 8000);
+ if (ret != 0)
+ {
+ LOGE("[mbtk_gnss_api] mbtk_invoke_reply_data_cb fail.");
+ return MBTK_GNSS_RESULT_SEND_FAIL;
+ }
+
+ if(ubus_gnss_result != MBTK_GNSS_RESULT_SEND_SUCCESS)
+ {
+ LOGE("[mbtk_gnss_api] ubus_gnss_result = [%d].", ubus_gnss_result);
+ return MBTK_GNSS_RESULT_SEND_FAIL;
+ }
+
+ return MBTK_GNSS_RESULT_SEND_SUCCESS;
+}
/**********************************API***********************************/