projects
/
my-code
/
arm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
playing around with pffs (NOT FINISHED, DOESNT COMPILE!)
[my-code/arm.git]
/
betty
/
pffs.h
diff --git
a/betty/pffs.h
b/betty/pffs.h
index
72ec880
..
faf0d38
100644
(file)
--- a/
betty/pffs.h
+++ b/
betty/pffs.h
@@
-10,19
+10,37
@@
#include "lpc2xxx.h"
#include "types.h"
#include "lpc2xxx.h"
#include "types.h"
+#include "functions.h"
/* defines */
/* defines */
+#define PFFS_MAX_FILENAME_SIZE 15 // in words
+#define PFFS_HEADER_SIZE 3 // in words
#define PFFS_REGISTERED (1<<0)
#define PFFS_INDEX_MAGIC 0x7000
#define PFFS_REGISTERED (1<<0)
#define PFFS_INDEX_MAGIC 0x7000
+#define PFFS_INDEX_MAGIC_MASK 0xf000
+#define PFFS_RESERVED_MASK 0x0f00
+#define PFFS_FNLEN_MASK 0x00f0
+#define PFFS_LEN_MSB_MASK 0x000f
+
+/* file modes */
+#define PFFS_READ 0x01
+#define PFFS_WRITE 0x02
+#define PFFS_RDWR 0x03
+
+/* pffs write / read return codes */
+#define PFFS_FILE_EXISTS 0x01
+#define PFFS_FILE_NOT_FOUND 0x02
+#define PFFS_NO_SPACE_LEFT 0x04
+#define PFFS_FILENAME_TOO_LONG 0x08
+
/* type definitions */
typedef struct s_pffs {
/* flash specs */
u32 base_addr;
/* type definitions */
typedef struct s_pffs {
/* flash specs */
u32 base_addr;
- u8 sec_num;
u32 *sec_addr;
/* flash write, read and sector erase function pointers */
int (*fw)(u32 addr,u16 *buf,int len);
u32 *sec_addr;
/* flash write, read and sector erase function pointers */
int (*fw)(u32 addr,u16 *buf,int len);
@@
-30,12
+48,26
@@
typedef struct s_pffs {
int (*fe)(u32 addr);
/* pffs internal variables */
u8 state;
int (*fe)(u32 addr);
/* pffs internal variables */
u8 state;
- u32 data_ptr;
- u32 index_ptr
;
- u8 sec_num_data[2];
- u8 sec_num_index[2];
+ u32 data_ptr;
// pointer where new data goes
+ u32 index_ptr
[3]; // 0: start, 1: new, 2: current
+ u8 sec_num_data[2];
// data start/end sectors
+ u8 sec_num_index[2];
// 2 index sectors
} t_pffs;
} t_pffs;
+typedef struct s_pffs_fd {
+ u32 daddr;
+ u32 iaddr;
+ char file[PFFS_MAX_FILENAME_SIZE+PFFS_MAX_FILENAME_SIZE];
+ u8 fn_size;
+ u8 mode;
+ t_pffs *pffs;
+} t_pffs_fd;
+
/* function prototypes */
/* function prototypes */
+int pffs_open(t_pffs *pffs,char *file,u8 mode);
+int pffs_write(t_pffs *pffs,int fd,u8 *buf,int len);
+int pffs_read(t_pffs *pffs,int fd,u8 *buf,int len);
+int pffs_close(t_pffs *pffs,int fd);
+int pffs_unlink(t_pffs *pffs,char *file);
#endif
#endif