[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;
+}