Adafruit WaveHC Arduino Library
FatStructs.h
Go to the documentation of this file.
1 #ifndef FatStructs_h
2 #define FatStructs_h
3 
7 /*
8  * mostly from Microsoft document fatgen103.doc
9  * http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx
10  */
11 //------------------------------------------------------------------------------
13 #define BOOTSIG0 0X55
14 
15 #define BOOTSIG1 0XAA
16 //------------------------------------------------------------------------------
30  uint8_t boot;
35  uint8_t beginHead;
40  unsigned beginSector : 6;
42  unsigned beginCylinderHigh : 2;
52  uint8_t type;
57  uint8_t endHead;
62  unsigned endSector : 6;
64  unsigned endCylinderHigh : 2;
69  uint8_t endCylinderLow;
71  uint32_t firstSector;
73  uint32_t totalSectors;
74 };
76 typedef struct partitionTable part_t;
77 //------------------------------------------------------------------------------
87  uint8_t codeArea[440];
89  uint32_t diskSignature;
91  uint16_t usuallyZero;
93  part_t part[4];
95  uint8_t mbrSig0;
97  uint8_t mbrSig1;
98 };
100 typedef struct masterBootRecord mbr_t;
101 //------------------------------------------------------------------------------
114  uint16_t bytesPerSector;
129  uint8_t fatCount;
148  uint16_t totalSectors16;
155  uint8_t mediaType;
161  uint16_t sectorsPerFat16;
165  uint16_t headCount;
171  uint32_t hidddenSectors;
178  uint32_t totalSectors32;
182  uint32_t sectorsPerFat32;
193  uint16_t fat32Flags;
198  uint16_t fat32Version;
208  uint16_t fat32FSInfo;
219  uint8_t fat32Reserved[12];
220 };
222 typedef struct biosParmBlock bpb_t;
223 //------------------------------------------------------------------------------
232  uint8_t jmpToBootCode[3];
234  char oemName[8];
238  uint8_t driveNumber;
240  uint8_t reserved1;
242  uint8_t bootSignature;
246  char volumeLabel[11];
248  char fileSystemType[8];
250  uint8_t bootCode[420];
252  uint8_t bootSectorSig0;
254  uint8_t bootSectorSig1;
255 };
256 //------------------------------------------------------------------------------
257 // End Of Chain values for FAT entries
259 #define FAT16EOC_MIN 0XFFF8
260 
261 #define FAT32EOC_MIN 0X0FFFFFF8
262 
263 #define FAT16EOC 0XFFFF
264 
265 #define FAT32EOC 0X0FFFFFFF
266 
267 #define FAT32MASK 0X0FFFFFFF
268 
270 typedef struct fat32BootSector fbs_t;
271 //------------------------------------------------------------------------------
308  uint8_t name[11];
315  uint8_t attributes;
320  uint8_t reservedNT;
328  uint16_t creationTime;
330  uint16_t creationDate;
336  uint16_t lastAccessDate;
343  uint16_t lastWriteTime;
345  uint16_t lastWriteDate;
347  uint16_t firstClusterLow;
349  uint32_t fileSize;
350 };
351 //------------------------------------------------------------------------------
352 // Macros for directory entries
353 //
355 typedef struct directoryEntry dir_t;
357 #define DIR_NAME_0XE5 0X05
358 
359 #define DIR_NAME_DELETED 0XE5
360 
361 #define DIR_NAME_FREE 0X00
362 
363 #define DIR_ATT_READ_ONLY 0X01
364 
365 #define DIR_ATT_HIDDEN 0X02
366 
367 #define DIR_ATT_SYSTEM 0X04
368 
369 #define DIR_ATT_VOLUME_ID 0X08
370 
371 #define DIR_ATT_DIRECTORY 0X10
372 
373 #define DIR_ATT_ARCHIVE 0X20
374 
376 #define DIR_ATT_LONG_NAME 0X0F
377 
378 #define DIR_ATT_LONG_NAME_MASK 0X3F
379 
380 #define DIR_ATT_DEFINED_BITS 0X3F
381 
382 #define DIR_IS_LONG_NAME(dir) \
383  (((dir).attributes & DIR_ATT_LONG_NAME_MASK) == DIR_ATT_LONG_NAME)
384 
385 #define DIR_ATT_FILE_TYPE_MASK (DIR_ATT_VOLUME_ID | DIR_ATT_DIRECTORY)
386 
387 #define DIR_IS_FILE(dir) (((dir).attributes & DIR_ATT_FILE_TYPE_MASK) == 0)
388 
389 #define DIR_IS_SUBDIR(dir) \
390  (((dir).attributes & DIR_ATT_FILE_TYPE_MASK) == DIR_ATT_DIRECTORY)
391 
392 #define DIR_IS_FILE_OR_SUBDIR(dir) (((dir).attributes & DIR_ATT_VOLUME_ID) == 0)
393 #endif // FatStructs_h
uint32_t totalSectors32
Definition: FatStructs.h:178
uint32_t firstSector
Definition: FatStructs.h:71
uint8_t endCylinderLow
Definition: FatStructs.h:69
uint16_t totalSectors16
Definition: FatStructs.h:148
uint8_t attributes
Definition: FatStructs.h:315
uint16_t lastWriteDate
Definition: FatStructs.h:345
uint8_t bootSectorSig1
Definition: FatStructs.h:254
uint8_t bootSignature
Definition: FatStructs.h:242
Master Boot Record.
Definition: FatStructs.h:85
Boot sector for a FAT16 or FAT32 volume.
Definition: FatStructs.h:230
uint16_t creationDate
Definition: FatStructs.h:330
uint32_t sectorsPerFat32
Definition: FatStructs.h:182
uint16_t fat32Flags
Definition: FatStructs.h:193
uint16_t fat32FSInfo
Definition: FatStructs.h:208
uint32_t hidddenSectors
Definition: FatStructs.h:171
uint32_t totalSectors
Definition: FatStructs.h:73
uint16_t usuallyZero
Definition: FatStructs.h:91
uint8_t bootSectorSig0
Definition: FatStructs.h:252
uint32_t diskSignature
Definition: FatStructs.h:89
uint16_t lastAccessDate
Definition: FatStructs.h:336
uint16_t sectorsPerFat16
Definition: FatStructs.h:161
uint8_t type
Definition: FatStructs.h:52
uint16_t creationTime
Definition: FatStructs.h:328
unsigned beginCylinderHigh
Definition: FatStructs.h:42
uint8_t mediaType
Definition: FatStructs.h:155
uint16_t fat32Version
Definition: FatStructs.h:198
uint8_t mbrSig0
Definition: FatStructs.h:95
uint32_t fileSize
Definition: FatStructs.h:349
uint8_t sectorsPerCluster
Definition: FatStructs.h:120
unsigned endCylinderHigh
Definition: FatStructs.h:64
uint32_t fat32RootCluster
Definition: FatStructs.h:203
uint16_t bytesPerSector
Definition: FatStructs.h:114
uint16_t firstClusterLow
Definition: FatStructs.h:347
BIOS parameter block.
Definition: FatStructs.h:109
uint8_t creationTimeTenths
Definition: FatStructs.h:326
uint8_t beginHead
Definition: FatStructs.h:35
MBR partition table entry.
Definition: FatStructs.h:24
uint16_t lastWriteTime
Definition: FatStructs.h:343
uint8_t fatCount
Definition: FatStructs.h:129
unsigned beginSector
Definition: FatStructs.h:40
uint16_t headCount
Definition: FatStructs.h:165
uint16_t rootDirEntryCount
Definition: FatStructs.h:138
uint8_t mbrSig1
Definition: FatStructs.h:97
uint32_t volumeSerialNumber
Definition: FatStructs.h:244
uint8_t reservedNT
Definition: FatStructs.h:320
uint16_t firstClusterHigh
Definition: FatStructs.h:341
FAT short directory entry.
Definition: FatStructs.h:302
unsigned endSector
Definition: FatStructs.h:62
bpb_t bpb
Definition: FatStructs.h:236
uint8_t driveNumber
Definition: FatStructs.h:238
uint16_t fat32BackBootBlock
Definition: FatStructs.h:214
uint16_t sectorsPerTrtack
Definition: FatStructs.h:163
uint8_t boot
Definition: FatStructs.h:30
uint8_t endHead
Definition: FatStructs.h:57
uint16_t reservedSectorCount
Definition: FatStructs.h:125
uint8_t beginCylinderLow
Definition: FatStructs.h:47
uint8_t reserved1
Definition: FatStructs.h:240