discoverpixy
filesystem.h
Go to the documentation of this file.
1 #ifndef FILESYSTEM_H
2 #define FILESYSTEM_H
3 
4 #include <stdbool.h>
5 #include <stdint.h>
6 
12 
17 typedef enum {
18  F_RDO=0x01,
19  F_HID=0x02,
20  F_SYS=0x04,
21  F_DIR=0x10,
22  F_ARC=0x20
24 
28 typedef struct {
29  unsigned year : 7;
30  unsigned month: 4;
31  unsigned day: 5;
33 
37 typedef struct {
38  unsigned hour : 5;
39  unsigned min: 6;
40  unsigned sec: 5;
42 
46 typedef struct {
47  uint32_t fsize;
50  uint8_t fattrib;
51  char* fname;
52 } FILE_STRUCT;
53 
57 typedef struct {
58  const char* path;
59  uint16_t num_files;
62 
66 typedef struct {
67  const char* fname;
68  uint32_t fpos;
69  uint32_t fsize;
70 } FILE_HANDLE;
71 
75 typedef enum {
76  F_OK,
81 } FILE_STATUS;
82 
88 bool filesystem_init();
89 
95 DIRECTORY_STRUCT* filesystem_dir_open(const char* path);
96 
102 
108 FILE_HANDLE* filesystem_file_open(const char* filename);
109 
114 void filesystem_file_close(FILE_HANDLE* handle);
115 
122 FILE_STATUS filesystem_file_seek(FILE_HANDLE* handle, uint32_t offset);
123 
131 FILE_STATUS filesystem_file_read(FILE_HANDLE* handle, uint8_t* buf, uint32_t size);
132 
141 FILE_STATUS filesystem_file_write(FILE_HANDLE* handle, uint8_t* buf, uint32_t size);
142 
143 
146 #endif /* FILESYSTEM_H */
147 
FILE_STATUS filesystem_file_seek(FILE_HANDLE *handle, uint32_t offset)
Definition: filesystem.c:24
uint32_t fsize
The total file size in bytes.
Definition: filesystem.h:69
Definition: filesystem.h:37
FILE_DATE_STRUCT fdate
Last modified date.
Definition: filesystem.h:48
The write/read operation tried to write/read past the end of the file. This is not a fatal error...
Definition: filesystem.h:77
uint8_t fattrib
File/Directory Attributes.
Definition: filesystem.h:50
You passed invalid parameters to the function.
Definition: filesystem.h:79
Definition: filesystem.h:66
FILE_HANDLE * filesystem_file_open(const char *filename)
Definition: filesystem.c:16
void filesystem_file_close(FILE_HANDLE *handle)
Definition: filesystem.c:20
File has the archive flag set (probably unused)
Definition: filesystem.h:22
char * fname
File/Directory name.
Definition: filesystem.h:51
A lowlevel disk-error occoured. This is a fatal error.
Definition: filesystem.h:80
File is a system file.
Definition: filesystem.h:20
uint16_t num_files
Number of files/directories in this directory.
Definition: filesystem.h:59
FILE_STATUS filesystem_file_write(FILE_HANDLE *handle, uint8_t *buf, uint32_t size)
Definition: filesystem.c:32
Definition: filesystem.h:57
uint32_t fpos
The current byte-position in the file.
Definition: filesystem.h:68
File is hidden.
Definition: filesystem.h:19
const char * path
Directory path (absolute)
Definition: filesystem.h:58
Everything ok.
Definition: filesystem.h:76
FILE_STRUCT * files
An array with num_files FILE_STRUCT entries.
Definition: filesystem.h:60
Definition: filesystem.h:46
DIRECTORY_STRUCT * filesystem_dir_open(const char *path)
Definition: filesystem.c:8
It's a directory and not a file.
Definition: filesystem.h:21
The file can not be read/written due to access problems. This is a fatal error.
Definition: filesystem.h:78
bool filesystem_init()
Definition: filesystem.c:4
FILE_ATTRIBUTES
Definition: filesystem.h:17
File is readonly. You cannot write to it.
Definition: filesystem.h:18
Definition: filesystem.h:28
const char * fname
The absolute file name.
Definition: filesystem.h:67
FILE_STATUS
Definition: filesystem.h:75
void filesystem_dir_close(DIRECTORY_STRUCT *dir)
Definition: filesystem.c:12
FILE_TIME_STRUCT ftime
Last modified time.
Definition: filesystem.h:49
FILE_STATUS filesystem_file_read(FILE_HANDLE *handle, uint8_t *buf, uint32_t size)
Definition: filesystem.c:28
uint32_t fsize
File size in bytes. 0 for directories.
Definition: filesystem.h:47