blob: c7c85639728ff904362845bdb0b57a6250180daf [file] [log] [blame]
wangyouqiang3d09b4d2024-01-04 13:50:51 +08001#include <stdio.h>
2#include <string.h>
3#include <strings.h>
4#include <stdlib.h>
5#include <errno.h>
6#include <termios.h>
7#include <unistd.h>
8#include <fcntl.h>
9#include <signal.h>
10#include <sys/types.h>
11#include <unistd.h>
12#include <pthread.h>
13#include <termios.h>
14#include <time.h>
15#include <sys/ioctl.h>
16#include <dlfcn.h>
17#include <stdint.h>
18#include "lynq_gnss.h"
19
20void cb(uint32_t h_loc, e_msg_id_t e_msg_id, void *pv_data, void *context_ptr)
21{
22 printf("e_msg_id=%d\n", e_msg_id);
23 switch(e_msg_id)
24 {
25 case E_MT_LOC_MSG_ID_LOCATION_INFO: //选择mode1,输出定位信息
26 {
27 mopen_location_info_t *pt_location = (mopen_location_info_t *)pv_data;
28 printf("**** flag=0x%X, Latitude = %f, Longitude=%f, altitude = %f, speed = %f, timestamp = %lld ****\n",
29 pt_location->flags,
30 pt_location->latitude,
31 pt_location->longitude,
32 pt_location->altitude,
33 pt_location->speed,
34 pt_location->timestamp);
35 break;
36 }
37 case E_MT_LOC_MSG_ID_NMEA_INFO: //选择mode3,输出nmea数据信息
38 {
39 mopen_gnss_nmea_info_t *pt_nmea = (mopen_gnss_nmea_info_t *)pv_data;
40
41 printf("**** NMEA info: timestamp=%lld, length=%d, nmea=%s ****\n",
42 pt_nmea->timestamp, pt_nmea->length, pt_nmea->nmea);
43 break;
44 }
45 }
46}
47
wangyouqiang75b6cfd2024-05-31 14:25:45 +080048void async_cb(qser_gnss_error_e state)
49{
50 printf("start gnss async state: %d \n", state);
51}
52
wangyouqiang3d09b4d2024-01-04 13:50:51 +080053void user_help(void)
54{
55 printf("\t-1 exit\n"
56 "\t1 gnss init\n"
57 "\t2 gnss deinit \n"
yq.wang9dd771b2024-09-13 23:38:40 -070058 "\t3 gnss add nmea callback\n"
59 "\t4 gnss set local mode\n"
60 "\t5 gnss set nmea mode\n"
wangyouqiang3d09b4d2024-01-04 13:50:51 +080061 "\t6 gnss start\n"
62 "\t7 gnss stop\n"
yq.wang6a3437f2024-07-27 02:57:20 -070063 "\t8 gnss Delete_Aiding_Data and reset (new not support)\n"
64 "\t9 gnss injecttime (new not support)\n"
yq.wang9dd771b2024-09-13 23:38:40 -070065 "\t10 gnss download agps\n"
wangyouqiang7d66fb12024-01-26 19:19:00 +080066 "\t11 gnss set frequency\n"
yq.wang9dd771b2024-09-13 23:38:40 -070067 "\t12 gnss send agps data to gnss\n"
68 "\t13 gnss config agps server info\n"
wangyouqiang75b6cfd2024-05-31 14:25:45 +080069 "\t14 gnss set async cb\n"
70 "\t15 gnss start async\n"
wangyouqiang7d66fb12024-01-26 19:19:00 +080071 "please input operator: >> \n");
wangyouqiang3d09b4d2024-01-04 13:50:51 +080072}
73void delete_type(void)
74{
75 printf("\t0 DELETE_NOTHING\n"
76 "\t1 DELETE_EPHEMERIS\n"
77 "\t2 DELETE_ALMANAC\n"
78 "\t3 DELETE_POSITION_TIME \n"
79 "\t4 DELETE_UTC\n"
80 "\t5 DELETE_ALL\n"
wangyouqiang7d66fb12024-01-26 19:19:00 +080081 "please input operator: >> \n");
wangyouqiang3d09b4d2024-01-04 13:50:51 +080082}
83
84int main(int argc, char *argv[])
85{
86 int ret;
87 int opt = 0;
88 //char *lynqLib_gnss = "/lib/liblynq-qser-gnss.so";
89 char dev_file[12] = {0};
90 uint32_t ph_gnss;
91 //dlHandle_gnss = dlopen(lynqLib_gnss, RTLD_NOW);
92 while(1)
93 {
94 printf("=========gnss main=========\n");
95 user_help();
96 scanf("%d", &opt);
97 switch (opt)
98 {
yq.wang9dd771b2024-09-13 23:38:40 -070099 case -1:
100 {
101 qser_Gnss_Stop(ph_gnss);
102 qser_Gnss_Deinit(ph_gnss);
103 printf("main exit\n");
104 return 0;
105 }
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800106
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800107 case 1:
108 {
yq.wang9dd771b2024-09-13 23:38:40 -0700109 ret = qser_Gnss_Init(&ph_gnss);
110 if(ret < 0)
111 {
112 printf("qser_Gnss_Init FAIL.\n");
113 }
114 else
115 {
116 printf("qser_Gnss_Init success , with address=%08x\n", ph_gnss);
117 }
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800118 break;
119 }
120 case 2:
121 {
yq.wang9dd771b2024-09-13 23:38:40 -0700122 ret =qser_Gnss_Deinit(ph_gnss);
123 if(ret < 0)
124 {
125 printf("qser_Gnss_Deinit FAIL.\n");
126 }
127 else
128 {
129 printf("qser_Gnss_Deinit success \n");
130 }
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800131 break;
132 }
133 case 3:
134 {
yq.wang9dd771b2024-09-13 23:38:40 -0700135 ret = qser_AddRxIndMsgHandler((gnss_handler_func_t)&cb,ph_gnss);
136 if(ret < 0)
137 {
138 printf("qser_AddRxIndMsgHandler fail\n");
139 }
140 else
141 {
142 printf("add success\n");
143 }
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800144 break;
145 }
146 case 4:
147 {
yq.wang9dd771b2024-09-13 23:38:40 -0700148 e_msg_id_t ptr2=E_MT_LOC_MSG_ID_LOCATION_INFO;
149 ret = qser_Set_Indications(ph_gnss,ptr2);
150 if(ret < 0)
151 {
152 printf("qser_Set_Indications fail\n");
153 }
154 else
155 {
156 printf("set location mode success\n");
157 }
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800158 break;
159 }
160 case 5:
161 {
yq.wang9dd771b2024-09-13 23:38:40 -0700162 e_msg_id_t ptr4=E_MT_LOC_MSG_ID_NMEA_INFO;
163 ret = qser_Set_Indications(ph_gnss,ptr4);
164 if(ret < 0)
165 {
166 printf("qser_Set_Indications fail\n");
167 }
168 else
169 {
170 printf("set nmea mode success\n");
171 }
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800172 break;
173 }
yq.wang9dd771b2024-09-13 23:38:40 -0700174 case 6:
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800175 {
yq.wang9dd771b2024-09-13 23:38:40 -0700176 ret = qser_Gnss_Start(ph_gnss);
177 if(ret < 0)
178 {
179 printf("qser_Gnss_Start fail\n");
180 }
181 else
182 {
183 printf("start success\n");
184 }
185 break;
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800186 }
yq.wang9dd771b2024-09-13 23:38:40 -0700187 case 7:
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800188 {
yq.wang9dd771b2024-09-13 23:38:40 -0700189 ret = qser_Gnss_Stop(ph_gnss);
190 if(ret < 0)
191 {
192 printf("qser_Gnss_Stop fail\n");
193 }
194 else
195 {
196 printf("stop success\n");
197 }
198 break;
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800199 }
yq.wang9dd771b2024-09-13 23:38:40 -0700200 case 8:
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800201 {
yq.wang9dd771b2024-09-13 23:38:40 -0700202 int opt_1;
203 DELETE_AIDING_DATA_TYPE_T ptr;
204 printf("=========delete aiding data type=========\n");
205 delete_type();
206 scanf("%d", &opt_1);
207 switch(opt_1)
208 {
209 case 0:
210 {
211 ptr = DELETE_NOTHING;//hot
212 break;
213 }
214 case 1:
215 {
216 ptr = DELETE_EPHEMERIS;//warm
217 break;
218 }
219 case 2:
220 {
221 ptr = DELETE_ALMANAC;
222 break;
223 }
224 case 3:
225 {
226 ptr = DELETE_POSITION_TIME;
227 break;
228 }
229 case 4:
230 {
231 ptr = DELETE_UTC;
232 break;
233 }
234 case 5:
235 {
236 ptr = DELETE_ALL;//cold
237 break;
238 }
239 }
240 ret = qser_Gnss_Delete_Aiding_Data(ph_gnss,ptr);
241 if(ret < 0)
242 {
243 printf("qser_Gnss_Delete_Aiding_Data %d fail\n",opt_1);
244 }
245 else
246 {
247 printf("qser_Gnss_Delete_Aiding_Data %d success\n",opt_1);
248 }
249 break;
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800250 }
yq.wang9dd771b2024-09-13 23:38:40 -0700251 case 9:
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800252 {
yq.wang9dd771b2024-09-13 23:38:40 -0700253 LYNQ_INJECT_TIME_INTO_T time_test;
254 ret = qser_Gnss_InjectTime(ph_gnss,&time_test);
255 if(ret < 0)
256 {
257 printf("qser_Gnss_InjectTime fail\n");
258 }
259 else
260 {
261 printf("qser_Gnss_InjectTime success\n");
262 }
263 break;
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800264 }
yq.wang9dd771b2024-09-13 23:38:40 -0700265 case 10:
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800266 {
yq.wang9dd771b2024-09-13 23:38:40 -0700267 ret = qser_Gnss_download_tle();
268 if(ret < 0)
269 {
270 printf("qser_Gnss_download_tle fail\n");
271 }
272 else
273 {
274 printf("qser_Gnss_download_tle success\n");
275 }
276 break;
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800277 }
yq.wang9dd771b2024-09-13 23:38:40 -0700278 case 11:
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800279 {
yq.wang9dd771b2024-09-13 23:38:40 -0700280 int frequency;
281 printf("=========Set Frequency=========\n");
282 scanf("%d", &frequency);
283 ret = qser_Gnss_Set_Frequency(ph_gnss,frequency);
284 if(ret < 0)
285 {
286 printf("qser_Gnss_Set_Frequency fail\n");
287 }
288 else
289 {
290 printf("frequency is %d\n",frequency);
291 printf("qser_Gnss_Set_Frequency success\n");
292 }
293 break;
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800294 }
yq.wang9dd771b2024-09-13 23:38:40 -0700295 case 12:
wangyouqiang75b6cfd2024-05-31 14:25:45 +0800296 {
yq.wang9dd771b2024-09-13 23:38:40 -0700297 ret = qser_Gnss_injectEphemeris(ph_gnss);
298 if(ret < 0)
299 {
300 printf("qser_Gnss_injectEphemeris fail\n");
301 }
302 else
303 {
304 printf("qser_Gnss_injectEphemeri ssuccess\n");
305 }
306 break;
wangyouqiang75b6cfd2024-05-31 14:25:45 +0800307 }
yq.wang9dd771b2024-09-13 23:38:40 -0700308 case 13:
wangyouqiang75b6cfd2024-05-31 14:25:45 +0800309 {
yq.wang9dd771b2024-09-13 23:38:40 -0700310 ret = qser_Gnss_Server_Configuration("http://uagnss.allystar.com:80/ephemeris/HD_GPS_BDS.hdb","yikecs1","Z38w5urAuawubTxi");
311 if(ret < 0)
312 {
313 printf("qser_Gnss_Server_Configuration fail\n");
314 }
315 else
316 {
317 printf("qser_Gnss_Server_Configuration ssuccess\n");
318 }
319 break;
wangyouqiang75b6cfd2024-05-31 14:25:45 +0800320 }
yq.wang9dd771b2024-09-13 23:38:40 -0700321 case 14:
322 {
323 ret = qser_Gnss_Set_Async_Callback(async_cb);
324 if(ret < 0)
325 {
326 printf("qser_Gnss_Set_Async_Callback fail\n");
327 }
328 else
329 {
330 printf("qser_Gnss_Set_Async_Callback ssuccess\n");
331 }
332 break;
333 }
334 case 15:
335 {
336 ret = qser_Gnss_Start_Async(ph_gnss);
337 if(ret < 0)
338 {
339 printf("qser_Gnss_Start_Async fail\n");
340 }
341 else
342 {
343 printf("qser_Gnss_Start_Async ssuccess\n");
344 }
345 break;
346 }
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800347 }
348 }
349 return 0;
350}