2 #define _FAT_DRIVER_H 1
4 #if !defined(BUILDING_IEEE1394_DISK) && !defined(BUILDING_USBHDFSD)
9 #define DIR_CHAIN_SIZE 32
11 #define FAT_MAX_NAME 256
14 #define FAT_ATTR_READONLY 0x01
15 #define FAT_ATTR_HIDDEN 0x02
16 #define FAT_ATTR_SYSTEM 0x04
17 #define FAT_ATTR_VOLUME_LABEL 0x08
18 #define FAT_ATTR_DIRECTORY 0x10
19 #define FAT_ATTR_ARCHIVE 0x20
21 #ifndef BUILDING_USBHDFSD
24 unsigned int sectorSize;
25 unsigned char clusterSize;
26 unsigned int resSectors;
27 unsigned char fatCount;
28 unsigned int rootSize;
30 unsigned int trackSize;
31 unsigned int headCount;
32 unsigned int sectorCount;
33 unsigned int partStart;
34 unsigned int rootDirStart;
35 unsigned int rootDirCluster;
36 unsigned int activeFat;
37 unsigned char fatType;
38 unsigned char fatId[9];
39 unsigned int dataStart;
44 #if !defined(BUILDING_IEEE1394_DISK) && !defined(BUILDING_USBHDFSD)
53 #define MAX_DIR_CLUSTER 512
54 unsigned int cbuf[MAX_DIR_CLUSTER];
56 unsigned int lastChainCluster;
60 #define MAX_DE_STACK 21
61 unsigned int deSec[MAX_DE_STACK];
62 int deOfs[MAX_DE_STACK];
65 #define SEQ_MASK_SIZE 2048 // Allow 2K files per directory
66 u8 seq_mask[SEQ_MASK_SIZE / 8];
67 #define DIR_MASK_SIZE 2048 * 11 // Allow 2K maxed fullnames per directory
68 u8 dir_used_mask[DIR_MASK_SIZE / 8];
70 #define MAX_CLUSTER_STACK 128
71 unsigned int clStack[MAX_CLUSTER_STACK];
73 unsigned int clStackLast;
79 unsigned int direntryCluster;
92 char name[FAT_MAX_NAME];
93 unsigned char cdate[4];
94 unsigned char ctime[3];
95 unsigned char adate[4];
96 unsigned char atime[3];
97 unsigned char mdate[4];
98 unsigned char mtime[3];
100 unsigned int parentDirCluster;
101 unsigned int startCluster;
103 unsigned int lastCluster;
107 #ifdef BUILDING_IEEE1394_DISK
108 extern int InitFAT(
void);
110 extern int strEqual(
const char *s1,
const char *s2);
112 #ifdef BUILDING_USBHDFSD
113 extern int fat_mount(
mass_dev *dev,
unsigned int start,
unsigned int count);
114 extern void fat_forceUnmount(
mass_dev *dev);
116 #ifdef BUILDING_IEEE1394_DISK
117 extern int fat_mount(
struct SBP2Device *dev,
unsigned int start,
unsigned int count);
118 extern void fat_forceUnmount(
struct SBP2Device *dev);
120 #if !defined(BUILDING_IEEE1394_DISK) && !defined(BUILDING_USBHDFSD)
126 extern int fat_readFile(
fat_driver *fatd,
fat_dir *fatDir,
unsigned int filePos,
unsigned char *buffer,
unsigned int size);
131 extern int fat_getFileStartCluster(
fat_driver *fatd,
const char *fname,
unsigned int *startCluster,
fat_dir *fatDir);
132 extern int fat_getClusterChain(
fat_driver *fatd,
unsigned int cluster,
unsigned int *buf,
unsigned int bufSize,
int startFlag);
133 #ifndef BUILDING_IEEE1394_DISK
134 extern int fat_CheckChain(
fat_driver *fatd,
unsigned int cluster);
137 #if !defined(BUILDING_IEEE1394_DISK) && !defined(BUILDING_USBHDFSD)
138 extern int fat_stopUnit(
int device);
139 extern void fat_stopAll(
void);