File tree 2 files changed +12
-6
lines changed
2 files changed +12
-6
lines changed Original file line number Diff line number Diff line change @@ -149,10 +149,12 @@ File SDClass::open(const char *filepath, uint8_t mode /* = FA_READ */)
149
149
mode = mode | FA_CREATE_ALWAYS;
150
150
}
151
151
152
- if (f_open (file._fil , filepath, mode) != FR_OK) {
152
+ file._res = f_open (file._fil , filepath, mode);
153
+ if ( file._res != FR_OK) {
153
154
free (file._fil );
154
155
file._fil = NULL ;
155
- if (f_opendir (&file._dir , filepath) != FR_OK) {
156
+ file._res = f_opendir (&file._dir , filepath);
157
+ if (file._res != FR_OK) {
156
158
free (file._name );
157
159
file._name = NULL ;
158
160
}
@@ -179,10 +181,11 @@ File SDClass::openRoot(void)
179
181
return open (_fatFs.getRoot ());
180
182
}
181
183
182
- File::File ()
184
+ File::File (FRESULT result /* = FR_OK */ )
183
185
{
184
186
_name = NULL ;
185
187
_fil = NULL ;
188
+ _res = result;
186
189
}
187
190
188
191
/* * List directory contents to Serial.
@@ -595,7 +598,7 @@ File File::openNextFile(uint8_t mode)
595
598
while (1 ) {
596
599
res = f_readdir (&_dir, &fno);
597
600
if (res != FR_OK || fno.fname [0 ] == 0 ) {
598
- return File ();
601
+ return File (res );
599
602
}
600
603
if (fno.fname [0 ] == ' .' ) {
601
604
continue ;
@@ -618,7 +621,7 @@ File File::openNextFile(uint8_t mode)
618
621
free (fullPath);
619
622
return filtmp;
620
623
} else {
621
- return File ();
624
+ return File (FR_NOT_ENOUGH_CORE );
622
625
}
623
626
}
624
627
}
Original file line number Diff line number Diff line change @@ -32,7 +32,7 @@ uint8_t const LS_R = 4;
32
32
33
33
class File {
34
34
public:
35
- File (void );
35
+ File (FRESULT res = FR_OK );
36
36
virtual size_t write (uint8_t );
37
37
virtual size_t write (const uint8_t *buf, size_t size);
38
38
virtual size_t write (const char *buf, size_t size);
@@ -72,6 +72,9 @@ class File {
72
72
char *_name = NULL ; // file or dir name
73
73
FIL *_fil = NULL ; // underlying file object structure pointer
74
74
DIR _dir = {}; // init all fields to 0
75
+ FRESULT _res = FR_OK;
76
+
77
+ FRESULT getErrorstate (void ) {return _res;}
75
78
76
79
};
77
80
You can’t perform that action at this time.
0 commit comments