16 constexpr size_t const kMaxPathDepth = PATH_MAX_DEPTH;
17 constexpr size_t const kMaxNameLength = UI_FILE_BROWSER_FILENAME_MAX;
18 constexpr size_t const kMaxPathLength = (kMaxPathDepth * (kMaxNameLength + 1)) + 1;
19 constexpr uint8_t
const kFileNameLength = 100;
20 constexpr uint8_t
const kFilePathnameLength = 132;
21 constexpr size_t const kBufferSize = 512;
22# if (OPTION_UNIQUE_DIRECTORY_METHOD == UNQDIR_INCREMENT)
23 constexpr uint8_t
const kFolderIncrementLength = 5;
24# elif (OPTION_UNIQUE_DIRECTORY_METHOD == UNQDIR_RTC)
25 constexpr uint8_t
const kFolderIncrementLength = 11;
26# elif (OPTION_UNIQUE_DIRECTORY_METHOD == UNQDIR_BOTH)
27 constexpr uint8_t
const kFolderIncrementLength = 15;
30 extern char const PROGMEM AllowedSymbols[];
31 extern char const PROGMEM FilenameTemplate[];
32 extern char const PROGMEM FilenameTemplateP[];
33 extern char const PROGMEM FilenameTemplatePP[];
35 enum class CRC32State : uint8_t
46 extern uint8_t copyFileName(
char const *
const src, uint8_t
const srcMaxLen,
char *
const dest, uint8_t
const destMaxLen);
47 extern uint8_t copyFileName_P(
char const *
const src,
char *
const dest, uint8_t
const destMaxLen);
49# if defined(ENABLE_RTC)
50 extern void dateTimeCB(uint16_t * date, uint16_t * time);
53 extern bool exists(__StringHelper
const * path);
54 extern bool exists(
char const * path);
56 extern bool isDir(
char const * path);
57 extern bool isDir(__StringHelper
const * path);
59 extern bool isFile(
char const * path);
60 extern bool isFile(__StringHelper
const * path);
62 extern bool createFolder(
char const * path,
bool recursive =
true);
63 extern bool createFolder(__StringHelper
const * path,
bool recursive =
true);
70 bool getPath(
char buffer[],
size_t bufferSize = kMaxPathLength)
const;
72 String getPath()
const;
75 void cd(
char const * dir);
76 void cd(__StringHelper
const * dir);
84 char path[kMaxPathDepth][kMaxNameLength];
92 File(uint8_t * fileBuffer, uint16_t fileBufferSize);
94 File(
char const * fileName, oflag_t oflag);
95 File(__StringHelper
const * fileName, oflag_t oflag);
97 void assignBuffer(uint8_t * fileBuffer, uint16_t fileBufferSize);
98 void unassignBuffer();
99 bool hasBuffer()
const;
101 bool open(
char const * fileName, oflag_t oflag);
102 bool open(__StringHelper
const * fileName, oflag_t oflag);
103 bool open(uint32_t index, oflag_t oflag);
111 bool rename(
char const * newPath);
112 bool rename(__StringHelper
const * newPath);
114 bool writeRaw(uint8_t
byte);
115 size_t writeRaw(
size_t count);
117 size_t writeRaw(uint8_t
const * buf,
size_t count);
120 size_t write(
size_t count);
122 bool write(uint8_t
byte);
124 size_t write(
char const * buf);
125 size_t write(
char const * buf,
size_t count);
126 size_t write(uint8_t
const * buf,
size_t count);
128 size_t writeNewLine();
133 size_t readRaw(
size_t count);
134 size_t readRaw(uint8_t * buf,
size_t count);
139 size_t read(
size_t count);
140 size_t read(uint8_t * buf,
size_t count);
142 bool find(uint8_t
const * target);
143 bool find(
char const * target);
144 bool find(__StringHelper
const * target);
146 size_t readBytesUntil(
char terminator, uint8_t * buf,
size_t count);
147 size_t readBytesUntil(
char terminator,
char * buf,
size_t count);
148 size_t readBytesUntil(
char terminator,
size_t count);
150 size_t readBytesUntil(__StringHelper
const * terminator, uint8_t * buf,
size_t count);
151 size_t readBytesUntil(__StringHelper
const * terminator,
char * buf,
size_t count);
152 size_t readBytesUntil(__StringHelper
const * terminator,
size_t count);
154 size_t readBytesUntil_P(uint8_t
const * terminator, uint8_t * buf,
size_t count);
155 size_t readBytesUntil_P(uint8_t
const * terminator,
char * buf,
size_t count);
156 size_t readBytesUntil_P(uint8_t
const * terminator,
size_t count);
158 uint32_t fileSize()
const;
159 uint64_t fileSize64()
const;
161 uint32_t available()
const;
162 uint64_t available64()
const;
166 uint64_t curPosition()
const;
167 bool seekCur(int64_t offset);
168 bool seekSet(uint64_t pos);
169 bool seekEnd(int64_t offset = 0);
175 void enableFatalErrors();
176 void disableFatalErrors();
178 bool getName(
char * name,
size_t len);
183 bool fatalErrors =
true;
185 CRC32State crcState = CRC32State::None;
188 uint8_t * buffer =
nullptr;
189 uint16_t bufferSize = 0;
191 void bufferCheck(
size_t count);
199 extern File sharedFile;
200 extern Path sharedFilePath;
202 extern __constinit uint8_t buffer[kBufferSize];
204 extern __constinit
char sharedFileName[kFileNameLength];
205 extern __constinit
char sharedFilePathname[kFilePathnameLength];
207 extern __constinit uint16_t folderIncrement;
208 extern __constinit
char folderIncrementStr[kFolderIncrementLength];
213 extern void incrementFolder();
223 extern void createFolder(
char const * system,
char const * subfolder,
char const * gameName);
233 extern void createFolder(__StringHelper
const * system, __StringHelper
const * subfolder,
char const * gameName);
244 extern void createFile(
char const * system,
char const * subfolder,
char const * gameName,
char const * fileSuffix =
NULL);
255 extern void createFile(__StringHelper
const * system, __StringHelper
const * subfolder,
char const * gameName, __StringHelper
const * fileSuffix =
NULL);
266 extern void createFile(__StringHelper
const * system, __StringHelper
const * subfolder,
char const * gameName, uint16_t fileSuffix);
275 extern void createFileCWD(
char const * gameName,
char const * fileSuffix =
NULL);
284 extern void createFileCWD(
char const * gameName, __StringHelper
const * fileSuffix =
NULL);
293 extern void createFileCWD(
char const * gameName, uint16_t fileSuffix);
298 extern void open(oflag_t oflag);
303 extern void openRW();
308 extern void openRWC();
313 extern void openRO();
329 extern void cd(
char const * dir);
340 extern void cd(__StringHelper
const * dir);
350 extern void rename(
char const * newName);
360 extern void rename(__StringHelper
const * newName);
370 extern bool rename_P(
char const * baseName,
char const * fileExt);
380 extern bool rename_P(
char const * baseName, __StringHelper
const * fileExt);
390 extern bool renameTemplate_P(
char const * pathTemplate,
char const * newName);
400 extern bool renameTemplate_P(
char const * pathTemplate, __StringHelper
const * newName);
411 extern bool renameTemplate_P(
char const * pathTemplate,
char const * baseName,
char const * newExt);
422 extern bool renameTemplate_P(
char const * pathTemplate,
char const * baseName, __StringHelper
const * newExt);
432 extern uint32_t getSize();
442 extern uint32_t available();
450 extern size_t fill();
457 extern size_t dump();
462 extern void rewind();
473 extern size_t readBuffer(
size_t length = kBufferSize);
483 extern size_t writeBuffer(
size_t length = kBufferSize);
488 extern void crcReset();