blob: 3dc4ca29d3ddbb480575b2aa4c0e88f1c717a881 [file] [log] [blame]
b.liud440f9f2025-04-18 10:44:31 +08001#include <stdlib.h>
2#include <stdio.h>
3#include <string.h>
4#include <sys/types.h>
5#include <pthread.h>
6#include <unistd.h>
7#include <dlfcn.h>
8#include <stdint.h>
9
10#include"lynq-qser-sim-demo.h"
11#include "mbtk_log.h"
12
13#define BUF_SIZE 32
14#define BUF_PIN 8
15#define VER_SIZE 128
16
17typedef uint32_t sim_client_handle_type;
18
19//sim_client_handle_type ph_sim = 2023;
20sim_client_handle_type h_sim = 2023;
21int flag_init = 0;
22
23int (*qser_sim_client_init)(sim_client_handle_type *ph_sim);
24int (*qser_sim_client_deinit)(sim_client_handle_type h_sim);
25int (*qser_sim_getimsi)(
26 sim_client_handle_type h_sim,
27 QSER_SIM_APP_ID_INFO_T *pt_info, ///< [IN] The SIM identifier info.
28 char *imsi, ///< [OUT] IMSI buffer
29 size_t imsiLen ///< [IN] IMSI buffer length
30);
31
32int (*qser_sim_geticcid)
33(
34 sim_client_handle_type h_sim,
35 QSER_SIM_SLOT_ID_TYPE_T simId, ///< [IN] The SIM identifier.
36 char *iccid, ///< [OUT] ICCID
37 size_t iccidLen ///< [IN] ICCID buffer length
38);
39
40int (*qser_sim_getphonenumber)
41(
42 sim_client_handle_type h_sim,
43 QSER_SIM_APP_ID_INFO_T *pt_info, ///< [IN] The SIM identifier.
44 char *phone_num, ///< [OUT] phone number
45 size_t phoneLen ///< [IN] phone number buffer length
46);
47int (*qser_sim_verifypin)(sim_client_handle_type h_sim, QSER_SIM_VERIFY_PIN_INFO_T *pt_info);
48int (*qser_sim_changepin)(sim_client_handle_type h_sim, QSER_SIM_CHANGE_PIN_INFO_T *pt_info);
49int (*qser_sim_unblockpin)(sim_client_handle_type h_sim, QSER_SIM_UNBLOCK_PIN_INFO_T *pt_info);
50int (*qser_sim_enablepin)(sim_client_handle_type h_sim, QSER_SIM_ENABLE_PIN_INFO_T *pt_info);
51int (*qser_sim_disablepin)(sim_client_handle_type h_sim, QSER_SIM_DISABLE_PIN_INFO_T *pt_info);
52int (*qser_sim_getcardstatus)(sim_client_handle_type h_sim, QSER_SIM_SLOT_ID_TYPE_T simId, QSER_SIM_CARD_STATUS_INFO_T *pt_info);
53int (*qser_sim_getimei)(sim_client_handle_type h_sim, char *imei);
54int (*qser_get_imei_and_sv)(sim_client_handle_type h_sim,char *imei, char*sv);
55int (*qser_reset_modem)(sim_client_handle_type h_sim);
56int (*qser_get_version)(sim_client_handle_type h_sim, char *buf);
57int (*qser_reset_sim)(sim_client_handle_type h_sim);
58int (*qser_sim_addrxmsghandler)(QSER_SIM_RxMsgHandlerFunc_t handlerPtr);
59
60
61typedef struct
62{
63 int cmdIdx;
64 const char *funcName;
65} st_api_test_case;
66
67//for server test
68st_api_test_case at_api_testcases[] =
69{
70 {0, "qser_sim_init"},
71 {1, "qser_get_imsi"},
72 {2, "qser_get_iccid"},
73 {3, "qser_get_phonenumber"},
74 {4, "qser_verify_pin"},
75 {5, "qser_change_pin"},
76 {6, "qser_unlock_pin"},
77 {7, "qser_enable_pin"},
78 {8, "qser_disable_pin"},
79 {9, "qser_get_sim_status"},
80 {10, "qser_get_imei"},
81 {11, "qser_get_imei_and_sv"},
82 {12, "qser_reset_modem"},
83 {13, "qser_get_version"},
84 {14, "qser_reset_sim"},
85 {15, "qser_sim_addrxmsghandler"},
86 {16, "qser_deinit_sim"},
87 {-1, NULL}
88};
89
90void print_help(void)
91{
92 int i;
93 printf("Supported test cases:\n");
94 for(i = 0; ; i++)
95 {
96 if(at_api_testcases[i].cmdIdx == -1)
97 {
98 break;
99 }
100 printf("%d:\t%s\n", at_api_testcases[i].cmdIdx, at_api_testcases[i].funcName);
101 }
102}
103
104void qser_sim_handler(QSER_SIM_MsgRef msgRef) {
105 printf("[%s-%d] sim, state = 0x%x========\n", __FUNCTION__, __LINE__, msgRef->e_card_state);
106}
107
108int main(int argc, char const *argv[])
109{
110 int cmdIdx = 0;
111 int res = 0;
112
113 mbtk_log_init((char*)"radio", (char*)"MBTK");
114
115 const char *lynq_libpath_sim = (char*)"/lib/liblynq-qser-sim.so";
116 void *dlHandle_sim = dlopen(lynq_libpath_sim, RTLD_NOW);
117 if (dlHandle_sim == NULL)
118 {
119 printf("dlopen dlHandle_sim failed: %s\n", dlerror());
120 exit(EXIT_FAILURE);
121 }
122
123 print_help();
124 while(1)
125 {
126 printf("\nplease input cmd index(-1 exit): ");
127 if(1 != scanf("%d", &cmdIdx))
128 break;
129 if(cmdIdx == -1)
130 {
131 break;
132 }
133
134 switch(cmdIdx)
135 {
136 //"qser_sim_init"
137 case 0:
138 {
139 if(flag_init == 1)
140 {
141 printf("init is already\n");
142 break;
143 }
144 else{
145 //int token;
146 //printf("input token\n");
147 //scanf("%d", &token);
148 qser_sim_client_init = (int(*)(sim_client_handle_type *h_sim))dlsym(dlHandle_sim,"qser_sim_client_init");
149 if(NULL != qser_sim_client_init)
150 {
151 res = qser_sim_client_init(&h_sim);
152 if(res == 0)
153 {
154 printf("Run qser_sim_client_init\n");
155 flag_init = 1;
156 }else{
157 printf("qser_sim_client_init error\n");
158 }
159 }else{
160 printf("qser_sim_client_init dlsym error\n");
161 }
162 break;
163 }
164 }
165
166 //"qser_sim_getimsi"
167 case 1:
168 {
169 if(flag_init == 0){
170 printf("must init first\n");
171 }
172 else{
173 char imsi[BUF_SIZE] = {0};
174 QSER_SIM_APP_ID_INFO_T pt_info;
175 qser_sim_getimsi = (int(*)(sim_client_handle_type h_sim, QSER_SIM_APP_ID_INFO_T *pt_info, char *imsi, size_t imsiLen))dlsym(dlHandle_sim,"qser_sim_getimsi");
176 if(NULL != qser_sim_getimsi)
177 {
178 res = qser_sim_getimsi(h_sim, &pt_info, imsi, BUF_SIZE);
179 if(res == 0)
180 {
181 printf("imsi is %s!!!\n",imsi);
182 }else{
183 printf("get imsi error, res = %d\n", res);
184 }
185 }else{
186 printf("qser_sim_getimsi dlsym error\n");
187 }
188 }
189 break;
190 }
191
192 //"qser_get_iccid"
193 case 2:
194 {
195 if(flag_init == 0){
196 printf("must init first\n");
197 }
198 else{
199 char iccid[BUF_SIZE] = {0};
200 qser_sim_geticcid = (int(*)(sim_client_handle_type h_sim, QSER_SIM_SLOT_ID_TYPE_T simId, char *iccid, size_t iccidLen))dlsym(dlHandle_sim,"qser_sim_geticcid");
201 if(NULL != qser_sim_geticcid)
202 {
203 res = qser_sim_geticcid(h_sim, QSER_SIM_SLOT_ID_1, iccid, BUF_SIZE);
204 if(res == 0)
205 {
206 printf("get iccid success!!! iccid is %s\n",iccid);
207 }else{
208 printf("get iccid error, res = %d\n", res);
209 }
210 }else{
211 printf("qser_sim_geticcid dlsym error\n");
212 }
213 }
214 break;
215 }
216 //qser_get_phonenumber
217 case 3:
218 {
219 if(flag_init == 0){
220 printf("must init first\n");
221 }
222 else{
223 char phonenumber[BUF_SIZE] = "";
224 QSER_SIM_APP_ID_INFO_T pt_info;
225 qser_sim_getphonenumber = (int(*)(sim_client_handle_type h_sim, QSER_SIM_APP_ID_INFO_T *pt_info, char *phone_num, size_t phoneLen))dlsym(dlHandle_sim,"qser_sim_getphonenumber");
226 if(NULL != qser_sim_getphonenumber)
227 {
228 res = qser_sim_getphonenumber(h_sim, &pt_info, phonenumber, BUF_SIZE);
229 if(res == 0)
230 {
231 printf("get phonenumber success!!! phonenumber is %s\n",phonenumber);
232 }else{
233 printf("get phonenumber error, res = %d\n", res);
234 }
235 }else{
236 printf("qser_sim_getphonenumber dlsym error\n");
237 }
238 }
239 break;
240 }
241 //qser_verify_pin
242 case 4:
243 {
244 if(flag_init == 0){
245 printf("must init first\n");
246 }
247 else{
248 char pin[BUF_PIN] = {0};
249 QSER_SIM_VERIFY_PIN_INFO_T pt_info;
250 printf("input pin\n");
251 if(1 != scanf("%s", pin))
252 break;
253 strncpy(pt_info.pin_value, pin, BUF_PIN);
254 printf("pin_value = %s , pin = %s\n", pt_info.pin_value, pin);
255
256 qser_sim_verifypin = (int(*)(sim_client_handle_type h_sim, QSER_SIM_VERIFY_PIN_INFO_T *pt_info))dlsym(dlHandle_sim,"qser_sim_verifypin");
257 if(NULL != qser_sim_verifypin)
258 {
259 res = qser_sim_verifypin(h_sim, &pt_info);
260 if(res == 0)
261 {
262 printf("verify pin success!!!\n");
263 }else{
264 printf("verify pin error, res = %d\n", res);
265 }
266 }else{
267 printf("qser_sim_verifypin dlsym error\n");
268 }
269 }
270 break;
271 }
272 //qser_change_pin
273 case 5:
274 {
275 if(flag_init == 0){
276 printf("must init first\n");
277 }
278 else{
279 char old_pin[BUF_PIN] = {0};
280 QSER_SIM_CHANGE_PIN_INFO_T pt_info;
281 printf("input old pin\n");
282 if(1 != scanf("%s", old_pin))
283 break;
284 char new_pin[BUF_PIN] = {0};
285 printf("input new pin\n");
286 if(1 != scanf("%s", new_pin))
287 break;
288 strncpy(pt_info.old_pin_value, old_pin, BUF_PIN);
289 strncpy(pt_info.new_pin_value, new_pin, BUF_PIN);
290 printf("pt_info.old_pin_value = %s, old_pin = %s\n", pt_info.old_pin_value, old_pin);
291 printf("pt_info.new_pin_value = %s, new_pin = %s\n", pt_info.new_pin_value, new_pin);
292
293 qser_sim_changepin = (int(*)(sim_client_handle_type h_sim, QSER_SIM_CHANGE_PIN_INFO_T *pt_info))dlsym(dlHandle_sim,"qser_sim_changepin");
294 if(NULL != qser_sim_changepin)
295 {
296 res = qser_sim_changepin(h_sim, &pt_info);
297 if(res == 0)
298 {
299 printf("change pin success!!!\n");
300 }else{
301 printf("change pin error, res = %d\n", res);
302 }
303 }else{
304 printf("lynq_change_pin dlsym error\n");
305 }
306 }
307 break;
308 }
309 //qser_unlock_pin
310 case 6:
311 {
312 if(flag_init == 0){
313 printf("must init first\n");
314 }
315 else{
316 char puk[BUF_PIN] = {0};
317 QSER_SIM_UNBLOCK_PIN_INFO_T pt_info;
318 printf("input puk\n");
319 if(1 != scanf("%s", puk))
320 break;
321 char new_pin[BUF_PIN] = {0};
322 printf("input new pin\n");
323 if(1 != scanf("%s", new_pin))
324 break;
325 memset(pt_info.puk_value, 0, sizeof(pt_info.puk_value));
326 memset(pt_info.new_pin_value, 0, sizeof(pt_info.new_pin_value));
327 strncpy(pt_info.puk_value, puk, BUF_PIN);
328 strncpy(pt_info.new_pin_value, new_pin, BUF_PIN);
329 printf("pt_info.puk_value = %s, puk = %s\n", pt_info.puk_value, puk);
330 printf("pt_info.new_pin_value = %s, new_pin = %s\n", pt_info.new_pin_value, new_pin);
331
332 qser_sim_unblockpin = (int(*)(sim_client_handle_type h_sim, QSER_SIM_UNBLOCK_PIN_INFO_T *pt_info))dlsym(dlHandle_sim,"qser_sim_unblockpin");
333 if(NULL != qser_sim_unblockpin)
334 {
335 res = qser_sim_unblockpin(h_sim, &pt_info);
336 if(res == 0)
337 {
338 printf("unlock pin success!!!\n");
339 }else{
340 printf("unlock pin error, res = %d\n", res);
341 }
342 }else{
343 printf("qser_sim_unblockpin dlsym error\n");
344 }
345 }
346 break;
347 }
348 //qser_enable_pin
349 case 7:
350 {
351 if(flag_init == 0){
352 printf("must init first\n");
353 }
354 else{
355 char pin[BUF_PIN] = {0};
356 QSER_SIM_ENABLE_PIN_INFO_T pt_info;
357 printf("input pin\n");
358 if(1 != scanf("%s", pin))
359 break;
360 strncpy(pt_info.pin_value, pin, BUF_PIN);
361
362 qser_sim_enablepin = (int(*)(sim_client_handle_type h_sim, QSER_SIM_ENABLE_PIN_INFO_T *pt_info))dlsym(dlHandle_sim,"qser_sim_enablepin");
363 if(NULL != qser_sim_enablepin)
364 {
365 res = qser_sim_enablepin(h_sim, &pt_info);
366 if(res == 0)
367 {
368 printf("pin enabled!!!\n");
369 }else{
370 printf("pin enable error, res =%d\n", res);
371 }
372 }else{
373 printf("qser_sim_enablepin dlsym error\n");
374 }
375 }
376 break;
377 }
378 //qser_disable_pin
379 case 8:
380 {
381 if(flag_init == 0){
382 printf("must init first\n");
383 }
384 else{
385 char pin[BUF_PIN] = {0};
386 QSER_SIM_ENABLE_PIN_INFO_T pt_info;
387 printf("input pin\n");
388 if(1 != scanf("%s", pin))
389 break;
390 strncpy(pt_info.pin_value, pin, BUF_PIN);
391
392 qser_sim_disablepin = (int(*)(sim_client_handle_type h_sim, QSER_SIM_DISABLE_PIN_INFO_T *pt_info))dlsym(dlHandle_sim,"qser_sim_disablepin");
393 if(NULL != qser_sim_disablepin)
394 {
395 res = qser_sim_disablepin(h_sim, &pt_info);
396 if(res == 0)
397 {
398 printf("pin disnabled!!!\n");
399 }else{
400 printf("pin disable error,res = %d\n", res);
401 }
402 }else{
403 printf("qser_sim_disablepin dlsym error\n");
404 }
405 }
406 break;
407 }
408 //qser_get_sim_status
409 case 9:
410 {
411 if(flag_init == 0){
412 printf("must init first\n");
413 }
414 else{
415 QSER_SIM_CARD_STATUS_INFO_T pt_info;
416
417 qser_sim_getcardstatus = (int(*)(sim_client_handle_type h_sim, QSER_SIM_SLOT_ID_TYPE_T simId, QSER_SIM_CARD_STATUS_INFO_T *pt_info))dlsym(dlHandle_sim,"qser_sim_getcardstatus");
418 if(NULL != qser_sim_getcardstatus)
419 {
420 res = qser_sim_getcardstatus(h_sim, QSER_SIM_SLOT_ID_1, &pt_info);
421 if(res == 0)
422 {
423 printf("state is 0x%x !!!\n",pt_info.e_card_state);
424 }else{
425 printf("get imsi error,res = %d\n", res);
426 }
427 }else{
428 printf("qser_sim_getcardstatus dlsym error\n");
429 }
430 }
431 break;
432 }
433 //qser_deinit_sim
434 case 10:
435 {
436 if(flag_init == 0){
437 printf("must init first\n");
438 }
439 else{
440 char imei[BUF_SIZE]="";
441 qser_sim_getimei = (int(*)(sim_client_handle_type h_sim, char *imei))dlsym(dlHandle_sim,"qser_sim_getimei");
442 if(NULL != qser_sim_getimei)
443 {
444 res = qser_sim_getimei(h_sim, imei);
445 if(res == 0)
446 {
447 printf("get imei success!!!\n");
448 }else{
449 printf("get imei error, res = %d\n", res);
450 }
451 }else{
452 printf("qser_sim_getimei dlsym error\n");
453 }
454 }
455 //flag_init = 0;
456 break;
457 }
458 //qser_get_imei_and_sv
459 case 11:
460 {
461 if(flag_init == 0){
462 printf("must init first\n");
463 }
464 else{
465 char imei[BUF_SIZE]="";
466 char sv[BUF_SIZE]="";
467 qser_get_imei_and_sv = (int(*)(sim_client_handle_type h_sim, char *imei, char *sv))dlsym(dlHandle_sim,"qser_get_imei_and_sv");
468 if(NULL != qser_get_imei_and_sv)
469 {
470 res = qser_get_imei_and_sv(h_sim, imei, sv);
471 if(res == 0)
472 {
473 printf("get imei and sv success!!!\n");
474 }else{
475 printf("get imei and sv error, res = %d\n", res);
476 }
477 }else{
478 printf("qser_get_imei_and_sv dlsym error\n");
479 }
480 }
481 //flag_init = 0;
482 break;
483 }
484 //qser_reset_modem
485 case 12:
486 {
487 if(flag_init == 0){
488 printf("must init first\n");
489 }
490 else{
491 qser_reset_modem = (int(*)(sim_client_handle_type h_sim))dlsym(dlHandle_sim,"qser_reset_modem");
492 if(NULL != qser_reset_modem)
493 {
494 res = qser_reset_modem(h_sim);
495 if(res == 0)
496 {
497 printf("reset modem success!!!\n");
498 }else{
499 printf("reset modem error, res = %d\n", res);
500 }
501 }else{
502 printf("qser_reset_modem dlsym error\n");
503 }
504 }
505 //flag_init = 0;
506 break;
507 }
508 //qser_get_version
509 case 13:
510 {
511 if(flag_init == 0){
512 printf("must init first\n");
513 }
514 else{
515 char buf[VER_SIZE]="";
516 qser_get_version = (int(*)(sim_client_handle_type h_sim, char *buf))dlsym(dlHandle_sim,"qser_get_version");
517 if(NULL != qser_get_version)
518 {
519 res = qser_get_version(h_sim, buf);
520 if(res == 0)
521 {
522 printf("get version success!!!\n");
523 }else{
524 printf("get version error, res = %d\n", res);
525 }
526 }else{
527 printf("qser_get_version dlsym error\n");
528 }
529 }
530 //flag_init = 0;
531 break;
532 }
533 //qser_reset_sim
534 case 14:
535 {
536 if(flag_init == 0){
537 printf("must init first\n");
538 }
539 else{
540 qser_reset_sim = (int(*)(sim_client_handle_type h_sim))dlsym(dlHandle_sim,"qser_reset_sim");
541 if(NULL != qser_reset_sim)
542 {
543 res = qser_reset_sim(h_sim);
544 if(res == 0)
545 {
546 printf("reset sim success!!!\n");
547 }else{
548 printf("reset sim error, res = %d\n", res);
549 }
550 }else{
551 printf("qser_reset_sim dlsym error\n");
552 }
553 }
554 //flag_init = 0;
555 break;
556 }
557 case 15://qser_sim_addrxmsghandler
558 {
559 if(flag_init == 0){
560 printf("must init first\n");
561 }
562 else{
563 qser_sim_addrxmsghandler = (int(*)(QSER_SIM_RxMsgHandlerFunc_t handlerPtr))dlsym(dlHandle_sim,"qser_sim_addrxmsghandler");
564 if(NULL != qser_sim_addrxmsghandler)
565 {
566 res = qser_sim_addrxmsghandler(qser_sim_handler);
567 if(res == 0)
568 {
569 printf("sim addrxmsghandler success is!!!\n");
570 }else{
571 printf("sim addrxmsghandler errors, res = %d\n", res);
572 }
573 }else{
574 printf("qser_sim_addrxmsghandler dlsym error\n");
575 }
576 }
577 //flag_init = 0;
578 break;
579 }
580 //qser_deinit_sim
581 case 16:
582 {
583 if(flag_init == 0){
584 printf("must init first\n");
585 }
586 else{
587 qser_sim_client_deinit = (int(*)(sim_client_handle_type h_sim))dlsym(dlHandle_sim,"qser_sim_client_deinit");
588 if(NULL != qser_sim_client_deinit)
589 {
590 res = qser_sim_client_deinit(h_sim);
591 if(res == 0)
592 {
593 printf("sim deinit success is!!!\n");
594 }else{
595 printf("sim deint errors, res = %d\n", res);
596 }
597 }else{
598 printf("qser_sim_client_deinit dlsym error\n");
599 }
600 }
601 flag_init = 0;
602 break;
603 }
604 default:
605 print_help();
606 break;
607 }
608
609 }
610
611 return 0;
612
613
614}
615
616