blob: c7c85639728ff904362845bdb0b57a6250180daf [file] [log] [blame]
b.liu68a94c92025-05-24 12:53:41 +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
48void async_cb(qser_gnss_error_e state)
49{
50 printf("start gnss async state: %d \n", state);
51}
52
53void user_help(void)
54{
55 printf("\t-1 exit\n"
56 "\t1 gnss init\n"
57 "\t2 gnss deinit \n"
58 "\t3 gnss add nmea callback\n"
59 "\t4 gnss set local mode\n"
60 "\t5 gnss set nmea mode\n"
61 "\t6 gnss start\n"
62 "\t7 gnss stop\n"
63 "\t8 gnss Delete_Aiding_Data and reset (new not support)\n"
64 "\t9 gnss injecttime (new not support)\n"
65 "\t10 gnss download agps\n"
66 "\t11 gnss set frequency\n"
67 "\t12 gnss send agps data to gnss\n"
68 "\t13 gnss config agps server info\n"
69 "\t14 gnss set async cb\n"
70 "\t15 gnss start async\n"
71 "please input operator: >> \n");
72}
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"
81 "please input operator: >> \n");
82}
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 {
99 case -1:
100 {
101 qser_Gnss_Stop(ph_gnss);
102 qser_Gnss_Deinit(ph_gnss);
103 printf("main exit\n");
104 return 0;
105 }
106
107 case 1:
108 {
109 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 }
118 break;
119 }
120 case 2:
121 {
122 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 }
131 break;
132 }
133 case 3:
134 {
135 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 }
144 break;
145 }
146 case 4:
147 {
148 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 }
158 break;
159 }
160 case 5:
161 {
162 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 }
172 break;
173 }
174 case 6:
175 {
176 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;
186 }
187 case 7:
188 {
189 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;
199 }
200 case 8:
201 {
202 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;
250 }
251 case 9:
252 {
253 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;
264 }
265 case 10:
266 {
267 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;
277 }
278 case 11:
279 {
280 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;
294 }
295 case 12:
296 {
297 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;
307 }
308 case 13:
309 {
310 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;
320 }
321 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 }
347 }
348 }
349 return 0;
350}