blob: 28539420aa408748d9e759735039226e2211a5a3 [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"
58 "\t3 gnss add handle function\n"
59 "\t4 gnss set single mode\n"
60 "\t5 gnss set get_para_from_nmea mode\n"
61 "\t6 gnss start\n"
62 "\t7 gnss stop\n"
liuyanga812f1b2024-07-25 17:49:14 +080063 /*
wangyouqiang3d09b4d2024-01-04 13:50:51 +080064 "\t8 gnss Delete_Aiding_Data and reset\n"
65 "\t9 gnss injecttime\n"
wangyouqiang7d66fb12024-01-26 19:19:00 +080066 "\t10 gnss download agps\n"
67 "\t11 gnss set frequency\n"
68 "\t12 gnss send agps data to 5311\n"
69 "\t13 gnss config agps server info\n"
wangyouqiang75b6cfd2024-05-31 14:25:45 +080070 "\t14 gnss set async cb\n"
71 "\t15 gnss start async\n"
liuyanga812f1b2024-07-25 17:49:14 +080072 */
wangyouqiang7d66fb12024-01-26 19:19:00 +080073 "please input operator: >> \n");
wangyouqiang3d09b4d2024-01-04 13:50:51 +080074}
75void delete_type(void)
76{
77 printf("\t0 DELETE_NOTHING\n"
78 "\t1 DELETE_EPHEMERIS\n"
79 "\t2 DELETE_ALMANAC\n"
80 "\t3 DELETE_POSITION_TIME \n"
81 "\t4 DELETE_UTC\n"
82 "\t5 DELETE_ALL\n"
wangyouqiang7d66fb12024-01-26 19:19:00 +080083 "please input operator: >> \n");
wangyouqiang3d09b4d2024-01-04 13:50:51 +080084}
85
86int main(int argc, char *argv[])
87{
88 int ret;
89 int opt = 0;
90 //char *lynqLib_gnss = "/lib/liblynq-qser-gnss.so";
91 char dev_file[12] = {0};
92 uint32_t ph_gnss;
93 //dlHandle_gnss = dlopen(lynqLib_gnss, RTLD_NOW);
94 while(1)
95 {
96 printf("=========gnss main=========\n");
97 user_help();
98 scanf("%d", &opt);
99 switch (opt)
100 {
101 case -1:
102 {
103 printf("main exit\n");
104 return 0;
105 }
106
107 case 1:
108 {
109 //qser_Gnss_Init=(int(*)(uint32_t *h_gnss))dlsym(dlHandle_gnss, "qser_Gnss_Init");
110 ret = qser_Gnss_Init(&ph_gnss);
111 if(ret < 0)
112 {
113 printf("mopen_gnss_client_init FAIL.\n");
114 return -1;
115 }
116 printf("mopen_gnss_client_init success , with address=%d\n", ph_gnss);
117 break;
118 }
119 case 2:
120 {
121 //qser_Gnss_Deinit=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_Deinit");
122 ret =qser_Gnss_Deinit(ph_gnss);
123 if(ret < 0)
124 {
125 printf("mopen_gnss_client_Deinit FAIL.\n");
126 return -1;
127 }
128 printf("mopen_gnss_client_Deinit success \n");
129 break;
130 }
131 case 3:
132 {
133 //qser_AddRxIndMsgHandler=(int(*)(gnss_handler_func_t,uint32_t))dlsym(dlHandle_gnss, "qser_AddRxIndMsgHandler");
134 ret = qser_AddRxIndMsgHandler((gnss_handler_func_t)&cb,ph_gnss);
135 if(ret < 0)
136 {
137 printf("lynq_AddRxIndMsgHandler fail\n");
138 qser_Gnss_Deinit(ph_gnss);
139 return -1;
140 }
141 printf("add success\n");
142 break;
143 }
144 case 4:
145 {
146 e_msg_id_t ptr2=E_MT_LOC_MSG_ID_LOCATION_INFO;
147 //qser_Set_Indications=(int(*)(uint32_t h_gnss,e_msg_id_t))dlsym(dlHandle_gnss, "qser_Set_Indications");
148 ret = qser_Set_Indications(ph_gnss,ptr2);
149 if(ret < 0)
150 {
151 printf("lynq_Set_LOCATION_INFO fail\n");
152 qser_Gnss_Deinit(ph_gnss);
153 return -1;
154 }
155 printf("set location mode success\n");
156 break;
157 }
158 case 5:
159 {
160 e_msg_id_t ptr4=E_MT_LOC_MSG_ID_NMEA_INFO;
161 //qser_Set_Indications=(int(*)(uint32_t h_gnss,e_msg_id_t))dlsym(dlHandle_gnss, "qser_Set_Indications");
162 ret = qser_Set_Indications(ph_gnss,ptr4);
163 if(ret < 0)
164 {
165 printf("lynq_Set_NMEA_INFO fail\n");
166 qser_Gnss_Deinit(ph_gnss);
167 return -1;
168 }
169 printf("set nmea mode success\n");
170 break;
171
172 }
173 case 6:
174 {
175 //qser_Gnss_Start=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_Start");
176 ret = qser_Gnss_Start(ph_gnss);
177 if(ret < 0)
178 {
179 printf("lynq_Gnss_Start fail\n");
180 return -1;
181 }
182 printf("start success\n");
183 break;
184 }
185 case 7:
186 {
187 //qser_Gnss_Stop=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_Stop");
188 ret = qser_Gnss_Stop(ph_gnss);
189 if(ret < 0)
190 {
191 printf("lynq_Gnss_Stop fail\n");
192 qser_Gnss_Deinit(ph_gnss);
193 return -1;
194 }
195 printf("stop success\n");
196 break;
197 }
liuyanga812f1b2024-07-25 17:49:14 +0800198/*
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800199 case 8:
200 {
201 int opt_1;
202 DELETE_AIDING_DATA_TYPE_T ptr;
203 //qser_Gnss_Delete_Aiding_Data=(int(*)(uint32_t,DELETE_AIDING_DATA_TYPE_T))dlsym(dlHandle_gnss, "qser_Gnss_Delete_Aiding_Data");
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("lynq_Gnss_Delete_Aiding_Data %d fail\n",opt_1);
244 qser_Gnss_Deinit(ph_gnss);
245 return -1;
246 }
247 printf("lynq_Gnss_Delete_Aiding_Data %d success\n",opt_1);
248 break;
249 }
250 case 9:
251 {
252 LYNQ_INJECT_TIME_INTO_T time_test;
253 //qser_Gnss_InjectTime=(int(*)(uint32_t,LYNQ_INJECT_TIME_INTO_T *time_info))dlsym(dlHandle_gnss, "qser_Gnss_InjectTime");
254 ret = qser_Gnss_InjectTime(ph_gnss,&time_test);
255 if(ret < 0)
256 {
257 printf("qser_Gnss_InjectTime fail\n");
258 qser_Gnss_Deinit(ph_gnss);
259 return -1;
260 }
261 printf("qser_Gnss_InjectTime success\n");
262 break;
263 }
264 case 10:
265 {
266 //qser_Gnss_download_tle=(int(*)())dlsym(dlHandle_gnss, "qser_Gnss_download_tle");
267 ret = qser_Gnss_download_tle();
268 if(ret < 0)
269 {
270 printf("qser_Gnss_download_tle fail\n");
271 return -1;
272 }
273 printf("qser_Gnss_download_tle success\n");
274 break;
275 }
276 case 11:
277 {
278 int frequency;
279 //qser_Gnss_Set_Frequency=(int(*)(uint32_t, int))dlsym(dlHandle_gnss, "qser_Gnss_Set_Frequency");
280 printf("=========delete aiding data type=========\n");
281 scanf("%d", &frequency);
282 ret = qser_Gnss_Set_Frequency(ph_gnss,frequency);
283 if(ret < 0)
284 {
285 printf("qser_Gnss_Set_Frequency fail\n");
286 return -1;
287 }
288 printf("frequency is %d\n",frequency);
289 printf("qser_Gnss_Set_Frequency success\n");
290 break;
291 }
292 case 12:
293 {
294 //int (*qser_Gnss_injectEphemeris)(uint32_t);
295 //qser_Gnss_injectEphemeris=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_injectEphemeris");
296 ret = qser_Gnss_injectEphemeris(ph_gnss);
297 if(ret < 0)
298 {
299 printf("qser_Gnss_injectEphemeris fail\n");
300 return -1;
301 }
302 printf("qser_Gnss_injectEphemeri ssuccess\n");
303 break;
304 }
305 case 13:
306 {
307 //qser_Gnss_Server_Configuration=(int(*)(char *host, char *id, char *password))dlsym(dlHandle_gnss, "qser_Gnss_Server_Configuration");
308 ret = qser_Gnss_Server_Configuration(NULL,"lcz","123456");
309 if(ret < 0)
310 {
311 printf("qser_Gnss_Server_Configuration fail\n");
312 return -1;
313 }
314 printf("qser_Gnss_Server_Configuration ssuccess\n");
315 break;
316 }
wangyouqiang75b6cfd2024-05-31 14:25:45 +0800317 case 14:
318 {
319 //qser_Gnss_Server_Configuration=(int(*)(char *host, char *id, char *password))dlsym(dlHandle_gnss, "qser_Gnss_Server_Configuration");
320 ret = qser_Gnss_Set_Async_Callback(async_cb);
321 if(ret < 0)
322 {
323 printf("qser_Gnss_Set_Async_Callback fail\n");
324 return -1;
325 }
326 printf("qser_Gnss_Set_Async_Callback ssuccess\n");
327 break;
328 }
329 case 15:
330 {
331 //qser_Gnss_Server_Configuration=(int(*)(char *host, char *id, char *password))dlsym(dlHandle_gnss, "qser_Gnss_Server_Configuration");
332 ret = qser_Gnss_Start_Async(ph_gnss);
333 if(ret < 0)
334 {
335 printf("qser_Gnss_Start_Async fail\n");
336 return -1;
337 }
338 printf("qser_Gnss_Start_Async ssuccess\n");
339 break;
340 }
liuyanga812f1b2024-07-25 17:49:14 +0800341 */
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800342 }
343 }
344 return 0;
345}