[Bugfix][T106BUG-302][GPIO]fix demo get pull fail because restart demo

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

Change-Id: I4d475efe89497c1a1736428efa5d0cfd068db60d
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-gpio-demo/files/lynq-gpio-demo.cpp b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-gpio-demo/files/lynq-gpio-demo.cpp
index 51c0020..52a03c5 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-gpio-demo/files/lynq-gpio-demo.cpp
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-gpio-demo/files/lynq-gpio-demo.cpp
@@ -4,6 +4,19 @@
 #include <errno.h>
 #include <include/lynq-gpio.h>
 
+static void printUsage(void)
+{
+    printf("-ds  [direction]                    --lynq_gpio_direction_set\n");
+    printf("-vs  [value]                        --lynq_gpio_value_set\n");
+    printf("-ps  [pullsel]                      --lynq_gpio_pullsel_set\n");
+    printf("-vg                                --lynq_gpio_value_get\n");
+    printf("-pg                                 --lynq_gpio_pullsel_get\n");
+    printf("-quit\n");
+    printf("Please input an cmd:");
+}
+
+
+
 
 int main(int argc,char** argv)
 {
@@ -12,124 +25,133 @@
     int direction;
     int value;
     int pullsel;
-    if(argc < 2)
+    char cmd[16];
+    char *cmd2;
+    char *cmd1;
+    
+    if(argc != 2)
     {
-        printf("wrong input format, please -h \n");
+        printf("wrong input format, please inout lynq-irq-demo <gpio>\n");
         return -1;
     }
-
-    if(strcmp(argv[1],"-h") == 0)
-    {
-        printf("        -h                                        --help\n");;
-        printf("        -ds  [gpio][direction]                    --lynq_gpio_direction_set\n");
-        printf("        -vs  [gpio][value]                        --lynq_gpio_value_set\n");
-        printf("        -ps  [gpio][pullsel]                      --lynq_gpio_pullsel_set\n");
-        printf("        -vg  [gpio]                               --lynq_gpio_value_get\n");
-        printf("        -pg  [gpio]                               --lynq_gpio_pullsel_get\n");
-        return 0;
-    }
-
-    gpio = atoi(argv[2]);
+    gpio = atoi(argv[1]);
+    printf("gpio is %d\n", gpio);
     ret = lynq_gpio_init(gpio, 0, 0, 0);
     if(ret != 0)
     {
         printf("lynq_gpio_init fail\n");
+        return -1;
     }
     else
     {
         printf("lynq_gpio_init success\n");
     }
 
-    if(strcmp(argv[1],"-ds") == 0)
+    while(1)
     {
-        if(argc < 3)
+        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,"-ds") == 0)
         {
-            printf("wrong input format, please -h \n");
-            return -1;
-        }
-        direction = atoi(argv[3]);
-        ret = lynq_gpio_direction_set(gpio, direction);
-        if(ret != 0)
-        {
-            printf("lynq_gpio_direction_set fail\n");
-        }
-        else
-        {
-            printf("lynq_gpio_direction_set success\n");
+            if(cmd2 == NULL)
+            {
+                printf("direction is NULL\n");
+                continue;
+            }
+            direction = atoi(cmd2);
+            ret = lynq_gpio_direction_set(gpio, direction);
+            if(ret != 0)
+            {
+                printf("lynq_gpio_direction_set fail\n");
+            }
+            else
+            {
+                printf("lynq_gpio_direction_set success\n");
+            }
         }
 
-    }
-    else if(strcmp(argv[1],"-vs") == 0)
-    {
-        if(argc < 3)
+        else if(strcmp(cmd1,"-vs") == 0)
         {
-            printf("wrong input format, please -h \n");
-            return -1;
+            if(cmd2 == NULL)
+            {
+                printf("wake_state is NULL\n");
+                continue;
+            }
+            value = atoi(cmd2);
+            ret = lynq_gpio_value_set(gpio, value);
+            if(ret < 0)
+            {
+                printf("lynq_gpio_value_set fail\n");
+            }
+            else
+            {
+                printf("lynq_gpio_value_set success\n");
+            }
         }
-        value = atoi(argv[3]);
-        ret = lynq_gpio_value_set(gpio, value);
-        if(ret < 0)
+
+        else if (strcmp(cmd1,"-ps") == 0)
         {
-            printf("lynq_gpio_value_set fail\n");
+            if(cmd2 == NULL)
+            {
+                printf("pullsel is NULL\n");
+                continue;
+            }
+            pullsel = atoi(cmd2);
+            ret = lynq_gpio_pullsel_set(gpio, pullsel);
+            if(ret != 0)
+            {
+                printf("lynq_gpio_pullsel_set fail\n");
+                printf("ret=%d\n", ret);
+            }
+            else
+            {
+                printf("lynq_gpio_pullsel_set success\n");
+            }
+        }
+        else if (strcmp(cmd1,"-vg\n") == 0)
+        {
+            ret = lynq_gpio_value_get(gpio);
+            if(ret < 0)
+            {
+                printf("lynq_gpio_value_get fail\n");
+                printf("ret=%d\n", ret);
+            }
+            else
+            {
+                printf("lynq_gpio_value_get success\n");
+                printf("ret=%d\n", ret);
+            }
+        }
+        else if(strcmp(cmd1,"-pg\n") == 0)
+        {
+            ret = lynq_gpio_pullsel_get(gpio);
+            if(ret < 0)
+            {
+                printf("lynq_gpio_pullsel_get fail\n");
+                printf("ret=%d\n", ret);
+            }
+            else
+            {
+                printf("lynq_gpio_pullsel_get success\n");
+                printf("ret=%d\n", ret);
+            }
+        }
+        else if(strcmp(cmd1,"-quit\n") == 0)
+        {
+            break;
         }
         else
         {
-            printf("lynq_gpio_value_set success\n");
+            printf("wrong input format\n");
         }
-    }
-    else if (strcmp(argv[1],"-ps") == 0)
-    {
-        if(argc < 3)
-        {
-            printf("wrong input format, please -h \n");
-            return -1;
-        }
-        pullsel = atoi(argv[3]);
-        ret = lynq_gpio_pullsel_set(gpio, pullsel);
-        if(ret != 0)
-        {
-            printf("lynq_gpio_pullsel_set fail\n");
-            printf("ret=%d\n", ret);
-        }
-        else
-        {
-            printf("lynq_gpio_pullsel_set success\n");
-        }
+
+
     }
 
-    else if (strcmp(argv[1],"-vg") == 0)
-    {
-        ret = lynq_gpio_value_get(gpio);
-        if(ret < 0)
-        {
-            printf("lynq_gpio_value_get fail\n");
-            printf("ret=%d\n", ret);
-        }
-        else
-        {
-            printf("lynq_gpio_value_get success\n");
-            printf("ret=%d\n", ret);
-        }
-    }
-    else if(strcmp(argv[1],"-pg") == 0)
-    {
-        ret = lynq_gpio_pullsel_get(gpio);
-        if(ret < 0)
-        {
-            printf("lynq_gpio_pullsel_get fail\n");
-            printf("ret=%d\n", ret);
-        }
-        else
-        {
-            printf("lynq_gpio_pullsel_get success\n");
-            printf("ret=%d\n", ret);
-        }
-    }
-    else
-    {
-        printf("wrong input format, please -h \n");
-        return -1;
-    }
 
     ret = lynq_gpio_deinit(gpio);
     if(ret != 0)