-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patherrorStr.c
More file actions
140 lines (138 loc) · 4.84 KB
/
Copy patherrorStr.c
File metadata and controls
140 lines (138 loc) · 4.84 KB
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
135
136
137
138
139
140
#include "SDlib.h"
//return string representation of initialization errors
//this is good for mmcInit_card and mmcGoIdle functions
/*const char* SD_init_error_str(int error){
switch(error){
case MMC_SUCCESS:
return "SUCCESS";
case MMC_INIT_ERR_CHECK_PATTERN:
return "ERROR CHECK PATTERN MISMATCH";
case MMC_INIT_ERR_VOLTAGE:
return "ERROR VOLTAGE RANGE MISMATCH";
case MMC_INIT_ERR_GO_IDLE:
return "ERROR GO IDLE COMMAND FALED";
case MMC_INIT_ERR_TIMEOUT:
return "ERROR TIMEOUT";
case MMC_INIT_ERR_READ_OCR:
return "ERROR READ OCR FAILED";
case MMC_INIT_ERR_BLOCK_SIZE:
return "ERROR SET BLOCK SIZE FAILED";
default:
return "UNKNOWN ERROR";
}
}*/
//return string representation of SD card function errors
const char * SD_error_str(int error){
switch(error){
//Success
case MMC_SUCCESS:
return "SUCCESS";
//software defined errors
case MMC_TIMEOUT_ERROR:
return "ERROR TIMEOUT";
case MMC_DMA_TX_TIMEOUT_ERROR:
return "ERROR DMA TX TIMEOUT";
case MMC_BUSY_TIMEOUT_ERROR:
return "ERROR CARD BUSY TIMEOUT";
case MMC_LOCK_TIMEOUT_ERROR:
return "ERROR LOCK TIMEOUT";
case MMC_INVALID_CARD_SIZE:
return "ERROR INVALID CARD SIZE";
case MMC_CARD_UNINIT_ERROR:
return "ERROR CARD NOT INITIALIZED";
case MMC_MSP_UNINIT_ERROR:
return "ERROR PERIPHERALS NOT INITIALIZED";
case MMC_INIT_ERR_CHECK_PATTERN:
return "ERROR CHECK PATTERN MISMATCH";
case MMC_INIT_ERR_VOLTAGE:
return "ERROR VOLTAGE RANGE MISMATCH";
case MMC_INIT_ERR_GO_IDLE:
return "ERROR GO IDLE COMMAND FALED";
case MMC_INIT_ERR_TIMEOUT:
return "ERROR INITIALIZATION TIMEOUT";
case MMC_INIT_ERR_READ_OCR:
return "ERROR READ OCR FAILED";
case MMC_INIT_ERR_BLOCK_SIZE:
return "ERROR SET BLOCK SIZE FAILED";
case MMC_DMA_RX_TIMEOUT_ERROR:
return "ERROR DMA RX TIMEOUT";
case MMC_CRC_FAIL_ERROR:
return "ERROR CRC FAILED";
case MMC_TOKEN_TIMEOUT_ERROR:
return "ERROR TOKEN TIMEOUT";
case MMC_IDLE_TIMEOUT_ERROR:
return "ERROR IDLE TIMEOUT";
case MMC_INTERNAL_ERROR:
return "INTERNAL ERROR";
//Other errors, Probably from SD card
default:
//check for errors from the card
if(error>0){
//first figure out which function returned the error
switch(error&MMC_RC_MASK){
//response of R1 type
case MMC_R1_RESPONSE:
switch(error&MMC_CARD_MASK){
case MMC_R1_IDLE:
return "IDLE";
case MMC_R1_ERASE_RESET:
return "ERROR ERASE RESET";
case MMC_R1_ILLEGAL_CMD:
return "ILLEAGL COMMAND";
case MMC_R1_CRC_ERROR:
return "COMMAND CRC ERROR";
case MMC_R1_ERASE_SEQ_ERROR:
return "ERASE SEQUENCE ERROR";
case MMC_R1_ADDRESS_ERROR:
return "ERROR BAD ADDRESS";
case MMC_R1_PARAMETER_ERROR:
return "ERROR BAD PARAMETER";
}
break;
case MMC_DATA_RESPONSE:
switch(error&MMC_CARD_MASK){
case MMC_DAT_ACCEPTED:
return "DATA_ACCEPTED";
case MMC_DAT_CRC:
return "DATA CRC ERROR";
case MMC_DAT_WRITE_ERR:
return "DATA WRITE ERROR";
}
break;
case MMC_DATA_TOKEN_RESP:
switch(error&MMC_CARD_MASK){
case MMC_ERR_TOKEN_UNKNOWN:
return "UNKNOWN CARD ERROR";
case MMC_ERR_TOKEN_CC:
return "CARD CONTROLLER ERROR";
case MMC_ERR_TOKEN_ECC_FAIL:
return "ERROR CORRECTION CODE FAILED";
case MMC_ERR_TOKEN_OUT_OF_RANGE:
return "ERROR OUT OF RANGE";
}
break;
case MMC_IDLE_RESP:
switch(error&MMC_CARD_MASK){
case MMC_R1_IDLE:
//code should never get here
return "INTERNAL INIT ERROR";
case MMC_R1_ERASE_RESET:
return "GO IDLE ERROR ERASE RESET";
case MMC_R1_ILLEGAL_CMD:
return "GO IDLE ILLEAGL COMMAND";
case MMC_R1_CRC_ERROR:
return "GO IDLE COMMAND CRC ERROR";
case MMC_R1_ERASE_SEQ_ERROR:
return "GO IDLE ERASE SEQUENCE ERROR";
case MMC_R1_ADDRESS_ERROR:
return "GO IDLE ERROR BAD ADDRESS";
case MMC_R1_PARAMETER_ERROR:
return "GO IDLE ERROR BAD PARAMETER";
}
break;
}
}
//no match found, unknown
return "UNKNOWN ERROR";
}
}