| 
| 
#define  | RC_OK   0 | 
|   | 
| 
#define  | CF_LE_W(v)   le16toh(v) | 
|   | 
| 
#define  | CF_LE_L(v)   le32toh(v) | 
|   | 
| 
#define  | CT_LE_W(v)   htole16(v) | 
|   | 
| 
#define  | CT_LE_L(v)   htole32(v) | 
|   | 
| 
#define  | FAT_HASH_SIZE   2 | 
|   | 
| 
#define  | FAT_HASH_MODULE   FAT_HASH_SIZE | 
|   | 
| 
#define  | FAT_SECTOR512_SIZE   512 /* sector size (bytes) */ | 
|   | 
| 
#define  | FAT_SECTOR512_BITS   9 /* log2(SECTOR_SIZE) */ | 
|   | 
| 
#define  | FAT_FAT12_MAX_CLN   4085 | 
|   | 
| 
#define  | FAT_FAT16_MAX_CLN   65525 | 
|   | 
| 
#define  | FAT_FAT12   0x01 | 
|   | 
| 
#define  | FAT_FAT16   0x02 | 
|   | 
| 
#define  | FAT_FAT32   0x04 | 
|   | 
| 
#define  | FAT_UNDEFINED_VALUE   (uint32_t)0xFFFFFFFF | 
|   | 
| 
#define  | FAT_FAT12_EOC   0x0FF8 | 
|   | 
| 
#define  | FAT_FAT16_EOC   0xFFF8 | 
|   | 
| 
#define  | FAT_FAT32_EOC   (uint32_t)0x0FFFFFF8 | 
|   | 
| 
#define  | FAT_FAT12_FREE   0x0000 | 
|   | 
| 
#define  | FAT_FAT16_FREE   0x0000 | 
|   | 
| 
#define  | FAT_FAT32_FREE   0x00000000 | 
|   | 
| 
#define  | FAT_GENFAT_EOC   (uint32_t)0xFFFFFFFF | 
|   | 
| 
#define  | FAT_GENFAT_FREE   (uint32_t)0x00000000 | 
|   | 
| 
#define  | FAT_FAT12_SHIFT   0x04 | 
|   | 
| 
#define  | FAT_FAT12_MASK   0x00000FFF | 
|   | 
| 
#define  | FAT_FAT16_MASK   0x0000FFFF | 
|   | 
| 
#define  | FAT_FAT32_MASK   (uint32_t)0x0FFFFFFF | 
|   | 
| 
#define  | FAT_MAX_BPB_SIZE   90 | 
|   | 
| 
#define  | FAT_TOTAL_MBR_SIZE   512 | 
|   | 
| 
#define  | FAT_USEFUL_INFO_SIZE   12 | 
|   | 
| 
#define  | FAT_GET_ADDR(x,  ofs)   ((uint8_t *)(x) + (ofs)) | 
|   | 
| 
#define  | FAT_GET_VAL8(x,  ofs)   (uint8_t)(*((uint8_t *)(x) + (ofs))) | 
|   | 
| #define  | FAT_GET_VAL16(x,  ofs) | 
|   | 
| #define  | FAT_GET_VAL32(x,  ofs) | 
|   | 
| 
#define  | FAT_SET_VAL8(x,  ofs,  val)   (*((uint8_t *)(x)+(ofs))=(uint8_t)(val)) | 
|   | 
| #define  | FAT_SET_VAL16(x,  ofs,  val) | 
|   | 
| #define  | FAT_SET_VAL32(x,  ofs,  val) | 
|   | 
| 
#define  | FAT_GET_BR_JMPBOOT(x)   FAT_GET_VAL8( x,  0) | 
|   | 
| 
#define  | FAT_SET_BR_JMPBOOT(x,  val)   FAT_SET_VAL8( x,  0,val) | 
|   | 
| 
#define  | FAT_GET_ADDR_BR_OEMNAME(x)   FAT_GET_ADDR( x,  3) | 
|   | 
| 
#define  | FAT_BR_OEMNAME_SIZE   (8) | 
|   | 
| 
#define  | FAT_GET_BR_BYTES_PER_SECTOR(x)   FAT_GET_VAL16(x, 11) | 
|   | 
| 
#define  | FAT_SET_BR_BYTES_PER_SECTOR(x,  val)   FAT_SET_VAL16(x, 11,val) | 
|   | 
| 
#define  | FAT_GET_BR_SECTORS_PER_CLUSTER(x)   FAT_GET_VAL8( x, 13) | 
|   | 
| 
#define  | FAT_SET_BR_SECTORS_PER_CLUSTER(x,  val)   FAT_SET_VAL8( x, 13,val) | 
|   | 
| 
#define  | FAT_GET_BR_RESERVED_SECTORS_NUM(x)   FAT_GET_VAL16(x, 14) | 
|   | 
| 
#define  | FAT_SET_BR_RESERVED_SECTORS_NUM(x,  val)   FAT_SET_VAL16(x, 14,val) | 
|   | 
| 
#define  | FAT_GET_BR_FAT_NUM(x)   FAT_GET_VAL8( x, 16) | 
|   | 
| 
#define  | FAT_SET_BR_FAT_NUM(x,  val)   FAT_SET_VAL8( x, 16,val) | 
|   | 
| 
#define  | FAT_GET_BR_FILES_PER_ROOT_DIR(x)   FAT_GET_VAL16(x, 17) | 
|   | 
| 
#define  | FAT_SET_BR_FILES_PER_ROOT_DIR(x,  val)   FAT_SET_VAL16(x, 17,val) | 
|   | 
| 
#define  | FAT_GET_BR_TOTAL_SECTORS_NUM16(x)   FAT_GET_VAL16(x, 19) | 
|   | 
| 
#define  | FAT_SET_BR_TOTAL_SECTORS_NUM16(x,  val)   FAT_SET_VAL16(x, 19,val) | 
|   | 
| 
#define  | FAT_GET_BR_MEDIA(x)   FAT_GET_VAL8( x, 21) | 
|   | 
| 
#define  | FAT_SET_BR_MEDIA(x,  val)   FAT_SET_VAL8( x, 21,val) | 
|   | 
| 
#define  | FAT_GET_BR_SECTORS_PER_FAT(x)   FAT_GET_VAL16(x, 22) | 
|   | 
| 
#define  | FAT_SET_BR_SECTORS_PER_FAT(x,  val)   FAT_SET_VAL16(x, 22,val) | 
|   | 
| 
#define  | FAT_GET_BR_SECTORS_PER_TRACK(x)   FAT_GET_VAL16(x, 24) | 
|   | 
| 
#define  | FAT_SET_BR_SECTORS_PER_TRACK(x,  val)   FAT_SET_VAL16(x, 24,val) | 
|   | 
| 
#define  | FAT_GET_BR_NUMBER_OF_HEADS(x)   FAT_GET_VAL16(x, 26) | 
|   | 
| 
#define  | FAT_SET_BR_NUMBER_OF_HEADS(x,  val)   FAT_SET_VAL16(x, 26,val) | 
|   | 
| 
#define  | FAT_GET_BR_HIDDEN_SECTORS(x)   FAT_GET_VAL32(x, 28) | 
|   | 
| 
#define  | FAT_SET_BR_HIDDEN_SECTORS(x,  val)   FAT_SET_VAL32(x, 28,val) | 
|   | 
| 
#define  | FAT_GET_BR_TOTAL_SECTORS_NUM32(x)   FAT_GET_VAL32(x, 32) | 
|   | 
| 
#define  | FAT_SET_BR_TOTAL_SECTORS_NUM32(x,  val)   FAT_SET_VAL32(x, 32,val) | 
|   | 
| 
#define  | FAT_GET_BR_DRVNUM(x)   FAT_GET_VAL8( x, 36) | 
|   | 
| 
#define  | FAT_SET_BR_DRVNUM(x,  val)   FAT_SET_VAL8( x, 36,val) | 
|   | 
| 
#define  | FAT_GET_BR_RSVD1(x)   FAT_GET_VAL8( x, 37) | 
|   | 
| 
#define  | FAT_SET_BR_RSVD1(x,  val)   FAT_SET_VAL8( x, 37,val) | 
|   | 
| 
#define  | FAT_GET_BR_BOOTSIG(x)   FAT_GET_VAL8( x, 38) | 
|   | 
| 
#define  | FAT_SET_BR_BOOTSIG(x,  val)   FAT_SET_VAL8( x, 38,val) | 
|   | 
| 
#define  | FAT_BR_BOOTSIG_VAL   (0x29) | 
|   | 
| 
#define  | FAT_GET_BR_VOLID(x)   FAT_GET_VAL32(x, 39) | 
|   | 
| 
#define  | FAT_SET_BR_VOLID(x,  val)   FAT_SET_VAL32(x, 39,val) | 
|   | 
| 
#define  | FAT_GET_ADDR_BR_VOLLAB(x)   FAT_GET_ADDR (x, 43) | 
|   | 
| 
#define  | FAT_BR_VOLLAB_SIZE   (11) | 
|   | 
| 
#define  | FAT_GET_ADDR_BR_FILSYSTYPE(x)   FAT_GET_ADDR (x, 54) | 
|   | 
| 
#define  | FAT_BR_FILSYSTYPE_SIZE   (8) | 
|   | 
| 
#define  | FAT_GET_BR_SECTORS_PER_FAT32(x)   FAT_GET_VAL32(x, 36) | 
|   | 
| 
#define  | FAT_SET_BR_SECTORS_PER_FAT32(x,  val)   FAT_SET_VAL32(x, 36,val) | 
|   | 
| 
#define  | FAT_GET_BR_EXT_FLAGS(x)   FAT_GET_VAL16(x, 40) | 
|   | 
| 
#define  | FAT_SET_BR_EXT_FLAGS(x,  val)   FAT_SET_VAL16(x, 40,val) | 
|   | 
| 
#define  | FAT_GET_BR_FSVER(x)   FAT_GET_VAL16(x, 42) | 
|   | 
| 
#define  | FAT_SET_BR_FSVER(x,  val)   FAT_SET_VAL16(x, 42,val) | 
|   | 
| 
#define  | FAT_GET_BR_FAT32_ROOT_CLUSTER(x)   FAT_GET_VAL32(x, 44) | 
|   | 
| 
#define  | FAT_SET_BR_FAT32_ROOT_CLUSTER(x,  val)   FAT_SET_VAL32(x, 44,val) | 
|   | 
| 
#define  | FAT_GET_BR_FAT32_FS_INFO_SECTOR(x)   FAT_GET_VAL16(x, 48) | 
|   | 
| 
#define  | FAT_SET_BR_FAT32_FS_INFO_SECTOR(x,  val)   FAT_SET_VAL16(x, 48,val) | 
|   | 
| 
#define  | FAT_GET_BR_FAT32_BK_BOOT_SECTOR(x)   FAT_GET_VAL16(x, 50) | 
|   | 
| 
#define  | FAT_SET_BR_FAT32_BK_BOOT_SECTOR(x,  val)   FAT_SET_VAL16(x, 50,val) | 
|   | 
| 
#define  | FAT_GET_ADDR_BR_FAT32_RESERVED(x)   FAT_GET_ADDR (x, 52) | 
|   | 
| 
#define  | FAT_BR_FAT32_RESERVED_SIZE   (12) | 
|   | 
| 
#define  | FAT_GET_BR_FAT32_DRVNUM(x)   FAT_GET_VAL8( x, 64) | 
|   | 
| 
#define  | FAT_SET_BR_FAT32_DRVNUM(x,  val)   FAT_SET_VAL8( x, 64,val) | 
|   | 
| 
#define  | FAT_GET_BR_FAT32_RSVD1(x)   FAT_GET_VAL8( x, 65) | 
|   | 
| 
#define  | FAT_SET_BR_FAT32_RSVD1(x,  val)   FAT_SET_VAL8( x, 65,val) | 
|   | 
| 
#define  | FAT_GET_BR_FAT32_BOOTSIG(x)   FAT_GET_VAL8( x, 66) | 
|   | 
| 
#define  | FAT_SET_BR_FAT32_BOOTSIG(x,  val)   FAT_SET_VAL8( x, 66,val) | 
|   | 
| 
#define  | FAT_BR_FAT32_BOOTSIG_VAL   (0x29) | 
|   | 
| 
#define  | FAT_GET_BR_FAT32_VOLID(x)   FAT_GET_VAL32(x, 67) | 
|   | 
| 
#define  | FAT_SET_BR_FAT32_VOLID(x,  val)   FAT_SET_VAL32(x, 67,val) | 
|   | 
| 
#define  | FAT_GET_ADDR_BR_FAT32_VOLLAB(x)   FAT_GET_ADDR (x, 71) | 
|   | 
| 
#define  | FAT_BR_FAT32_VOLLAB_SIZE   (11) | 
|   | 
| 
#define  | FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(x)   FAT_GET_ADDR (x, 82) | 
|   | 
| 
#define  | FAT_BR_FAT32_FILSYSTYPE_SIZE   (8) | 
|   | 
| 
#define  | FAT_GET_BR_SIGNATURE(x)   FAT_GET_VAL16(x,510) | 
|   | 
| 
#define  | FAT_SET_BR_SIGNATURE(x,  val)   FAT_SET_VAL16(x,510,val) | 
|   | 
| 
#define  | FAT_BR_SIGNATURE_VAL   (0xAA55) | 
|   | 
| 
#define  | FAT_GET_FSINFO_LEAD_SIGNATURE(x)   FAT_GET_VAL32(x,  0) | 
|   | 
| 
#define  | FAT_SET_FSINFO_LEAD_SIGNATURE(x,  val)   FAT_SET_VAL32(x,  0,val) | 
|   | 
| 
#define  | FAT_FSINFO_LEAD_SIGNATURE_VALUE   (0x41615252) | 
|   | 
| 
#define  | FAT_GET_FSINFO_STRUC_SIGNATURE(x)   FAT_GET_VAL32(x,484) | 
|   | 
| 
#define  | FAT_SET_FSINFO_STRUC_SIGNATURE(x,  val)   FAT_SET_VAL32(x,484,val) | 
|   | 
| 
#define  | FAT_FSINFO_STRUC_SIGNATURE_VALUE   (0x61417272) | 
|   | 
| 
#define  | FAT_GET_FSINFO_TRAIL_SIGNATURE(x)   FAT_GET_VAL32(x,508) | 
|   | 
| 
#define  | FAT_SET_FSINFO_TRAIL_SIGNATURE(x,  val)   FAT_SET_VAL32(x,508,val) | 
|   | 
| 
#define  | FAT_FSINFO_TRAIL_SIGNATURE_VALUE   (0xAA550000) | 
|   | 
| 
#define  | FAT_GET_FSINFO_FREE_CLUSTER_COUNT(x)   FAT_GET_VAL32(x, 4) | 
|   | 
| 
#define  | FAT_SET_FSINFO_FREE_CLUSTER_COUNT(x,  val)   FAT_SET_VAL32(x, 4,val) | 
|   | 
| 
#define  | FAT_GET_FSINFO_NEXT_FREE_CLUSTER(x)   FAT_GET_VAL32(x, 8) | 
|   | 
| 
#define  | FAT_SET_FSINFO_NEXT_FREE_CLUSTER(x,  val)   FAT_SET_VAL32(x, 8,val) | 
|   | 
| 
#define  | FAT_FSI_INFO   484 | 
|   | 
| 
#define  | FAT_FSINFO_STRUCT_OFFSET   488 | 
|   | 
| 
#define  | FAT_FSINFO_FREE_CLUSTER_COUNT_OFFSET   (FAT_FSINFO_STRUCT_OFFSET+0) | 
|   | 
| 
#define  | FAT_FSINFO_NEXT_FREE_CLUSTER_OFFSET   (FAT_FSINFO_STRUCT_OFFSET+4) | 
|   | 
| 
#define  | FAT_RSRVD_CLN   0x02 | 
|   | 
| 
#define  | FAT_FSI_LEADSIG_SIZE   0x04 | 
|   | 
| 
#define  | FAT_TOTAL_FSINFO_SIZE   512 | 
|   | 
| 
#define  | MS_BYTES_PER_CLUSTER_LIMIT   0x10000    /* 64K */ | 
|   | 
| 
#define  | MS_BYTES_PER_CLUSTER_LIMIT_FAT12   0x1000     /*  4K */ | 
|   | 
| 
#define  | FAT_BR_EXT_FLAGS_MIRROR   0x0080 | 
|   | 
| 
#define  | FAT_BR_EXT_FLAGS_FAT_NUM   0x000F | 
|   | 
| 
#define  | FAT_BR_MEDIA_FIXED   0xf8 | 
|   | 
| 
#define  | FAT_DIRENTRY_SIZE   32 | 
|   | 
| 
#define  | FAT_DIRENTRIES_PER_SEC512   16 | 
|   | 
| 
#define  | FAT_FILE_SHORT_NAME   (0xffffffff) | 
|   | 
| #define  | FAT_FAT_OFFSET(fat_type,  cln) | 
|   | 
| 
#define  | FAT_CLUSTER_IS_ODD(n)   ((n) & 0x0001) | 
|   | 
| 
#define  | FAT12_SHIFT   0x4    /* half of a byte */ | 
|   | 
| 
#define  | FAT_UINO_POOL_INIT_SIZE   0x100 | 
|   | 
| 
#define  | FAT_CACHE_EMPTY   0x0 | 
|   | 
| 
#define  | FAT_CACHE_ACTUAL   0x1 | 
|   | 
| 
#define  | FAT_OP_TYPE_READ   0x1 | 
|   | 
| 
#define  | FAT_OP_TYPE_GET   0x2 | 
|   |