29void lbaToMbrChs(uint8_t *chs, uint32_t capacityMB, uint32_t lba);
31#if !defined(USE_SIMPLE_LITTLE_ENDIAN) || USE_SIMPLE_LITTLE_ENDIAN
33inline uint16_t
getLe16(
const uint8_t *src)
35 return *
reinterpret_cast<const uint16_t *
>(src);
37inline uint32_t
getLe32(
const uint8_t *src)
39 return *
reinterpret_cast<const uint32_t *
>(src);
41inline uint64_t
getLe64(
const uint8_t *src)
43 return *
reinterpret_cast<const uint64_t *
>(src);
45inline void setLe16(uint8_t *dst, uint16_t src)
47 *
reinterpret_cast<uint16_t *
>(dst) = src;
50inline void setLe32(uint8_t *dst, uint32_t src)
52 *
reinterpret_cast<uint32_t *
>(dst) = src;
54inline void setLe64(uint8_t *dst, uint64_t src)
56 *
reinterpret_cast<uint64_t *
>(dst) = src;
59inline uint16_t
getLe16(
const uint8_t *src)
61 return (uint16_t)src[0] << 0 | (uint16_t)src[1] << 8;
63inline uint32_t
getLe32(
const uint8_t *src)
65 return (uint32_t)src[0] << 0 | (uint32_t)src[1] << 8 | (uint32_t)src[2] << 16 | (uint32_t)src[3] << 24;
67inline uint64_t
getLe64(
const uint8_t *src)
69 return (uint64_t)src[0] << 0 | (uint64_t)src[1] << 8 | (uint64_t)src[2] << 16 | (uint64_t)src[3] << 24 |
70 (uint64_t)src[4] << 32 | (uint64_t)src[5] << 40 | (uint64_t)src[6] << 48 | (uint64_t)src[7] << 56;
72inline void setLe16(uint8_t *dst, uint16_t src)
77inline void setLe32(uint8_t *dst, uint32_t src)
84inline void setLe64(uint8_t *dst, uint64_t src)
242 uint8_t createTime[2];
243 uint8_t createDate[2];
244 uint8_t accessDate[2];
245 uint8_t firstClusterHigh[2];
246 uint8_t modifyTime[2];
247 uint8_t modifyDate[2];
248 uint8_t firstClusterLow[2];
279 uint8_t unicode1[10];
283 uint8_t unicode2[12];
284 uint8_t mustBeZero2[2];
290 return (sum << 31) + (sum >> 1) + data;
331 uint8_t firstCluster[4];
342 uint8_t firstCluster[4];
367 uint8_t setChecksum[2];
368 uint8_t attributes[2];
370 uint8_t createTime[2];
371 uint8_t createDate[2];
372 uint8_t modifyTime[2];
373 uint8_t modifyDate[2];
374 uint8_t accessTime[2];
375 uint8_t accessDate[2];
395 uint8_t validLength[8];
397 uint8_t firstCluster[4];
398 uint8_t dataLength[8];
struct FsInfoSector FsInfo_t
uint32_t getLe32(const uint8_t *src)
Definition FsStructs.h:37
const uint8_t FAT_ATTRIB_READ_ONLY
Definition FsStructs.h:224
const uint8_t EXFAT_TYPE_STREAM
Definition FsStructs.h:384
const uint8_t FAT_ATTRIB_SYSTEM
Definition FsStructs.h:226
uint64_t getLe64(const uint8_t *src)
Definition FsStructs.h:41
void setLe32(uint8_t *dst, uint32_t src)
Definition FsStructs.h:50
void setLe16(uint8_t *dst, uint16_t src)
Definition FsStructs.h:45
const uint32_t FSINFO_LEAD_SIGNATURE
Definition FsStructs.h:206
void setLe64(uint8_t *dst, uint64_t src)
Definition FsStructs.h:54
const uint8_t EXFAT_FLAG_CONTIGUOUS
Definition FsStructs.h:386
const uint8_t FAT_ATTRIB_LONG_NAME
Definition FsStructs.h:230
const uint8_t EXFAT_TYPE_UPCASE
Definition FsStructs.h:335
const uint32_t FSINFO_TRAIL_SIGNATURE
Definition FsStructs.h:208
const uint32_t FSINFO_STRUCT_SIGNATURE
Definition FsStructs.h:207
const uint8_t FAT_NAME_FREE
Definition FsStructs.h:223
struct partitionBootSector pbs_t
struct biosParameterBlockExFat BpbExFat_t
static bool isFileDir(const DirFat_t *dir)
Definition FsStructs.h:252
const uint8_t EXFAT_ATTRIB_DIRECTORY
Definition FsStructs.h:360
const uint8_t EXFAT_TYPE_FILE
Definition FsStructs.h:355
uint32_t exFatChecksum(uint32_t sum, uint8_t data)
Definition FsStructs.h:288
const uint8_t EXFAT_MAX_NAME_LENGTH
Definition FsStructs.h:402
const uint8_t EXFAT_ATTRIB_READ_ONLY
Definition FsStructs.h:356
const uint8_t FAT_ATTRIB_LABEL
Definition FsStructs.h:227
static bool isFileOrSubdir(const DirFat_t *dir)
Definition FsStructs.h:256
const uint8_t FAT_CASE_LC_BASE
Definition FsStructs.h:232
const uint8_t EXTENDED_BOOT_SIGNATURE
Definition FsStructs.h:138
uint16_t getLe16(const uint8_t *src)
Definition FsStructs.h:33
const uint8_t FAT_ORDER_LAST_LONG_ENTRY
Definition FsStructs.h:274
struct biosParameterBlockFat32 BpbFat32_t
struct ExFatBootSector ExFatPbs_t
const uint8_t FAT_ATTRIB_ARCHIVE
Definition FsStructs.h:229
struct masterBootRecordSector MbrSector_t
void lbaToMbrChs(uint8_t *chs, uint32_t capacityMB, uint32_t lba)
Definition FsStructs.cpp:28
const uint8_t EXFAT_TYPE_NAME
Definition FsStructs.h:401
const uint16_t MBR_SIGNATURE
Definition FsStructs.h:97
struct mbrPartition MbrPart_t
const uint16_t PBR_SIGNATURE
Definition FsStructs.h:98
const uint8_t FAT_CASE_LC_EXT
Definition FsStructs.h:234
const uint8_t EXFAT_TYPE_LABEL
Definition FsStructs.h:346
const uint8_t EXFAT_ATTRIB_ARCHIVE
Definition FsStructs.h:361
struct partitionBootSectorFat PbsFat_t
static bool isSubdir(const DirFat_t *dir)
Definition FsStructs.h:264
static uint8_t isLongName(const DirFat_t *dir)
Definition FsStructs.h:260
const uint8_t EXFAT_ATTRIB_HIDDEN
Definition FsStructs.h:357
const uint8_t EXFAT_ATTRIB_SYSTEM
Definition FsStructs.h:358
const uint8_t EXFAT_FLAG_ALWAYS1
Definition FsStructs.h:385
const uint8_t FAT_ATTRIB_HIDDEN
Definition FsStructs.h:225
const uint8_t EXFAT_ATTRIB_RESERVED
Definition FsStructs.h:359
const uint8_t EXFAT_TYPE_BITMAP
Definition FsStructs.h:325
const uint32_t EXFAT_EOC
Definition FsStructs.h:323
const uint8_t FAT_NAME_DELETED
Definition FsStructs.h:221
const uint8_t FAT_ATTRIB_DIRECTORY
Definition FsStructs.h:228
struct biosParameterBlockFat16 BpbFat16_t
unsigned char reserved3
Definition SdCardInfo.h:41
unsigned char reserved
Definition SdCardInfo.h:21
unsigned char reserved2
Definition SdCardInfo.h:16
unsigned char reserved1
Definition SdCardInfo.h:1
Definition FsStructs.h:327
uint8_t type
Definition FsStructs.h:328
uint8_t flags
Definition FsStructs.h:329
Definition FsStructs.h:237
uint8_t caseFlags
Definition FsStructs.h:240
uint8_t attributes
Definition FsStructs.h:239
uint8_t createTimeMs
Definition FsStructs.h:241
Definition FsStructs.h:364
uint8_t createTimeMs
Definition FsStructs.h:376
uint8_t type
Definition FsStructs.h:365
uint8_t modifyTimeMs
Definition FsStructs.h:377
uint8_t setCount
Definition FsStructs.h:366
uint8_t createTimezone
Definition FsStructs.h:378
uint8_t accessTimezone
Definition FsStructs.h:380
uint8_t modifyTimezone
Definition FsStructs.h:379
Definition FsStructs.h:127
uint8_t type
Definition FsStructs.h:128
Definition FsStructs.h:348
uint8_t labelLength
Definition FsStructs.h:350
uint8_t type
Definition FsStructs.h:349
Definition FsStructs.h:277
uint8_t mustBeZero1
Definition FsStructs.h:281
uint8_t checksum
Definition FsStructs.h:282
uint8_t attributes
Definition FsStructs.h:280
uint8_t order
Definition FsStructs.h:278
Definition FsStructs.h:404
uint8_t type
Definition FsStructs.h:405
uint8_t mustBeZero
Definition FsStructs.h:406
Definition FsStructs.h:388
uint8_t nameLength
Definition FsStructs.h:392
uint8_t reserved1
Definition FsStructs.h:391
uint8_t type
Definition FsStructs.h:389
uint8_t flags
Definition FsStructs.h:390
Definition FsStructs.h:337
uint8_t type
Definition FsStructs.h:338
Definition FsStructs.h:315
BpbExFat_t bpb
Definition FsStructs.h:318
uint8_t jmpInstruction[3]
Definition FsStructs.h:316
uint8_t signature[2]
Definition FsStructs.h:320
char oemName[8]
Definition FsStructs.h:317
uint8_t bootCode[390]
Definition FsStructs.h:319
Definition FsStructs.h:210
uint8_t nextFree[4]
Definition FsStructs.h:215
uint8_t structSignature[4]
Definition FsStructs.h:213
uint8_t trailSignature[4]
Definition FsStructs.h:217
uint8_t reserved2[12]
Definition FsStructs.h:216
uint8_t freeCount[4]
Definition FsStructs.h:214
uint8_t reserved1[480]
Definition FsStructs.h:212
uint8_t leadSignature[4]
Definition FsStructs.h:211
Definition FsStructs.h:294
uint8_t volumeFlags[2]
Definition FsStructs.h:305
uint8_t numberOfFats
Definition FsStructs.h:308
uint8_t clusterCount[4]
Definition FsStructs.h:301
uint8_t clusterHeapOffset[4]
Definition FsStructs.h:300
uint8_t fileSystemRevision[2]
Definition FsStructs.h:304
uint8_t mustBeZero[53]
Definition FsStructs.h:295
uint8_t volumeSerialNumber[4]
Definition FsStructs.h:303
uint8_t driveSelect
Definition FsStructs.h:309
uint8_t fatOffset[4]
Definition FsStructs.h:298
uint8_t sectorsPerClusterShift
Definition FsStructs.h:307
uint8_t volumeLength[8]
Definition FsStructs.h:297
uint8_t partitionOffset[8]
Definition FsStructs.h:296
uint8_t bytesPerSectorShift
Definition FsStructs.h:306
uint8_t percentInUse
Definition FsStructs.h:310
uint8_t reserved[7]
Definition FsStructs.h:311
uint8_t fatLength[4]
Definition FsStructs.h:299
uint8_t rootDirectoryCluster[4]
Definition FsStructs.h:302
Definition FsStructs.h:140
uint8_t totalSectors32[4]
Definition FsStructs.h:152
uint8_t fatCount
Definition FsStructs.h:144
uint8_t rootDirEntryCount[2]
Definition FsStructs.h:145
uint8_t bytesPerSector[2]
Definition FsStructs.h:141
uint8_t totalSectors16[2]
Definition FsStructs.h:146
uint8_t volumeLabel[11]
Definition FsStructs.h:158
uint8_t extSignature
Definition FsStructs.h:156
uint8_t volumeType[8]
Definition FsStructs.h:159
uint8_t hidddenSectors[4]
Definition FsStructs.h:151
uint8_t sectorsPerFat16[2]
Definition FsStructs.h:148
uint8_t reservedSectorCount[2]
Definition FsStructs.h:143
uint8_t sectorsPerTrtack[2]
Definition FsStructs.h:149
uint8_t extReserved
Definition FsStructs.h:155
uint8_t mediaType
Definition FsStructs.h:147
uint8_t sectorsPerCluster
Definition FsStructs.h:142
uint8_t volumeSerialNumber[4]
Definition FsStructs.h:157
uint8_t physicalDriveNumber
Definition FsStructs.h:154
uint8_t headCount[2]
Definition FsStructs.h:150
Definition FsStructs.h:163
uint8_t totalSectors16[2]
Definition FsStructs.h:169
uint8_t volumeSerialNumber[4]
Definition FsStructs.h:188
uint8_t fat32BackBootSector[2]
Definition FsStructs.h:182
uint8_t sectorsPerCluster
Definition FsStructs.h:165
uint8_t sectorsPerFat32[4]
Definition FsStructs.h:177
uint8_t volumeType[8]
Definition FsStructs.h:190
uint8_t totalSectors32[4]
Definition FsStructs.h:175
uint8_t sectorsPerTrtack[2]
Definition FsStructs.h:172
uint8_t extSignature
Definition FsStructs.h:187
uint8_t sectorsPerFat16[2]
Definition FsStructs.h:171
uint8_t fat32Reserved[12]
Definition FsStructs.h:183
uint8_t fat32RootCluster[4]
Definition FsStructs.h:180
uint8_t extReserved
Definition FsStructs.h:186
uint8_t fat32Version[2]
Definition FsStructs.h:179
uint8_t rootDirEntryCount[2]
Definition FsStructs.h:168
uint8_t reservedSectorCount[2]
Definition FsStructs.h:166
uint8_t fat32FSInfoSector[2]
Definition FsStructs.h:181
uint8_t volumeLabel[11]
Definition FsStructs.h:189
uint8_t hidddenSectors[4]
Definition FsStructs.h:174
uint8_t physicalDriveNumber
Definition FsStructs.h:185
uint8_t bytesPerSector[2]
Definition FsStructs.h:164
uint8_t fatCount
Definition FsStructs.h:167
uint8_t headCount[2]
Definition FsStructs.h:173
uint8_t fat32Flags[2]
Definition FsStructs.h:178
uint8_t mediaType
Definition FsStructs.h:170
Definition FsStructs.h:133
uint32_t cluster
Definition FsStructs.h:135
uint64_t position
Definition FsStructs.h:134
Definition FsStructs.h:111
MbrPart_t part[4]
Definition FsStructs.h:113
uint8_t signature[2]
Definition FsStructs.h:114
uint8_t bootCode[446]
Definition FsStructs.h:112
Definition FsStructs.h:101
uint8_t beginCHS[3]
Definition FsStructs.h:103
uint8_t boot
Definition FsStructs.h:102
uint8_t type
Definition FsStructs.h:104
uint8_t relativeSectors[4]
Definition FsStructs.h:106
uint8_t totalSectors[4]
Definition FsStructs.h:107
uint8_t endCHS[3]
Definition FsStructs.h:105
Definition FsStructs.h:194
uint8_t bootCode[390]
Definition FsStructs.h:202
uint8_t jmpInstruction[3]
Definition FsStructs.h:195
BpbFat32_t bpb32
Definition FsStructs.h:200
uint8_t bpb[109]
Definition FsStructs.h:198
uint8_t signature[2]
Definition FsStructs.h:203
BpbFat16_t bpb16
Definition FsStructs.h:199
char oemName[8]
Definition FsStructs.h:196
Definition FsStructs.h:118
uint8_t bpb[109]
Definition FsStructs.h:121
char oemName[8]
Definition FsStructs.h:120
uint8_t bootCode[390]
Definition FsStructs.h:122
uint8_t signature[2]
Definition FsStructs.h:123
uint8_t jmpInstruction[3]
Definition FsStructs.h:119