gpio: add L508_X6 gpio factory test
Change-Id: Ic33e5ee37eebfc120a39c85b6b16a2d98a516cfc
diff --git a/mbtk/mbtk_lib/src/mbtk_gpio.c b/mbtk/mbtk_lib/src/mbtk_gpio.c
index bd641e1..a389252 100755
--- a/mbtk/mbtk_lib/src/mbtk_gpio.c
+++ b/mbtk/mbtk_lib/src/mbtk_gpio.c
@@ -138,12 +138,12 @@
};
-static int mbtk_gpio_adc()
+static int mbtk_gpio_adc(channel)
{
int ret = 0;
- ret = mbtk_adc_get(0);
- //printf("ADC_value =%d\n", ret);
+ ret = mbtk_adc_get(channel);
+ //printf("ADC_%d_value =%d\n", channel, ret);
if(ret >= 500 ){
ret = 1;
}
@@ -483,7 +483,7 @@
}
//usleep(10000);
for(i = 0; i <= 35; i++){
- ret = mbtk_gpio_adc();
+ ret = mbtk_gpio_adc(0);
usleep(3000);
if(1 == ret){
break;
@@ -509,7 +509,7 @@
}
//usleep(10000);
for(i = 0; i <= 35; i++){
- ret = mbtk_gpio_adc();
+ ret = mbtk_gpio_adc(0);
usleep(3000);
if(0 == ret){
break;
@@ -549,7 +549,7 @@
}
//usleep(10000);
for(i = 0; i <= 35; i++){
- ret = mbtk_gpio_adc();
+ ret = mbtk_gpio_adc(0);
usleep(3000);
if(0 == ret){
break;
@@ -930,6 +930,280 @@
return test_fail_count;
}
+#elif defined(MBTK_PROJECT_L508_X6)
+
+
+int gpio_register_test_out_0(int port, int value)
+{
+ int ret;
+ int i;
+ int valueh = 0;
+ int valuel = 1;
+
+ 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);
+
+
+ //[High]
+ for(i = 0; i <= 10; i++){
+ gpio_register_set_value(port, 1);
+ usleep(50);
+ valueh = gpio_register_get_value(port);
+ //printf("set high? %d\n",valueh);
+ if(1 == valueh){
+ break;
+ }
+ }
+ //usleep(10000);
+ for(i = 0; i <= 35; i++){
+ ret = mbtk_gpio_adc(0);
+ usleep(3000);
+ if(1 == ret){
+ break;
+ }
+ }
+ //printf("******gpio should is high: %d.******\n", ret);
+ if(1 != ret){
+ ret=-1;
+ goto exit;
+ }
+
+
+
+ //[Low]
+ usleep(200);
+ for(i = 0; i <= 10; i++){
+ gpio_register_set_value(port, 0); //输出低
+ usleep(50);
+ valuel = gpio_register_get_value(port);
+ //printf("set low? %d\n",valuel);
+ if(0 == valuel){
+ break;
+ }
+ }
+ //usleep(10000);
+ for(i = 0; i <= 35; i++){
+ ret = mbtk_gpio_adc(0);
+ usleep(3000);
+ if(0 == ret){
+ break;
+ }
+ }
+ //printf("******gpio should is low: %d.******\n", ret);
+ if(0 != ret){
+ ret=-1;
+ goto exit;
+ }
+
+exit:
+ gpio_register_set_value(port, 0);
+ gpio_register_set_direction(port, 0); //设方向为输入
+ return ret;
+}
+
+int gpio_register_test_out_1(int port, int value)
+{
+ int ret;
+ int i;
+ int valueh = 0;
+ int valuel = 1;
+
+ 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);
+
+
+ //[High]
+ for(i = 0; i <= 10; i++){
+ gpio_register_set_value(port, 1);
+ usleep(50);
+ valueh = gpio_register_get_value(port);
+ //printf("set high? %d\n",valueh);
+ if(1 == valueh){
+ break;
+ }
+ }
+ //usleep(10000);
+ for(i = 0; i <= 35; i++){
+ ret = mbtk_gpio_adc(1);
+ usleep(3000);
+ if(1 == ret){
+ break;
+ }
+ }
+ if(1 != ret){
+ ret=-1;
+ goto exit;
+ }
+ //printf("******gpio should is high: %d.******\n", ret);
+
+
+ //[Low]
+ usleep(200);
+ for(i = 0; i <= 10; i++){
+ gpio_register_set_value(port, 0); //输出低
+ usleep(50);
+ valuel = gpio_register_get_value(port);
+ //printf("set low? %d\n",valuel);
+ if(0 == valuel){
+ break;
+ }
+ }
+ //usleep(10000);
+ for(i = 0; i <= 35; i++){
+ ret = mbtk_gpio_adc(1);
+ usleep(3000);
+ if(0 == ret){
+ break;
+ }
+ }
+ //printf("******gpio should is low: %d.******\n", ret);
+ if(0 != ret){
+ ret=-1;
+ goto exit;
+ }
+
+exit:
+ //gpio_register_set_direction(port, 0); //设方向为输入
+ return ret;
+}
+
+void 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, 43, 46, 127
+ };
+
+ int test_gpio_0[] = {
+ 7, 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
+ };
+ int i, j, ret_0, ret_1, total_1, total_0, n = 0;
+ total_0 = (sizeof(test_gpio_0)/sizeof(int));
+ total_1 = (sizeof(test_gpio_1)/sizeof(int));
+
+ system("i2cset -y -f 2 0x32 0x0d 0x00");
+ usleep(10000);
+
+ //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_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(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;
+ }
+ }
+ if(0 != (ret_0 + ret_1)){
+ printf("Fail, please retest");
+ return -1;
+ }
+
+
+}
+
+int mbtk_at_gpio(void* arg)
+{
+ //123,122,7,8,27,28,26,25,15,1,3,0 error
+ printf("Start test gpio V0.3\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,
+ /* 88, 87, 86, 85, 84, 89, SD卡*/
+ 90, 43, 46, 127
+ /* 123, 122 这两没接*/
+ };
+
+ 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
+ /* 44, 45, 47 UART_GPS*/
+ };
+
+ int i, j, ret_0, ret_1, total_1, total_0, n = 0;
+ int *fail_io = (int *)arg;
+ total_0 = (sizeof(test_gpio_0)/sizeof(int));
+ total_1 = (sizeof(test_gpio_1)/sizeof(int));
+
+ /* [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);
+ if(-1 == ret_0){
+ printf("!!!!!!!!!!!!gpio [%d] test failed!!!!!!!!!!!!\n", test_gpio_0[i]);
+ fail_io[n] = test_gpio_0[i];
+ n++;
+ }else{
+ //printf("############gpio [%d] test success############\n", test_gpio_0[i]);
+ }
+ }
+
+ //Test 1
+ for(i = 0; i < total_1; i++){
+ ret_1 = gpio_register_test_out_1(test_gpio_1[i], 0);
+ if(-1 == ret_1){
+ printf("!!!!!!!!!!!!gpio [%d] test failed!!!!!!!!!!!!\n", test_gpio_1[i]);
+ fail_io[n] = test_gpio_1[i];
+ n++;
+ }else{
+ //printf("############gpio [%d] test success############\n", test_gpio_1[i]);
+ }
+ }
+ mbtk_adc_close();
+ return n;
+}
+
+
#else