[Feature][T8TSK-81][SDK]Merge T800_SDK meta file into T800 repo
Change-Id: I9b637e1abfbee16698839ee0ec3e38782cb22c48
diff --git a/meta-sdk/meta/meta-lynqSDK-T800/recipes-customer/sim-demo/files/sim-demo.cpp b/meta-sdk/meta/meta-lynqSDK-T800/recipes-customer/sim-demo/files/sim-demo.cpp
new file mode 100755
index 0000000..0a9f6d2
--- /dev/null
+++ b/meta-sdk/meta/meta-lynqSDK-T800/recipes-customer/sim-demo/files/sim-demo.cpp
@@ -0,0 +1,502 @@
+#include <stdio.h>
+#include <dlfcn.h>
+#include <signal.h>
+#include <string.h>
+#include <stdlib.h>
+
+#define BUF_SIZE 32
+#define BUF_PIN 4
+
+void *dlHandle_sim;
+void *dlHandle_log;
+
+int (*lynq_sim_init)(int utoken);
+int (*lynq_sim_deinit)(void);
+int (*lynq_enable_pin)(char pin[]);
+int (*lynq_disable_pin)(char pin[]);
+int (*lynq_get_iccid)(char buf[]);
+int (*lynq_query_pin_lock)(char *pin,int buf[]);
+int (*lynq_verify_pin)(char *pin);
+int (*lynq_change_pin)(char *old_pin,char *new_pin);
+int (*lynq_unlock_pin)(char *puk,char *pin);
+int (*lynq_query_phone_number)(char buf[]);
+int (*lynq_get_sim_status)(int *card_status);
+int (*lynq_get_imsi)(char buf[]);
+int (*lynq_get_imei)(char buf[]);
+int (*lynq_get_imei_and_sv)(char imei[],char sv[]);
+int (*lynq_req_sim_io)(int list[5], char *path, char *data, char *pin2, char *aidPtr, int sw[2], char *simResponse);
+
+int flag_init = 0;
+typedef struct
+{
+ int cmdIdx;
+ char *funcName;
+}st_api_test_case;
+
+st_api_test_case api_testcases[] =
+{
+ {0, "lynq_sim_init"},
+ {1, "lynq_enable_pin"},
+ {2, "lynq_disable_pin"},
+ {4, "lynq_get_iccid"},
+ {5, "lynq_query_pin_lock"},
+ {6, "lynq_verify_pin"},
+ {7, "lynq_change_pin"},
+ {8, "lynq_unlock_pin"},
+ {9, "lynq_query_phone_number"},
+ {10, "lynq_get_imsi"},
+ {11, "lynq_get_sim_status"},
+ {12, "lynq_sim_deinit"},
+ {13, "lynq_get_imei"},
+ {14, "lynq_get_imei_and_sv"},
+ {15, "lynq_req_sim_io"},
+ {-1, NULL}
+};
+
+void print_help(void)
+{
+ int i;
+
+ printf("Supported test cases:\n");
+ for(i = 0; ; i++)
+ {
+ if(api_testcases[i].cmdIdx == -1)
+ {
+ break;
+ }
+ printf("%d:\t%s\n", api_testcases[i].cmdIdx, api_testcases[i].funcName);
+ }
+}
+
+
+int main(void){
+ int cmdIdx = 0;
+ int flag = 0;
+ int res = 0;
+
+ const char *lynq_libpath_sim = "/lib64/liblynq-sim.so";
+ const char *lynq_libpath_log = "/lib64/liblynq-log.so";
+
+ dlHandle_sim = dlopen(lynq_libpath_sim,RTLD_NOW);
+ if(dlHandle_sim == NULL)
+ {
+ printf("dlopen dlHandle_sim failed: %s", dlerror());
+ exit(EXIT_FAILURE);
+ }
+ dlHandle_log = dlopen(lynq_libpath_log,RTLD_NOW);
+ if(dlHandle_log == NULL)
+ {
+ printf("dlopen dlHandle_log failed: %s", dlerror());
+ exit(EXIT_FAILURE);
+ }
+
+ print_help();
+ while(1)
+ {
+ printf("please input cmd index(-1 exit, 80-help): ");
+ if (scanf("%d", &cmdIdx) != 1)
+ {
+ char c;
+ while((c = getchar()) != '\n' && c != EOF);
+ printf("Illegal input.Please input correctly\n");
+ print_help();
+ continue;
+ }
+ switch(cmdIdx)
+ {
+ case 0: /* lynq_sim_init */
+ {
+
+ if(flag_init == 1)
+ {
+ printf("init is already\n");
+ break;
+ }
+ else{
+ int token;
+ printf("input token\n");
+ scanf("%d", &token);
+ lynq_sim_init = (int(*)(int utoken))dlsym(dlHandle_sim,"lynq_sim_init");
+ if(NULL != lynq_sim_init)
+ {
+ res = lynq_sim_init(token);
+ if(res == 0)
+ {
+ printf("Run lynq_sim_init\n");
+ flag_init = 1;
+ }else{
+ printf("lynq sim init error\n");
+ }
+ }else{
+ printf("lynq_sim_init dlsym error\n");
+ }
+ break;
+ }
+
+ }
+ case 1: /* lynq_enable_pin */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char pin[BUF_PIN] = {0};
+ printf("input pin\n");
+ scanf("%s", pin);
+ lynq_enable_pin = (int(*)(char pin[]))dlsym(dlHandle_sim,"lynq_enable_pin");
+ if(NULL != lynq_enable_pin)
+ {
+ res = lynq_enable_pin(pin);
+ if(res == 0)
+ {
+ printf("pin enabled!!!\n");
+ }else{
+ printf("pin enable error\n");
+ }
+ }else{
+ printf("lynq_enable_pin dlsym error\n");
+ }
+ }
+ break;
+ }
+
+ case 2: /* lynq_disable_pin */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char pin[BUF_PIN] = {0};
+ printf("input pin\n");
+ scanf("%s", pin);
+ lynq_disable_pin = (int(*)(char pin[]))dlsym(dlHandle_sim,"lynq_disable_pin");
+ if(NULL != lynq_disable_pin)
+ {
+ res = lynq_disable_pin(pin);
+ if(res == 0)
+ {
+ printf("pin disnabled!!!\n");
+ }else{
+ printf("pin disable error\n");
+ }
+ }else{
+ printf("lynq_disable_pin dlsym error\n");
+ }
+ }
+ break;
+ }
+
+ case 4: /* lynq_get_iccid */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char iccid[BUF_SIZE] = {0};
+ lynq_get_iccid = (int(*)(char buf[]))dlsym(dlHandle_sim,"lynq_get_iccid");
+ if(NULL != lynq_get_iccid)
+ {
+ res = lynq_get_iccid(iccid);
+ if(res == 0)
+ {
+ printf("get iccid success!!! iccid is %s\n",iccid);
+ }else{
+ printf("get iccid error\n");
+ }
+ }else{
+ printf("lynq_get_iccid dlsym error\n");
+ }
+ }
+ break;
+ }
+
+ case 5: /* lynq_query_pin_lock */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char pin[BUF_PIN] = {0};
+ printf("input pin\n");
+ scanf("%s", pin);
+ int lock[BUF_SIZE] = {0};
+
+ lynq_query_pin_lock = (int(*)(char *pin,int buf[]))dlsym(dlHandle_sim,"lynq_query_pin_lock");
+ if(NULL != lynq_query_pin_lock)
+ {
+ res = lynq_query_pin_lock(pin,lock);
+ if(res == 0)
+ {
+ printf("query pin lock success!!! iccid is %d\n",lock);
+ }else{
+ printf("query pin lock error\n");
+ }
+ }else{
+ printf("lynq_query_pin_lock dlsym error\n");
+ }
+ }
+ break;
+ }
+ case 6: /* lynq_verify_pin */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char pin[BUF_PIN] = {0};
+ printf("input pin\n");
+ scanf("%s", pin);
+
+ lynq_verify_pin = (int(*)(char *pin))dlsym(dlHandle_sim,"lynq_verify_pin");
+ if(NULL != lynq_verify_pin)
+ {
+ res = lynq_verify_pin(pin);
+ if(res == 0)
+ {
+ printf("verify pin success!!!\n");
+ }else{
+ printf("verify pin error\n");
+ }
+ }else{
+ printf("lynq_verify_pin dlsym error\n");
+ }
+ }
+ break;
+ }
+ case 7: /* lynq_change_pin */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char old_pin[BUF_PIN] = {0};
+ printf("input old pin\n");
+ scanf("%s", old_pin);
+ char new_pin[BUF_PIN] = {0};
+ printf("input new pin\n");
+ scanf("%s", new_pin);
+
+ lynq_change_pin = (int(*)(char *old_pin,char *new_pin))dlsym(dlHandle_sim,"lynq_change_pin");
+ if(NULL != lynq_change_pin)
+ {
+ res = lynq_change_pin(old_pin,new_pin);
+ if(res == 0)
+ {
+ printf("change pin success!!!\n");
+ }else{
+ printf("change pin error\n");
+ }
+ }else{
+ printf("lynq_change_pin dlsym error\n");
+ }
+ }
+ break;
+ }
+ case 8: /* lynq_unlock_pin */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char puk[BUF_SIZE] = {0};
+ printf("input puk\n");
+ scanf("%s", puk);
+ char new_pin[BUF_PIN] = {0};
+ printf("input new pin\n");
+ scanf("%s", new_pin);
+ lynq_unlock_pin = (int(*)(char *puk,char *pin))dlsym(dlHandle_sim,"lynq_unlock_pin");
+ if(NULL != lynq_unlock_pin)
+ {
+ res = lynq_unlock_pin(puk,new_pin);
+ if(res == 0)
+ {
+ printf("unlock pin success!!!\n");
+ }else{
+ printf("unlock pin error\n");
+ }
+ }else{
+ printf("lynq_unlock_pin dlsym error\n");
+ }
+ }
+ break;
+ }
+ case 9: /* lynq_query_phone_number */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char number[BUF_SIZE] = {0};
+ lynq_query_phone_number = (int(*)(char buf[]))dlsym(dlHandle_sim,"lynq_query_phone_number");
+ if(NULL != lynq_query_phone_number)
+ {
+ res = lynq_query_phone_number(number);
+ if(res == 0)
+ {
+ printf("phone number is %s!!!\n",number);
+ }else{
+ printf("unlock pin error\n");
+ }
+ }else{
+ printf("lynq_query_phone_number dlsym error\n");
+ }
+ }
+ break;
+ }
+ case 10: /* lynq_get_imsi */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ char imsi[BUF_SIZE] = {0};
+
+ lynq_get_imsi = (int(*)(char buf[]))dlsym(dlHandle_sim,"lynq_get_imsi");
+ if(NULL != lynq_get_imsi)
+ {
+ res = lynq_get_imsi(imsi);
+ if(res == 0)
+ {
+ printf("imsi is %s!!!\n",imsi);
+ }else{
+ printf("get imsi error\n");
+ }
+ }else{
+ printf("lynq_get_imsi dlsym error\n");
+ }
+ }
+ break;
+ }
+ case 11: /* lynq_get_sim_status */
+ {
+ if(flag_init == 0){
+ printf("must init first\n");
+ }
+ else{
+ int x = -1;
+ int *y = &x;
+
+ lynq_get_sim_status = (int(*)(int* card_status))dlsym(dlHandle_sim,"lynq_get_sim_status");
+ if(NULL != lynq_get_sim_status)
+ {
+ res = lynq_get_sim_status(y);
+ if(res == 0)
+ {
+ printf("state is %d!!!\n",*y);
+ }else{
+ printf("get imsi error\n");
+ }
+ }else{
+ printf("lynq_get_sim_status dlsym error\n");
+ }
+ }
+ break;
+ }
+ case 12:
+ {
+ lynq_sim_deinit = (int(*)(void))dlsym(dlHandle_sim,"lynq_sim_deinit");
+ if(NULL != lynq_sim_deinit)
+ {
+ res = lynq_sim_deinit();
+ if(res == 0)
+ {
+ printf("sim deinit success is!!!\n");
+ }else{
+ printf("get imsi error\n");
+ }
+ }else{
+ printf("lynq_sim_deinit dlsym error\n");
+ }
+ flag_init = 0;
+ break;
+ }
+ case 13:
+ {
+ lynq_get_imei = (int (*)(char *buf))dlsym(dlHandle_sim,"lynq_get_imei");
+ if(NULL != lynq_get_imei)
+ {
+ char buf[20] = {0};
+ res = lynq_get_imei(buf);
+ if(res == 0)
+ {
+ printf("imei is %s!!!\n",buf);
+ }
+ else
+ {
+ printf("get imei error %d\n", res);
+ }
+ }
+ else
+ {
+ printf("lynq_get_imei dlsym error\n");
+ }
+ break;
+ }
+ case 14:
+ {
+ lynq_get_imei_and_sv = (int (*)(char *imei, char* sv))dlsym(dlHandle_sim,"lynq_get_imei_and_sv");
+ if(NULL != lynq_get_imei_and_sv)
+ {
+ char imei[20] = {0};
+ char sv[20] = {0};
+ res = lynq_get_imei_and_sv(imei,sv);
+ if(res == 0)
+ {
+ printf("imei is %s sv is %s!!!\n",imei,sv);
+ }
+ else
+ {
+ printf("get imei sv error %d\n", res);
+ }
+ }
+ else
+ {
+ printf("lynq_get_imei_and_sv dlsym error\n");
+ }
+ break;
+ }
+ case 15:
+ {
+ 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");
+ if(NULL != lynq_req_sim_io)
+ {
+ int list[5] = {176,28423,0,0,9};
+ char *path = "3F007F20";
+ char *data = NULL;
+ char *pin2 = NULL;
+ char *aidPtr = NULL;
+ int sw[2];
+ char simResponse[256] = {0};
+ res = lynq_req_sim_io(list, path, data, pin2, aidPtr, sw, simResponse);
+ if(res == 0)
+ {
+ printf("%d %d %s\n", sw[0], sw[1], simResponse);
+ }
+ else
+ {
+ printf("lynq_req_sim_io error %d\n", res);
+ }
+ }
+ else
+ {
+ printf("lynq_req_sim_io dlsym error \n");
+ }
+ break;
+ }
+ case -1:
+ {
+ flag = 1; /* exit */
+ break;
+ }
+ case 80:
+ print_help();
+ break;
+ default:
+ print_help();
+ break;
+ }
+ if(flag == 1)
+ break;
+ }
+ return 0;
+}