[Feature][T106-184][IRQ]add lynq_get_irq_type api and change demo

Only Configure: No
Affected branch: master
Affected module: irq
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: Yes
Doc Update: Yes

Change-Id: I61375b14caf8d687da6aa93b87ca1a6877a18c62
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-irq-demo/files/lynq-irq-demo.cpp b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-irq-demo/files/lynq-irq-demo.cpp
index 537273e..0f8ddef 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-irq-demo/files/lynq-irq-demo.cpp
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-irq-demo/files/lynq-irq-demo.cpp
@@ -5,10 +5,35 @@
 #include <include/lynq-irq.h>
 
 
+#define CMD_SET_WAKE    "set_wake"
+#define CMD_GET_WAKE    "get_wake\n"
+#define CMD_SET_TYPE    "set_type"
+#define CMD_GET_TYPE    "get_type\n"
+#define CMD_UNINSTALL   "uninstall\n"
+#define CMD_QUIT_TEST   "quit\n"
+
+int line;
+
+
+static void printUsage(void)
+{
+    printf("Usage:\n");
+    printf("-set_wake <en>\n");
+    printf("-set_type <en>\n");
+    printf("-get_type\n");
+    printf("-get_wake\n");
+    printf("-uninstall\n");
+    printf("-quit\n");
+    printf("Please input an cmd:");
+}
+
 
 static void irq_test_handler(void)
 {
-    printf("this is irq_test_handler\n");
+    int trig_type;
+    trig_type = lynq_irq_get_type(line);
+    printf("this is irq_test_handler\nthis irq is gpio %d,trig_type is %d\n", line_gpio[line], trig_type);
+    return NULL;
 }
 
 
@@ -18,60 +43,45 @@
     int irq;
     int trig_type;
     int en;
+    char cmd[16];
+    char *cmd2;
+    char *cmd1;
 
-    if(argc < 2)
+    if(argc != 3)
     {
-        printf("wrong input format, please -h \n");
+        printf("wrong input format, please inout lynq-irq-demo <irq_line> <trig_type/wake_state> \n");
         return -1;
     }
-
-    if(strcmp(argv[1],"-h") == 0)
-    {
-        printf("        -h                                        --help\n");
-        printf("        -t   [irq][trig_type]                    --lynq_irq_set_type\n");
-        printf("        -sw  [irq][en]                           --lynq_irq_set_wake\n");
-        printf("        -gw  [irq]                               --lynq_irq_get_wake\n");
-        return 0;
-    }
-
-    if(argv[2] == NULL)
-    {
-        printf("wrong input format, please -h \n");
-        return -1;
-    }
-
-    irq = atoi(argv[2]);
-    ret = lynq_irq_install(irq, irq_test_handler, 1);
+    irq = atoi(argv[1]);
+    trig_type = atoi(argv[2]);
+    ret = lynq_irq_install(irq, irq_test_handler, trig_type);
     if(ret != 0)
     {
         printf("lynq_irq_install fail\n");
+        return 0;
     }
     else
     {
         printf("lynq_irq_install success\n");
+        line = irq;
     }
 
-    if(strcmp(argv[1],"-t") == 0)
+    while(1)
     {
-        if(argv[3] != NULL)
+        printUsage();
+        memset(cmd,0,sizeof(cmd));
+        fgets(cmd, sizeof(cmd), stdin);
+        printf("cmd:%s\n",cmd);
+        cmd1 = strtok(cmd, " ");
+        cmd2 = strtok(NULL, " ");
+        if(strcmp(cmd1, CMD_SET_WAKE) == 0)
         {
-            trig_type = atoi(argv[3]);
-            ret = lynq_irq_set_type(irq, trig_type);
-            if(ret < 0)
+            if(cmd2 == NULL)
             {
-                printf("lynq_irq_set_type fail\n");
+                printf("wake_state is NULL\n");
+                break;
             }
-            else
-            {
-                printf("lynq_irq_set_type success\n");
-            }
-        }
-    }
-    else if (strcmp(argv[1],"-sw") == 0)
-    {
-        if(argv[3] != NULL)
-        {
-            en = atoi(argv[3]);
+            en = atoi(cmd2);
             ret = lynq_irq_set_wake(irq, en);
             if(ret < 0)
             {
@@ -84,30 +94,66 @@
                 printf("ret=%d\n", ret);
             }
         }
-    }
-    else if (strcmp(argv[1],"-gw") == 0)
-    {
-        ret = lynq_irq_get_wake(irq);
-        printf("lynq_irq_get_wake ret %d\n", ret);
-    }
-    else
-    {
-        printf("wrong input format, please -h \n");
-        return -1;
+        else if(strcmp(cmd1, CMD_GET_WAKE) == 0)
+        {
+            ret = lynq_irq_get_wake(irq);
+            printf("lynq_irq_get_wake ret %d\n", ret);
+        }
+        else if(strcmp(cmd1, CMD_SET_TYPE) == 0)
+        {
+            if(cmd2 == NULL)
+            {
+                printf("trig_type is NULL\n");
+                break;
+            }
+            trig_type = atoi(cmd2);
+            ret = lynq_irq_set_type(line, trig_type);
+            if(ret < 0)
+            {
+                printf("lynq_irq_set_type fail\n");
+            }
+            else
+            {
+                printf("lynq_irq_set_type success\n");
+            }
+        }
+        else if(strcmp(cmd1, CMD_GET_TYPE) == 0)
+        {
+            ret = lynq_irq_get_type(irq);
+            printf("lynq_irq_get_type ret %d\n", ret);
+        }
+        else if(strcmp(cmd1, CMD_UNINSTALL) == 0)
+        {
+            ret = lynq_irq_uninstall(irq);
+            if(ret != 0)
+            {
+                printf("lynq_irq_uninstall fail\n");
+            }
+            else
+            {
+                printf("lynq_irq_uninstall success\n");
+            }
+        }
+        else if(strcmp(cmd1, CMD_QUIT_TEST) == 0)
+        {
+            ret = lynq_irq_uninstall(irq);
+            if(ret != 0)
+            {
+                printf("lynq_irq_uninstall fail\n");
+            }
+            else
+            {
+                printf("lynq_irq_uninstall success\n");
+                break;
+            }
+        }
+        else
+        {
+            printf("wrong input format\n");
+        }
     }
 
-    ret = lynq_irq_uninstall(irq);
-    if(ret != 0)
-    {
-        printf("lynq_irq_uninstall fail\n");
-    }
-    else
-    {
-        printf("lynq_irq_uninstall success\n");
-    }
-        
     return 0;
-
 }
 
 
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-irq/include/lynq-irq.h b/cap/zx297520v3/src/lynq/lib/liblynq-irq/include/lynq-irq.h
index 298e75a..36fd9ed 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-irq/include/lynq-irq.h
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-irq/include/lynq-irq.h
@@ -6,6 +6,9 @@
 extern "C" {
 #endif
 
+
+int line_gpio[15]={-1,48,49,50,51,52,53,54,119,128,129,-1,131,-1,125};//this is the line match gpio
+
 typedef void (*irq_handler)(void);
 
 int lynq_irq_install(int line, irq_handler irq_handler, int trig_type);
@@ -14,6 +17,8 @@
 
 int lynq_irq_set_type(int line, int trig_type);
 
+int lynq_irq_get_type(int line);
+
 int lynq_irq_set_wake(int line, int en);
 
 int lynq_irq_get_wake(int line);
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-irq/lynq-irq.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-irq/lynq-irq.cpp
index 566961e..a48090e 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-irq/lynq-irq.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-irq/lynq-irq.cpp
@@ -12,7 +12,6 @@
 extern "C" {
 #endif
 
-#define USER_LOG_TAG "LYNQ_IRQ"
 
 /*****************************************
 * @brief:lynq_irq_install
@@ -27,8 +26,10 @@
 int lynq_irq_install(int line, irq_handler irq_test_handler, int trig_type)
 {
     int ret;
-    LYLOGSET(LOG_INFO);
-    LYLOGEINIT(USER_LOG_TAG);
+    if(trig_type < 0)
+    {
+        return -1;
+    }
     ret = sc_irq_install(line, irq_test_handler, trig_type);
     if (ret != 0)
     {
@@ -52,8 +53,6 @@
 int lynq_irq_uninstall(int line)
 {
     int ret;
-    LYLOGSET(LOG_INFO);
-    LYLOGEINIT(USER_LOG_TAG);
     ret = sc_irq_uninstall(line);
     if (ret != 0)
     {
@@ -77,8 +76,10 @@
 int lynq_irq_set_type(int line, int trig_type)
 {
     int ret;
-    LYLOGSET(LOG_INFO);
-    LYLOGEINIT(USER_LOG_TAG);
+    if(trig_type < 0)
+    {
+        return -1;
+    }
     ret = sc_irq_set_type(line, trig_type);
     if (ret < 0)
     {
@@ -89,6 +90,29 @@
 
 }
 
+/*****************************************
+* @brief:lynq_irq_get_type
+* @param count [IN]:1
+* @param sum [OUT]:NA
+* @return :success >= 0, failed other
+* @todo:NA
+* @see:NA
+* @warning:NA
+******************************************/
+int lynq_irq_get_type(int line)
+{
+    int ret;
+    int trig_type;
+    ret = sc_irq_get_type(line, &trig_type);
+    if (ret != 0)
+    {
+        LYINFLOG("get_type failed, ret:%d\n", ret);
+        return ret;
+    }
+    LYINFLOG("get_type readback(%d)\n", trig_type);
+    return trig_type;
+}
+
 
 /*****************************************
 * @brief:lynq_irq_set_wake
@@ -102,8 +126,6 @@
 int lynq_irq_set_wake(int line, int en)
 {
     int ret;
-    LYLOGSET(LOG_INFO);
-    LYLOGEINIT(USER_LOG_TAG);
     ret = sc_irq_set_wake(line, en);
     if (ret < 0)
     {
@@ -126,8 +148,6 @@
 {
     int ret;
     int en;
-    LYLOGSET(LOG_INFO);
-    LYLOGEINIT(USER_LOG_TAG);
     ret = sc_irq_get_wake(line, &en);
     if (ret != 0)
     {