4#error ("ZephyrSD only supported by zephyr")
7#include <zephyr/fs/fs.h>
8#include <zephyr/storage/disk_access.h>
44 bool open(
const char* file_path, fs_mode_t mode = FS_O_READ) {
49 int rc = fs_open(&f, file_path, mode);
51 LOGE(
"fs_open(%s) failed: %d", file_path, rc);
60 if (mode & FS_O_APPEND) {
61 fs_seek(&f, 0, FS_SEEK_END);
81 bool isOpen()
const {
return is_open; }
83 operator bool()
const {
return is_open; }
96 if (pos >= file_size) {
100 return static_cast<int>(file_size - pos);
110 ssize_t rc = fs_read(&f, &value, 1);
120 if (!is_open || buffer ==
nullptr || len == 0) {
124 ssize_t rc = fs_read(&f, buffer, len);
126 return rc > 0 ?
static_cast<size_t>(rc) : 0;
129 size_t write(uint8_t value)
override {
return write(&value, 1); }
131 size_t write(
const uint8_t* buffer,
size_t len)
override {
132 if (!is_open || buffer ==
nullptr || len == 0) {
136 ssize_t rc = fs_write(&f, buffer, len);
142 size_t written =
static_cast<size_t>(rc);
145 if (pos > file_size) {
165 ssize_t rc = fs_read(&f, &value, 1);
171 fs_seek(&f, -1, FS_SEEK_CUR);
185 return fs_seek(&f,
static_cast<off_t
>(pos), FS_SEEK_SET) == 0;
193 off_t pos = fs_tell(
const_cast<fs_file_t*
>(&f));
195 return pos >= 0 ?
static_cast<size_t>(pos) : 0;
198 size_t size()
const {
return file_size; }
200 const char*
name()
const {
return path; }
204 bool is_open =
false;
205 const char* path =
nullptr;
206 size_t file_size = 0;
211 if (path ==
nullptr) {
215 struct fs_dirent entry;
217 if (fs_stat(path, &entry) == 0) {
218 file_size = entry.size;
224 is_open = other.is_open;
226 file_size = other.file_size;
228 fs_file_t_init(&other.f);
229 other.is_open =
false;
230 other.path =
nullptr;
#define LOGE(...)
Definition AudioLoggerIDF.h:30