25#ifndef ExFatPartition_h
26#define ExFatPartition_h
31#include "../common/BlockDevice.h"
32#include "../common/FsCache.h"
33#include "../common/SysCall.h"
138#ifndef DOXYGEN_SHOULD_SKIP_THIS
146 uint8_t sectorsPerClusterShift() const
151#ifndef DOXYGEN_SHOULD_SKIP_THIS
166 uint32_t
bitmapFind(uint32_t cluster, uint32_t count);
172#if USE_EXFAT_BITMAP_CACHE
180#if USE_EXFAT_BITMAP_CACHE
187#if USE_EXFAT_BITMAP_CACHE
265#if USE_EXFAT_BITMAP_CACHE
const uint8_t FAT_TYPE_EXFAT
Definition ExFatPartition.h:37
union csd_t __attribute__
Print print_t
Definition SysCall.h:66
BlockDeviceInterface class.
Definition BlockDeviceInterface.h:39
virtual bool syncDevice()=0
virtual bool readSector(uint32_t sector, uint8_t *dst)=0
virtual bool writeSector(uint32_t sector, const uint8_t *src)=0
Basic file class.
Definition ExFatFile.h:95
Access exFat partitions on raw file devices.
Definition ExFatPartition.h:47
uint32_t m_fatLength
Definition ExFatPartition.h:271
void dmpSector(print_t *pr, uint32_t sector)
Definition ExFatDbg.cpp:443
uint32_t sectorsPerCluster() const
Definition ExFatPartition.h:134
uint32_t fatLength() const
Definition ExFatPartition.h:91
uint32_t clusterCount() const
Definition ExFatPartition.h:81
bool bitmapModify(uint32_t cluster, uint32_t count, bool value)
Definition ExFatPartition.cpp:91
uint8_t bytesPerSectorShift() const
Definition ExFatPartition.h:68
static const uint8_t m_bytesPerSectorShift
Definition ExFatPartition.h:261
bool syncDevice()
Definition ExFatPartition.h:232
uint8_t * dataCacheGet(uint32_t sector, uint8_t option)
Definition ExFatPartition.h:201
uint32_t clusterHeapStartSector() const
Definition ExFatPartition.h:86
uint32_t m_fatStartSector
Definition ExFatPartition.h:270
bool cacheSafeWrite(uint32_t sector, const uint8_t *src)
Definition ExFatPartition.h:240
uint16_t bytesPerSector() const
Definition ExFatPartition.h:63
bool cacheSafeRead(uint32_t sector, uint8_t *dst)
Definition ExFatPartition.h:236
uint8_t fatType() const
Definition ExFatPartition.h:101
uint32_t dataCacheSector()
Definition ExFatPartition.h:205
uint32_t m_bytesPerCluster
Definition ExFatPartition.h:276
uint8_t m_sectorsPerClusterShift
Definition ExFatPartition.h:279
void dmpFat(print_t *pr, uint32_t start, uint32_t count)
Definition ExFatDbg.cpp:411
static const uint16_t m_sectorMask
Definition ExFatPartition.h:263
bool dataCacheSync()
Definition ExFatPartition.h:209
uint8_t * bitmapCacheGet(uint32_t sector, uint8_t option)
Definition ExFatPartition.h:170
bool cacheSafeRead(uint32_t sector, uint8_t *dst, size_t count)
Definition ExFatPartition.h:244
void dmpBitmap(print_t *pr)
Definition ExFatDbg.cpp:394
uint16_t sectorMask() const
Definition ExFatPartition.h:228
bool freeChain(uint32_t cluster)
Definition ExFatPartition.cpp:251
void printUpcase(print_t *pr)
bool printVolInfo(print_t *pr)
uint32_t clusterStartSector(uint32_t cluster)
Definition ExFatPartition.h:218
uint8_t * dirCache(DirPos_t *pos, uint8_t options)
Definition ExFatPartition.cpp:167
bool writeSector(uint32_t sector, const uint8_t *src)
Definition ExFatPartition.h:256
void cacheInit(BlockDevice *dev)
Definition ExFatPartition.h:178
uint8_t fatGet(uint32_t cluster, uint32_t *value)
Definition ExFatPartition.cpp:200
bool readSector(uint32_t sector, uint8_t *dst)
Definition ExFatPartition.h:252
uint32_t rootLength()
Definition ExFatPartition.cpp:391
static const uint16_t m_bytesPerSector
Definition ExFatPartition.h:262
uint32_t m_clusterCount
Definition ExFatPartition.h:273
uint8_t m_fatType
Definition ExFatPartition.h:278
uint32_t bitmapFind(uint32_t cluster, uint32_t count)
Definition ExFatPartition.cpp:31
void checkUpcase(print_t *pr)
Definition ExFatDbg.cpp:307
FsCache m_dataCache
Definition ExFatPartition.h:268
uint32_t m_rootDirectoryCluster
Definition ExFatPartition.h:274
uint32_t m_clusterHeapStartSector
Definition ExFatPartition.h:272
uint32_t chainSize(uint32_t cluster)
Definition ExFatPartition.cpp:153
uint32_t fatStartSector() const
Definition ExFatPartition.h:96
uint32_t m_bitmapStart
Definition ExFatPartition.h:269
uint32_t bytesPerCluster() const
Definition ExFatPartition.h:53
uint32_t m_clusterMask
Definition ExFatPartition.h:275
bool printDir(print_t *pr, ExFatFile *file)
Definition ExFatDbg.cpp:467
uint32_t rootDirectoryCluster() const
Definition ExFatPartition.h:127
uint32_t clusterMask() const
Definition ExFatPartition.h:214
void printFat(print_t *pr)
ExFatPartition()
Definition ExFatPartition.h:49
BlockDevice * m_blockDev
Definition ExFatPartition.h:277
bool fatPut(uint32_t cluster, uint32_t value)
Definition ExFatPartition.cpp:228
bool init(BlockDevice *dev, uint8_t part)
Definition ExFatPartition.cpp:326
void dataCacheDirty()
Definition ExFatPartition.h:193
uint32_t freeClusterCount()
Definition ExFatPartition.cpp:287
bool isBusy()
Definition ExFatPartition.h:122
int8_t dirSeek(DirPos_t *pos, uint32_t offset)
Definition ExFatPartition.cpp:176
uint8_t bytesPerClusterShift() const
Definition ExFatPartition.h:58
bool cacheSync()
Definition ExFatPartition.h:185
FsCache m_bitmapCache
Definition ExFatPartition.h:266
uint32_t blocksPerCluster() __attribute__((deprecated))
Definition ExFatPartition.h:140
bool cacheSafeWrite(uint32_t sector, const uint8_t *src, size_t count)
Definition ExFatPartition.h:248
void dataCacheInvalidate()
Definition ExFatPartition.h:197
void dmpCluster(print_t *pr, uint32_t cluster, uint32_t offset, uint32_t count)
Definition ExFatDbg.cpp:400
uint8_t * cacheClear()
Definition ExFatPartition.h:76
Sector cache.
Definition FsCache.h:38
uint8_t * clear()
Definition FsCache.h:124
uint8_t * get(uint32_t sector, uint8_t option)
Definition FsCache.cpp:29
void init(BlockDevice *blockDev)
Definition FsCache.h:141
bool sync()
Definition FsCache.cpp:61
uint32_t sector()
Definition FsCache.h:175
void invalidate()
Definition FsCache.h:147
bool cacheSafeWrite(uint32_t sector, const uint8_t *src)
Definition FsCache.h:99
bool cacheSafeRead(uint32_t sector, uint8_t *dst)
Definition FsCache.h:67
void dirty()
Definition FsCache.h:134
static bool value
Definition DigitalPin.h:210
Internal type for position in directory file.
Definition ExFatTypes.h:49