105#ifndef DOXYGEN_SHOULD_SKIP_THIS
206#ifndef DOXYGEN_SHOULD_SKIP_THIS
237 return m_cache.cacheSafeRead(sector, dst);
241 return m_cache.cacheSafeRead(sector, dst, count);
245 return m_cache.cacheSafeWrite(sector, dst);
249 return m_cache.cacheSafeWrite(sector, dst, count);
263#if MAINTAIN_FREE_CLUSTER_COUNT
288#if USE_SEPARATE_FAT_CACHE
349 return fatPut(cluster, 0x0FFFFFFF);
BlockDeviceInterface BlockDevice
Definition BlockDevice.h:29
configuration definitions
const uint8_t FAT_TYPE_FAT12
Definition FatPartition.h:39
const uint8_t FAT_TYPE_FAT16
Definition FatPartition.h:42
const uint8_t FAT_TYPE_FAT32
Definition FatPartition.h:45
Common cache code for exFAT and FAT.
Print print_t
Definition SysCall.h:66
void dmpRootDir(print_t *pr)
Definition FatDbg.cpp:121
static const uint16_t m_sectorMask
Definition FatPartition.h:219
int8_t dbgFat(uint32_t n, uint32_t *v)
Definition FatPartition.h:192
FsCache m_fatCache
Definition FatPartition.h:289
void dmpDirSector(print_t *pr, uint32_t sector)
Definition FatDbg.cpp:107
void dmpSector(print_t *pr, uint32_t sector, uint8_t bits=8)
Definition FatDbg.cpp:140
int8_t fatGet(uint32_t cluster, uint32_t *value)
Definition FatPartition.cpp:184
uint32_t cacheSectorNumber()
Definition FatPartition.h:326
bool allocContiguous(uint32_t count, uint32_t *firstCluster)
Definition FatPartition.cpp:107
friend class FatFile
Definition FatPartition.h:215
uint32_t sectorsPerFat() const
Definition FatPartition.h:113
FatPartition()
Definition FatPartition.h:71
uint8_t blocksPerCluster() __attribute__((deprecated))
Definition FatPartition.h:107
uint8_t bytesPerClusterShift() const
Definition FatPartition.h:76
bool cacheSync()
Definition FatPartition.h:295
uint32_t clusterStartSector(uint32_t cluster) const
Definition FatPartition.h:341
static const uint8_t m_bytesPerSectorShift
Definition FatPartition.h:217
bool cacheSafeWrite(uint32_t sector, const uint8_t *dst, size_t count)
Definition FatPartition.h:247
bool cacheSafeRead(uint32_t sector, uint8_t *dst)
Definition FatPartition.h:235
uint8_t fatCount() const
Definition FatPartition.h:140
uint16_t bytesPerSector() const
Definition FatPartition.h:86
void updateFreeClusterCount(int32_t change)
Definition FatPartition.h:269
uint8_t m_fatType
Definition FatPartition.h:225
uint16_t m_rootDirEntryCount
Definition FatPartition.h:226
uint8_t sectorsPerClusterShift() const
Definition FatPartition.h:130
bool freeChain(uint32_t cluster)
Definition FatPartition.cpp:353
uint32_t rootDirStart() const
Definition FatPartition.h:177
bool fatPut(uint32_t cluster, uint32_t value)
Definition FatPartition.cpp:264
uint32_t m_lastCluster
Definition FatPartition.h:231
bool cacheSyncData()
Definition FatPartition.h:318
uint32_t fatStartSector() const
Definition FatPartition.h:145
static const uint16_t m_bytesPerSector
Definition FatPartition.h:218
uint16_t rootDirEntryCount() const
Definition FatPartition.h:171
uint8_t m_clusterSectorMask
Definition FatPartition.h:223
uint32_t m_sectorsPerFat
Definition FatPartition.h:228
uint32_t m_dataStartSector
Definition FatPartition.h:229
void cacheDirty()
Definition FatPartition.h:330
uint32_t m_fatStartSector
Definition FatPartition.h:230
cache_t * cacheFetchData(uint32_t sector, uint8_t options)
Definition FatPartition.h:310
uint32_t dataStartSector() const
Definition FatPartition.h:135
uint8_t sectorsPerCluster() const
Definition FatPartition.h:101
cache_t * cacheAddress()
Definition FatPartition.h:322
bool readSector(uint32_t sector, uint8_t *dst)
Definition FatPartition.h:251
bool fatPutEOC(uint32_t cluster)
Definition FatPartition.h:347
void dmpFat(print_t *pr, uint32_t start, uint32_t count)
Definition FatDbg.cpp:177
uint32_t m_rootDirStart
Definition FatPartition.h:232
uint32_t volumeSectorCount() const
Definition FatPartition.h:182
bool cacheSafeWrite(uint32_t sector, const uint8_t *dst)
Definition FatPartition.h:243
void setFreeClusterCount(int32_t value)
Definition FatPartition.h:265
BlockDevice * m_blockDev
Definition FatPartition.h:221
bool cacheSafeRead(uint32_t sector, uint8_t *dst, size_t count)
Definition FatPartition.h:239
uint8_t m_sectorsPerCluster
Definition FatPartition.h:222
uint8_t bytesPerSectorShift() const
Definition FatPartition.h:91
bool isEOC(uint32_t cluster) const
Definition FatPartition.h:352
uint8_t * cacheClear()
Definition FatPartition.h:120
void cacheInvalidate()
Definition FatPartition.h:314
bool isBusy()
Definition FatPartition.h:201
bool init(BlockDevice *dev, uint8_t part=1)
Definition FatPartition.cpp:468
uint32_t clusterCount() const
Definition FatPartition.h:125
uint16_t bytesPerCluster() const
Definition FatPartition.h:81
cache_t * cacheFetchFat(uint32_t sector, uint8_t options)
Definition FatPartition.h:290
int32_t freeClusterCount()
Definition FatPartition.cpp:386
int32_t m_freeClusterCount
Definition FatPartition.h:264
uint32_t m_allocSearchStart
Definition FatPartition.h:227
FsCache m_cache
Definition FatPartition.h:287
uint8_t fatType() const
Definition FatPartition.h:150
uint8_t m_sectorsPerClusterShift
Definition FatPartition.h:224
uint16_t sectorMask() const
Definition FatPartition.h:96
uint8_t sectorOfCluster(uint32_t position) const
Definition FatPartition.h:337
bool writeSector(uint32_t sector, const uint8_t *src)
Definition FatPartition.h:259
bool syncDevice()
Definition FatPartition.h:255
bool allocateCluster(uint32_t current, uint32_t *next)
Definition FatPartition.cpp:31
Sector cache.
Definition FsCache.h:38
static const uint8_t CACHE_STATUS_MIRROR_FAT
Definition FsCache.h:43
static bool value
Definition DigitalPin.h:210
union csd_t __attribute__
Definition DigitalPin.h:68
Definition FsStructs.h:237
Cache type for a sector.
Definition FatPartition.h:51
DirFat_t dir[16]
Definition FatPartition.h:59
uint32_t fat32[128]
Definition FatPartition.h:57
uint16_t fat16[256]
Definition FatPartition.h:55
uint8_t data[512]
Definition FatPartition.h:53