#include #include #include //#include "extra-functions.h" #include "common.h" #include "sdcard_test.h" #include "test_case.h" #include "language.h" #define LOG_TAG "PCBA [sdcard]: " #define LOG(x...) printf(LOG_TAG x) #define SCAN_RESULT_LENGTH 128 #define SCAN_RESULT_FILE "/data/sd_capacity" #define SD_INSERT_RESULT_FILE "/data/sd_insert_info" void *sdcard_test(void *argv) { struct testcase_info *tc_info = (struct testcase_info *)argv; int ret, y; double cap; FILE *fp; char results[SCAN_RESULT_LENGTH]; /* remind sdcard test */ if (tc_info->y <= 0) tc_info->y = get_cur_print_y(); y = tc_info->y; LOG("start sdcard test.\n"); //ui_print_xy_rgba(0, y, 255, 255, 0, 255, "%s\n", PCBA_SDCARD); ui_print_xy_rgba(0, y, 255, 255, 0, 255, "%s:[%s..]\n", PCBA_RTC, PCBA_TESTING); #if 0 #if defined(RK3288_PCBA) ret = __system("busybox chmod 777 /res/emmctester.sh"); #else ret = __system("busybox chmod 777 /res/mmctester.sh"); #endif if (ret) LOG("chmod mmctester.sh failed :%d\n", ret); #if defined(RK3288_PCBA) ret = __system("/res/emmctester.sh"); #else ret = __system("/res/mmctester.sh"); #endif if (ret < 0) { LOG("mmc test failed.\n"); ui_print_xy_rgba(0, y, 255, 0, 0, 255, "%s:[%s]\n", PCBA_SDCARD, PCBA_FAILED); tc_info->result = -1; return argv; } fp = fopen(SCAN_RESULT_FILE, "r"); if (fp == NULL) { LOG("can not open %s.\n", SCAN_RESULT_FILE); ui_print_xy_rgba(0, y, 255, 0, 0, 255, "%s:[%s]\n", PCBA_SDCARD, PCBA_FAILED); tc_info->result = -1; return argv; } memset(results, 0, SCAN_RESULT_LENGTH); fgets(results, 50, fp); cap = strtod(results, NULL); if (cap) { ui_print_xy_rgba(0, y, 0, 255, 0, 255, "%s:[%s] { %2fG }\n", PCBA_SDCARD, PCBA_SECCESS, cap * 1.0 / 1024 / 1024); tc_info->result = 0; } fclose(fp); #else int rst; char sd_buf[128]= {0}; char sd_size[32] = {0}; char result_filename[100] = {0}; LOG("============= start sdcard test==============\n"); rst = run_test_item_cmd("echo_auto_test echo_sdcard_test"); if(rst == 0) { snprintf(result_filename, sizeof(result_filename), "%s/echo_sdcard_test_result", "/tmp"); ret = parse_test_result(result_filename, "sdcard_test", sd_buf); }else { //rst < 0 ui_print_xy_rgba(0, y, 225, 0, 0, 255, "%s:[%s] { %s }\n", PCBA_SDCARD, PCBA_FAILED, PCBA_SDCARD_NOINSERT); tc_info->result = -1; LOG("sdcard_test failed.\n"); return NULL; } if(ret == 0) { if(strstr(sd_buf, "capacity") != NULL) { char *result = NULL; char delims[] = " "; memset(sd_size, 0, sizeof(sd_size)); result = strtok(sd_buf, delims ); while( result != NULL ) { LOG("result is \"%s\"\n", result); if(strstr(result,"capacity")!= NULL){ strcat(sd_size, result); } result = strtok( NULL, delims ); } } ui_print_xy_rgba(0, y, 0, 255, 0, 255, "%s:[%s] { %s }\n", PCBA_SDCARD, PCBA_SECCESS, sd_size); tc_info->result = 0; LOG("sdcard_test success.\n"); } else { ui_print_xy_rgba(0, y, 225, 0, 0, 255, "%s:[%s] { %s }\n", PCBA_SDCARD, PCBA_FAILED, sd_size); tc_info->result = -1; LOG("sdcard_test failed.\n"); } #endif return argv; }