| @@ -0,0 +1,72 @@ | |||
| /* 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 | |||