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