blob: 87b21a6520ad65045aa7fabd099772e57a746306 [file] [log] [blame]
rjwdbb8a262022-11-01 14:17:32 +08001#include <stdio.h>
2#include <dlfcn.h>
3#include <signal.h>
4#include <string.h>
5#include <stdlib.h>
6
7#define BUF_SIZE 32
8#define BUF_PIN 4
9
10void *dlHandle_sim;
11void *dlHandle_log;
12
13int (*lynq_sim_init)(int utoken);
14int (*lynq_sim_deinit)(void);
15int (*lynq_enable_pin)(char pin[]);
16int (*lynq_disable_pin)(char pin[]);
17int (*lynq_get_iccid)(char buf[]);
18int (*lynq_query_pin_lock)(char *pin,int buf[]);
19int (*lynq_verify_pin)(char *pin);
20int (*lynq_change_pin)(char *old_pin,char *new_pin);
21int (*lynq_unlock_pin)(char *puk,char *pin);
22int (*lynq_query_phone_number)(char buf[]);
23int (*lynq_get_sim_status)(int *card_status);
24int (*lynq_get_imsi)(char buf[]);
25int (*lynq_get_imei)(char buf[]);
26int (*lynq_get_imei_and_sv)(char imei[],char sv[]);
27int (*lynq_req_sim_io)(int list[5], char *path, char *data, char *pin2, char *aidPtr, int sw[2], char *simResponse);
you.chen516f4172024-01-02 14:43:36 +080028int (*lynq_shutdown)(char options[],char time[],char message[]);
29int (*lynq_get_version)(char buf[]);
30int (*lynq_sim_power)(int mode);
31int (*lynq_reset_modem)(void);
32int (*lynq_screen)(int num);
33
rjwdbb8a262022-11-01 14:17:32 +080034
35int flag_init = 0;
36typedef struct
37{
38 int cmdIdx;
39 char *funcName;
40}st_api_test_case;
41
42st_api_test_case api_testcases[] =
43{
44 {0, "lynq_sim_init"},
45 {1, "lynq_enable_pin"},
46 {2, "lynq_disable_pin"},
47 {4, "lynq_get_iccid"},
48 {5, "lynq_query_pin_lock"},
49 {6, "lynq_verify_pin"},
50 {7, "lynq_change_pin"},
51 {8, "lynq_unlock_pin"},
52 {9, "lynq_query_phone_number"},
53 {10, "lynq_get_imsi"},
54 {11, "lynq_get_sim_status"},
55 {12, "lynq_sim_deinit"},
56 {13, "lynq_get_imei"},
57 {14, "lynq_get_imei_and_sv"},
58 {15, "lynq_req_sim_io"},
you.chen516f4172024-01-02 14:43:36 +080059 {16, "lynq_shutdown"},
60 {17, "lynq_get_version"},
61 {18, "lynq_sim_power"},
62 {19, "lynq_reset_modem"},
63 {20, "lynq_screen"},
rjwdbb8a262022-11-01 14:17:32 +080064 {-1, NULL}
65};
66
67void print_help(void)
68{
69 int i;
70
71 printf("Supported test cases:\n");
72 for(i = 0; ; i++)
73 {
74 if(api_testcases[i].cmdIdx == -1)
75 {
76 break;
77 }
78 printf("%d:\t%s\n", api_testcases[i].cmdIdx, api_testcases[i].funcName);
79 }
80}
81
82
83int main(void){
84 int cmdIdx = 0;
85 int flag = 0;
86 int res = 0;
87
88 const char *lynq_libpath_sim = "/lib64/liblynq-sim.so";
89 const char *lynq_libpath_log = "/lib64/liblynq-log.so";
90
91 dlHandle_sim = dlopen(lynq_libpath_sim,RTLD_NOW);
92 if(dlHandle_sim == NULL)
93 {
94 printf("dlopen dlHandle_sim failed: %s", dlerror());
95 exit(EXIT_FAILURE);
96 }
97 dlHandle_log = dlopen(lynq_libpath_log,RTLD_NOW);
98 if(dlHandle_log == NULL)
99 {
100 printf("dlopen dlHandle_log failed: %s", dlerror());
101 exit(EXIT_FAILURE);
102 }
103
104 print_help();
105 while(1)
106 {
107 printf("please input cmd index(-1 exit, 80-help): ");
108 if (scanf("%d", &cmdIdx) != 1)
109 {
110 char c;
111 while((c = getchar()) != '\n' && c != EOF);
112 printf("Illegal input.Please input correctly\n");
113 print_help();
114 continue;
115 }
116 switch(cmdIdx)
117 {
118 case 0: /* lynq_sim_init */
119 {
120
121 if(flag_init == 1)
122 {
123 printf("init is already\n");
124 break;
125 }
126 else{
127 int token;
128 printf("input token\n");
129 scanf("%d", &token);
130 lynq_sim_init = (int(*)(int utoken))dlsym(dlHandle_sim,"lynq_sim_init");
131 if(NULL != lynq_sim_init)
132 {
133 res = lynq_sim_init(token);
134 if(res == 0)
135 {
136 printf("Run lynq_sim_init\n");
137 flag_init = 1;
138 }else{
139 printf("lynq sim init error\n");
140 }
141 }else{
142 printf("lynq_sim_init dlsym error\n");
143 }
144 break;
145 }
146
147 }
148 case 1: /* lynq_enable_pin */
149 {
150 if(flag_init == 0){
151 printf("must init first\n");
152 }
153 else{
154 char pin[BUF_PIN] = {0};
155 printf("input pin\n");
156 scanf("%s", pin);
157 lynq_enable_pin = (int(*)(char pin[]))dlsym(dlHandle_sim,"lynq_enable_pin");
158 if(NULL != lynq_enable_pin)
159 {
160 res = lynq_enable_pin(pin);
161 if(res == 0)
162 {
163 printf("pin enabled!!!\n");
164 }else{
165 printf("pin enable error\n");
166 }
167 }else{
168 printf("lynq_enable_pin dlsym error\n");
169 }
170 }
171 break;
172 }
173
174 case 2: /* lynq_disable_pin */
175 {
176 if(flag_init == 0){
177 printf("must init first\n");
178 }
179 else{
180 char pin[BUF_PIN] = {0};
181 printf("input pin\n");
182 scanf("%s", pin);
183 lynq_disable_pin = (int(*)(char pin[]))dlsym(dlHandle_sim,"lynq_disable_pin");
184 if(NULL != lynq_disable_pin)
185 {
186 res = lynq_disable_pin(pin);
187 if(res == 0)
188 {
189 printf("pin disnabled!!!\n");
190 }else{
191 printf("pin disable error\n");
192 }
193 }else{
194 printf("lynq_disable_pin dlsym error\n");
195 }
196 }
197 break;
198 }
199
200 case 4: /* lynq_get_iccid */
201 {
202 if(flag_init == 0){
203 printf("must init first\n");
204 }
205 else{
206 char iccid[BUF_SIZE] = {0};
207 lynq_get_iccid = (int(*)(char buf[]))dlsym(dlHandle_sim,"lynq_get_iccid");
208 if(NULL != lynq_get_iccid)
209 {
210 res = lynq_get_iccid(iccid);
211 if(res == 0)
212 {
213 printf("get iccid success!!! iccid is %s\n",iccid);
214 }else{
215 printf("get iccid error\n");
216 }
217 }else{
218 printf("lynq_get_iccid dlsym error\n");
219 }
220 }
221 break;
222 }
223
224 case 5: /* lynq_query_pin_lock */
225 {
226 if(flag_init == 0){
227 printf("must init first\n");
228 }
229 else{
230 char pin[BUF_PIN] = {0};
231 printf("input pin\n");
232 scanf("%s", pin);
233 int lock[BUF_SIZE] = {0};
234
235 lynq_query_pin_lock = (int(*)(char *pin,int buf[]))dlsym(dlHandle_sim,"lynq_query_pin_lock");
236 if(NULL != lynq_query_pin_lock)
237 {
238 res = lynq_query_pin_lock(pin,lock);
239 if(res == 0)
240 {
241 printf("query pin lock success!!! iccid is %d\n",lock);
242 }else{
243 printf("query pin lock error\n");
244 }
245 }else{
246 printf("lynq_query_pin_lock dlsym error\n");
247 }
248 }
249 break;
250 }
251 case 6: /* lynq_verify_pin */
252 {
253 if(flag_init == 0){
254 printf("must init first\n");
255 }
256 else{
257 char pin[BUF_PIN] = {0};
258 printf("input pin\n");
259 scanf("%s", pin);
260
261 lynq_verify_pin = (int(*)(char *pin))dlsym(dlHandle_sim,"lynq_verify_pin");
262 if(NULL != lynq_verify_pin)
263 {
264 res = lynq_verify_pin(pin);
265 if(res == 0)
266 {
267 printf("verify pin success!!!\n");
268 }else{
269 printf("verify pin error\n");
270 }
271 }else{
272 printf("lynq_verify_pin dlsym error\n");
273 }
274 }
275 break;
276 }
277 case 7: /* lynq_change_pin */
278 {
279 if(flag_init == 0){
280 printf("must init first\n");
281 }
282 else{
283 char old_pin[BUF_PIN] = {0};
284 printf("input old pin\n");
285 scanf("%s", old_pin);
286 char new_pin[BUF_PIN] = {0};
287 printf("input new pin\n");
288 scanf("%s", new_pin);
289
290 lynq_change_pin = (int(*)(char *old_pin,char *new_pin))dlsym(dlHandle_sim,"lynq_change_pin");
291 if(NULL != lynq_change_pin)
292 {
293 res = lynq_change_pin(old_pin,new_pin);
294 if(res == 0)
295 {
296 printf("change pin success!!!\n");
297 }else{
298 printf("change pin error\n");
299 }
300 }else{
301 printf("lynq_change_pin dlsym error\n");
302 }
303 }
304 break;
305 }
306 case 8: /* lynq_unlock_pin */
307 {
308 if(flag_init == 0){
309 printf("must init first\n");
310 }
311 else{
312 char puk[BUF_SIZE] = {0};
313 printf("input puk\n");
314 scanf("%s", puk);
315 char new_pin[BUF_PIN] = {0};
316 printf("input new pin\n");
317 scanf("%s", new_pin);
318 lynq_unlock_pin = (int(*)(char *puk,char *pin))dlsym(dlHandle_sim,"lynq_unlock_pin");
319 if(NULL != lynq_unlock_pin)
320 {
321 res = lynq_unlock_pin(puk,new_pin);
322 if(res == 0)
323 {
324 printf("unlock pin success!!!\n");
325 }else{
326 printf("unlock pin error\n");
327 }
328 }else{
329 printf("lynq_unlock_pin dlsym error\n");
330 }
331 }
332 break;
333 }
334 case 9: /* lynq_query_phone_number */
335 {
336 if(flag_init == 0){
337 printf("must init first\n");
338 }
339 else{
340 char number[BUF_SIZE] = {0};
341 lynq_query_phone_number = (int(*)(char buf[]))dlsym(dlHandle_sim,"lynq_query_phone_number");
342 if(NULL != lynq_query_phone_number)
343 {
344 res = lynq_query_phone_number(number);
345 if(res == 0)
346 {
347 printf("phone number is %s!!!\n",number);
348 }else{
you.chen516f4172024-01-02 14:43:36 +0800349 printf("No phone write\n");
rjwdbb8a262022-11-01 14:17:32 +0800350 }
351 }else{
352 printf("lynq_query_phone_number dlsym error\n");
353 }
354 }
355 break;
356 }
357 case 10: /* lynq_get_imsi */
358 {
359 if(flag_init == 0){
360 printf("must init first\n");
361 }
362 else{
363 char imsi[BUF_SIZE] = {0};
364
365 lynq_get_imsi = (int(*)(char buf[]))dlsym(dlHandle_sim,"lynq_get_imsi");
366 if(NULL != lynq_get_imsi)
367 {
368 res = lynq_get_imsi(imsi);
369 if(res == 0)
370 {
371 printf("imsi is %s!!!\n",imsi);
372 }else{
373 printf("get imsi error\n");
374 }
375 }else{
376 printf("lynq_get_imsi dlsym error\n");
377 }
378 }
379 break;
380 }
381 case 11: /* lynq_get_sim_status */
382 {
383 if(flag_init == 0){
384 printf("must init first\n");
385 }
386 else{
387 int x = -1;
388 int *y = &x;
389
390 lynq_get_sim_status = (int(*)(int* card_status))dlsym(dlHandle_sim,"lynq_get_sim_status");
391 if(NULL != lynq_get_sim_status)
392 {
393 res = lynq_get_sim_status(y);
394 if(res == 0)
395 {
396 printf("state is %d!!!\n",*y);
397 }else{
398 printf("get imsi error\n");
399 }
400 }else{
401 printf("lynq_get_sim_status dlsym error\n");
402 }
403 }
404 break;
405 }
406 case 12:
407 {
408 lynq_sim_deinit = (int(*)(void))dlsym(dlHandle_sim,"lynq_sim_deinit");
409 if(NULL != lynq_sim_deinit)
410 {
411 res = lynq_sim_deinit();
412 if(res == 0)
413 {
414 printf("sim deinit success is!!!\n");
415 }else{
416 printf("get imsi error\n");
417 }
418 }else{
419 printf("lynq_sim_deinit dlsym error\n");
420 }
421 flag_init = 0;
422 break;
423 }
424 case 13:
425 {
426 lynq_get_imei = (int (*)(char *buf))dlsym(dlHandle_sim,"lynq_get_imei");
427 if(NULL != lynq_get_imei)
428 {
429 char buf[20] = {0};
430 res = lynq_get_imei(buf);
431 if(res == 0)
432 {
433 printf("imei is %s!!!\n",buf);
434 }
435 else
436 {
437 printf("get imei error %d\n", res);
438 }
439 }
440 else
441 {
442 printf("lynq_get_imei dlsym error\n");
443 }
444 break;
445 }
446 case 14:
447 {
448 lynq_get_imei_and_sv = (int (*)(char *imei, char* sv))dlsym(dlHandle_sim,"lynq_get_imei_and_sv");
449 if(NULL != lynq_get_imei_and_sv)
450 {
451 char imei[20] = {0};
452 char sv[20] = {0};
453 res = lynq_get_imei_and_sv(imei,sv);
454 if(res == 0)
455 {
456 printf("imei is %s sv is %s!!!\n",imei,sv);
457 }
458 else
459 {
460 printf("get imei sv error %d\n", res);
461 }
462 }
463 else
464 {
465 printf("lynq_get_imei_and_sv dlsym error\n");
466 }
467 break;
468 }
469 case 15:
470 {
471 lynq_req_sim_io = (int (*)(int list[5], char *path, char *data, char *pin2, char *aidPtr, int sw[2], char *simResponse))dlsym(dlHandle_sim,"lynq_req_sim_io");
472 if(NULL != lynq_req_sim_io)
473 {
474 int list[5] = {176,28423,0,0,9};
475 char *path = "3F007F20";
476 char *data = NULL;
477 char *pin2 = NULL;
478 char *aidPtr = NULL;
479 int sw[2];
480 char simResponse[256] = {0};
481 res = lynq_req_sim_io(list, path, data, pin2, aidPtr, sw, simResponse);
482 if(res == 0)
483 {
484 printf("%d %d %s\n", sw[0], sw[1], simResponse);
485 }
486 else
487 {
488 printf("lynq_req_sim_io error %d\n", res);
489 }
490 }
491 else
492 {
493 printf("lynq_req_sim_io dlsym error \n");
494 }
495 break;
496 }
you.chen516f4172024-01-02 14:43:36 +0800497 case 16:
498 {
499 lynq_shutdown = (int (*)(char *, char *, char *))dlsym(dlHandle_sim,"lynq_shutdown");
500 if(NULL != lynq_shutdown)
501 {
502 char *option = "-h";
503 char *time = "1";
504 char *message = "poweroff";
505 res = lynq_shutdown(option,time,message);
506 if(res == 0)
507 {
508 printf("shutdown -h 1\n");
509 }
510 else
511 {
512 printf("shutdown error\n");
513 }
514 }
515 break;
516 }
517 case 17:
518 {
519 lynq_get_version = (int (*)(char *))dlsym(dlHandle_sim,"lynq_get_version");
520 if(NULL != lynq_get_version)
521 {
522 char buf[32] = {0};
523 res = lynq_get_version(buf);
524 if(res == 0)
525 {
526 printf("version %s\n", buf);
527 }
528 else
529 {
530 printf("lynq_get_version error\n");
531 }
532 }
533 break;
534 }
535 case 18:
536 {
537 lynq_sim_power = (int (*)(int))dlsym(dlHandle_sim,"lynq_sim_power");
538 if(NULL != lynq_sim_power)
539 {
540 int token;
541 printf("input mode\n");
542 scanf("%d", &token);
543 res = lynq_sim_power(token);
544 if(res == 0)
545 {
546 printf("lynq_sim_power success\n");
547 }
548 else
549 {
550 printf("lynq_sim_power error\n");
551 }
552 }
553 break;
554 }
555 case 19:
556 {
557 lynq_reset_modem = (int (*)())dlsym(dlHandle_sim,"lynq_reset_modem");
558 if(NULL != lynq_reset_modem)
559 {
560 res = lynq_reset_modem();
561 if(res == 0)
562 {
563 printf("lynq_reset_modem success\n");
564 }
565 else
566 {
567 printf("lynq_reset_modem error\n");
568 }
569 }
570 break;
571 }
572 case 20:
573 {
574 lynq_screen = (int (*)(int))dlsym(dlHandle_sim,"lynq_screen");
575 if(NULL != lynq_screen)
576 {
577 int token;
578 printf("input mode\n");
579 scanf("%d", &token);
580 res = lynq_screen(token);
581 if(res == 0)
582 {
583 printf("lynq_screen success\n");
584 }
585 else
586 {
587 printf("lynq_screen error\n");
588 }
589 }
590 break;
591 }
rjwdbb8a262022-11-01 14:17:32 +0800592 case -1:
593 {
594 flag = 1; /* exit */
595 break;
596 }
597 case 80:
598 print_help();
599 break;
600 default:
601 print_help();
602 break;
603 }
604 if(flag == 1)
605 break;
606 }
607 return 0;
608}