gnss: update qser gnss api
Change-Id: I3f754993719361033a128ff357492ec46aaccb48
diff --git a/mbtk/liblynq_lib/src/lynq_gnss.c b/mbtk/liblynq_lib/src/lynq_gnss.c
index c0dfc14..2bb1fc1 100755
--- a/mbtk/liblynq_lib/src/lynq_gnss.c
+++ b/mbtk/liblynq_lib/src/lynq_gnss.c
@@ -12,7 +12,7 @@
/**********************************VARIABLE***********************************/
static bool inited = FALSE;
-static uint32_t qser_h_sim = 0x5F6F7F8F;
+static uint32_t qser_h_gnss = 0x5F6F7F8F;
gnss_handler_func_t qser_gnss_callback = NULL;
static time_t qser_gnss_time = 0;
qser_agps_info qser_agps_info_save = {0};
@@ -125,7 +125,7 @@
{
qser_gnss_error_e state = QSER_GNSS_ERROR_SUCCESS;
gnss_async_func_t cb = qser_gnss_async_get_cb();
- int ret = qser_Gnss_Start(qser_h_sim);
+ int ret = qser_Gnss_Start(qser_h_gnss);
if(ret != QSER_RESULT_SUCCESS)
{
LOGE("[qser_gnss] gnss_async_thread() fail.");
@@ -212,7 +212,7 @@
return QSER_RESULT_FAIL;
}
}
- *h_gnss = qser_h_sim;
+ *h_gnss = qser_h_gnss;
return QSER_RESULT_SUCCESS;
}
@@ -220,36 +220,38 @@
int qser_Gnss_Deinit (uint32_t h_gnss)
{
//UNUSED(h_gnss);
- if(h_gnss != qser_h_sim)
+ if(h_gnss != qser_h_gnss)
{
- LOGE("[qser_gnss] h_sim is error.");
+ LOGE("[qser_gnss] h_gnss is error.");
return QSER_RESULT_FAIL;
}
gnss_err_enum ret = GNSS_ERR_UNKNOWN;
- ret = mbtk_gnss_deinit();
- if(ret == GNSS_ERR_OK)
+ if(inited)
{
- inited = FALSE;
- }
- else
- {
- LOGE("[qser_gnss] mbtk_gnss_init() fail.");
- return QSER_RESULT_FAIL;
+ ret = mbtk_gnss_deinit();
+ if(ret == GNSS_ERR_OK)
+ {
+ inited = FALSE;
+ }
+ else
+ {
+ LOGE("[qser_gnss] mbtk_gnss_init() fail.");
+ return QSER_RESULT_FAIL;
+ }
}
return QSER_RESULT_SUCCESS;
}
-
int qser_AddRxIndMsgHandler (gnss_handler_func_t handler_ptr,uint32_t h_gnss)
{
//UNUSED(handler_ptr);
//UNUSED(h_gnss);
- if(h_gnss != qser_h_sim)
+ if(h_gnss != qser_h_gnss)
{
- LOGE("[qser_gnss] h_sim is error.");
+ LOGE("[qser_gnss] h_gnss is error.");
return QSER_RESULT_FAIL;
}
@@ -263,14 +265,13 @@
return QSER_RESULT_SUCCESS;
}
-
int qser_Set_Indications (uint32_t h_gnss,e_msg_id_t type)
{
//UNUSED(h_gnss);
//UNUSED(type);
- if(h_gnss != qser_h_sim)
+ if(h_gnss != qser_h_gnss)
{
- LOGE("[qser_gnss] h_sim is error.");
+ LOGE("[qser_gnss] h_gnss is error.");
return QSER_RESULT_FAIL;
}
@@ -303,13 +304,12 @@
return QSER_RESULT_SUCCESS;
}
-
int qser_Gnss_Start (uint32_t h_gnss)
{
//UNUSED(h_gnss);
- if(h_gnss != qser_h_sim)
+ if(h_gnss != qser_h_gnss)
{
- LOGE("[qser_gnss] h_sim is error.");
+ LOGE("[qser_gnss] h_gnss is error.");
return QSER_RESULT_FAIL;
}
@@ -325,14 +325,12 @@
return QSER_RESULT_SUCCESS;
}
-
-
int qser_Gnss_Start_Async(uint32_t h_gnss)
{
//UNUSED(h_gnss);
- if(h_gnss != qser_h_sim)
+ if(h_gnss != qser_h_gnss)
{
- LOGE("[qser_gnss] h_sim is error.");
+ LOGE("[qser_gnss] h_gnss is error.");
return QSER_RESULT_FAIL;
}
@@ -356,13 +354,12 @@
return QSER_RESULT_SUCCESS;
}
-
int qser_Gnss_Stop (uint32_t h_gnss)
{
//UNUSED(h_gnss);
- if(h_gnss != qser_h_sim)
+ if(h_gnss != qser_h_gnss)
{
- LOGE("[qser_gnss] h_sim is error.");
+ LOGE("[qser_gnss] h_gnss is error.");
return QSER_RESULT_FAIL;
}
@@ -379,65 +376,29 @@
int qser_Gnss_InjectTime (uint32_t h_gnss,LYNQ_INJECT_TIME_INTO_T *time_info)
{
- UNUSED(h_gnss);
+ //UNUSED(h_gnss);
UNUSED(time_info);
- return 0;
+ if(h_gnss != qser_h_gnss)
+ {
+ LOGE("[qser_gnss] h_gnss is error.");
+ return QSER_RESULT_FAIL;
+ }
+ return QSER_RESULT_SUCCESS;
}
-/*
int qser_Gnss_Delete_Aiding_Data (uint32_t h_gnss,DELETE_AIDING_DATA_TYPE_T flags)
{
//UNUSED(h_gnss);
//UNUSED(flags);
- if(h_gnss != qser_h_sim)
+ if(h_gnss != qser_h_gnss)
{
- LOGE("[qser_gnss] h_sim is error.");
- return QSER_RESULT_FAIL;
- }
-
- gnss_err_enum ret = GNSS_ERR_UNKNOWN;
- char param_buf[32] = {0};
- int length = 0;
-
- switch(flags)
- {
- case DELETE_NOTHING:
- {
- memcpy(param_buf, "RESET,1", strlen("RESET,1"));
- break;
- }
- case DELETE_EPHEMERIS:
- case DELETE_ALMANAC:
- case DELETE_POSITION_TIME:
- case DELETE_UTC:
- {
- memcpy(param_buf, "RESET,2", strlen("RESET,2"));
- break;
- }
- case DELETE_ALL:
- {
- memcpy(param_buf, "RESET,3", strlen("RESET,3"));
- break;
- }
- default:
- {
- LOGE("[qser_gnss] flags UNKOWN.");
- return QSER_RESULT_FAIL;
- }
- }
-
- length = strlen(param_buf);
- ret = mbtk_gnss_param_config(param_buf, length);
- if(ret != MBTK_GNSS_RESULT_SUCCESS)
- {
- LOGE("[qser_gnss] mbtk_gnss_param_config is error.");
+ LOGE("[qser_gnss] h_gnss is error.");
return QSER_RESULT_FAIL;
}
return QSER_RESULT_SUCCESS;
}
-*/
int qser_Gnss_Server_Configuration(char *host, char *id, char *password)
{
@@ -445,6 +406,12 @@
//UNUSED(id);
//UNUSED(password);
+ if(!inited)
+ {
+ LOGE("[qser_gnss] api not init.");
+ return QSER_RESULT_FAIL;
+ }
+
if(host != NULL)
{
memcpy(qser_agps_info_save.host, host, QSER_LEN_MAX);
@@ -462,28 +429,36 @@
return QSER_RESULT_SUCCESS;
}
-
-int qser_Gnss_download(const char *fw_path, int timeout)
+int qser_Gnss_download_tle()
{
- gnss_err_enum ret = GNSS_ERR_UNKNOWN;
- ret = mbtk_gnss_dl(fw_path, timeout);
- if(ret != GNSS_ERR_OK)
+ if(!inited)
{
- LOGE("[qser_gnss] mbtk_gnss_download is error.");
+ LOGE("[qser_gnss] api not init.");
return QSER_RESULT_FAIL;
}
return QSER_RESULT_SUCCESS;
}
-/*
+int qser_Gnss_injectEphemeris(uint32_t h_gnss)
+{
+ //UNUSED(h_gnss);
+
+ if(h_gnss != qser_h_gnss)
+ {
+ LOGE("[qser_gnss] h_gnss is error.");
+ return QSER_RESULT_FAIL;
+ }
+ return QSER_RESULT_SUCCESS;
+}
+
int qser_Gnss_Set_Frequency(uint32_t h_gnss, int frequency)
{
//UNUSED(h_gnss);
//UNUSED(frequency);
- if(h_gnss != qser_h_sim)
+ if(h_gnss != qser_h_gnss)
{
- LOGE("[qser_gnss] h_sim is error.");
+ LOGE("[qser_gnss] h_gnss is error.");
return QSER_RESULT_FAIL;
}
@@ -496,16 +471,15 @@
gnss_err_enum ret = GNSS_ERR_UNKNOWN;
char param_buf[32] = {0};
int length = 0;
- length = snprintf(param_buf, 32, "NAVISYSCFG,7,%d", frequency);
- ret = mbtk_gnss_dl(param_buf, length);
- if(ret != MBTK_GNSS_RESULT_SUCCESS)
+ length = snprintf(param_buf, 32, "$FREQCFG,%d", frequency);
+ ret = mbtk_gnss_setting(param_buf, QSER_GNSS_TIMEOUT);
+ if(ret != GNSS_ERR_OK)
{
- LOGE("[qser_gnss] mbtk_gnss_param_config is error.");
+ LOGE("[qser_gnss] mbtk_gnss_setting fail.");
return QSER_RESULT_FAIL;
}
return QSER_RESULT_SUCCESS;
}
-*/
/**********************************API***********************************/
diff --git a/mbtk/mbtk_gnssd/gnss_hd8122.c b/mbtk/mbtk_gnssd/gnss_hd8122.c
index ec7b515..5a328de 100755
--- a/mbtk/mbtk_gnssd/gnss_hd8122.c
+++ b/mbtk/mbtk_gnssd/gnss_hd8122.c
@@ -360,6 +360,26 @@
return GNSS_ERR_OK;
}
+static gnss_err_enum gnss_8122_freqcfg(int fd, uint8 mode)
+{
+ uint8 buff[GNSS_PACK_BUFF_SIZE];
+ LOGD("FREQCFG");
+ uint8 data[20];
+ memset(data, 0x00, 20);
+ data[1] = mode;
+ data[2] = 0x66;
+ int len = pack_create(HD8122_ID_TYPE_CFG, HD8122_ID_CFG_PWRCTL, 20, data, buff, sizeof(buff));
+ if(len <= 0)
+ {
+ LOGE("pack_create() fail.");
+ return GNSS_ERR_ARG;
+ }
+ log_hex("PACK", buff, len);
+ gnss_write(fd, buff, len);
+ msg_insert(HD8122_ID_TYPE_CFG, HD8122_ID_CFG_PWRCTL);
+ return GNSS_ERR_OK;
+}
+
static gnss_err_enum gnss_8122_msgcfg(int fd, uint8 type, uint8 id, uint8 period)
{
uint8 buff[GNSS_PACK_BUFF_SIZE];
@@ -571,6 +591,23 @@
}
should_wait_rsp = TRUE;
}
+ else if(memcmp(cmd, "$FREQCFG", 8) == 0) //$FREQCFG,<freq>
+ {
+ uint32 freq = 0;
+ freq = (uint32)atoi(cmd + 9);
+ LOGD("set freq: %d", freq);
+ if((GNSS_SET_FREQCFG_1 != freq) && (GNSS_SET_FREQCFG_2 != freq) && (GNSS_SET_FREQCFG_5 != freq))
+ {
+ gnss_set_result = GNSS_ERR_ARG;
+ goto set_fail;
+ }
+ gnss_set_result = gnss_8122_freqcfg(fd, (uint8)freq);
+ if(gnss_set_result != GNSS_ERR_OK)
+ {
+ goto set_fail;
+ }
+ should_wait_rsp = TRUE;
+ }
else if(memcmp(cmd, "$MSGCFG", 7) == 0) // $MSGCFG,<mode>,<rate>
{
uint32 mode;
diff --git a/mbtk/mbtk_gnssd/gnss_info.h b/mbtk/mbtk_gnssd/gnss_info.h
index 2b91523..67d0238 100755
--- a/mbtk/mbtk_gnssd/gnss_info.h
+++ b/mbtk/mbtk_gnssd/gnss_info.h
@@ -21,6 +21,11 @@
#define GNSS_SET_SYSCFG_GLO (1<<2)
#define GNSS_SET_SYSCFG_GAL (1<<3)
+#define GNSS_SET_FREQCFG_1 (1)
+#define GNSS_SET_FREQCFG_2 (2)
+#define GNSS_SET_FREQCFG_5 (5)
+#define GNSS_SET_FREQCFG_10 (10)
+
#define GNSS_SET_MSGCFG_RMC (1)
#define GNSS_SET_MSGCFG_VTG (1<<1)
#define GNSS_SET_MSGCFG_GGA (1<<2)
diff --git a/mbtk/test/liblynq_lib/qser_gnss_test.c b/mbtk/test/liblynq_lib/qser_gnss_test.c
old mode 100644
new mode 100755
index 2853942..8a9ec54
--- a/mbtk/test/liblynq_lib/qser_gnss_test.c
+++ b/mbtk/test/liblynq_lib/qser_gnss_test.c
@@ -60,16 +60,14 @@
"\t5 gnss set get_para_from_nmea mode\n"
"\t6 gnss start\n"
"\t7 gnss stop\n"
- /*
- "\t8 gnss Delete_Aiding_Data and reset\n"
- "\t9 gnss injecttime\n"
- "\t10 gnss download agps\n"
+ "\t8 gnss Delete_Aiding_Data and reset (new not support)\n"
+ "\t9 gnss injecttime (new not support)\n"
+ "\t10 gnss download agps (new not support)\n"
"\t11 gnss set frequency\n"
- "\t12 gnss send agps data to 5311\n"
- "\t13 gnss config agps server info\n"
+ "\t12 gnss send agps data to gnss (new not support)\n"
+ "\t13 gnss config agps server info (new not support)\n"
"\t14 gnss set async cb\n"
"\t15 gnss start async\n"
- */
"please input operator: >> \n");
}
void delete_type(void)
@@ -195,7 +193,6 @@
printf("stop success\n");
break;
}
-/*
case 8:
{
int opt_1;
@@ -277,7 +274,7 @@
{
int frequency;
//qser_Gnss_Set_Frequency=(int(*)(uint32_t, int))dlsym(dlHandle_gnss, "qser_Gnss_Set_Frequency");
- printf("=========delete aiding data type=========\n");
+ printf("=========Set Frequency=========\n");
scanf("%d", &frequency);
ret = qser_Gnss_Set_Frequency(ph_gnss,frequency);
if(ret < 0)
@@ -338,7 +335,6 @@
printf("qser_Gnss_Start_Async ssuccess\n");
break;
}
- */
}
}
return 0;