blob: 9f474219c70eb052ff51874685041240ee21818e [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"
63 "\t8 gnss Delete_Aiding_Data and reset\n"
64 "\t9 gnss injecttime\n"
wangyouqiang7d66fb12024-01-26 19:19:00 +080065 "\t10 gnss download agps\n"
66 "\t11 gnss set frequency\n"
67 "\t12 gnss send agps data to 5311\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 {
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 }
196
197 case 8:
198 {
199 int opt_1;
200 DELETE_AIDING_DATA_TYPE_T ptr;
201 //qser_Gnss_Delete_Aiding_Data=(int(*)(uint32_t,DELETE_AIDING_DATA_TYPE_T))dlsym(dlHandle_gnss, "qser_Gnss_Delete_Aiding_Data");
202 printf("=========delete aiding data type=========\n");
203 delete_type();
204 scanf("%d", &opt_1);
205 switch(opt_1)
206 {
207 case 0:
208 {
209 ptr = DELETE_NOTHING;//hot
210 break;
211 }
212 case 1:
213 {
214 ptr = DELETE_EPHEMERIS;//warm
215 break;
216 }
217 case 2:
218 {
219 ptr = DELETE_ALMANAC;
220 break;
221 }
222 case 3:
223 {
224 ptr = DELETE_POSITION_TIME;
225 break;
226 }
227 case 4:
228 {
229 ptr = DELETE_UTC;
230 break;
231 }
232 case 5:
233 {
234 ptr = DELETE_ALL;//cold
235 break;
236 }
237 }
238 ret = qser_Gnss_Delete_Aiding_Data(ph_gnss,ptr);
239 if(ret < 0)
240 {
241 printf("lynq_Gnss_Delete_Aiding_Data %d fail\n",opt_1);
242 qser_Gnss_Deinit(ph_gnss);
243 return -1;
244 }
245 printf("lynq_Gnss_Delete_Aiding_Data %d success\n",opt_1);
246 break;
247 }
248 case 9:
249 {
250 LYNQ_INJECT_TIME_INTO_T time_test;
251 //qser_Gnss_InjectTime=(int(*)(uint32_t,LYNQ_INJECT_TIME_INTO_T *time_info))dlsym(dlHandle_gnss, "qser_Gnss_InjectTime");
252 ret = qser_Gnss_InjectTime(ph_gnss,&time_test);
253 if(ret < 0)
254 {
255 printf("qser_Gnss_InjectTime fail\n");
256 qser_Gnss_Deinit(ph_gnss);
257 return -1;
258 }
259 printf("qser_Gnss_InjectTime success\n");
260 break;
261 }
262 case 10:
263 {
264 //qser_Gnss_download_tle=(int(*)())dlsym(dlHandle_gnss, "qser_Gnss_download_tle");
265 ret = qser_Gnss_download_tle();
266 if(ret < 0)
267 {
268 printf("qser_Gnss_download_tle fail\n");
269 return -1;
270 }
271 printf("qser_Gnss_download_tle success\n");
272 break;
273 }
274 case 11:
275 {
276 int frequency;
277 //qser_Gnss_Set_Frequency=(int(*)(uint32_t, int))dlsym(dlHandle_gnss, "qser_Gnss_Set_Frequency");
278 printf("=========delete aiding data type=========\n");
279 scanf("%d", &frequency);
280 ret = qser_Gnss_Set_Frequency(ph_gnss,frequency);
281 if(ret < 0)
282 {
283 printf("qser_Gnss_Set_Frequency fail\n");
284 return -1;
285 }
286 printf("frequency is %d\n",frequency);
287 printf("qser_Gnss_Set_Frequency success\n");
288 break;
289 }
290 case 12:
291 {
292 //int (*qser_Gnss_injectEphemeris)(uint32_t);
293 //qser_Gnss_injectEphemeris=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_injectEphemeris");
294 ret = qser_Gnss_injectEphemeris(ph_gnss);
295 if(ret < 0)
296 {
297 printf("qser_Gnss_injectEphemeris fail\n");
298 return -1;
299 }
300 printf("qser_Gnss_injectEphemeri ssuccess\n");
301 break;
302 }
303 case 13:
304 {
305 //qser_Gnss_Server_Configuration=(int(*)(char *host, char *id, char *password))dlsym(dlHandle_gnss, "qser_Gnss_Server_Configuration");
306 ret = qser_Gnss_Server_Configuration(NULL,"lcz","123456");
307 if(ret < 0)
308 {
309 printf("qser_Gnss_Server_Configuration fail\n");
310 return -1;
311 }
312 printf("qser_Gnss_Server_Configuration ssuccess\n");
313 break;
314 }
wangyouqiang75b6cfd2024-05-31 14:25:45 +0800315 case 14:
316 {
317 //qser_Gnss_Server_Configuration=(int(*)(char *host, char *id, char *password))dlsym(dlHandle_gnss, "qser_Gnss_Server_Configuration");
318 ret = qser_Gnss_Set_Async_Callback(async_cb);
319 if(ret < 0)
320 {
321 printf("qser_Gnss_Set_Async_Callback fail\n");
322 return -1;
323 }
324 printf("qser_Gnss_Set_Async_Callback ssuccess\n");
325 break;
326 }
327 case 15:
328 {
329 //qser_Gnss_Server_Configuration=(int(*)(char *host, char *id, char *password))dlsym(dlHandle_gnss, "qser_Gnss_Server_Configuration");
330 ret = qser_Gnss_Start_Async(ph_gnss);
331 if(ret < 0)
332 {
333 printf("qser_Gnss_Start_Async fail\n");
334 return -1;
335 }
336 printf("qser_Gnss_Start_Async ssuccess\n");
337 break;
338 }
wangyouqiang3d09b4d2024-01-04 13:50:51 +0800339 }
340 }
341 return 0;
342}