Subversion Repositories Projects

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
297 killagreg 1
#ifndef _FAT16_H
2
#define _FAT16_H
231 killagreg 3
 
4
 
5
//________________________________________________________________________________________________________________________________________
6
//
297 killagreg 7
// Definitions
231 killagreg 8
//
9
//________________________________________________________________________________________________________________________________________
10
 
297 killagreg 11
//#define               __USE_TIME_DATE_ATTRIBUTE
12
#define FILE_MAX_OPEN   3                               // The number of files that can accessed simultaneously.
13
#define SEEK_SET        0
14
#define SEEK_CUR        1
15
#define SEEK_END        2
16
#define EOF     (-1)
17
#define BYTES_PER_SECTOR        512
18
/*
19
________________________________________________________________________________________________________________________________________
231 killagreg 20
 
297 killagreg 21
        Structure of a filepointer
22
________________________________________________________________________________________________________________________________________
23
*/
24
typedef struct
231 killagreg 25
{
297 killagreg 26
        uint32_t        FirstSectorOfFirstCluster;      // First sector of the first cluster of the file.
27
        uint32_t        FirstSectorOfCurrCluster;       // First sector of the cluster which is edited at the moment.
28
        uint8_t         SectorOfCurrCluster;            // The sector within the current cluster.
29
        uint16_t        ByteOfCurrSector;                       // The byte location within the current sector.
30
        uint8_t         Mode;                                           // Mode of fileoperation (read,write)
31
        uint32_t        Size;                                           // The size of the opend file in bytes.
32
        uint32_t        Position;                                       // Pointer to a character within the file 0 < fileposition < filesize
33
        uint32_t        DirectorySector;                        // the sectorposition where the directoryentry has been made.
34
        uint16_t        DirectoryIndex;                         // The index to the directoryentry within the specified sector.
35
        uint8_t         Attribute;                                      // The attribute of the file opened.
36
        uint8_t         Cache[BYTES_PER_SECTOR];        // Cache for read and write operation from or to the sd-card.
37
        uint32_t        SectorInCache;                          // The last sector read, which is still in the sector cache.
38
        uint8_t         State;                                          // State of the filepointer (used/unused/...)
39
} File_t;
231 killagreg 40
 
41
//________________________________________________________________________________________________________________________________________
42
//
43
// API to the FAT16 filesystem
44
//
45
//________________________________________________________________________________________________________________________________________
46
 
297 killagreg 47
extern uint8_t          Fat16_Init(void);
48
extern uint8_t          Fat16_Deinit(void);
231 killagreg 49
 
317 killagreg 50
extern File_t *         fopen_(int8_t * const filename, const int8_t mode);
297 killagreg 51
extern int16_t          fclose_(File_t *file);
317 killagreg 52
extern uint8_t          fexist_(int8_t * const filename);
53
extern int16_t          fflush_(File_t * const file);
54
extern int16_t          fseek_(File_t * const file, int32_t offset, int16_t origin);
55
extern int16_t          fgetc_(File_t * const file);
56
extern int16_t          fputc_(const int8_t c, File_t * const file);
57
extern uint32_t         fread_(void * const buffer, uint32_t size, uint32_t count, File_t * const file);
297 killagreg 58
extern uint32_t         fwrite_(void *buffer, uint32_t size, uint32_t count, File_t *file);
317 killagreg 59
extern int16_t          fputs_(int8_t * const string, File_t * const file);
60
extern int8_t *         fgets_(int8_t * const string, const int16_t length, File_t * const file);
61
extern uint8_t          feof_(File_t * const file);
231 killagreg 62
 
63
 
64
 
297 killagreg 65
#endif //_FAT16_H
231 killagreg 66
 
67
 
68
 
69