muwerk Scheduler Library
A low-resource cooperative scheduler with MQTT-like queues for Arduinos, ATtiny up to ESP32
Loading...
Searching...
No Matches
filesystem.h
1// fs_helper.h - the muwerk fs helper routines
2
3#pragma once
4
5#include "ustd_platform.h"
6
7#if defined(__ESP32__) || defined(__ESP32_RISC__)
8namespace fs {
9class Dir {
10 public:
11 Dir(int _) {
12 }
13 Dir(File fd)
14 : fd(fd) {
15 }
16
17 File openFile(const char *mode) {
18 return (File)0;
19 }
20
21 String fileName() {
22 return ff.name();
23 }
24 size_t fileSize() {
25 return ff.size();
26 }
27 time_t fileTime() {
28 return ff.getLastWrite();
29 }
30 time_t fileCreationTime() {
31 return (size_t)0;
32 }
33 bool isFile() {
34 return ff.isDirectory() ? false : true;
35 }
36 bool isDirectory() {
37 return ff.isDirectory() ? true : false;
38 }
39
40 bool next() {
41 ff = fd.openNextFile();
42 return ff != (File)0;
43 }
44 bool rewind() {
45 fd.rewindDirectory();
46 return next();
47 }
48
49 protected:
50 File fd;
51 File ff;
52};
53} // namespace fs
54#endif
55
56namespace ustd {
57
58bool fsInited = false;
59
60#ifdef __USE_SPIFFS_FS__
61#define FSNAME "SPIFFS"
62#else
63#define FSNAME "LittleFS"
64#endif
65
66bool fsBegin() {
73 if (!fsInited) {
74#ifdef __USE_SPIFFS_FS__
75 fsInited = SPIFFS.begin(false);
76#else
77 fsInited = LittleFS.begin();
78#endif
79 if (!fsInited) {
80 DBG("Failed to initialize " FSNAME " filesystem");
81 }
82 }
83 return fsInited;
84}
85
86void fsEnd() {
87 if (fsInited) {
88#ifdef __USE_SPIFFS_FS__
89 SPIFFS.end();
90#else
91 LittleFS.end();
92#endif
93 fsInited = false;
94 }
95}
96
97bool fsDelete(String filename) {
102#ifdef __USE_SPIFFS_FS__
103 bool ret = fsBegin() && SPIFFS.remove(filename);
104#else
105 bool ret = fsBegin() && LittleFS.remove(filename);
106#endif
107 if (!ret) {
108 DBG("Failed to delete file " + filename);
109 }
110 return ret;
111}
112
113fs::File fsOpen(String filename, String mode) {
120 if (!fsBegin()) {
121 return (fs::File)0;
122 }
123#ifdef __USE_SPIFFS_FS__
124 fs::File f = SPIFFS.open(filename.c_str(), mode.c_str());
125#else
126 fs::File f = LittleFS.open(filename.c_str(), mode.c_str());
127#endif
128 if (!f) {
129 DBG("Failed to open " + filename + " on " FSNAME " filesystem");
130 }
131 return f;
132}
133
134fs::Dir fsOpenDir(String path) {
139 if (!fsBegin()) {
140 return (fs::Dir)0;
141 }
142#if defined(__ESP32__) || defined(__ESP32_RISC__)
143#ifdef __USE_SPIFFS_FS__
144 fs::File fd = SPIFFS.open(path);
145#else
146 fs::File fd = LittleFS.open(path);
147#endif
148 fs::Dir dir(fd);
149 return dir;
150#else
151#ifdef __USE_SPIFFS_FS__
152 return SPIFFS.openDir(path.c_str());
153#else
154 return LittleFS.openDir(path.c_str());
155#endif
156#endif // __ESP32__ || __ESP32_RISC__
157}
158
159} // namespace ustd
The muwerk namespace.
Definition console.h:15
bool fsBegin()
Definition filesystem.h:66
fs::File fsOpen(String filename, String mode)
Definition filesystem.h:113
fs::Dir fsOpenDir(String path)
Definition filesystem.h:134
bool fsDelete(String filename)
Definition filesystem.h:97