|
- /* Experimental File & Dir base classes. VERY experimental!
-
- These are intended to someday allow libraries using files,
- such as a JPEG decoder, to accept a File object from SD,
- Bridge, USB Host, ESP SPIFFS, and others. Perhaps only a
- distant dream at this point, but maybe someday....
- */
-
-
- #ifndef FS_H
- #define FS_H
- #ifdef __cplusplus
-
- #include "Stream.h"
- #include "WString.h"
-
- class File : public Stream {
- public:
- constexpr File() {}
- enum SeekMode {
- SeekSet = 0,
- SeekCur = 1,
- SeekEnd = 2
- };
- virtual size_t read(void *buf, size_t nbyte);
- virtual size_t write(const void *buf, size_t size);
- virtual int available();
- virtual int read();
- virtual int peek();
- virtual void flush();
- virtual bool seek(uint32_t pos, int mode);
- virtual uint32_t position() const;
- virtual uint32_t size() const;
- virtual void close();
- virtual operator bool() const;
- //virtual const char* name() const; // why does ESP have this in File?
-
- bool seek(uint32_t pos) {
- return seek(pos, SeekSet);
- }
- size_t write(uint8_t b) {
- return write(&b, 1);
- }
- size_t write(const char *str) {
- return write(str, strlen(str));
- }
- size_t readBytes(char *buffer, size_t length) {
- return read(buffer, length);
- }
-
- // needed for compatiblity with Arduino's SD & Bridge libs
- virtual const char* name();
- virtual bool isDirectory();
- virtual File openNextFile(uint8_t mode=0);
- virtual void rewindDirectory(void);
- };
-
- class Dir {
- public:
- constexpr Dir() {}
- virtual const char *name(); // from SD's File (and ESP's File)
- virtual uint32_t fileSize();
- virtual bool isDirectory(); // from SD, not in ESP
- virtual File openFile(const char *mode);
- virtual bool next();
- String fileName() {
- return String(name());
- }
- };
-
- #endif // __cplusplus
- #endif // FS_H
|