blob: c3628e3712ffcf4c33f4bd0a8c061612dfddf5d2 [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
48void user_help(void)
49{
50 printf("\t-1 exit\n"
51 "\t1 gnss init\n"
52 "\t2 gnss deinit \n"
53 "\t3 gnss add handle function\n"
54 "\t4 gnss set single mode\n"
55 "\t5 gnss set get_para_from_nmea mode\n"
56 "\t6 gnss start\n"
57 "\t7 gnss stop\n"
58 "\t8 gnss Delete_Aiding_Data and reset\n"
59 "\t9 gnss injecttime\n"
60 "please input operator: >> ");
61}
62void delete_type(void)
63{
64 printf("\t0 DELETE_NOTHING\n"
65 "\t1 DELETE_EPHEMERIS\n"
66 "\t2 DELETE_ALMANAC\n"
67 "\t3 DELETE_POSITION_TIME \n"
68 "\t4 DELETE_UTC\n"
69 "\t5 DELETE_ALL\n"
70 "please input operator: >> ");
71}
72
73int main(int argc, char *argv[])
74{
75 int ret;
76 int opt = 0;
77 //char *lynqLib_gnss = "/lib/liblynq-qser-gnss.so";
78 char dev_file[12] = {0};
79 uint32_t ph_gnss;
80 //dlHandle_gnss = dlopen(lynqLib_gnss, RTLD_NOW);
81 while(1)
82 {
83 printf("=========gnss main=========\n");
84 user_help();
85 scanf("%d", &opt);
86 switch (opt)
87 {
88 case -1:
89 {
90 printf("main exit\n");
91 return 0;
92 }
93
94 case 1:
95 {
96 //qser_Gnss_Init=(int(*)(uint32_t *h_gnss))dlsym(dlHandle_gnss, "qser_Gnss_Init");
97 ret = qser_Gnss_Init(&ph_gnss);
98 if(ret < 0)
99 {
100 printf("mopen_gnss_client_init FAIL.\n");
101 return -1;
102 }
103 printf("mopen_gnss_client_init success , with address=%d\n", ph_gnss);
104 break;
105 }
106 case 2:
107 {
108 //qser_Gnss_Deinit=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_Deinit");
109 ret =qser_Gnss_Deinit(ph_gnss);
110 if(ret < 0)
111 {
112 printf("mopen_gnss_client_Deinit FAIL.\n");
113 return -1;
114 }
115 printf("mopen_gnss_client_Deinit success \n");
116 break;
117 }
118 case 3:
119 {
120 //qser_AddRxIndMsgHandler=(int(*)(gnss_handler_func_t,uint32_t))dlsym(dlHandle_gnss, "qser_AddRxIndMsgHandler");
121 ret = qser_AddRxIndMsgHandler((gnss_handler_func_t)&cb,ph_gnss);
122 if(ret < 0)
123 {
124 printf("lynq_AddRxIndMsgHandler fail\n");
125 qser_Gnss_Deinit(ph_gnss);
126 return -1;
127 }
128 printf("add success\n");
129 break;
130 }
131 case 4:
132 {
133 e_msg_id_t ptr2=E_MT_LOC_MSG_ID_LOCATION_INFO;
134 //qser_Set_Indications=(int(*)(uint32_t h_gnss,e_msg_id_t))dlsym(dlHandle_gnss, "qser_Set_Indications");
135 ret = qser_Set_Indications(ph_gnss,ptr2);
136 if(ret < 0)
137 {
138 printf("lynq_Set_LOCATION_INFO fail\n");
139 qser_Gnss_Deinit(ph_gnss);
140 return -1;
141 }
142 printf("set location mode success\n");
143 break;
144 }
145 case 5:
146 {
147 e_msg_id_t ptr4=E_MT_LOC_MSG_ID_NMEA_INFO;
148 //qser_Set_Indications=(int(*)(uint32_t h_gnss,e_msg_id_t))dlsym(dlHandle_gnss, "qser_Set_Indications");
149 ret = qser_Set_Indications(ph_gnss,ptr4);
150 if(ret < 0)
151 {
152 printf("lynq_Set_NMEA_INFO fail\n");
153 qser_Gnss_Deinit(ph_gnss);
154 return -1;
155 }
156 printf("set nmea mode success\n");
157 break;
158
159 }
160 case 6:
161 {
162 //qser_Gnss_Start=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_Start");
163 ret = qser_Gnss_Start(ph_gnss);
164 if(ret < 0)
165 {
166 printf("lynq_Gnss_Start fail\n");
167 return -1;
168 }
169 printf("start success\n");
170 break;
171 }
172 case 7:
173 {
174 //qser_Gnss_Stop=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_Stop");
175 ret = qser_Gnss_Stop(ph_gnss);
176 if(ret < 0)
177 {
178 printf("lynq_Gnss_Stop fail\n");
179 qser_Gnss_Deinit(ph_gnss);
180 return -1;
181 }
182 printf("stop success\n");
183 break;
184 }
185
186 case 8:
187 {
188 int opt_1;
189 DELETE_AIDING_DATA_TYPE_T ptr;
190 //qser_Gnss_Delete_Aiding_Data=(int(*)(uint32_t,DELETE_AIDING_DATA_TYPE_T))dlsym(dlHandle_gnss, "qser_Gnss_Delete_Aiding_Data");
191 printf("=========delete aiding data type=========\n");
192 delete_type();
193 scanf("%d", &opt_1);
194 switch(opt_1)
195 {
196 case 0:
197 {
198 ptr = DELETE_NOTHING;//hot
199 break;
200 }
201 case 1:
202 {
203 ptr = DELETE_EPHEMERIS;//warm
204 break;
205 }
206 case 2:
207 {
208 ptr = DELETE_ALMANAC;
209 break;
210 }
211 case 3:
212 {
213 ptr = DELETE_POSITION_TIME;
214 break;
215 }
216 case 4:
217 {
218 ptr = DELETE_UTC;
219 break;
220 }
221 case 5:
222 {
223 ptr = DELETE_ALL;//cold
224 break;
225 }
226 }
227 ret = qser_Gnss_Delete_Aiding_Data(ph_gnss,ptr);
228 if(ret < 0)
229 {
230 printf("lynq_Gnss_Delete_Aiding_Data %d fail\n",opt_1);
231 qser_Gnss_Deinit(ph_gnss);
232 return -1;
233 }
234 printf("lynq_Gnss_Delete_Aiding_Data %d success\n",opt_1);
235 break;
236 }
237 case 9:
238 {
239 LYNQ_INJECT_TIME_INTO_T time_test;
240 //qser_Gnss_InjectTime=(int(*)(uint32_t,LYNQ_INJECT_TIME_INTO_T *time_info))dlsym(dlHandle_gnss, "qser_Gnss_InjectTime");
241 ret = qser_Gnss_InjectTime(ph_gnss,&time_test);
242 if(ret < 0)
243 {
244 printf("qser_Gnss_InjectTime fail\n");
245 qser_Gnss_Deinit(ph_gnss);
246 return -1;
247 }
248 printf("qser_Gnss_InjectTime success\n");
249 break;
250 }
251 case 10:
252 {
253 //qser_Gnss_download_tle=(int(*)())dlsym(dlHandle_gnss, "qser_Gnss_download_tle");
254 ret = qser_Gnss_download_tle();
255 if(ret < 0)
256 {
257 printf("qser_Gnss_download_tle fail\n");
258 return -1;
259 }
260 printf("qser_Gnss_download_tle success\n");
261 break;
262 }
263 case 11:
264 {
265 int frequency;
266 //qser_Gnss_Set_Frequency=(int(*)(uint32_t, int))dlsym(dlHandle_gnss, "qser_Gnss_Set_Frequency");
267 printf("=========delete aiding data type=========\n");
268 scanf("%d", &frequency);
269 ret = qser_Gnss_Set_Frequency(ph_gnss,frequency);
270 if(ret < 0)
271 {
272 printf("qser_Gnss_Set_Frequency fail\n");
273 return -1;
274 }
275 printf("frequency is %d\n",frequency);
276 printf("qser_Gnss_Set_Frequency success\n");
277 break;
278 }
279 case 12:
280 {
281 //int (*qser_Gnss_injectEphemeris)(uint32_t);
282 //qser_Gnss_injectEphemeris=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_injectEphemeris");
283 ret = qser_Gnss_injectEphemeris(ph_gnss);
284 if(ret < 0)
285 {
286 printf("qser_Gnss_injectEphemeris fail\n");
287 return -1;
288 }
289 printf("qser_Gnss_injectEphemeri ssuccess\n");
290 break;
291 }
292 case 13:
293 {
294 //qser_Gnss_Server_Configuration=(int(*)(char *host, char *id, char *password))dlsym(dlHandle_gnss, "qser_Gnss_Server_Configuration");
295 ret = qser_Gnss_Server_Configuration(NULL,"lcz","123456");
296 if(ret < 0)
297 {
298 printf("qser_Gnss_Server_Configuration fail\n");
299 return -1;
300 }
301 printf("qser_Gnss_Server_Configuration ssuccess\n");
302 break;
303 }
304 }
305 }
306 return 0;
307}