xref: /OK3568_Linux_fs/external/rk_pcba_test/pcba_minui/sdcard_test.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 //#include "extra-functions.h"
5 #include "common.h"
6 #include "sdcard_test.h"
7 #include "test_case.h"
8 #include "language.h"
9 
10 #define LOG_TAG	"PCBA [sdcard]: "
11 #define LOG(x...)	printf(LOG_TAG x)
12 
13 #define SCAN_RESULT_LENGTH	    128
14 #define SCAN_RESULT_FILE	    "/data/sd_capacity"
15 #define SD_INSERT_RESULT_FILE	"/data/sd_insert_info"
16 
sdcard_test(void * argv)17 void *sdcard_test(void *argv)
18 {
19 	struct testcase_info *tc_info = (struct testcase_info *)argv;
20 	int ret, y;
21 	double cap;
22 	FILE *fp;
23 	char results[SCAN_RESULT_LENGTH];
24 
25 	/* remind sdcard test */
26 	if (tc_info->y <= 0)
27 		tc_info->y = get_cur_print_y();
28 	y = tc_info->y;
29 
30 	LOG("start sdcard test.\n");
31 
32 	//ui_print_xy_rgba(0, y, 255, 255, 0, 255, "%s\n", PCBA_SDCARD);
33 	ui_print_xy_rgba(0, y, 255, 255, 0, 255, "%s:[%s..]\n", PCBA_RTC,
34 			 PCBA_TESTING);
35 
36 #if 0
37 #if defined(RK3288_PCBA)
38 	ret = __system("busybox chmod 777 /res/emmctester.sh");
39 #else
40 	ret = __system("busybox chmod 777 /res/mmctester.sh");
41 #endif
42 
43 	if (ret)
44 		LOG("chmod mmctester.sh failed :%d\n", ret);
45 
46 #if defined(RK3288_PCBA)
47 	ret = __system("/res/emmctester.sh");
48 #else
49 	ret = __system("/res/mmctester.sh");
50 #endif
51 
52 	if (ret < 0) {
53 		LOG("mmc test failed.\n");
54 		ui_print_xy_rgba(0, y, 255, 0, 0, 255, "%s:[%s]\n", PCBA_SDCARD,
55 				 PCBA_FAILED);
56 		tc_info->result = -1;
57 		return argv;
58 	}
59 
60 	fp = fopen(SCAN_RESULT_FILE, "r");
61 	if (fp == NULL) {
62 		LOG("can not open %s.\n", SCAN_RESULT_FILE);
63 		ui_print_xy_rgba(0, y, 255, 0, 0, 255, "%s:[%s]\n", PCBA_SDCARD,
64 				 PCBA_FAILED);
65 		tc_info->result = -1;
66 		return argv;
67 	}
68 
69 	memset(results, 0, SCAN_RESULT_LENGTH);
70 	fgets(results, 50, fp);
71 
72 	cap = strtod(results, NULL);
73 	if (cap) {
74 		ui_print_xy_rgba(0, y, 0, 255, 0, 255, "%s:[%s] { %2fG }\n",
75 				 PCBA_SDCARD, PCBA_SECCESS,
76 				 cap * 1.0 / 1024 / 1024);
77 		tc_info->result = 0;
78 	}
79 	fclose(fp);
80 #else
81 
82     int rst;
83     char sd_buf[128]= {0};
84     char sd_size[32] = {0};
85     char result_filename[100] = {0};
86 
87     LOG("============= start sdcard test==============\n");
88     rst = run_test_item_cmd("echo_auto_test echo_sdcard_test");
89 
90     if(rst == 0) {
91         snprintf(result_filename, sizeof(result_filename),
92 		        "%s/echo_sdcard_test_result", "/tmp");
93         ret = parse_test_result(result_filename, "sdcard_test", sd_buf);
94 
95     }else  {
96         //rst < 0
97         ui_print_xy_rgba(0, y, 225, 0, 0, 255, "%s:[%s] { %s }\n", PCBA_SDCARD,
98                  PCBA_FAILED, PCBA_SDCARD_NOINSERT);
99         tc_info->result = -1;
100         LOG("sdcard_test failed.\n");
101         return NULL;
102     }
103 
104     if(ret == 0) {
105         if(strstr(sd_buf, "capacity") != NULL) {
106             char *result = NULL;
107             char delims[] = " ";
108 
109             memset(sd_size, 0, sizeof(sd_size));
110             result = strtok(sd_buf, delims );
111             while( result != NULL ) {
112                 LOG("result is \"%s\"\n", result);
113 
114                 if(strstr(result,"capacity")!= NULL){
115                     strcat(sd_size, result);
116                 }
117 
118                 result = strtok( NULL, delims );
119             }
120         }
121         ui_print_xy_rgba(0, y, 0, 255, 0, 255, "%s:[%s] { %s }\n", PCBA_SDCARD,
122                  PCBA_SECCESS, sd_size);
123         tc_info->result = 0;
124         LOG("sdcard_test success.\n");
125     } else {
126         ui_print_xy_rgba(0, y, 225, 0, 0, 255, "%s:[%s] { %s }\n", PCBA_SDCARD,
127                  PCBA_FAILED, sd_size);
128         tc_info->result = -1;
129         LOG("sdcard_test failed.\n");
130     }
131 
132 #endif
133 	return argv;
134 }
135