* FAT12/16/32 Driver\r
* vfs/fs/fs_fat.h\r
*/\r
+#ifndef _FS_FAT_H_\r
+#define _FS_FAT_H_\r
\r
// === On Disk Structures ===\r
/**\r
- \struct fat_bootsect_s\r
- \brief Bootsector format\r
-*/\r
-struct fat_bootsect_s {\r
+ * \struct fat_bootsect_s\r
+ * \brief Bootsector format\r
+ */\r
+struct fat_bootsect_s\r
+{\r
Uint8 jmp[3]; //!< Jump Instruction\r
char oemname[8]; //!< OEM Name. Typically MSDOS1.1\r
Uint16 bps; //!< Bytes per Sector. Assumed to be 512\r
*/\r
struct fat_filetable_s {\r
char name[11]; //!< 8.3 Name\r
- //char ext[3]; //!< Extention\r
Uint8 attrib; //!< File Attributes.\r
Uint8 ntres; //!< Reserved for NT - Set to 0\r
Uint8 ctimems; //!< 10ths of a second ranging from 0-199 (2 seconds)\r
Uint16 name3[2]; //!< Last 2 characters of name\r
} __attribute__((packed));\r
\r
-#define ATTR_READONLY 0x01\r
-#define ATTR_HIDDEN 0x02\r
-#define ATTR_SYSTEM 0x04\r
-#define ATTR_VOLUMEID 0x08\r
-#define ATTR_DIRECTORY 0x10\r
+/**\r
+ * \name File Attributes\r
+ * \brief Flag values for ::fat_filetable_s.attrib\r
+ * \{\r
+ */\r
+#define ATTR_READONLY 0x01 //!< Read-only file\r
+#define ATTR_HIDDEN 0x02 //!< Hidden File\r
+#define ATTR_SYSTEM 0x04 //!< System File\r
+#define ATTR_VOLUMEID 0x08 //!< Volume ID (Deprecated)\r
+#define ATTR_DIRECTORY 0x10 //!< Directory\r
+/**\r
+ * \brief File needs archiving\r
+ * \note User set flag, no significance to the FS driver\r
+ */\r
#define ATTR_ARCHIVE 0x20\r
+/**\r
+ * \brief Meta Attribute \r
+ * \r
+ * If ::fat_filetable_s.attrib equals ATTR_LFN the file is a LFN entry\r
+ */\r
#define ATTR_LFN (ATTR_READONLY | ATTR_HIDDEN | ATTR_SYSTEM | ATTR_VOLUMEID)\r
+/**\r
+ * \}\r
+ */\r
\r
/**\r
- \enum eFatType\r
- \brief Internal Ids for FAT types\r
-*/\r
-enum eFatType {\r
-// FAT_NULL, //!< NULL Entry\r
+ * \brief Internal IDs for FAT types\r
+ */\r
+enum eFatType\r
+{\r
FAT12, //!< FAT12 Volume\r
FAT16, //!< FAT16 Volume\r
FAT32, //!< FAT32 Volume\r
-// FAT_LAST //!< LAST Entry. Unused\r
};\r
\r
-#define EOC_FAT12 0x0FFF\r
-#define EOC_FAT16 0xFFFF\r
-#define EOC_FAT32 0x0FFFFFF\r
+/**\r
+ * \name End of Cluster marks\r
+ * \brief FAT values that indicate the end of a cluster chain in\r
+ * different versions.\r
+ * \{\r
+ */\r
+#define EOC_FAT12 0x0FFF //!< FAT-12 Mark\r
+#define EOC_FAT16 0xFFFF //!< FAT-16 Mark\r
+#define EOC_FAT32 0x0FFFFFF //!< FAT-32 Mark\r
+/**\r
+ * \}\r
+ */\r
\r
typedef struct fat_bootsect_s fat_bootsect;\r
typedef struct fat_filetable_s fat_filetable;\r
\r
// === Memory Structures ===\r
/**\r
- \struct drv_fat_volinfo_s\r
- \brief Representation of a volume in memory\r
-*/\r
-struct drv_fat_volinfo_s {\r
+ * \struct drv_fat_volinfo_s\r
+ * \brief Representation of a volume in memory\r
+ */\r
+struct drv_fat_volinfo_s\r
+{\r
int fileHandle; //!< File Handle\r
int type; //!< FAT Type. See eFatType\r
char name[12]; //!< Volume Name (With NULL Terminator)\r
};\r
\r
typedef struct drv_fat_volinfo_s tFAT_VolInfo;\r
+\r
+#endif\r