修复508X6gpiotest
Change-Id: I445a4ab2734161b22a30ca981ad645015d7501f8
diff --git a/mbtk/libmbtk_factory/mbtk_gpio.c b/mbtk/libmbtk_factory/mbtk_gpio.c
index b3cc748..e2f0cd2 100755
--- a/mbtk/libmbtk_factory/mbtk_gpio.c
+++ b/mbtk/libmbtk_factory/mbtk_gpio.c
@@ -1199,21 +1199,21 @@
#elif defined(MBTK_PROJECT_L508_X6)
-int gpio_register_test_out_0(int port, int value)
+int gpio_register_test_out_0(int port)
{
int ret;
int i;
int valueh = 0;
int valuel = 1;
- printf("Gpio port [%d] test start!\n", port);
+ //printf("Gpio port [%d] test start!\n", port);
ret = gpio_register_set_func_0(port); //设功能为GPIO
if(ret){
printf("gpio_port can't support!\n");
return -1;
}
gpio_register_set_direction(port, 1); //设方向为输出
- ret = gpio_register_get_value(port);
+ //ret = gpio_register_get_value(port);
//printf("gpio default value is : %d.\n", ret);
@@ -1227,8 +1227,8 @@
break;
}
}
- //usleep(10000);
- for(i = 0; i <= 35; i++){
+ usleep(5000);
+ for(i = 0; i <= 10; i++){
ret = mbtk_gpio_adc(0);
usleep(3000);
if(1 == ret){
@@ -1254,15 +1254,15 @@
break;
}
}
- //usleep(10000);
- for(i = 0; i <= 35; i++){
+ usleep(5000);
+ for(i = 0; i <= 10; i++){
ret = mbtk_gpio_adc(0);
usleep(3000);
if(0 == ret){
break;
}
}
- //printf("******gpio should is low: %d.******\n", ret);
+ printf("******gpio should is low: %d.******\n", ret);
if(0 != ret){
ret=-1;
goto exit;
@@ -1270,26 +1270,26 @@
exit:
gpio_register_set_value(port, 0);
- gpio_register_set_direction(port, 0); //设方向为输入
+ //gpio_register_set_direction(port, 0); //设方向为输入
return ret;
}
-int gpio_register_test_out_1(int port, int value)
+int gpio_register_test_out_1(int port)
{
int ret;
int i;
int valueh = 0;
int valuel = 1;
- printf("Gpio port [%d] test start!\n", port);
+ //printf("Gpio port [%d] test start!\n", port);
ret = gpio_register_set_func_0(port); //设功能为GPIO
if(ret){
printf("gpio_port can't support!\n");
return -1;
}
gpio_register_set_direction(port, 1); //设方向为输出
- ret = gpio_register_get_value(port);
- printf("gpio default value is : %d.\n", ret);
+ //ret = gpio_register_get_value(port);
+ //printf("gpio default value is : %d.\n", ret);
//[High]
@@ -1302,8 +1302,8 @@
break;
}
}
- //usleep(10000);
- for(i = 0; i <= 35; i++){
+ usleep(5000);
+ for(i = 0; i <= 10; i++){
ret = mbtk_gpio_adc(1);
usleep(3000);
if(1 == ret){
@@ -1328,8 +1328,8 @@
break;
}
}
- //usleep(10000);
- for(i = 0; i <= 35; i++){
+ usleep(10000);
+ for(i = 0; i <= 10; i++){
ret = mbtk_gpio_adc(1);
usleep(3000);
if(0 == ret){
@@ -1344,12 +1344,12 @@
exit:
gpio_register_set_value(port, 0);
- gpio_register_set_direction(port, 0); //设方向为输入
+ //error: no need set direction in gpio_register_set_direction(port, 0);
return ret;
}
-int gpio_register_test_out_2(int port_in, int port_out, int value)
+int gpio_register_test_out_2(int port_in, int port_out)
{
int ret_in;
int ret_out;
@@ -1357,7 +1357,7 @@
int valueh = 0;
int valuel = 1;
- printf("Gpio port [%d] test start!\n", port_out);
+ //printf("Gpio port [%d] test start!\n", port_out);
ret_in = gpio_register_set_func_0(port_in); //设功能为GPIO
ret_out = gpio_register_set_func_0(port_out);
if((ret_in+ret_out)){
@@ -1366,8 +1366,8 @@
}
gpio_register_set_direction(port_out, 1); //设方向为输出
gpio_register_set_direction(port_in, 0); //设方向为输入
- ret_in = gpio_register_get_value(port_in);
- printf("gpio default value is : %d.\n", ret_in);
+ //ret_in = gpio_register_get_value(port_in);
+ //printf("gpio default value is : %d.\n", ret_in);
//[High]
@@ -1375,14 +1375,14 @@
gpio_register_set_value(port_out, 1);
usleep(50);
valueh = gpio_register_get_value(port_out);
- printf("set high? %d\n",valueh);
+ //printf("set high? %d\n",valueh);
if(1 == valueh){
break;
}
}
-
- for(i = 0; i <= 35; i++){
+ usleep(5000);
+ for(i = 0; i <= 10; i++){
ret_in = gpio_register_get_value(port_in);
usleep(3000);
if(1 == ret_in){
@@ -1394,7 +1394,7 @@
printf("get high failed! \n");
goto exit;
}
- printf("******gpio should is high: %d.******\n", ret_in);
+ //printf("******gpio should is high: %d.******\n", ret_in);
//[Low]
@@ -1403,20 +1403,21 @@
gpio_register_set_value(port_out, 0); //输出低
usleep(50);
valuel = gpio_register_get_value(port_out);
- printf("set low? %d\n",valuel);
+ //printf("set low? %d\n",valuel);
if(0 == valuel){
break;
}
}
- for(i = 0; i <= 35; i++){
+ usleep(5000);
+ for(i = 0; i <= 10; i++){
ret_in = gpio_register_get_value(port_in);
usleep(3000);
if(0 == ret_in){
break;
}
}
- printf("******gpio should is low: %d.******\n", ret_in);
+ //printf("******gpio should is low: %d.******\n", ret_in);
if(0 != ret_in){
ret_in=-1;
printf("get low failed! \n");
@@ -1425,28 +1426,24 @@
exit:
gpio_register_set_value(port_out, 0);
- gpio_register_set_direction(port_out, 0); //设方向为输入
+ //gpio_register_set_direction(port_out, 0);
return ret_in;
}
-void gpio_test_init_test_gpio_mode(void )
+static int gpio_test_init_test_gpio_mode(void )
{
-
-
- int test_gpio_1[] = {
- 40, 33, 34, 39, 99,
- 56, 58, 55, 57, 48, 59, 123, 122, 20, 53,
- 19, 49, 50, 32 ,31, 6, 11, 10,
- 88, 87, 86, 85, 84, 89,
- 90, 46, 127, 117, 119,
+ const int test_gpio_1[] = {
+ 40, 33, 34, 39, 99, 10, 11, 88, 87, 86, 85, 84, 89,
+ 56, 55, 58, 57, 48, 59, 10, 90, 20, 53, 19, 46, 127,
+ 49, 50, 32, 31, 6, 7
};
- int test_gpio_0[] = {
- 7, 8, 27, 28, 26, 25, 15, 1, 3, 0,
+ const int test_gpio_0[] = {
+ 8, 27, 28, 26, 25, 15, 1, 3, 0,
37, 38,35, 36, 42, 41, 21, 22, 24, 23,
54, 125, 18, 13, 14, 17, 16, 5, 4, 2, 12,
- 44, 45, 47
+ 43, 44, 45, 47, 117, 119
};
int i, j, ret_0, ret_1, total_1, total_0, n = 0;
total_0 = (sizeof(test_gpio_0)/sizeof(int));
@@ -1460,82 +1457,138 @@
//printf("[init]gpio_test_init_test_gpio_mode FINISH\n");
/* [1 all gpio set to low] */
for(j = 0; j < 6 ; j++){
+ for(i = 0; i < total_0; i++){
+ gpio_register_set_func_0(test_gpio_0[i]);
+ gpio_register_set_direction(test_gpio_0[i], 1);
+ gpio_register_set_value(test_gpio_0[i], 0);
+ }
for(i = 0; i < total_1; i++){
gpio_register_set_func_0(test_gpio_1[i]);
gpio_register_set_direction(test_gpio_1[i], 1);
gpio_register_set_value(test_gpio_1[i], 0);
}
- for(i = 0; i < total_0; i++){
- gpio_register_set_func_0(test_gpio_0[i]);
- gpio_register_set_direction(test_gpio_0[i], 1);
- gpio_register_set_value(test_gpio_0[i], 0);
+
+ usleep(50000);
+ for(i = 0; i <= 10; i++){
+ ret_0 = mbtk_gpio_adc(0);
+ usleep(3000);
+ ret_1 = mbtk_gpio_adc(1);
+
+ if(ret_0 ==0 && ret_1 == 0){
+ break;
+ }
}
- //usleep(10000);
-
- for(i = 0; i <= 35; i++){
- ret_0 = mbtk_gpio_adc(0);
- usleep(3000);
- ret_1 = mbtk_gpio_adc(1);
-
- if(0 == (ret_0 + ret_1)){
- break;
- }
- }
- printf("pre set ADC: %d, times: %d\n",(ret_0 + ret_1), j);
- if(0 == (ret_0 + ret_1)){
- break;
- }
+ printf("pre set ADC0: %d, ADC1: %d, times: %d\n", ret_0, ret_1, j);
+ if(ret_0 ==0 && ret_1 == 0){
+ break;
+ }
}
- if(0 != (ret_0 + ret_1)){
+ if(!(ret_0 ==0 && ret_1 == 0)){
printf("Fail, please retest");
return -1;
}
gpio_register_set_value(119, 1);
gpio_register_set_value(117, 1);
-
+ return 0;
}
int mbtk_at_gpio(bool gnss_support, void* arg)
{
-
- printf("Start test gpio V1.0\n");
- int test_gpio_1[] = {
- 40, 33, 34, 39, 99,
- 56, 58, 55, 57, 48, 59, 20, 53,
- 19, 49, 50, 32 ,31, 6, 11, 10,7,
- 90, 46, 127,
- 88, 87, 86, 85, 84, 89,
+ const int test_gpio_0[] = {
+ 35, 93,
+ 36, 94,
+ 42, 97,
+ 41, 98,
+ 21, 100,
+ 22, 101,
+ 24, 102,
+ 23, 103,
+ 54, 107,
+ 125, 108,
+ 18, 109,
+ 13, 114,
+ 14, 115,
+ 17, 116,
+ 16, 117,
+ 5, 119,
+ 4, 127,
+ 2, 120,
+ 12, 126,
+ 0, 90,
+ 27, 73,
+ 28, 74,
+ 26, 75,
+ 25, 76,
+ 15, 86,
+ 1, 88,
+ 3, 89,
+ 37, 91,
+ 38, 92,
+ 8, 72
};
- int test_gpio_0[] = {
- 35, 36, 42, 41, 21, 22, 24, 23,
- 54, 125, 18, 13, 14, 17, 16, 5, 4, 2, 12,0,
- 27, 28, 26, 25, 15, 1, 3,
- 37, 38,8
+ const int test_gpio_1[] = {
+ 40, 6,
+ 33, 7,
+ 34, 8,
+ 39, 9,
+ 99, 16,
+ 56, 27,
+ 58, 29,
+ 55, 28,
+ 57, 30,
+ 48, 31,
+ 59, 32,
+ 20, 49,
+ 53, 50,
+ 19, 51,
+ 49, 55,
+ 50, 56,
+ 32, 66,
+ 31, 67,
+ 6, 68,
+ 11, 83,
+ 10, 84,
+ 7, 69,
+ 90, 48,
+ 46, 52,
+ 127, 54,
+ 88, 21,
+ 87, 22,
+ 86, 23,
+ 85, 24,
+ 84, 25,
+ 89, 26,
};
- int test_gpio_2[] = { //GPS组
- 43,47,
- //45,44
+
+ const int test_gpio_2[] = { //GPS组
+ 43, 53,
+ 47, 95,
+ 45, 71,
+ 44, 70,
};
int i, j, ret_0, ret_1, ret_2, total_1, total_0, total_2, n = 0;
int *fail_io = (int *)arg;
- total_0 = (sizeof(test_gpio_0)/sizeof(int));
+ total_0 = (sizeof(test_gpio_0)/sizeof(int)); //GPIO+PIN
total_1 = (sizeof(test_gpio_1)/sizeof(int));
total_2 = (sizeof(test_gpio_2)/sizeof(int));
-
+ if(gnss_support == 1){
+ total_2 = total_2 - 4;
+ }
+ printf("L508-X6 Start test gpio V1.1\n");
/* [1 all gpio Init] */
gpio_test_init_test_gpio_mode();
/* [2 GPIOTEST] */
//Test 0
- for(i = 0; i < total_0; i++){
- ret_0 = gpio_register_test_out_0(test_gpio_0[i], 0);
+ for(i = 0; i < total_0; i=i+2){
+ ret_0 = gpio_register_test_out_0(test_gpio_0[i]);
if(-1 == ret_0){
printf("!!!!!!!!!!!!gpio [%d] test failed!!!!!!!!!!!!\n", test_gpio_0[i]);
- fail_io[n] = test_gpio_0[i];
+ fail_io[n] = test_gpio_0[i+1];
n++;
}else{
//printf("############gpio [%d] test success############\n", test_gpio_0[i]);
@@ -1543,11 +1596,11 @@
}
//Test 1
- for(i = 0; i < total_1; i++){
- ret_1 = gpio_register_test_out_1(test_gpio_1[i], 0);
+ for(i = 0; i < total_1; i=i+2){
+ ret_1 = gpio_register_test_out_1(test_gpio_1[i]);
if(-1 == ret_1){
printf("!!!!!!!!!!!!gpio [%d] test failed!!!!!!!!!!!!\n", test_gpio_1[i]);
- fail_io[n] = test_gpio_1[i];
+ fail_io[n] = test_gpio_1[i+1];
n++;
}else{
//printf("############gpio [%d] test success############\n", test_gpio_1[i]);
@@ -1555,14 +1608,14 @@
}
//Test 2
- for(i = 0; i < total_2; i=i+2){
- ret_2 = gpio_register_test_out_2(test_gpio_2[i], test_gpio_2[i+1], 0);
+ for(i = 0; i < total_2; i=i+4){
+ ret_2 = gpio_register_test_out_2(test_gpio_2[i], test_gpio_2[i+2]);
if(-1 == ret_2){
- //printf("!!!!!!!!!!!!gpio [%d] test failed!!!!!!!!!!!!\n", test_gpio_2[i+1]);
- fail_io[n] = test_gpio_2[i];
+ printf("!!!!!!!!!!!!gpio [%d] test failed!!!!!!!!!!!!\n", test_gpio_2[i+2]);
+ fail_io[n] = test_gpio_2[i+3];
n++;
}else{
- printf("############gpio [%d] test success############\n", test_gpio_2[i+1]);
+ //printf("############gpio [%d] test success############\n", test_gpio_2[i+2]);
}
}