Rev 380 | Rev 433 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
41 | ingob | 1 | #ifndef _FAT16_H |
2 | #define _FAT16_H |
||
1 | ingob | 3 | |
4 | |||
5 | //________________________________________________________________________________________________________________________________________ |
||
6 | // |
||
41 | ingob | 7 | // Definitions |
1 | ingob | 8 | // |
9 | //________________________________________________________________________________________________________________________________________ |
||
10 | |||
211 | killagreg | 11 | #define FILE_MAX_OPEN 4 // The number of files that can accessed simultaneously. |
41 | ingob | 12 | #define SEEK_SET 0 |
13 | #define SEEK_CUR 1 |
||
14 | #define SEEK_END 2 |
||
15 | #define EOF (-1) |
||
16 | #define BYTES_PER_SECTOR 512 |
||
17 | /* |
||
18 | ________________________________________________________________________________________________________________________________________ |
||
19 | |||
20 | Structure of a filepointer |
||
21 | ________________________________________________________________________________________________________________________________________ |
||
22 | */ |
||
23 | typedef struct |
||
24 | StephanB | 24 | { |
41 | ingob | 25 | u32 FirstSectorOfFirstCluster; // First sector of the first cluster of the file. |
26 | u32 FirstSectorOfCurrCluster; // First sector of the cluster which is edited at the moment. |
||
380 | holgerb | 27 | u32 FirstSectorOfLastCluster; // First sector of the last cluster of the file |
41 | ingob | 28 | u8 SectorOfCurrCluster; // The sector within the current cluster. |
29 | u16 ByteOfCurrSector; // The byte location within the current sector. |
||
30 | u8 Mode; // Mode of fileoperation (read,write) |
||
31 | u32 Size; // The size of the opend file in bytes. |
||
32 | u32 Position; // Pointer to a character within the file 0 < fileposition < filesize |
||
33 | u32 DirectorySector; // the sectorposition where the directoryentry has been made. |
||
34 | u16 DirectoryIndex; // The index to the directoryentry within the specified sector. |
||
35 | u8 Attribute; // The attribute of the file opened. |
||
36 | u8 Cache[BYTES_PER_SECTOR]; // Cache for read and write operation from or to the sd-card. |
||
37 | u32 SectorInCache; // The last sector read, which is still in the sector cache. |
||
38 | u8 State; // State of the filepointer (used/unused/...) |
||
39 | } File_t; |
||
1 | ingob | 40 | |
427 | killagreg | 41 | // attribute definitions |
379 | holgerb | 42 | #define ATTR_NONE 0x00 // normal file |
43 | #define ATTR_READONLY 0x01 // file is readonly |
||
44 | #define ATTR_HIDDEN 0x02 // file is hidden |
||
45 | #define ATTR_SYSTEM 0x04 // file is a system file |
||
46 | #define ATTR_VOLUMELABEL 0x08 // entry is a volume label |
||
47 | #define ATTR_LONG_FILENAME 0x0F // this is a long filename entry |
||
48 | #define ATTR_SUBDIRECTORY 0x10 // entry is a directory name |
||
49 | #define ATTR_ARCHIVE 0x20 // file is new or modified |
||
50 | #define ATTR_ANY_FILE 0x3F // all files |
||
349 | ingob | 51 | |
379 | holgerb | 52 | |
53 | |||
1 | ingob | 54 | //________________________________________________________________________________________________________________________________________ |
379 | holgerb | 55 | // |
56 | // Structure of an item used by functions findfirst and findnext |
||
57 | //________________________________________________________________________________________________________________________________________ |
||
58 | |||
59 | typedef struct |
||
60 | { |
||
61 | File_t fp; // filepointer used to get access to the filesystemstructure |
||
427 | killagreg | 62 | s8 searchstring[12]; // findfirst and findnext will only return elements within the specified directory matching this searchstring (8+3 + Terminator). |
379 | holgerb | 63 | s8 name[13]; // the name of the element found within the specified directory |
64 | u8 active; // if the attribute active is set the name and the attributes of an element found within DirectoryEntryExist will be entered into the structure |
||
65 | u8 attribfilter; |
||
66 | u8 attribmask; |
||
67 | } __attribute__((packed)) Find_t; |
||
68 | |||
69 | //________________________________________________________________________________________________________________________________________ |
||
1 | ingob | 70 | // |
71 | // API to the FAT16 filesystem |
||
72 | // |
||
73 | //________________________________________________________________________________________________________________________________________ |
||
74 | |||
427 | killagreg | 75 | // File System Funtions |
41 | ingob | 76 | u8 Fat16_Init(void); |
77 | u8 Fat16_Deinit(void); |
||
90 | killagreg | 78 | u8 Fat16_IsValid(void); |
210 | killagreg | 79 | s8* FAT16_GetVolumeLabel(void); |
427 | killagreg | 80 | |
81 | // File Function |
||
82 | File_t *fopen_(s8* const filename, const s8 mode); |
||
83 | s16 fclose_(File_t * const file); |
||
84 | u8 fexist_(s8* const filename); |
||
89 | killagreg | 85 | s16 fflush_(File_t * const file); |
86 | s16 fseek_(File_t * const file, s32 offset, s16 origin); |
||
87 | s16 fgetc_(File_t * const file); |
||
88 | s16 fputc_(s8 c, File_t * const file); |
||
89 | u32 fread_(void *buffer, u32 size, u32 count, File_t * const file); |
||
90 | u32 fwrite_(void *buffer, u32 size, u32 count, File_t * const file); |
||
90 | killagreg | 91 | s16 fputs_(s8 * const string, File_t * const file); |
89 | killagreg | 92 | s8 * fgets_(s8 * const string, s16 length, File_t * const file); |
93 | u8 feof_(File_t * const file); |
||
427 | killagreg | 94 | u8 fdelete_(s8* const filepath); |
95 | |||
96 | // Directory Functions |
||
97 | s8 *getcwd_(void); |
||
379 | holgerb | 98 | u8 findfirst_(const s8* name, u8 attribmask, Find_t *); |
99 | u8 findnext_(Find_t *); |
||
427 | killagreg | 100 | u8 chdir_(s8* const dirpath); |
101 | u8 mkdir_(s8* const dirpath); |
||
102 | u8 rmdir_(s8* const dirpath); |
||
1 | ingob | 103 | |
24 | StephanB | 104 | |
105 | |||
379 | holgerb | 106 | |
41 | ingob | 107 | #endif //_FAT16_H |
1 | ingob | 108 | |
109 | |||
110 | |||
111 |