43 #define FILESYSTEM_TYPE_MAP(XX) \ 44 XX(Unknown, NULL, "Unknown") \ 45 XX(FWFS, FWFS, "Firmware File System") \ 46 XX(SPIFFS, SPIF, "SPI Flash File System (SPIFFS)") \ 47 XX(LittleFS, LFS, "Little FS") \ 48 XX(Hybrid, HYFS, "Hybrid File System") \ 49 XX(Host, HOST, "Host File System") \ 50 XX(Fat, FAT, "FAT File System") \ 51 XX(Fat32, FAT32, "FAT32 File System") \ 52 XX(ExFat, exFAT, "EXFAT File System") 57 #define FILE_SYSTEM_ATTR_MAP(XX) \ 58 XX(Mounted, "Filing system is mounted and in use") \ 59 XX(ReadOnly, "Writing not permitted to this volume") \ 60 XX(Virtual, "Virtual filesystem, doesn't host files directly") \ 61 XX(Check, "Volume check recommended") \ 62 XX(NoMeta, "Metadata unsupported") 74 #define debug_ifserr(err, func, ...) \ 76 int errorCode = err; \ 78 debug_e(func ": %s (%d)", ##__VA_ARGS__, getErrorString(errorCode).c_str(), err); \ 81 #define debug_ifserr(err, func, ...) \ 102 #define XX(_name, _tag, _desc) _name, 109 #define XX(_tag, _comment) _tag, 124 size_t maxNameLength{255};
125 size_t maxPathLength{255};
127 uint32_t volumeID{0};
137 Info(
char* namebuf,
unsigned buflen) : name(namebuf, buflen)
143 return volumeSize - freeSpace;
163 size_t printTo(
Print& p)
const;
190 virtual int mount() = 0;
206 return Error::NotImplemented;
226 return Error::NotSupported;
270 virtual int mkdir(
const char* path) = 0;
289 virtual int stat(
const char* path,
Stat* stat) = 0;
313 return Error::NotSupported;
450 virtual int rename(
const char* oldpath,
const char* newpath) = 0;
457 virtual int remove(
const char* path) = 0;
484 return Error::NotImplemented;
virtual int fcontrol(FileHandle file, ControlCode code, void *buffer, size_t bufSize)
Low-level and non-standard file control operations.
Definition: IFileSystem.h:311
Basic information about filing system.
Definition: IFileSystem.h:121
Attributes attr
Attribute flags.
Definition: IFileSystem.h:123
#define FILE_SYSTEM_ATTR_MAP(XX)
Attribute flags for filing system.
Definition: IFileSystem.h:57
virtual int write(FileHandle file, const void *data, size_t size)=0
write content to a file at current position and advance cursor
virtual int check()
Perform a file system consistency check.
Definition: IFileSystem.h:482
virtual int fgetxattr(FileHandle file, AttributeTag tag, void *buffer, size_t size)=0
Get an extended attribute from an open file.
#define FILESYSTEM_TYPE_MAP(XX)
Four-character tag to identify type of filing system.
Definition: IFileSystem.h:43
virtual file_offset_t lseek(FileHandle file, file_offset_t offset, SeekOrigin origin)=0
change file read/write position
virtual int close(FileHandle file)=0
close an open file
ControlCode
See IFS::IFileSystem::fcontrol
Definition: Control.h:31
virtual int mount()=0
Mount file system, performing any required initialisation.
virtual int fsetxattr(FileHandle file, AttributeTag tag, const void *data, size_t size)=0
Set an extended attribute on an open file.
virtual int eof(FileHandle file)=0
determine if current file position is at end of file
virtual int setVolume(uint8_t index, IFileSystem *fileSystem)
Set volume for mountpoint.
Definition: IFileSystem.h:224
virtual int rename(const char *oldpath, const char *newpath)=0
rename a file
volume_size_t freeSpace
Available space, in bytes.
Definition: IFileSystem.h:130
Attribute
Definition: IFileSystem.h:108
Installable File System base class.
Definition: IFileSystem.h:98
virtual FileHandle open(const char *path, OpenFlags flags)=0
open a file (or directory) by path
virtual int opendir(const char *path, DirHandle &dir)=0
open a directory for reading
int copy(const char *src, uint16_t srclen)
copies text from a source buffer into a name buffer
Definition: NameBuffer.h:95
virtual int mkdir(const char *path)=0
Create a directory.
struct ImplFileDir * DirHandle
Definition: IFileSystem.h:71
virtual int fenumxattr(FileHandle file, AttributeEnumCallback callback, void *buffer, size_t bufsize)=0
Enumerate attributes.
uint32_t file_size_t
Definition: Components/IFS/src/include/IFS/Types.h:50
The String class.
Definition: WString.h:136
virtual int fremove(FileHandle file)=0
remove (delete) a file by handle
virtual int getxattr(const char *path, AttributeTag tag, void *buffer, size_t size)=0
Get an attribute from a file given its path.
virtual ~IFileSystem()
Filing system implementations should dismount and cleanup here.
Definition: IFileSystem.h:182
Provides formatted output to stream.
Definition: Print.h:36
Definition: Delegate.h:20
NameInfo()
Definition: IFileSystem.h:171
virtual int setxattr(const char *path, AttributeTag tag, const void *data, size_t size)=0
Set an extended attribute for a file given its path.
SeekOrigin
Stream/file seek origins.
Definition: SeekOrigin.h:18
virtual int closedir(DirHandle dir)=0
close a directory object
String toString(int err)
get text for an error code
int16_t FileHandle
File handle.
Definition: Stat.h:40
Type
Definition: IFileSystem.h:101
Filing system information with buffer for name.
Definition: IFileSystem.h:169
Definition: DirectoryTemplate.h:36
Manage IFS timestamps stored as an unsigned 32-bit value.
Definition: TimeStamp.h:36
virtual int read(FileHandle file, void *data, size_t size)=0
read content from a file and advance cursor
virtual int readdir(DirHandle dir, Stat &stat)=0
read a directory entry
NameBuffer name
Buffer for name.
Definition: IFileSystem.h:128
volume_size_t used() const
Definition: IFileSystem.h:141
storage_size_t volume_size_t
Definition: Components/IFS/src/include/IFS/Types.h:37
virtual int ftruncate(FileHandle file, file_size_t new_size)=0
Truncate (reduce) the size of an open file.
virtual int flush(FileHandle file)=0
flush any buffered data to physical media
Type type
The filing system type identifier.
Definition: IFileSystem.h:122
virtual int stat(const char *path, Stat *stat)=0
get file information
virtual int setProfiler(IProfiler *profiler)
Set profiler instance to enable debugging and performance assessment.
Definition: IFileSystem.h:204
uint32_t volumeID
Unique identifier for volume.
Definition: IFileSystem.h:127
File Status structure.
Definition: Stat.h:52
void clear()
Definition: IFileSystem.h:158
virtual int format()=0
format the filing system
String toString(IFS::IFileSystem::Type type)
Get String for filesystem type.
Represents a flash partition.
Definition: Partition.h:85
Info & operator=(const Info &rhs)
Definition: IFileSystem.h:146
Filesystems may optionally provide performance statistics.
Definition: Profiler.h:30
AttributeTag
Identifies a specific attribute.
Definition: Attribute.h:45
virtual int rewinddir(DirHandle dir)=0
Reset directory read position to start.
int32_t file_offset_t
Definition: Components/IFS/src/include/IFS/Types.h:51
virtual int fstat(FileHandle file, Stat *stat)=0
get file information
volume_size_t volumeSize
Size of volume, in bytes.
Definition: IFileSystem.h:129
virtual int getinfo(Info &info)=0
get filing system information
Storage::Partition partition
Definition: IFileSystem.h:126
Info()
Definition: IFileSystem.h:133
Info(char *namebuf, unsigned buflen)
Definition: IFileSystem.h:137
defines a 'safe' name buffer
Definition: NameBuffer.h:44
virtual file_offset_t tell(FileHandle file)=0
get current file position
virtual String getErrorString(int err)
get the text for a returned error code
Definition: IFileSystem.h:213