hc
2025-02-14 bbb9540dc49f70f6b703d1c8d1b85fa5f602d86e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#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;
}