blob: 34896c24e722f1a6079b0af6a3b4e9086db59d8a [file] [log] [blame]
wangyouqiang3d09b4d2024-01-04 13:50:51 +08001#include <time.h>
wangyouqiang75b6cfd2024-05-31 14:25:45 +08002#include <pthread.h>
liuyanga812f1b2024-07-25 17:49:14 +08003#include <stdio.h>
4#include <stdlib.h>
5#include <string.h>
wangyouqiang75b6cfd2024-05-31 14:25:45 +08006
b.liu4e243dc2023-11-27 11:20:00 +08007#include "lynq_gnss.h"
liuyanga812f1b2024-07-25 17:49:14 +08008
9
10
liubin281ac462023-07-19 14:22:54 +080011
wangyouqiang7d66fb12024-01-26 19:19:00 +080012#define QSER_LEN_MAX 128
13
wangyouqiang3d09b4d2024-01-04 13:50:51 +080014#define QSER_RESULT_SUCCESS 0
15#define QSER_RESULT_FAIL -1
liuyanga812f1b2024-07-25 17:49:14 +080016#define QSER_GNSS_TIMEOUT 5
wangyouqiang3d09b4d2024-01-04 13:50:51 +080017
18/**********************************VARIABLE***********************************/
wangyouqiang7d66fb12024-01-26 19:19:00 +080019typedef struct
20{
21 char host[QSER_LEN_MAX];
22 char id[QSER_LEN_MAX];
23 char passwd[QSER_LEN_MAX];
24}qser_gnss_info;
25
wangyouqiang3d09b4d2024-01-04 13:50:51 +080026static bool inited = FALSE;
27static int qser_info_handle_num = 0;
wangyouqiang75b6cfd2024-05-31 14:25:45 +080028static uint32_t qser_h_sim = 0x5F6F7F8F;
wangyouqiang3d09b4d2024-01-04 13:50:51 +080029gnss_handler_func_t qser_gnss_callback = NULL;
30e_msg_id_t qser_gnss_msg_type = E_MT_LOC_MSG_ID_NMEA_INFO;
31static time_t qser_gnss_time = 0;
wangyouqiang7d66fb12024-01-26 19:19:00 +080032qser_gnss_info qser_agps_info_save = {0};
wangyouqiang75b6cfd2024-05-31 14:25:45 +080033gnss_async_func_t qser_gnss_async_callback = NULL;
liuyanga812f1b2024-07-25 17:49:14 +080034static mbtk_gnss_nmea_func_t gnss_nmea_cb = NULL;
35
wangyouqiang3d09b4d2024-01-04 13:50:51 +080036
37extern long timezone;
38/**********************************VARIABLE***********************************/
39
40/**********************************FUNC***********************************/
wangyouqiang75b6cfd2024-05-31 14:25:45 +080041static void qser_gnss_async_set_cb(gnss_async_func_t cb)
42{
43 qser_gnss_async_callback = cb;
44}
45
46static gnss_async_func_t qser_gnss_async_get_cb(void)
47{
48 return qser_gnss_async_callback;
49}
50
51
wangyouqiang3d09b4d2024-01-04 13:50:51 +080052static time_t qser_get_timestamp(char *time)
53{
54 char tmp_char[4] = {0};
55 struct tm* tmp_time = (struct tm*)malloc(sizeof(struct tm));
56
57 memset(tmp_time, 0, sizeof(struct tm));
58 memset(tmp_char, 0, sizeof(tmp_char));
59 memcpy(tmp_char, &time[4], 2);
60 tmp_time->tm_sec = atoi(tmp_char);
61 memcpy(tmp_char, &time[2], 2);
62 tmp_time->tm_min = atoi(tmp_char);
63 memcpy(tmp_char, &time[0], 2);
64 tmp_time->tm_hour = atoi(tmp_char);
65 memcpy(tmp_char, &time[6], 2);
66 tmp_time->tm_mday = atoi(tmp_char);
67 memcpy(tmp_char, &time[8], 2);
68 tmp_time->tm_mon = atoi(tmp_char) - 1;
69 memcpy(tmp_char, &time[10], 2);
70 tmp_time->tm_year = 100 + atoi(tmp_char);
71
72 time_t _t = mktime(tmp_time);//按当地时区解析tmp_time
73 //gnss_log("timestamp: %ld\n",_t);
74 tzset(); // 自动设置本地时区
75 _t = _t - timezone;
76 //gnss_log("timestamp: %ld\n",_t);
77
78 free(tmp_time);
79 return _t;
80}
81
82static time_t qser_get_gnss_time_sec(void *data, int data_len)
83{
84 int i = 0, num = 0;
85 char *nmea = (char *)data;
86 char time[15] = {0};
87 char *check_state = NULL;
88
89 //$GNRMC,024142.000,A,3039.364421,N,10403.417935,E,0.051,0.00,030124,,E,A*00
90 check_state = strstr(nmea, "RMC");
91 if(check_state != NULL)
92 {
93 for(i = 0; i < data_len; i++)
94 {
95 if(check_state[i] == ',')
96 {
97 num++;
98 i++;
wangyouqiange039fe32024-01-04 16:02:42 +080099 if(num == 1)//get time
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800100 {
wangyouqiange039fe32024-01-04 16:02:42 +0800101 if(check_state[i] >= '0' && check_state[i] <= '9')
102 {
103 memcpy(time, check_state + i, 6);
liuyanga812f1b2024-07-25 17:49:14 +0800104 LOGE("[qser_gnss] %s.", time);
wangyouqiange039fe32024-01-04 16:02:42 +0800105 }
106 else
107 {
108 qser_gnss_time = 0;
109 return qser_gnss_time;
110 }
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800111 }
wangyouqiange039fe32024-01-04 16:02:42 +0800112 else if(num == 9)//get date
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800113 {
wangyouqiange039fe32024-01-04 16:02:42 +0800114 if(check_state[i] >= '0' && check_state[i] <= '9')
115 {
116 memcpy(time + 6, check_state + i, 6);
liuyanga812f1b2024-07-25 17:49:14 +0800117 LOGE("[qser_gnss] %s.", time);
wangyouqiange039fe32024-01-04 16:02:42 +0800118 break;
119 }
120 else
121 {
122 qser_gnss_time = 0;
123 return qser_gnss_time;
124 }
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800125 }
wangyouqiange039fe32024-01-04 16:02:42 +0800126 else if(num > 9)
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800127 {
128 qser_gnss_time = 0;
129 return qser_gnss_time;
130 }
131 }
132 }
133
134 qser_gnss_time = qser_get_timestamp(time);
135 }
136
137 return qser_gnss_time;
138}
139
140static void qser_gnss_msg_cb(void *data, int data_len)
141{
142 if(data == NULL || data_len <= 0)
143 {
144 LOGE("[qser_gnss] data is NULL.");
145 return;
146 }
147
148 if(qser_gnss_callback == NULL)
149 {
liuyanga812f1b2024-07-25 17:49:14 +0800150 LOGE("[qser_gnss] qser_gnss_callback is NULL.");
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800151 return;
152 }
153
154 if(qser_gnss_msg_type == E_MT_LOC_MSG_ID_NMEA_INFO)
155 {
156 mopen_gnss_nmea_info_t qser_nmea = {0};
157 memset(&qser_nmea, 0x0, sizeof(mopen_gnss_nmea_info_t));
158 qser_nmea.length = data_len;
159 memcpy(qser_nmea.nmea, (char *)data, data_len);
160 qser_nmea.timestamp = qser_get_gnss_time_sec(data, data_len);
161
162 if(qser_gnss_callback != NULL)
163 {
164 qser_gnss_callback(NULL, qser_gnss_msg_type, (void *)(&qser_nmea), NULL);
165 }
166 }
167 else if(qser_gnss_msg_type == E_MT_LOC_MSG_ID_LOCATION_INFO)
168 {
169 //NOT USE
170 }
171 else
172 {
173 //UNKNOWN
174 }
175}
wangyouqiang75b6cfd2024-05-31 14:25:45 +0800176
liuyanga812f1b2024-07-25 17:49:14 +0800177
wangyouqiang75b6cfd2024-05-31 14:25:45 +0800178static void* gnss_async_thread(void* arg)
179{
180 qser_gnss_error_e state = QSER_GNSS_ERROR_SUCCESS;
181 gnss_async_func_t cb = qser_gnss_async_get_cb();
182 int ret = qser_Gnss_Start(qser_h_sim);
183 if(ret != QSER_RESULT_SUCCESS)
184 {
185 LOGE("[qser_gnss] gnss_async_thread() fail.");
186 state = QSER_GNSS_ERROR_FAIL;
187 }
188
189 if(cb != NULL)
190 {
191 cb(state);
192 }
193 return NULL;
194}
195
liuyanga812f1b2024-07-25 17:49:14 +0800196gnss_err_enum gnss_add_nmea_out_func(mbtk_gnss_nmea_func_t cb)
197{
198 if(cb == NULL)
199 {
200 LOGE("[mbtk_gnss_api] cb is NULL.");
201 return GNSS_ERR_UNKNOWN;
202 }
203 gnss_nmea_cb = cb;
204
205 return GNSS_ERR_OK;
206}
207
208
209static void gnss_callback(uint32 ind_type, const void* data, uint32 data_len)
210{
211 if(ind_type == MBTK_GNSS_IND_LOCATION) {
212 printf("LOC : %s\n", data);
213 } else if(ind_type == MBTK_GNSS_IND_NMEA) {
214 printf("NMEA : %s\n", data);
215 gnss_nmea_cb(data, data_len);
216 } else {
217 printf("Unknown IND : %d\n", ind_type);
218 }
219}
220
221
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800222/**********************************FUNC***********************************/
223
224/**********************************API***********************************/
b.liu4e243dc2023-11-27 11:20:00 +0800225int qser_Gnss_Init (uint32_t *h_gnss)
liubin281ac462023-07-19 14:22:54 +0800226{
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800227 //UNUSED(h_gnss);
liuyanga812f1b2024-07-25 17:49:14 +0800228 gnss_err_enum ret = GNSS_ERR_UNKNOWN;
liubin281ac462023-07-19 14:22:54 +0800229
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800230 if(!inited)
231 {
liuyanga812f1b2024-07-25 17:49:14 +0800232 ret = mbtk_gnss_init(gnss_callback);
233 if(ret == GNSS_ERR_OK)
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800234 {
235 qser_info_handle_num++;
236 inited = TRUE;
237 }
238 else
239 {
240 LOGE("[qser_gnss] mbtk_gnss_init() fail.");
241 return QSER_RESULT_FAIL;
242 }
243 }
244 else
245 {
246 qser_info_handle_num++;
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800247 }
248 *h_gnss = qser_h_sim;
liubin281ac462023-07-19 14:22:54 +0800249
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800250 return QSER_RESULT_SUCCESS;
liubin281ac462023-07-19 14:22:54 +0800251}
252
b.liu4e243dc2023-11-27 11:20:00 +0800253int qser_Gnss_Deinit (uint32_t h_gnss)
liubin281ac462023-07-19 14:22:54 +0800254{
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800255 //UNUSED(h_gnss);
256 if(h_gnss != qser_h_sim)
257 {
258 LOGE("[qser_gnss] h_sim is error.");
259 return QSER_RESULT_FAIL;
260 }
261
liuyanga812f1b2024-07-25 17:49:14 +0800262 gnss_err_enum ret = GNSS_ERR_UNKNOWN;
liubin281ac462023-07-19 14:22:54 +0800263
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800264 if(qser_info_handle_num == 1)
265 {
266 ret = mbtk_gnss_deinit();
liuyanga812f1b2024-07-25 17:49:14 +0800267 if(ret == GNSS_ERR_OK)
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800268 {
269 qser_info_handle_num = 0;
270 inited = FALSE;
271 }
272 else
273 {
274 LOGE("[qser_gnss] mbtk_gnss_init() fail.");
275 return QSER_RESULT_FAIL;
276 }
277 }
278 else
279 {
280 qser_info_handle_num--;
281 }
liubin281ac462023-07-19 14:22:54 +0800282
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800283 return QSER_RESULT_SUCCESS;
liubin281ac462023-07-19 14:22:54 +0800284}
b.liu5fa9e772023-11-23 18:00:55 +0800285
liuyanga812f1b2024-07-25 17:49:14 +0800286
b.liu4e243dc2023-11-27 11:20:00 +0800287int qser_AddRxIndMsgHandler (gnss_handler_func_t handler_ptr,uint32_t h_gnss)
288{
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800289 //UNUSED(handler_ptr);
290 //UNUSED(h_gnss);
291 if(h_gnss != qser_h_sim)
292 {
293 LOGE("[qser_gnss] h_sim is error.");
294 return QSER_RESULT_FAIL;
295 }
b.liu4e243dc2023-11-27 11:20:00 +0800296
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800297 if(handler_ptr == NULL)
298 {
299 LOGE("[qser_gnss] handler_ptr is NULL.");
300 return QSER_RESULT_FAIL;
301 }
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800302
303 qser_gnss_callback = handler_ptr;
304 return QSER_RESULT_SUCCESS;
b.liu5fa9e772023-11-23 18:00:55 +0800305}
306
liuyanga812f1b2024-07-25 17:49:14 +0800307
b.liu4e243dc2023-11-27 11:20:00 +0800308int qser_Set_Indications (uint32_t h_gnss,e_msg_id_t type)
309{
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800310 //UNUSED(h_gnss);
311 //UNUSED(type);
312 if(h_gnss != qser_h_sim)
313 {
314 LOGE("[qser_gnss] h_sim is error.");
315 return QSER_RESULT_FAIL;
316 }
b.liu4e243dc2023-11-27 11:20:00 +0800317
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800318 qser_gnss_msg_type = type;
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800319 return QSER_RESULT_SUCCESS;
b.liu4e243dc2023-11-27 11:20:00 +0800320}
321
wangyouqiang75b6cfd2024-05-31 14:25:45 +0800322int qser_Gnss_Set_Async_Callback(gnss_async_func_t cb)
323{
324 qser_gnss_async_set_cb(cb);
325 return QSER_RESULT_SUCCESS;
326}
327
liuyanga812f1b2024-07-25 17:49:14 +0800328
b.liu4e243dc2023-11-27 11:20:00 +0800329int qser_Gnss_Start (uint32_t h_gnss)
330{
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800331 //UNUSED(h_gnss);
332 if(h_gnss != qser_h_sim)
333 {
334 LOGE("[qser_gnss] h_sim is error.");
335 return QSER_RESULT_FAIL;
336 }
b.liu4e243dc2023-11-27 11:20:00 +0800337
liuyanga812f1b2024-07-25 17:49:14 +0800338 gnss_err_enum ret = GNSS_ERR_UNKNOWN;
wangyouqiang7d66fb12024-01-26 19:19:00 +0800339
liuyanga812f1b2024-07-25 17:49:14 +0800340 ret = gnss_add_nmea_out_func(qser_gnss_msg_cb);
341 if(ret != GNSS_ERR_OK)
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800342 {
343 LOGE("[qser_gnss] mbtk_gnss_add_nmea_out_func fail.");
344 return QSER_RESULT_FAIL;
345 }
liuyanga812f1b2024-07-25 17:49:14 +0800346
347 ret = mbtk_gnss_open(1, QSER_GNSS_TIMEOUT);
348 if(ret != GNSS_ERR_OK)
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800349 {
350 LOGE("[qser_gnss] mbtk_gnss_open is error.");
351 return QSER_RESULT_FAIL;
352 }
353
354 return QSER_RESULT_SUCCESS;
b.liu4e243dc2023-11-27 11:20:00 +0800355}
356
liuyanga812f1b2024-07-25 17:49:14 +0800357
358
wangyouqiang75b6cfd2024-05-31 14:25:45 +0800359int qser_Gnss_Start_Async(uint32_t h_gnss)
360{
361 //UNUSED(h_gnss);
362 if(h_gnss != qser_h_sim)
363 {
364 LOGE("[qser_gnss] h_sim is error.");
365 return QSER_RESULT_FAIL;
366 }
367
368 pthread_attr_t thread_attr;
369 pthread_t gnss_thread_id;
370 pthread_attr_init(&thread_attr);
371 if(pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED))
372 {
373 LOGE("[qser_gnss] pthread_attr_setdetachstate() fail.");
374 return QSER_RESULT_FAIL;
375 }
376
377 //memcpy(&qser_data_backup, data_call, sizeof(qser_data_call_s));
378 if(pthread_create(&gnss_thread_id, &thread_attr, gnss_async_thread, NULL))
379 {
380 LOGE("[qser_gnss] pthread_create() fail.");
381 return QSER_RESULT_FAIL;
382 }
383 pthread_attr_destroy(&thread_attr);
384
385 return QSER_RESULT_SUCCESS;
386}
387
388
b.liu4e243dc2023-11-27 11:20:00 +0800389int qser_Gnss_Stop (uint32_t h_gnss)
390{
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800391 //UNUSED(h_gnss);
392 if(h_gnss != qser_h_sim)
393 {
394 LOGE("[qser_gnss] h_sim is error.");
395 return QSER_RESULT_FAIL;
396 }
b.liu4e243dc2023-11-27 11:20:00 +0800397
liuyanga812f1b2024-07-25 17:49:14 +0800398 gnss_err_enum ret = GNSS_ERR_UNKNOWN;
399 ret = mbtk_gnss_close(QSER_GNSS_TIMEOUT);
400 if(ret != GNSS_ERR_OK)
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800401 {
402 LOGE("[qser_gnss] mbtk_gnss_close is error.");
403 return QSER_RESULT_FAIL;
404 }
liuyanga812f1b2024-07-25 17:49:14 +0800405 gnss_nmea_cb = NULL;
406
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800407 return QSER_RESULT_SUCCESS;
b.liu4e243dc2023-11-27 11:20:00 +0800408}
409
410int qser_Gnss_InjectTime (uint32_t h_gnss,LYNQ_INJECT_TIME_INTO_T *time_info)
411{
412 UNUSED(h_gnss);
413 UNUSED(time_info);
414
415 return 0;
416}
417
liuyanga812f1b2024-07-25 17:49:14 +0800418/*
b.liu4e243dc2023-11-27 11:20:00 +0800419int qser_Gnss_Delete_Aiding_Data (uint32_t h_gnss,DELETE_AIDING_DATA_TYPE_T flags)
420{
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800421 //UNUSED(h_gnss);
422 //UNUSED(flags);
423
424 if(h_gnss != qser_h_sim)
425 {
426 LOGE("[qser_gnss] h_sim is error.");
427 return QSER_RESULT_FAIL;
428 }
b.liu4e243dc2023-11-27 11:20:00 +0800429
liuyanga812f1b2024-07-25 17:49:14 +0800430 gnss_err_enum ret = GNSS_ERR_UNKNOWN;
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800431 char param_buf[32] = {0};
432 int length = 0;
433
434 switch(flags)
435 {
436 case DELETE_NOTHING:
437 {
438 memcpy(param_buf, "RESET,1", strlen("RESET,1"));
439 break;
440 }
441 case DELETE_EPHEMERIS:
442 case DELETE_ALMANAC:
443 case DELETE_POSITION_TIME:
444 case DELETE_UTC:
445 {
446 memcpy(param_buf, "RESET,2", strlen("RESET,2"));
447 break;
448 }
449 case DELETE_ALL:
450 {
451 memcpy(param_buf, "RESET,3", strlen("RESET,3"));
452 break;
453 }
454 default:
455 {
456 LOGE("[qser_gnss] flags UNKOWN.");
457 return QSER_RESULT_FAIL;
458 }
459 }
460
461 length = strlen(param_buf);
462 ret = mbtk_gnss_param_config(param_buf, length);
463 if(ret != MBTK_GNSS_RESULT_SUCCESS)
464 {
465 LOGE("[qser_gnss] mbtk_gnss_param_config is error.");
466 return QSER_RESULT_FAIL;
467 }
468 return QSER_RESULT_SUCCESS;
469}
liuyanga812f1b2024-07-25 17:49:14 +0800470*/
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800471
472int qser_Gnss_Server_Configuration(char *host, char *id, char *password)
473{
wangyouqiang7d66fb12024-01-26 19:19:00 +0800474 //UNUSED(host);
475 //UNUSED(id);
476 //UNUSED(password);
477
478 if(host != NULL)
479 {
480 memcpy(qser_agps_info_save.host, host, QSER_LEN_MAX);
481 }
482
483 if(id != NULL)
484 {
485 memcpy(qser_agps_info_save.id, id, QSER_LEN_MAX);
486 }
487
488 if(password != NULL)
489 {
490 memcpy(qser_agps_info_save.passwd, password, QSER_LEN_MAX);
491 }
492 return QSER_RESULT_SUCCESS;
b.liu4e243dc2023-11-27 11:20:00 +0800493}
494
liuyanga812f1b2024-07-25 17:49:14 +0800495
496int qser_Gnss_download(const char *fw_path, int timeout)
b.liu5fa9e772023-11-23 18:00:55 +0800497{
liuyanga812f1b2024-07-25 17:49:14 +0800498 gnss_err_enum ret = GNSS_ERR_UNKNOWN;
499 ret = mbtk_gnss_dl(fw_path, timeout);
500 if(ret != GNSS_ERR_OK)
wangyouqiang7d66fb12024-01-26 19:19:00 +0800501 {
liuyanga812f1b2024-07-25 17:49:14 +0800502 LOGE("[qser_gnss] mbtk_gnss_download is error.");
wangyouqiang7d66fb12024-01-26 19:19:00 +0800503 return QSER_RESULT_FAIL;
504 }
505 return QSER_RESULT_SUCCESS;
b.liu5fa9e772023-11-23 18:00:55 +0800506}
507
liuyanga812f1b2024-07-25 17:49:14 +0800508/*
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800509int qser_Gnss_Set_Frequency(uint32_t h_gnss, int frequency)
510{
511 //UNUSED(h_gnss);
512 //UNUSED(frequency);
513
514 if(h_gnss != qser_h_sim)
515 {
516 LOGE("[qser_gnss] h_sim is error.");
517 return QSER_RESULT_FAIL;
518 }
519
520 if(frequency != 1 && frequency != 2 && frequency != 5)
521 {
522 LOGE("[qser_gnss] frequency out of range.");
523 return QSER_RESULT_FAIL;
524 }
525
liuyanga812f1b2024-07-25 17:49:14 +0800526 gnss_err_enum ret = GNSS_ERR_UNKNOWN;
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800527 char param_buf[32] = {0};
528 int length = 0;
529 length = snprintf(param_buf, 32, "NAVISYSCFG,7,%d", frequency);
liuyanga812f1b2024-07-25 17:49:14 +0800530 ret = mbtk_gnss_dl(param_buf, length);
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800531 if(ret != MBTK_GNSS_RESULT_SUCCESS)
532 {
533 LOGE("[qser_gnss] mbtk_gnss_param_config is error.");
534 return QSER_RESULT_FAIL;
535 }
536 return QSER_RESULT_SUCCESS;
537}
liuyanga812f1b2024-07-25 17:49:14 +0800538*/
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800539/**********************************API***********************************/
540
541