73 lines
1.7 KiB
C++
73 lines
1.7 KiB
C++
/* 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
|