38#if defined(NOODLE_USE_SDFAT)
39 #define NOODLE_FS_NEEDS_LEADING_SLASH 0
41 #define NOODLE_FS_NEEDS_LEADING_SLASH 1
44#ifndef NOODLE_MAX_FILENAME
45 #define NOODLE_MAX_FILENAME 20
52#if (defined(NOODLE_USE_SDFAT) + defined(NOODLE_USE_SD_MMC) + defined(NOODLE_USE_FFAT) + defined(NOODLE_USE_LITTLEFS) + defined(NOODLE_USE_NONE)) != 1
53# error "Select exactly ONE backend: NOODLE_USE_SDFAT, NOODLE_USE_SD_MMC, NOODLE_USE_FFAT, NOODLE_USE_LITTLEFS, or NOODLE_USE_NONE"
59#if defined(NOODLE_USE_NONE)
66 operator bool()
const {
return _open; }
67 bool available()
const {
return false; }
68 int read() {
return -1; }
69 int peek() {
return -1; }
70 size_t readBytes(
char*,
size_t) {
return 0; }
71 size_t write(uint8_t) {
return 0; }
72 size_t write(
const uint8_t*,
size_t) {
return 0; }
74 void close() { _open =
false; }
75 size_t size()
const {
return 0; }
76 size_t position()
const {
return 0; }
77 bool seek(uint32_t) {
return false; }
78 size_t println(
byte v) { (void)v;
return 0; }
79 size_t println(
float v) { (void)v;
return 0; }
80 size_t println(
float v,
int base) { (void)v;
return 0; }
83 using NDL_File = NDL_NullFile;
91 #if defined(NOODLE_USE_SDFAT)
94#if defined(ESP32) || defined(ARDUINO_ARCH_ESP32) || \
95 defined(ESP8266) || defined(ARDUINO_ARCH_ESP8266) || \
96 defined(ARDUINO_ARCH_RP2040)
97 using NDL_File = FsFile;
99 using NDL_File = File;
104 #elif defined(NOODLE_USE_FFAT)
106 #define NOODLE_FS FFat
107 using NDL_File = File;
109 #elif defined(NOODLE_USE_LITTLEFS)
110 #include <LittleFS.h>
111 #define NOODLE_FS LittleFS
112 using NDL_File = File;
114 #elif defined(NOODLE_USE_SD_MMC)
116 #define NOODLE_FS SD_MMC
117 using NDL_File = File;
131 if (!dst || cap == 0)
return;
132 if (!src) { dst[0] =
'\0';
return; }
135 while (src[i] !=
'\0' && (i + 1) < cap) {
156 if (!name)
return "";
158#if NOODLE_FS_NEEDS_LEADING_SLASH
177#if defined(NOODLE_USE_NONE)
180#elif defined(NOODLE_USE_SDFAT)
192#if defined(NOODLE_USE_NONE)
195#elif defined(NOODLE_USE_SDFAT)
196 int flags = O_WRITE | O_CREAT | O_TRUNC;
208#if defined(NOODLE_USE_NONE)
224#if defined(NOODLE_USE_SDFAT)
226#elif defined(NOODLE_USE_FFAT) || defined(NOODLE_USE_LITTLEFS) || defined(NOODLE_USE_SD_MMC) || defined(NOODLE_USE_SD)
NDL_File fi
Definition noodle.cpp:16
SdFat NOODLE_FS
Definition noodle.cpp:12
void noodle_rewind_file(NDL_File &fi)
Rewind a file handle to position 0.
Definition noodle_fs.h:223
void noodle_copy_name(char *dst, size_t cap, const char *src)
Copy a C string into a bounded buffer with NUL-termination.
Definition noodle_fs.h:130
bool noodle_fs_remove(const char *path)
Remove a file using the selected backend.
Definition noodle_fs.h:206
#define NOODLE_MAX_FILENAME
Definition noodle_fs.h:45
NDL_File noodle_fs_open_write(const char *path)
Open a file for writing (create or truncate) using the selected backend.
Definition noodle_fs.h:190
NDL_File noodle_fs_open_read(const char *path)
Open a file for reading using the selected backend.
Definition noodle_fs.h:175
const char * noodle_norm_filename(const char *name)
Normalize a filename/path for the selected filesystem backend.
Definition noodle_fs.h:155