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