Update LYNQ test

Change-Id: I9e434803f0cce9f24048f2fbc5eed2d26fa33503
diff --git a/mbtk/test/liblynq_lib/poweralarm-demo.cpp b/mbtk/test/liblynq_lib/poweralarm-demo.cpp
new file mode 100755
index 0000000..0bca3bb
--- /dev/null
+++ b/mbtk/test/liblynq_lib/poweralarm-demo.cpp
@@ -0,0 +1,304 @@
+#include <stdlib.h>

+#include <stdio.h>

+#include <string.h>

+#include <sys/types.h>

+#include <unistd.h>

+#include <dlfcn.h>

+#include <stdint.h>

+

+

+#define INIT_SUCCESS    0

+#define RTC_DEINIT    -1

+typedef struct

+{

+    int  cmdIdx;

+    char *funcName;

+} st_api_test_case;

+

+

+//for server test

+st_api_test_case at_api_testcases[] = 

+{

+    {0,   "print_help"},

+    {1,   "lynq_rtc_service_init"},

+    {2,   "poweralarm"},

+    {3,   "wakealarm"},

+    {4,   "cancel_wakealarm"},

+    {5,   "lynq_set_poweralarm"},

+    {6,   "lynq_set_wakealarm"},

+    {7,   "lynq_rtc_service_deinit"},

+    {-1,    NULL}

+};

+

+ int init_flag = -1;

+ int src_id = -1;

+ void *dlHandle_poweralarm = NULL;

+ 

+typedef int (*lynq_wakealarm_add_cb)(unsigned int src_id, int rtc_id);

+

+int (*lynq_rtc_service_init)(void);

+int (*lynq_rtc_service_deinit)(void);

+int (*poweralarm)(char *buffer,int src_id);

+int (*wakealarm)(char *buffer,int srcid,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify);

+int (*cancel_wakealarm)(int src_id,int rtc_id);

+int (*lynq_set_poweralarm)(unsigned long time_sec,int src_id);

+int (*lynq_set_wakealarm)(unsigned long time_sec,int srcid,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify);

+

+

+

+void print_help(void)

+{

+    int i;

+    printf("Supported test cases:\n");

+    for(i = 0; ; i++)

+    {

+        if(at_api_testcases[i].cmdIdx == -1)

+        {

+            break;

+        }

+        printf("%d:\t%s\n", at_api_testcases[i].cmdIdx, at_api_testcases[i].funcName);

+    }

+}

+

+int lynq_wakealarm_add_callback(unsigned int src_id, int rtc_id)

+{

+    printf("wake alarm callback test \n");

+    return 0;

+}

+

+

+int main(int argc,char *argv[])

+{

+

+    int cmdIdx = 0;

+    printf("Enter main function\n");

+    

+    const char *dlHandle_Path_poweralarm = "/lib/libpoweralarm.so";

+    dlHandle_poweralarm = dlopen(dlHandle_Path_poweralarm, RTLD_NOW);

+    if (dlHandle_poweralarm == NULL) 

+    {

+        printf("dlopen dlHandle_fota failed: %s\n", dlerror());

+        return -1;

+    }

+

+    poweralarm = (int (*)(char *buffer,int src_ids))dlsym(dlHandle_poweralarm, "poweralarm");

+    if(poweralarm == NULL)

+    {

+        printf("poweralarm is null\n");

+        return -1;

+    }

+

+    wakealarm = (int (*)(char *buffer,int srcid,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify))dlsym(dlHandle_poweralarm, "wakealarm");

+    if(wakealarm == NULL)

+    {

+        printf("wakealarm is null\n");

+        return -1;

+    }

+    lynq_set_poweralarm = (int (*)(unsigned long,int src_id))dlsym(dlHandle_poweralarm,"lynq_set_poweralarm");

+    if(lynq_set_poweralarm == NULL)

+    {

+        printf("lynq_set_poweralarm is null\n");

+        return -1;

+    }

+    lynq_set_wakealarm = (int (*)(unsigned long,int srcid,int rtc_id,lynq_wakealarm_add_cb wakealarm_notify))dlsym(dlHandle_poweralarm,"lynq_set_wakealarm");

+    if(lynq_set_wakealarm == NULL)

+    {

+        printf("lynq_set_wakealarm is null\n");

+        return -1;

+    }

+    

+    cancel_wakealarm = (int (*)(int src_id,int rtc_id))dlsym(dlHandle_poweralarm, "cancel_wakealarm");

+     if(cancel_wakealarm == NULL)

+    {

+        printf("cancel_wakealarm is null\n");

+        return -1;

+    }

+

+    lynq_rtc_service_init = (int(*)())dlsym(dlHandle_poweralarm,"lynq_rtc_service_init");

+    if(lynq_rtc_service_init == NULL)

+    {

+        printf("lynq_rtc_service_init is null\n");

+        return -1;

+    }

+

+    lynq_rtc_service_deinit = (int (*)())dlsym(dlHandle_poweralarm,"lynq_rtc_service_deinit");

+    if(lynq_rtc_service_deinit == NULL)

+    {

+        printf("lynq_rtc_service_deinit is null \n");

+        return -1;

+    }

+    

+    print_help();

+    while(1)

+    {

+        

+        printf("\nplease input cmd index(-1 exit): ");

+        scanf("%d", &cmdIdx);

+        if(cmdIdx == -1)

+        {

+            break;

+        }

+        switch(cmdIdx)

+        {   

+            case 0:

+                print_help();

+                break;

+            case 1:

+                {

+                    src_id = lynq_rtc_service_init();

+                    if(src_id <= 0)

+                    {

+

+                        printf("RTC service init failed ");

+                        return -1;

+                    }

+                    else

+                    {

+                        init_flag = INIT_SUCCESS;

+                    }

+                    

+                    break;

+                }

+            case 2:

+                {

+                    

+                    if(init_flag != INIT_SUCCESS)

+                    {

+                        printf("*****ERROR must init rtc service ,Please reselect *******\n ");

+                    }

+                    else

+                    {

+                        int ret = 0;

+                        char tmp_time[32] = {0};

+                        printf("Set poweralarm time,e.g: 60 (seconds)\n");

+                        scanf("%s",tmp_time);

+                        ret = poweralarm(tmp_time,src_id);

+                        if(ret != 0)

+                        {

+                            printf("set poweralarm failed\n");

+                            return -1;

+                        }

+                    }

+                break;

+                }

+            case 3:

+                {

+                    if(init_flag != INIT_SUCCESS)

+                    {

+                        printf("*****ERROR must init rtc service ,Please reselect *******\n ");

+                    }

+                    else

+                    {

+                        int ret = 0;

+                        char tmp_time[32]={0};

+                        int rtc_id = 0;

+                        printf("Set wakealarm time ,e.g: 60  1 (seconds)\n");

+                        scanf("%s%d",tmp_time,&rtc_id);

+                   

+                        ret = wakealarm(tmp_time,src_id,rtc_id,lynq_wakealarm_add_callback);

+                        if(ret != 0)

+                        {

+                            printf("set wakealarm failed\n");

+                            return -1;

+                        }

+                    }

+                    break;

+                }

+             case 4:

+                {

+                    if(init_flag != INIT_SUCCESS)

+                    {

+                        printf("*****ERROR must init rtc service ,Please reselect *******\n ");

+                    }

+                    else

+                    {

+                        int ret = 0;

+                        int rtc_id = 0;

+                        printf("Please input you want cancel rtc timer rtc id\n");

+                        scanf("%d",&rtc_id);

+                        ret = cancel_wakealarm(src_id,rtc_id);

+                        if(ret != 0)

+                        {

+                            printf("Cancel_wakealarm failed!!!");

+                            return -1;

+                        }

+                    }

+                    break;

+                }

+             case 5:

+                { 

+                    if(init_flag != INIT_SUCCESS)

+                    {

+                        printf("*****ERROR must init rtc service ,Please reselect *******\n ");

+                    }

+                    else

+                    {

+                        int ret = 0; 

+                        unsigned long time_sec = 0;

+                        printf("Input time_sec you want poweralarm,e.g: 60 (seconds)\n");

+                        scanf("%lu",&time_sec);

+                        ret =lynq_set_poweralarm(time_sec,src_id);

+                        printf("ret is %d\n",ret);

+                        if(ret != 0)

+                        {

+                            printf("lynq_set_poweralarm failed\n");

+                            return -1;

+                        }

+                    }

+                   break;

+                }

+            case 6:

+                { 

+                    if(init_flag != INIT_SUCCESS)

+                    {

+                        printf("*****ERROR must init rtc service ,Please reselect *******\n ");

+                   }

+                   else

+                   {

+                        int ret = 0; 

+                        unsigned long time_sec = 0;

+                        int rtc_id;

+                        printf("Input time_sec you want wakealarm,e.g:60  1(seconds)\n");

+                        scanf("%lu%d",&time_sec,&rtc_id);

+                        ret =lynq_set_wakealarm(time_sec,src_id,rtc_id,lynq_wakealarm_add_callback);

+                        if(ret != 0)

+                        {

+                            printf("lynq_set_wakealarm failed\n");

+                            return -1;

+                        }

+                    }

+                   break;

+                }

+            case 7:

+                {

+                    if(init_flag != INIT_SUCCESS)

+                    {

+                        printf("*****ERROR must init rtc service ,Please reselect *******\n ");

+                    }

+                    else

+                    {

+                        int ret  = -1;

+                        printf("rtc servce deinit !!!!!!!!!!!!");

+                        ret = lynq_rtc_service_deinit();

+                        if(ret != 0)

+                        {

+                            printf("lynq rtc service deinit failed \n");

+                            return -1;

+                        }

+                        else

+                        {

+                            init_flag = RTC_DEINIT;

+                        }

+                    }

+                    break;

+                }

+                

+            default:

+                break;

+        }

+    }

+

+    return 0;

+

+}

+