xref: /OK3568_Linux_fs/external/rk_pcba_test/pcba_minui/udisk_test.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun #include <stdio.h>
2*4882a593Smuzhiyun #include <stdlib.h>
3*4882a593Smuzhiyun #include <string.h>
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #include"common.h"
6*4882a593Smuzhiyun //#include"extra-functions.h"
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #include"udisk_test.h"
9*4882a593Smuzhiyun #include"test_case.h"
10*4882a593Smuzhiyun #include "language.h"
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #define SCAN_RESULT_LENGTH 128
13*4882a593Smuzhiyun #define SCAN_RESULT_FILE "/data/udisk_capacity.txt"
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun #define LOG(x...)   printf("[UDISK_TEST] "x)
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun 
udisk_test(void * argv)18*4882a593Smuzhiyun void * udisk_test(void * argv)
19*4882a593Smuzhiyun {
20*4882a593Smuzhiyun 	struct testcase_info *tc_info = (struct testcase_info*)argv;
21*4882a593Smuzhiyun 	int ret,y;
22*4882a593Smuzhiyun 	double cap;
23*4882a593Smuzhiyun 	FILE *fp;
24*4882a593Smuzhiyun 	char results[SCAN_RESULT_LENGTH];
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun 	/*remind ddr test*/
27*4882a593Smuzhiyun 	if(tc_info->y <= 0)
28*4882a593Smuzhiyun 		tc_info->y  = get_cur_print_y();
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun 	y = tc_info->y;
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun #if 0   //Android pcba test
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun #ifdef SOFIA3GR_PCBA
35*4882a593Smuzhiyun 	ui_print_xy_rgba(0,y,255,255,0,255,"%s:[%s..] \n",PCBA_UCARD,PCBA_TESTING);
36*4882a593Smuzhiyun #else
37*4882a593Smuzhiyun 	ui_print_xy_rgba(0,y,255,255,0,255,"%s \n",PCBA_UCARD);
38*4882a593Smuzhiyun #endif
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun 	#ifdef SOFIA3GR_PCBA
42*4882a593Smuzhiyun 		ret =  __system("busybox chmod 777 /system/bin/udisktester.sh");
43*4882a593Smuzhiyun 	#else
44*4882a593Smuzhiyun 		ret =  __system("busybox chmod 777 /res/udisktester.sh");
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun 	if(ret)
47*4882a593Smuzhiyun 		printf("chmod udisktester.sh failed :%d\n",ret);
48*4882a593Smuzhiyun 	#endif
49*4882a593Smuzhiyun 
50*4882a593Smuzhiyun 	#ifdef SOFIA3GR_PCBA
51*4882a593Smuzhiyun 		//ret = __system("/system/bin/udisktester.sh");
52*4882a593Smuzhiyun 			int testCounts =0;
53*4882a593Smuzhiyun 			while(1)
54*4882a593Smuzhiyun 			{
55*4882a593Smuzhiyun 				fp = NULL;
56*4882a593Smuzhiyun 				LOG("%s::wait for insert udisk card...\n", __FUNCTION__);
57*4882a593Smuzhiyun 				__system("/system/bin/udisktester.sh");
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun 				fp = fopen(SCAN_RESULT_FILE, "r");
60*4882a593Smuzhiyun 				if(fp != NULL)
61*4882a593Smuzhiyun 				{
62*4882a593Smuzhiyun 					LOG("%s line=%d find result file! \n", __FUNCTION__, __LINE__);
63*4882a593Smuzhiyun 					break;
64*4882a593Smuzhiyun 				}
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun 				LOG("%s line=%d can't find result file! continue ... \n", __FUNCTION__, __LINE__);
67*4882a593Smuzhiyun 
68*4882a593Smuzhiyun 				if(testCounts++ > 3)
69*4882a593Smuzhiyun 				{
70*4882a593Smuzhiyun 					LOG("can not open %s.\n", SCAN_RESULT_FILE);
71*4882a593Smuzhiyun 					ui_print_xy_rgba(0,y,255,0,0,255,"%s:[%s]\n",PCBA_UCARD,PCBA_FAILED);
72*4882a593Smuzhiyun 					tc_info->result = -1;
73*4882a593Smuzhiyun 					return argv;
74*4882a593Smuzhiyun 				}
75*4882a593Smuzhiyun 				sleep(1);
76*4882a593Smuzhiyun 			}
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun 			//disable by wjh
79*4882a593Smuzhiyun 			/*
80*4882a593Smuzhiyun 			memset(results, 0, SCAN_RESULT_LENGTH);
81*4882a593Smuzhiyun 			//fread(results, 1, SCAN_RESULT_LENGTH, fp);
82*4882a593Smuzhiyun 			fgets(results,50,fp);
83*4882a593Smuzhiyun 			//fgets(wlan_msg->ssid,50,fp); //we assume tha a AP's name is less of 50 charactes
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun 			//LOG("%s.\n", results);
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun 			cap = strtod(results,NULL);
88*4882a593Smuzhiyun 			if(cap) {
89*4882a593Smuzhiyun 				ui_print_xy_rgba(0,y,0,255,0,255,"%s:[%s] { %2fG } \n",PCBA_UCARD,PCBA_SECCESS,cap*1.0);
90*4882a593Smuzhiyun 				tc_info->result = 0;
91*4882a593Smuzhiyun 			}*/
92*4882a593Smuzhiyun 
93*4882a593Smuzhiyun 			ui_print_xy_rgba(0,y,0,255,0,255,"%s:[%s]\n",PCBA_UCARD,PCBA_SECCESS);
94*4882a593Smuzhiyun 				tc_info->result = 0;
95*4882a593Smuzhiyun 		    fclose(fp);
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun 			return argv;
98*4882a593Smuzhiyun 	#else
99*4882a593Smuzhiyun 		ret = __system("/res/udisktester.sh");
100*4882a593Smuzhiyun 	if(ret < 0) {
101*4882a593Smuzhiyun 		printf("udisk test failed.\n");
102*4882a593Smuzhiyun 		ui_print_xy_rgba(0,y,255,0,0,255,"%s:[%s]\n",PCBA_UCARD,PCBA_FAILED);
103*4882a593Smuzhiyun 		tc_info->result = -1;
104*4882a593Smuzhiyun 		return argv;
105*4882a593Smuzhiyun 	}
106*4882a593Smuzhiyun 	#endif
107*4882a593Smuzhiyun 
108*4882a593Smuzhiyun 
109*4882a593Smuzhiyun 	fp = fopen(SCAN_RESULT_FILE, "r");
110*4882a593Smuzhiyun 	if(fp == NULL) {
111*4882a593Smuzhiyun 		printf("can not open %s.\n", SCAN_RESULT_FILE);
112*4882a593Smuzhiyun 		ui_print_xy_rgba(0,y,255,0,0,255,"%s:[%s]\n",PCBA_UCARD,PCBA_FAILED);
113*4882a593Smuzhiyun 		tc_info->result = -1;
114*4882a593Smuzhiyun 		return argv;
115*4882a593Smuzhiyun 	}
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun   	memset(results, 0, SCAN_RESULT_LENGTH);
118*4882a593Smuzhiyun 	fgets(results,50,fp);
119*4882a593Smuzhiyun 
120*4882a593Smuzhiyun 	cap = strtod(results,NULL);
121*4882a593Smuzhiyun     printf("capacity : %s\n", results);
122*4882a593Smuzhiyun 	if(cap > 0) {
123*4882a593Smuzhiyun 		ui_print_xy_rgba(0,y,0,255,0,255,"%s:[%s] { %2fG }\n",PCBA_UCARD,PCBA_SECCESS,cap*1.0/1024/1024);
124*4882a593Smuzhiyun 		tc_info->result = 0;
125*4882a593Smuzhiyun 	}
126*4882a593Smuzhiyun     else {
127*4882a593Smuzhiyun         ui_print_xy_rgba(0,y,0,0,255,255,"%s:[%s]\n",PCBA_UCARD,PCBA_FAILED);
128*4882a593Smuzhiyun 		tc_info->result = -1;
129*4882a593Smuzhiyun     }
130*4882a593Smuzhiyun 
131*4882a593Smuzhiyun         fclose(fp);
132*4882a593Smuzhiyun 
133*4882a593Smuzhiyun #else   //Linux pcba test
134*4882a593Smuzhiyun 
135*4882a593Smuzhiyun     int rst;
136*4882a593Smuzhiyun     char usbhost_buf[128]= {0};
137*4882a593Smuzhiyun     char usbhost_size[32] = {0};
138*4882a593Smuzhiyun     char result_filename[100] = {0};
139*4882a593Smuzhiyun 
140*4882a593Smuzhiyun     ui_print_xy_rgba(0,y,255,255,0,255,"%s:[wait %s..] : Pls plug usb host devices.\n",PCBA_UCARD,PCBA_TESTING);
141*4882a593Smuzhiyun 
142*4882a593Smuzhiyun     LOG("============= start udisk test==============\n");
143*4882a593Smuzhiyun     rst = run_test_item_cmd("echo_auto_test echo_usbhost_test");
144*4882a593Smuzhiyun 
145*4882a593Smuzhiyun     if(rst == 0) {
146*4882a593Smuzhiyun         snprintf(result_filename, sizeof(result_filename),
147*4882a593Smuzhiyun                 "%s/echo_usbhost_test_result", "/tmp");
148*4882a593Smuzhiyun         ret = parse_test_result(result_filename, "usbhost_test", usbhost_buf);
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun     }else  {
151*4882a593Smuzhiyun         return NULL;
152*4882a593Smuzhiyun     }
153*4882a593Smuzhiyun 
154*4882a593Smuzhiyun     if(ret == 0) {
155*4882a593Smuzhiyun         if(strstr(usbhost_buf, "capacity") != NULL) {
156*4882a593Smuzhiyun             char *result = NULL;
157*4882a593Smuzhiyun             char delims[] = " ";
158*4882a593Smuzhiyun 
159*4882a593Smuzhiyun             memset(usbhost_size, 0, sizeof(usbhost_size));
160*4882a593Smuzhiyun             result = strtok(usbhost_buf, delims );
161*4882a593Smuzhiyun             while( result != NULL ) {
162*4882a593Smuzhiyun                 LOG("result is \"%s\"\n", result);
163*4882a593Smuzhiyun 
164*4882a593Smuzhiyun                 if(strstr(result,"capacity")!= NULL){
165*4882a593Smuzhiyun                     strcat(usbhost_size, result);
166*4882a593Smuzhiyun                 }
167*4882a593Smuzhiyun 
168*4882a593Smuzhiyun                 result = strtok( NULL, delims );
169*4882a593Smuzhiyun             }
170*4882a593Smuzhiyun         }
171*4882a593Smuzhiyun         ui_print_xy_rgba(0, y, 0, 255, 0, 255, "%s:[%s] { %s }\n", PCBA_UCARD,
172*4882a593Smuzhiyun                  PCBA_SECCESS, usbhost_size);
173*4882a593Smuzhiyun         tc_info->result = 0;
174*4882a593Smuzhiyun         LOG("usbhost_test success.\n");
175*4882a593Smuzhiyun     } else {
176*4882a593Smuzhiyun         ui_print_xy_rgba(0, y, 225, 0, 0, 255, "%s:[%s]\n", PCBA_UCARD,
177*4882a593Smuzhiyun                  PCBA_FAILED, usbhost_size);
178*4882a593Smuzhiyun         tc_info->result = -1;
179*4882a593Smuzhiyun         LOG("usbhost_test failed.\n");
180*4882a593Smuzhiyun     }
181*4882a593Smuzhiyun 
182*4882a593Smuzhiyun #endif
183*4882a593Smuzhiyun 	return argv;
184*4882a593Smuzhiyun 
185*4882a593Smuzhiyun }
186