UbixOS  2.0
fat_filelib.h
Go to the documentation of this file.
1 #ifndef __FAT_FILELIB_H__
2 #define __FAT_FILELIB_H__
3 
4 #include "fat_opts.h"
5 #include "fat_access.h"
6 #include "fat_list.h"
7 
8 //-----------------------------------------------------------------------------
9 // Defines
10 //-----------------------------------------------------------------------------
11 #ifndef SEEK_CUR
12  #define SEEK_CUR 1
13 #endif
14 
15 #ifndef SEEK_END
16  #define SEEK_END 2
17 #endif
18 
19 #ifndef SEEK_SET
20  #define SEEK_SET 0
21 #endif
22 
23 #ifndef EOF
24  #define EOF (-1)
25 #endif
26 
27 //-----------------------------------------------------------------------------
28 // Structures
29 //-----------------------------------------------------------------------------
30 struct sFL_FILE;
31 
33 {
36 };
37 
38 typedef struct sFL_FILE
39 {
48 
49 #ifdef FAT_CLUSTER_CACHE_ENTRIES
50  uint32 cluster_cache_idx[FAT_CLUSTER_CACHE_ENTRIES];
51  uint32 cluster_cache_data[FAT_CLUSTER_CACHE_ENTRIES];
52 #endif
53 
54  // Cluster Lookup
56 
57  // Read/Write sector buffer
61 
62  // File fopen flags
64 #define FILE_READ (1 << 0)
65 #define FILE_WRITE (1 << 1)
66 #define FILE_APPEND (1 << 2)
67 #define FILE_BINARY (1 << 3)
68 #define FILE_ERASE (1 << 4)
69 #define FILE_CREATE (1 << 5)
70 
72 } FL_FILE;
73 
74 //-----------------------------------------------------------------------------
75 // Prototypes
76 //-----------------------------------------------------------------------------
77 
78 // External
79 void fl_init(void);
80 void fl_attach_locks(void (*lock)(void), void (*unlock)(void));
82 void fl_shutdown(void);
83 
84 // Standard API
85 void* fl_fopen(const char *path, const char *modifiers);
86 void fl_fclose(void *file);
87 int fl_fflush(void *file);
88 int fl_fgetc(void *file);
89 char * fl_fgets(char *s, int n, void *f);
90 int fl_fputc(int c, void *file);
91 int fl_fputs(const char * str, void *file);
92 int fl_fwrite(const void * data, int size, int count, void *file );
93 int fl_fread(void * data, int size, int count, void *file );
94 int fl_fseek(void *file , long offset , int origin );
95 int fl_fgetpos(void *file , uint32 * position);
96 long fl_ftell(void *f);
97 int fl_feof(void *f);
98 int fl_remove(const char * filename);
99 
100 // Equivelant dirent.h
101 typedef struct fs_dir_list_status FL_DIR;
102 typedef struct fs_dir_ent fl_dirent;
103 
104 FL_DIR* fl_opendir(const char* path, FL_DIR *dir);
105 int fl_readdir(FL_DIR *dirls, fl_dirent *entry);
106 int fl_closedir(FL_DIR* dir);
107 
108 // Extensions
109 void fl_listdirectory(const char *path);
110 int fl_createdirectory(const char *path);
111 int fl_is_dir(const char *path);
112 
113 int fl_format(uint32 volume_sectors, const char *name);
114 
115 // Test hooks
116 #ifdef FATFS_INC_TEST_HOOKS
117 struct fatfs* fl_get_fs(void);
118 #endif
119 
120 //-----------------------------------------------------------------------------
121 // Stdio file I/O names
122 //-----------------------------------------------------------------------------
123 #ifdef USE_FILELIB_STDIO_COMPAT_NAMES
124 
125 #define FILE FL_FILE
126 
127 #define fopen(a,b) fl_fopen(a, b)
128 #define fclose(a) fl_fclose(a)
129 #define fflush(a) fl_fflush(a)
130 #define fgetc(a) fl_fgetc(a)
131 #define fgets(a,b,c) fl_fgets(a, b, c)
132 #define fputc(a,b) fl_fputc(a, b)
133 #define fputs(a,b) fl_fputs(a, b)
134 #define fwrite(a,b,c,d) fl_fwrite(a, b, c, d)
135 #define fread(a,b,c,d) fl_fread(a, b, c, d)
136 #define fseek(a,b,c) fl_fseek(a, b, c)
137 #define fgetpos(a,b) fl_fgetpos(a, b)
138 #define ftell(a) fl_ftell(a)
139 #define feof(a) fl_feof(a)
140 #define remove(a) fl_remove(a)
141 #define mkdir(a) fl_createdirectory(a)
142 #define rmdir(a) 0
143 
144 #endif
145 
146 #endif
sFL_FILE::parentcluster
uint32 parentcluster
Definition: fat_filelib.h:40
fl_opendir
FL_DIR * fl_opendir(const char *path, FL_DIR *dir)
Definition: fat_filelib.c:1401
fs_dir_list_status
Definition: fat_access.h:90
fat_access.h
sFL_FILE::startcluster
uint32 startcluster
Definition: fat_filelib.h:41
sFL_FILE::flags
uint8 flags
Definition: fat_filelib.h:63
sFL_FILE::bytenum
uint32 bytenum
Definition: fat_filelib.h:42
fl_fseek
int fl_fseek(void *file, long offset, int origin)
Definition: fat_filelib.c:1034
uint8
unsigned char uint8
Definition: fat_types.h:15
fl_ftell
long fl_ftell(void *f)
Definition: fat_filelib.c:1115
fl_shutdown
void fl_shutdown(void)
Definition: fat_filelib.c:627
fl_fputs
int fl_fputs(const char *str, void *file)
Definition: fat_filelib.c:1300
fat_node
Definition: fat_list.h:17
sFL_FILE::file_data_sector
uint8 file_data_sector[512]
Definition: fat_filelib.h:58
fl_readdir
int fl_readdir(FL_DIR *dirls, fl_dirent *entry)
Definition: fat_filelib.c:1432
file
Definition: descrip.h:67
sFL_FILE::list_node
struct fat_node list_node
Definition: fat_filelib.h:71
sFL_FILE::shortfilename
uint8 shortfilename[11]
Definition: fat_filelib.h:47
cluster_lookup::CurrentCluster
uint32 CurrentCluster
Definition: fat_filelib.h:35
fl_fwrite
int fl_fwrite(const void *data, int size, int count, void *file)
Definition: fat_filelib.c:1162
sFL_FILE::path
char path[260]
Definition: fat_filelib.h:45
cluster_lookup::ClusterIdx
uint32 ClusterIdx
Definition: fat_filelib.h:34
fl_feof
int fl_feof(void *f)
Definition: fat_filelib.c:1125
fl_fopen
void * fl_fopen(const char *path, const char *modifiers)
Definition: fat_filelib.c:638
sFL_FILE::file_data_dirty
int file_data_dirty
Definition: fat_filelib.h:60
fl_fread
int fl_fread(void *data, int size, int count, void *file)
Definition: fat_filelib.c:938
FAT_SECTOR_SIZE
#define FAT_SECTOR_SIZE
Definition: fat_opts.h:70
fl_listdirectory
void fl_listdirectory(const char *path)
Definition: fat_filelib.c:1362
fs_dir_ent
Definition: fat_access.h:97
fl_fgetc
int fl_fgetc(void *file)
Definition: fat_filelib.c:895
sFL_FILE::filelength_changed
int filelength_changed
Definition: fat_filelib.h:44
FL_FILE
struct sFL_FILE FL_FILE
fat_opts.h
fl_closedir
int fl_closedir(FL_DIR *dir)
Definition: fat_filelib.c:1451
fat_list.h
fl_init
void fl_init(void)
Definition: fat_filelib.c:584
fl_fgetpos
int fl_fgetpos(void *file, uint32 *position)
Definition: fat_filelib.c:1097
fl_fflush
int fl_fflush(void *file)
Definition: fat_filelib.c:831
FATFS_MAX_LONG_FILENAME
#define FATFS_MAX_LONG_FILENAME
Definition: fat_opts.h:19
fl_format
int fl_format(uint32 volume_sectors, const char *name)
Definition: fat_filelib.c:1476
fn_diskio_write
int(* fn_diskio_write)(uint32 sector, uint8 *buffer, uint32 sector_count)
Definition: fat_access.h:25
fl_attach_media
int fl_attach_media(fn_diskio_read rd, fn_diskio_write wr)
Definition: fat_filelib.c:606
name
const char * name
Definition: pci.c:37
cluster_lookup
Definition: fat_filelib.h:32
sFL_FILE
Definition: fat_filelib.h:38
fl_remove
int fl_remove(const char *filename)
Definition: fat_filelib.c:1314
sFL_FILE::filename
char filename[260]
Definition: fat_filelib.h:46
sFL_FILE::last_fat_lookup
struct cluster_lookup last_fat_lookup
Definition: fat_filelib.h:55
fl_is_dir
int fl_is_dir(const char *path)
Definition: fat_filelib.c:1460
fl_fclose
void fl_fclose(void *file)
Definition: fat_filelib.c:856
fl_createdirectory
int fl_createdirectory(const char *path)
Definition: fat_filelib.c:1345
fl_fputc
int fl_fputc(int c, void *file)
Definition: fat_filelib.c:1147
uint32
unsigned long uint32
Definition: fat_types.h:23
fl_fgets
char * fl_fgets(char *s, int n, void *f)
Definition: fat_filelib.c:908
sFL_FILE::filelength
uint32 filelength
Definition: fat_filelib.h:43
fl_attach_locks
void fl_attach_locks(void(*lock)(void), void(*unlock)(void))
Definition: fat_filelib.c:599
sFL_FILE::file_data_address
uint32 file_data_address
Definition: fat_filelib.h:59
fn_diskio_read
int(* fn_diskio_read)(uint32 sector, uint8 *buffer, uint32 sector_count)
Definition: fat_access.h:24
fatfs
Definition: fat_access.h:57