blob: c0dfc143bb3701ce6c6b0268ed112e1c85b85d2b [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
wangyouqiang3d09b4d2024-01-04 13:50:51 +08009#define QSER_RESULT_SUCCESS 0
10#define QSER_RESULT_FAIL -1
liuyanga812f1b2024-07-25 17:49:14 +080011#define QSER_GNSS_TIMEOUT 5
wangyouqiang3d09b4d2024-01-04 13:50:51 +080012
13/**********************************VARIABLE***********************************/
14static bool inited = FALSE;
wangyouqiang75b6cfd2024-05-31 14:25:45 +080015static uint32_t qser_h_sim = 0x5F6F7F8F;
wangyouqiang3d09b4d2024-01-04 13:50:51 +080016gnss_handler_func_t qser_gnss_callback = NULL;
wangyouqiang3d09b4d2024-01-04 13:50:51 +080017static time_t qser_gnss_time = 0;
yq.wang937355d2024-07-26 01:24:42 -070018qser_agps_info qser_agps_info_save = {0};
wangyouqiang75b6cfd2024-05-31 14:25:45 +080019gnss_async_func_t qser_gnss_async_callback = NULL;
wangyouqiang3d09b4d2024-01-04 13:50:51 +080020
21extern long timezone;
22/**********************************VARIABLE***********************************/
23
24/**********************************FUNC***********************************/
wangyouqiang75b6cfd2024-05-31 14:25:45 +080025static void qser_gnss_async_set_cb(gnss_async_func_t cb)
26{
27 qser_gnss_async_callback = cb;
28}
29
30static gnss_async_func_t qser_gnss_async_get_cb(void)
31{
32 return qser_gnss_async_callback;
33}
34
35
wangyouqiang3d09b4d2024-01-04 13:50:51 +080036static time_t qser_get_timestamp(char *time)
37{
38 char tmp_char[4] = {0};
39 struct tm* tmp_time = (struct tm*)malloc(sizeof(struct tm));
40
41 memset(tmp_time, 0, sizeof(struct tm));
42 memset(tmp_char, 0, sizeof(tmp_char));
43 memcpy(tmp_char, &time[4], 2);
44 tmp_time->tm_sec = atoi(tmp_char);
45 memcpy(tmp_char, &time[2], 2);
46 tmp_time->tm_min = atoi(tmp_char);
47 memcpy(tmp_char, &time[0], 2);
48 tmp_time->tm_hour = atoi(tmp_char);
49 memcpy(tmp_char, &time[6], 2);
50 tmp_time->tm_mday = atoi(tmp_char);
51 memcpy(tmp_char, &time[8], 2);
52 tmp_time->tm_mon = atoi(tmp_char) - 1;
53 memcpy(tmp_char, &time[10], 2);
54 tmp_time->tm_year = 100 + atoi(tmp_char);
55
56 time_t _t = mktime(tmp_time);//按当地时区解析tmp_time
57 //gnss_log("timestamp: %ld\n",_t);
58 tzset(); // 自动设置本地时区
59 _t = _t - timezone;
60 //gnss_log("timestamp: %ld\n",_t);
61
62 free(tmp_time);
63 return _t;
64}
65
yq.wang937355d2024-07-26 01:24:42 -070066static time_t qser_get_gnss_time_sec(const void *data, int data_len)
wangyouqiang3d09b4d2024-01-04 13:50:51 +080067{
68 int i = 0, num = 0;
yq.wang937355d2024-07-26 01:24:42 -070069 const char *nmea = (const char *)data;
wangyouqiang3d09b4d2024-01-04 13:50:51 +080070 char time[15] = {0};
71 char *check_state = NULL;
72
73 //$GNRMC,024142.000,A,3039.364421,N,10403.417935,E,0.051,0.00,030124,,E,A*00
74 check_state = strstr(nmea, "RMC");
75 if(check_state != NULL)
76 {
77 for(i = 0; i < data_len; i++)
78 {
79 if(check_state[i] == ',')
80 {
81 num++;
82 i++;
wangyouqiange039fe32024-01-04 16:02:42 +080083 if(num == 1)//get time
wangyouqiang3d09b4d2024-01-04 13:50:51 +080084 {
wangyouqiange039fe32024-01-04 16:02:42 +080085 if(check_state[i] >= '0' && check_state[i] <= '9')
86 {
87 memcpy(time, check_state + i, 6);
liuyanga812f1b2024-07-25 17:49:14 +080088 LOGE("[qser_gnss] %s.", time);
wangyouqiange039fe32024-01-04 16:02:42 +080089 }
90 else
91 {
92 qser_gnss_time = 0;
93 return qser_gnss_time;
94 }
wangyouqiang3d09b4d2024-01-04 13:50:51 +080095 }
wangyouqiange039fe32024-01-04 16:02:42 +080096 else if(num == 9)//get date
wangyouqiang3d09b4d2024-01-04 13:50:51 +080097 {
wangyouqiange039fe32024-01-04 16:02:42 +080098 if(check_state[i] >= '0' && check_state[i] <= '9')
99 {
100 memcpy(time + 6, check_state + i, 6);
liuyanga812f1b2024-07-25 17:49:14 +0800101 LOGE("[qser_gnss] %s.", time);
wangyouqiange039fe32024-01-04 16:02:42 +0800102 break;
103 }
104 else
105 {
106 qser_gnss_time = 0;
107 return qser_gnss_time;
108 }
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800109 }
wangyouqiange039fe32024-01-04 16:02:42 +0800110 else if(num > 9)
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800111 {
112 qser_gnss_time = 0;
113 return qser_gnss_time;
114 }
115 }
116 }
117
118 qser_gnss_time = qser_get_timestamp(time);
119 }
120
121 return qser_gnss_time;
122}
123
wangyouqiang75b6cfd2024-05-31 14:25:45 +0800124static void* gnss_async_thread(void* arg)
125{
126 qser_gnss_error_e state = QSER_GNSS_ERROR_SUCCESS;
127 gnss_async_func_t cb = qser_gnss_async_get_cb();
128 int ret = qser_Gnss_Start(qser_h_sim);
129 if(ret != QSER_RESULT_SUCCESS)
130 {
131 LOGE("[qser_gnss] gnss_async_thread() fail.");
132 state = QSER_GNSS_ERROR_FAIL;
133 }
134
135 if(cb != NULL)
136 {
137 cb(state);
138 }
139 return NULL;
140}
141
liuyanga812f1b2024-07-25 17:49:14 +0800142static void gnss_callback(uint32 ind_type, const void* data, uint32 data_len)
143{
yq.wang937355d2024-07-26 01:24:42 -0700144 if(data == NULL || data_len <= 0)
145 {
146 LOGE("[qser_gnss] data is NULL.");
147 return;
148 }
149
150 if(qser_gnss_callback == NULL)
151 {
152 //LOGE("[qser_gnss] qser_gnss_callback is NULL.");
153 return;
154 }
155
liuyanga812f1b2024-07-25 17:49:14 +0800156 if(ind_type == MBTK_GNSS_IND_LOCATION) {
yq.wang937355d2024-07-26 01:24:42 -0700157 if(data_len != sizeof(mbtk_gnss_location_info_t))
158 {
159 LOGE("[qser_gnss] data size error");
160 return;
161 }
162 mbtk_gnss_location_info_t *locl_info = (mbtk_gnss_location_info_t *)data;
163 mopen_location_info_t qser_locl_info;
164 memset(&qser_locl_info, 0x0, sizeof(mopen_location_info_t));
165 qser_locl_info.latitude = locl_info->latitude;
166 qser_locl_info.longitude = locl_info->longitude;
167 qser_locl_info.altitude = locl_info->altitude;
168 qser_locl_info.speed = locl_info->speed;
169 qser_locl_info.bearing = locl_info->bearing;
170 qser_locl_info.timestamp = locl_info->timestamp;
171 qser_gnss_callback(NULL, E_MT_LOC_MSG_ID_LOCATION_INFO, (void *)(&qser_locl_info), NULL);
liuyanga812f1b2024-07-25 17:49:14 +0800172 } else if(ind_type == MBTK_GNSS_IND_NMEA) {
yq.wang937355d2024-07-26 01:24:42 -0700173 mopen_gnss_nmea_info_t qser_nmea = {0};
174 memset(&qser_nmea, 0x0, sizeof(mopen_gnss_nmea_info_t));
175 qser_nmea.length = data_len;
176 memcpy(qser_nmea.nmea, (char *)data, data_len);
177 qser_nmea.timestamp = qser_get_gnss_time_sec(data, data_len);
178 qser_gnss_callback(NULL, E_MT_LOC_MSG_ID_NMEA_INFO, (void *)(&qser_nmea), NULL);
liuyanga812f1b2024-07-25 17:49:14 +0800179 } else {
180 printf("Unknown IND : %d\n", ind_type);
181 }
182}
183
184
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800185/**********************************FUNC***********************************/
186
187/**********************************API***********************************/
b.liu4e243dc2023-11-27 11:20:00 +0800188int qser_Gnss_Init (uint32_t *h_gnss)
liubin281ac462023-07-19 14:22:54 +0800189{
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800190 //UNUSED(h_gnss);
liuyanga812f1b2024-07-25 17:49:14 +0800191 gnss_err_enum ret = GNSS_ERR_UNKNOWN;
liubin281ac462023-07-19 14:22:54 +0800192
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800193 if(!inited)
194 {
liuyanga812f1b2024-07-25 17:49:14 +0800195 ret = mbtk_gnss_init(gnss_callback);
196 if(ret == GNSS_ERR_OK)
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800197 {
yq.wang937355d2024-07-26 01:24:42 -0700198 ret = mbtk_gnss_ind_set(MBTK_GNSS_IND_NMEA, QSER_GNSS_TIMEOUT);
199 if(ret == GNSS_ERR_OK)
200 {
201 inited = TRUE;
202 }
203 else
204 {
205 LOGE("[qser_gnss] init mbtk_gnss_ind_set() fail.");
206 return QSER_RESULT_FAIL;
207 }
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800208 }
209 else
210 {
211 LOGE("[qser_gnss] mbtk_gnss_init() fail.");
212 return QSER_RESULT_FAIL;
213 }
214 }
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800215 *h_gnss = qser_h_sim;
liubin281ac462023-07-19 14:22:54 +0800216
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800217 return QSER_RESULT_SUCCESS;
liubin281ac462023-07-19 14:22:54 +0800218}
219
b.liu4e243dc2023-11-27 11:20:00 +0800220int qser_Gnss_Deinit (uint32_t h_gnss)
liubin281ac462023-07-19 14:22:54 +0800221{
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800222 //UNUSED(h_gnss);
223 if(h_gnss != qser_h_sim)
224 {
225 LOGE("[qser_gnss] h_sim is error.");
226 return QSER_RESULT_FAIL;
227 }
228
liuyanga812f1b2024-07-25 17:49:14 +0800229 gnss_err_enum ret = GNSS_ERR_UNKNOWN;
liubin281ac462023-07-19 14:22:54 +0800230
yq.wang937355d2024-07-26 01:24:42 -0700231 ret = mbtk_gnss_deinit();
232 if(ret == GNSS_ERR_OK)
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800233 {
yq.wang937355d2024-07-26 01:24:42 -0700234 inited = FALSE;
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800235 }
236 else
237 {
yq.wang937355d2024-07-26 01:24:42 -0700238 LOGE("[qser_gnss] mbtk_gnss_init() fail.");
239 return QSER_RESULT_FAIL;
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800240 }
liubin281ac462023-07-19 14:22:54 +0800241
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800242 return QSER_RESULT_SUCCESS;
liubin281ac462023-07-19 14:22:54 +0800243}
b.liu5fa9e772023-11-23 18:00:55 +0800244
liuyanga812f1b2024-07-25 17:49:14 +0800245
b.liu4e243dc2023-11-27 11:20:00 +0800246int qser_AddRxIndMsgHandler (gnss_handler_func_t handler_ptr,uint32_t h_gnss)
247{
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800248 //UNUSED(handler_ptr);
249 //UNUSED(h_gnss);
250 if(h_gnss != qser_h_sim)
251 {
252 LOGE("[qser_gnss] h_sim is error.");
253 return QSER_RESULT_FAIL;
254 }
b.liu4e243dc2023-11-27 11:20:00 +0800255
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800256 if(handler_ptr == NULL)
257 {
258 LOGE("[qser_gnss] handler_ptr is NULL.");
259 return QSER_RESULT_FAIL;
260 }
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800261
262 qser_gnss_callback = handler_ptr;
263 return QSER_RESULT_SUCCESS;
b.liu5fa9e772023-11-23 18:00:55 +0800264}
265
liuyanga812f1b2024-07-25 17:49:14 +0800266
b.liu4e243dc2023-11-27 11:20:00 +0800267int qser_Set_Indications (uint32_t h_gnss,e_msg_id_t type)
268{
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800269 //UNUSED(h_gnss);
270 //UNUSED(type);
271 if(h_gnss != qser_h_sim)
272 {
273 LOGE("[qser_gnss] h_sim is error.");
274 return QSER_RESULT_FAIL;
275 }
b.liu4e243dc2023-11-27 11:20:00 +0800276
yq.wang937355d2024-07-26 01:24:42 -0700277 gnss_err_enum ret = GNSS_ERR_OK;
278 if(type == E_MT_LOC_MSG_ID_LOCATION_INFO)
279 {
280 ret = mbtk_gnss_ind_set(MBTK_GNSS_IND_LOCATION, QSER_GNSS_TIMEOUT);
281 }
282 else if(type == E_MT_LOC_MSG_ID_NMEA_INFO)
283 {
284 ret = mbtk_gnss_ind_set(MBTK_GNSS_IND_NMEA, QSER_GNSS_TIMEOUT);
285 }
286 else
287 {
288 LOGE("[qser_gnss] type is fail.");
289 return QSER_RESULT_FAIL;
290 }
291
292 if(ret != GNSS_ERR_OK)
293 {
294 LOGE("[qser_gnss] mbtk_gnss_ind_set() fail.");
295 return QSER_RESULT_FAIL;
296 }
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800297 return QSER_RESULT_SUCCESS;
b.liu4e243dc2023-11-27 11:20:00 +0800298}
299
wangyouqiang75b6cfd2024-05-31 14:25:45 +0800300int qser_Gnss_Set_Async_Callback(gnss_async_func_t cb)
301{
302 qser_gnss_async_set_cb(cb);
303 return QSER_RESULT_SUCCESS;
304}
305
liuyanga812f1b2024-07-25 17:49:14 +0800306
b.liu4e243dc2023-11-27 11:20:00 +0800307int qser_Gnss_Start (uint32_t h_gnss)
308{
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800309 //UNUSED(h_gnss);
310 if(h_gnss != qser_h_sim)
311 {
312 LOGE("[qser_gnss] h_sim is error.");
313 return QSER_RESULT_FAIL;
314 }
b.liu4e243dc2023-11-27 11:20:00 +0800315
liuyanga812f1b2024-07-25 17:49:14 +0800316 gnss_err_enum ret = GNSS_ERR_UNKNOWN;
wangyouqiang7d66fb12024-01-26 19:19:00 +0800317
yq.wang937355d2024-07-26 01:24:42 -0700318 ret = mbtk_gnss_open(255, QSER_GNSS_TIMEOUT);
liuyanga812f1b2024-07-25 17:49:14 +0800319 if(ret != GNSS_ERR_OK)
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800320 {
321 LOGE("[qser_gnss] mbtk_gnss_open is error.");
322 return QSER_RESULT_FAIL;
323 }
324
325 return QSER_RESULT_SUCCESS;
b.liu4e243dc2023-11-27 11:20:00 +0800326}
327
liuyanga812f1b2024-07-25 17:49:14 +0800328
329
wangyouqiang75b6cfd2024-05-31 14:25:45 +0800330int qser_Gnss_Start_Async(uint32_t h_gnss)
331{
332 //UNUSED(h_gnss);
333 if(h_gnss != qser_h_sim)
334 {
335 LOGE("[qser_gnss] h_sim is error.");
336 return QSER_RESULT_FAIL;
337 }
338
339 pthread_attr_t thread_attr;
340 pthread_t gnss_thread_id;
341 pthread_attr_init(&thread_attr);
342 if(pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED))
343 {
344 LOGE("[qser_gnss] pthread_attr_setdetachstate() fail.");
345 return QSER_RESULT_FAIL;
346 }
347
348 //memcpy(&qser_data_backup, data_call, sizeof(qser_data_call_s));
349 if(pthread_create(&gnss_thread_id, &thread_attr, gnss_async_thread, NULL))
350 {
351 LOGE("[qser_gnss] pthread_create() fail.");
352 return QSER_RESULT_FAIL;
353 }
354 pthread_attr_destroy(&thread_attr);
355
356 return QSER_RESULT_SUCCESS;
357}
358
359
b.liu4e243dc2023-11-27 11:20:00 +0800360int qser_Gnss_Stop (uint32_t h_gnss)
361{
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800362 //UNUSED(h_gnss);
363 if(h_gnss != qser_h_sim)
364 {
365 LOGE("[qser_gnss] h_sim is error.");
366 return QSER_RESULT_FAIL;
367 }
b.liu4e243dc2023-11-27 11:20:00 +0800368
liuyanga812f1b2024-07-25 17:49:14 +0800369 gnss_err_enum ret = GNSS_ERR_UNKNOWN;
370 ret = mbtk_gnss_close(QSER_GNSS_TIMEOUT);
371 if(ret != GNSS_ERR_OK)
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800372 {
373 LOGE("[qser_gnss] mbtk_gnss_close is error.");
374 return QSER_RESULT_FAIL;
375 }
liuyanga812f1b2024-07-25 17:49:14 +0800376
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800377 return QSER_RESULT_SUCCESS;
b.liu4e243dc2023-11-27 11:20:00 +0800378}
379
380int qser_Gnss_InjectTime (uint32_t h_gnss,LYNQ_INJECT_TIME_INTO_T *time_info)
381{
382 UNUSED(h_gnss);
383 UNUSED(time_info);
384
385 return 0;
386}
387
liuyanga812f1b2024-07-25 17:49:14 +0800388/*
b.liu4e243dc2023-11-27 11:20:00 +0800389int qser_Gnss_Delete_Aiding_Data (uint32_t h_gnss,DELETE_AIDING_DATA_TYPE_T flags)
390{
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800391 //UNUSED(h_gnss);
392 //UNUSED(flags);
393
394 if(h_gnss != qser_h_sim)
395 {
396 LOGE("[qser_gnss] h_sim is error.");
397 return QSER_RESULT_FAIL;
398 }
b.liu4e243dc2023-11-27 11:20:00 +0800399
liuyanga812f1b2024-07-25 17:49:14 +0800400 gnss_err_enum ret = GNSS_ERR_UNKNOWN;
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800401 char param_buf[32] = {0};
402 int length = 0;
403
404 switch(flags)
405 {
406 case DELETE_NOTHING:
407 {
408 memcpy(param_buf, "RESET,1", strlen("RESET,1"));
409 break;
410 }
411 case DELETE_EPHEMERIS:
412 case DELETE_ALMANAC:
413 case DELETE_POSITION_TIME:
414 case DELETE_UTC:
415 {
416 memcpy(param_buf, "RESET,2", strlen("RESET,2"));
417 break;
418 }
419 case DELETE_ALL:
420 {
421 memcpy(param_buf, "RESET,3", strlen("RESET,3"));
422 break;
423 }
424 default:
425 {
426 LOGE("[qser_gnss] flags UNKOWN.");
427 return QSER_RESULT_FAIL;
428 }
429 }
430
431 length = strlen(param_buf);
432 ret = mbtk_gnss_param_config(param_buf, length);
433 if(ret != MBTK_GNSS_RESULT_SUCCESS)
434 {
435 LOGE("[qser_gnss] mbtk_gnss_param_config is error.");
436 return QSER_RESULT_FAIL;
437 }
438 return QSER_RESULT_SUCCESS;
439}
liuyanga812f1b2024-07-25 17:49:14 +0800440*/
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800441
442int qser_Gnss_Server_Configuration(char *host, char *id, char *password)
443{
wangyouqiang7d66fb12024-01-26 19:19:00 +0800444 //UNUSED(host);
445 //UNUSED(id);
446 //UNUSED(password);
447
448 if(host != NULL)
449 {
450 memcpy(qser_agps_info_save.host, host, QSER_LEN_MAX);
451 }
452
453 if(id != NULL)
454 {
455 memcpy(qser_agps_info_save.id, id, QSER_LEN_MAX);
456 }
457
458 if(password != NULL)
459 {
460 memcpy(qser_agps_info_save.passwd, password, QSER_LEN_MAX);
461 }
462 return QSER_RESULT_SUCCESS;
b.liu4e243dc2023-11-27 11:20:00 +0800463}
464
liuyanga812f1b2024-07-25 17:49:14 +0800465
466int qser_Gnss_download(const char *fw_path, int timeout)
b.liu5fa9e772023-11-23 18:00:55 +0800467{
liuyanga812f1b2024-07-25 17:49:14 +0800468 gnss_err_enum ret = GNSS_ERR_UNKNOWN;
469 ret = mbtk_gnss_dl(fw_path, timeout);
470 if(ret != GNSS_ERR_OK)
wangyouqiang7d66fb12024-01-26 19:19:00 +0800471 {
liuyanga812f1b2024-07-25 17:49:14 +0800472 LOGE("[qser_gnss] mbtk_gnss_download is error.");
wangyouqiang7d66fb12024-01-26 19:19:00 +0800473 return QSER_RESULT_FAIL;
474 }
475 return QSER_RESULT_SUCCESS;
b.liu5fa9e772023-11-23 18:00:55 +0800476}
477
liuyanga812f1b2024-07-25 17:49:14 +0800478/*
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800479int qser_Gnss_Set_Frequency(uint32_t h_gnss, int frequency)
480{
481 //UNUSED(h_gnss);
482 //UNUSED(frequency);
483
484 if(h_gnss != qser_h_sim)
485 {
486 LOGE("[qser_gnss] h_sim is error.");
487 return QSER_RESULT_FAIL;
488 }
489
490 if(frequency != 1 && frequency != 2 && frequency != 5)
491 {
492 LOGE("[qser_gnss] frequency out of range.");
493 return QSER_RESULT_FAIL;
494 }
495
liuyanga812f1b2024-07-25 17:49:14 +0800496 gnss_err_enum ret = GNSS_ERR_UNKNOWN;
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800497 char param_buf[32] = {0};
498 int length = 0;
499 length = snprintf(param_buf, 32, "NAVISYSCFG,7,%d", frequency);
liuyanga812f1b2024-07-25 17:49:14 +0800500 ret = mbtk_gnss_dl(param_buf, length);
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800501 if(ret != MBTK_GNSS_RESULT_SUCCESS)
502 {
503 LOGE("[qser_gnss] mbtk_gnss_param_config is error.");
504 return QSER_RESULT_FAIL;
505 }
506 return QSER_RESULT_SUCCESS;
507}
liuyanga812f1b2024-07-25 17:49:14 +0800508*/
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800509/**********************************API***********************************/
510
511