[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)