blob: 8a9ec54b3e0640df07e5ead699953edadf11dcd8 [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"
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"
65 "\t10 gnss download agps (new not support)\n"
wangyouqiang7d66fb12024-01-26 19:19:00 +080066 "\t11 gnss set frequency\n"
yq.wang6a3437f2024-07-27 02:57:20 -070067 "\t12 gnss send agps data to gnss (new not support)\n"
68 "\t13 gnss config agps server info (new not support)\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 {
99 case -1:
100 {
101 printf("main exit\n");
102 return 0;
103 }
104
105 case 1:
106 {
107 //qser_Gnss_Init=(int(*)(uint32_t *h_gnss))dlsym(dlHandle_gnss, "qser_Gnss_Init");
108 ret = qser_Gnss_Init(&ph_gnss);
109 if(ret < 0)
110 {
111 printf("mopen_gnss_client_init FAIL.\n");
112 return -1;
113 }
114 printf("mopen_gnss_client_init success , with address=%d\n", ph_gnss);
115 break;
116 }
117 case 2:
118 {
119 //qser_Gnss_Deinit=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_Deinit");
120 ret =qser_Gnss_Deinit(ph_gnss);
121 if(ret < 0)
122 {
123 printf("mopen_gnss_client_Deinit FAIL.\n");
124 return -1;
125 }
126 printf("mopen_gnss_client_Deinit success \n");
127 break;
128 }
129 case 3:
130 {
131 //qser_AddRxIndMsgHandler=(int(*)(gnss_handler_func_t,uint32_t))dlsym(dlHandle_gnss, "qser_AddRxIndMsgHandler");
132 ret = qser_AddRxIndMsgHandler((gnss_handler_func_t)&cb,ph_gnss);
133 if(ret < 0)
134 {
135 printf("lynq_AddRxIndMsgHandler fail\n");
136 qser_Gnss_Deinit(ph_gnss);
137 return -1;
138 }
139 printf("add success\n");
140 break;
141 }
142 case 4:
143 {
144 e_msg_id_t ptr2=E_MT_LOC_MSG_ID_LOCATION_INFO;
145 //qser_Set_Indications=(int(*)(uint32_t h_gnss,e_msg_id_t))dlsym(dlHandle_gnss, "qser_Set_Indications");
146 ret = qser_Set_Indications(ph_gnss,ptr2);
147 if(ret < 0)
148 {
149 printf("lynq_Set_LOCATION_INFO fail\n");
150 qser_Gnss_Deinit(ph_gnss);
151 return -1;
152 }
153 printf("set location mode success\n");
154 break;
155 }
156 case 5:
157 {
158 e_msg_id_t ptr4=E_MT_LOC_MSG_ID_NMEA_INFO;
159 //qser_Set_Indications=(int(*)(uint32_t h_gnss,e_msg_id_t))dlsym(dlHandle_gnss, "qser_Set_Indications");
160 ret = qser_Set_Indications(ph_gnss,ptr4);
161 if(ret < 0)
162 {
163 printf("lynq_Set_NMEA_INFO fail\n");
164 qser_Gnss_Deinit(ph_gnss);
165 return -1;
166 }
167 printf("set nmea mode success\n");
168 break;
169
170 }
171 case 6:
172 {
173 //qser_Gnss_Start=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_Start");
174 ret = qser_Gnss_Start(ph_gnss);
175 if(ret < 0)
176 {
177 printf("lynq_Gnss_Start fail\n");
178 return -1;
179 }
180 printf("start success\n");
181 break;
182 }
183 case 7:
184 {
185 //qser_Gnss_Stop=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_Stop");
186 ret = qser_Gnss_Stop(ph_gnss);
187 if(ret < 0)
188 {
189 printf("lynq_Gnss_Stop fail\n");
190 qser_Gnss_Deinit(ph_gnss);
191 return -1;
192 }
193 printf("stop success\n");
194 break;
195 }
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800196 case 8:
197 {
198 int opt_1;
199 DELETE_AIDING_DATA_TYPE_T ptr;
200 //qser_Gnss_Delete_Aiding_Data=(int(*)(uint32_t,DELETE_AIDING_DATA_TYPE_T))dlsym(dlHandle_gnss, "qser_Gnss_Delete_Aiding_Data");
201 printf("=========delete aiding data type=========\n");
202 delete_type();
203 scanf("%d", &opt_1);
204 switch(opt_1)
205 {
206 case 0:
207 {
208 ptr = DELETE_NOTHING;//hot
209 break;
210 }
211 case 1:
212 {
213 ptr = DELETE_EPHEMERIS;//warm
214 break;
215 }
216 case 2:
217 {
218 ptr = DELETE_ALMANAC;
219 break;
220 }
221 case 3:
222 {
223 ptr = DELETE_POSITION_TIME;
224 break;
225 }
226 case 4:
227 {
228 ptr = DELETE_UTC;
229 break;
230 }
231 case 5:
232 {
233 ptr = DELETE_ALL;//cold
234 break;
235 }
236 }
237 ret = qser_Gnss_Delete_Aiding_Data(ph_gnss,ptr);
238 if(ret < 0)
239 {
240 printf("lynq_Gnss_Delete_Aiding_Data %d fail\n",opt_1);
241 qser_Gnss_Deinit(ph_gnss);
242 return -1;
243 }
244 printf("lynq_Gnss_Delete_Aiding_Data %d success\n",opt_1);
245 break;
246 }
247 case 9:
248 {
249 LYNQ_INJECT_TIME_INTO_T time_test;
250 //qser_Gnss_InjectTime=(int(*)(uint32_t,LYNQ_INJECT_TIME_INTO_T *time_info))dlsym(dlHandle_gnss, "qser_Gnss_InjectTime");
251 ret = qser_Gnss_InjectTime(ph_gnss,&time_test);
252 if(ret < 0)
253 {
254 printf("qser_Gnss_InjectTime fail\n");
255 qser_Gnss_Deinit(ph_gnss);
256 return -1;
257 }
258 printf("qser_Gnss_InjectTime success\n");
259 break;
260 }
261 case 10:
262 {
263 //qser_Gnss_download_tle=(int(*)())dlsym(dlHandle_gnss, "qser_Gnss_download_tle");
264 ret = qser_Gnss_download_tle();
265 if(ret < 0)
266 {
267 printf("qser_Gnss_download_tle fail\n");
268 return -1;
269 }
270 printf("qser_Gnss_download_tle success\n");
271 break;
272 }
273 case 11:
274 {
275 int frequency;
276 //qser_Gnss_Set_Frequency=(int(*)(uint32_t, int))dlsym(dlHandle_gnss, "qser_Gnss_Set_Frequency");
yq.wang6a3437f2024-07-27 02:57:20 -0700277 printf("=========Set Frequency=========\n");
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800278 scanf("%d", &frequency);
279 ret = qser_Gnss_Set_Frequency(ph_gnss,frequency);
280 if(ret < 0)
281 {
282 printf("qser_Gnss_Set_Frequency fail\n");
283 return -1;
284 }
285 printf("frequency is %d\n",frequency);
286 printf("qser_Gnss_Set_Frequency success\n");
287 break;
288 }
289 case 12:
290 {
291 //int (*qser_Gnss_injectEphemeris)(uint32_t);
292 //qser_Gnss_injectEphemeris=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_injectEphemeris");
293 ret = qser_Gnss_injectEphemeris(ph_gnss);
294 if(ret < 0)
295 {
296 printf("qser_Gnss_injectEphemeris fail\n");
297 return -1;
298 }
299 printf("qser_Gnss_injectEphemeri ssuccess\n");
300 break;
301 }
302 case 13:
303 {
304 //qser_Gnss_Server_Configuration=(int(*)(char *host, char *id, char *password))dlsym(dlHandle_gnss, "qser_Gnss_Server_Configuration");
305 ret = qser_Gnss_Server_Configuration(NULL,"lcz","123456");
306 if(ret < 0)
307 {
308 printf("qser_Gnss_Server_Configuration fail\n");
309 return -1;
310 }
311 printf("qser_Gnss_Server_Configuration ssuccess\n");
312 break;
313 }
wangyouqiang75b6cfd2024-05-31 14:25:45 +0800314 case 14:
315 {
316 //qser_Gnss_Server_Configuration=(int(*)(char *host, char *id, char *password))dlsym(dlHandle_gnss, "qser_Gnss_Server_Configuration");
317 ret = qser_Gnss_Set_Async_Callback(async_cb);
318 if(ret < 0)
319 {
320 printf("qser_Gnss_Set_Async_Callback fail\n");
321 return -1;
322 }
323 printf("qser_Gnss_Set_Async_Callback ssuccess\n");
324 break;
325 }
326 case 15:
327 {
328 //qser_Gnss_Server_Configuration=(int(*)(char *host, char *id, char *password))dlsym(dlHandle_gnss, "qser_Gnss_Server_Configuration");
329 ret = qser_Gnss_Start_Async(ph_gnss);
330 if(ret < 0)
331 {
332 printf("qser_Gnss_Start_Async fail\n");
333 return -1;
334 }
335 printf("qser_Gnss_Start_Async ssuccess\n");
336 break;
337 }
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800338 }
339 }
340 return 0;
341}