27 #define LS_FLAG_FRAGMENTED 1 39 #define PART_OFFSET (512 - 64 - 2) 42 void dirName(
dir_t &dir,
char name[]);
44 void printEntryName(
dir_t &dir);
52 uint8_t blocksPerCluster_;
53 uint32_t blocksPerFat_;
54 uint32_t clusterCount_;
55 uint32_t dataStartBlock_;
57 uint32_t fatStartBlock_;
60 uint16_t rootDirEntryCount_;
61 uint32_t rootDirStart_;
62 uint32_t totalBlocks_;
63 uint8_t chainIsContiguous(uint32_t cluster);
64 uint32_t chainSize(uint32_t cluster);
65 uint8_t isEOC(uint32_t cluster) {
68 uint32_t nextCluster(uint32_t cluster);
69 uint8_t rawRead(uint32_t block, uint16_t offset, uint8_t *dst,
71 return rawDevice_->
readData(block, offset, dst, count);
73 uint8_t validCluster(uint32_t cluster) {
74 return (1 < cluster && cluster < (clusterCount_ + 2));
130 #define FILE_IS_CONTIGUOUS 0X08 132 #define FILE_TYPE_MASK 0X07 134 #define FILE_TYPE_CLOSED 0X00 136 #define FILE_TYPE_NORMAL 0X01 138 #define FILE_TYPE_ROOT16 0X02 140 #define FILE_TYPE_ROOT32 0X03 142 #define FILE_TYPE_SUBDIR 0X04 144 #define FILE_TYPE_MIN_DIR FILE_TYPE_ROOT16 147 uint32_t readCluster_;
148 uint32_t readPosition_;
149 uint32_t firstCluster_;
151 int16_t readBlockData(uint8_t *dst, uint16_t count);
152 void lsR(
dir_t &d, uint8_t flags, uint8_t indent);
157 void ls(uint8_t flags = 0);
160 uint8_t open(
FatReader &dir,
char *name);
161 uint8_t open(
FatReader &dir, uint16_t index);
162 void optimizeContiguous(
void);
163 int16_t read(
void *buf, uint16_t count);
164 int8_t readDir(
dir_t &dir);
166 uint8_t seekCur(uint32_t pos);
169 void close(
void) { type_ = FILE_TYPE_CLOSED; }
178 uint8_t
fileType(
void) {
return type_ & FILE_TYPE_MASK; }
186 uint8_t
isDir(
void) {
return fileType() >= FILE_TYPE_MIN_DIR; }
188 uint8_t
isFile(
void) {
return fileType() == FILE_TYPE_NORMAL; }
190 uint8_t
isOpen(
void) {
return fileType() != FILE_TYPE_CLOSED; }
205 if (pos >= readPosition_)
206 return seekCur(pos - readPosition_);
217 #endif // FatReader_h
uint8_t fatType(void)
Definition: FatReader.h:108
void close(void)
Definition: FatReader.h:169
SdReader * rawDevice(void)
Raw device for this volume.
Definition: FatReader.h:114
uint8_t isContiguous(void)
Definition: FatReader.h:184
uint32_t fileSize(void)
Definition: FatReader.h:171
uint32_t rootDirEntryCount(void)
Definition: FatReader.h:116
uint32_t blocksPerFat(void)
Definition: FatReader.h:98
uint8_t fileType(void)
Definition: FatReader.h:178
uint32_t clusterCount(void)
Definition: FatReader.h:100
uint32_t readPosition(void)
Definition: FatReader.h:194
FatVolume provides access to FAT volumes.
Definition: FatReader.h:49
Hardware access class for SD flash cards.
Definition: SdReader.h:83
uint8_t fatCount(void)
Definition: FatReader.h:104
uint32_t fatStartBlock(void)
Definition: FatReader.h:106
#define FAT16EOC_MIN
Definition: FatStructs.h:259
uint8_t init(SdReader &dev)
Definition: FatReader.h:91
FatReader implements a minimal FAT16/FAT32 file reader class.
Definition: FatReader.h:127
FatVolume * volume(void)
get the parent volume
Definition: FatReader.h:215
uint32_t totalBlocks(void)
Definition: FatReader.h:121
FatVolume(void)
Definition: FatReader.h:79
uint32_t firstCluster(void)
Definition: FatReader.h:180
uint8_t isFile(void)
Definition: FatReader.h:188
uint8_t readData(uint32_t block, uint16_t offset, uint8_t *dst, uint16_t count)
Definition: SdReader.cpp:235
FatReader(void)
Definition: FatReader.h:156
uint32_t readCluster(void)
Definition: FatReader.h:192
FAT short directory entry.
Definition: FatStructs.h:302
uint8_t isOpen(void)
Definition: FatReader.h:190
uint32_t rootDirStart(void)
Definition: FatReader.h:119
#define FAT32EOC_MIN
Definition: FatStructs.h:261
uint8_t seekSet(uint32_t pos)
Definition: FatReader.h:204
uint8_t blocksPerCluster(void)
Definition: FatReader.h:96
uint32_t dataStartBlock(void)
Definition: FatReader.h:102
uint8_t isDir(void)
Definition: FatReader.h:186