mirror of
https://github.com/eledio-devices/thirdparty-littlefs.git
synced 2025-11-01 08:48:31 +01:00
Cleaned up enough things to pass basic file testing
This commit is contained in:
112
lfs.h
112
lfs.h
@@ -95,36 +95,25 @@ enum lfs_error {
|
|||||||
|
|
||||||
// File types
|
// File types
|
||||||
enum lfs_type {
|
enum lfs_type {
|
||||||
// file type
|
|
||||||
LFS_TYPE_REG = 0x01,
|
|
||||||
LFS_TYPE_DIR = 0x02,
|
|
||||||
LFS_TYPE_SUPERBLOCK = 0x0e,
|
|
||||||
|
|
||||||
// on disk structure
|
|
||||||
LFS_STRUCT_CTZ = 0x10,
|
|
||||||
LFS_STRUCT_DIR = 0x20,
|
|
||||||
LFS_STRUCT_INLINE = 0x30,
|
|
||||||
LFS_STRUCT_MOVED = 0x80,
|
|
||||||
|
|
||||||
// file types
|
// file types
|
||||||
LFS_TYPE_REG_ = 0x040,
|
LFS_TYPE_REG = 0x040,
|
||||||
LFS_TYPE_DIR_ = 0x050,
|
LFS_TYPE_DIR = 0x050,
|
||||||
|
|
||||||
// internally used types
|
// internally used types
|
||||||
LFS_TYPE_NAME_ = 0x010,
|
LFS_TYPE_NAME = 0x010,
|
||||||
LFS_TYPE_MOVE_ = 0x080,
|
LFS_TYPE_MOVE = 0x080,
|
||||||
LFS_TYPE_DELETE_ = 0x090,
|
LFS_TYPE_DELETE = 0x090,
|
||||||
|
|
||||||
LFS_TYPE_SUPERBLOCK_ = 0x0a0,
|
LFS_TYPE_SUPERBLOCK = 0x0a0,
|
||||||
LFS_TYPE_SOFTTAIL_ = 0x0c0,
|
LFS_TYPE_SOFTTAIL = 0x0c0,
|
||||||
LFS_TYPE_HARDTAIL_ = 0x0d0,
|
LFS_TYPE_HARDTAIL = 0x0d0,
|
||||||
LFS_TYPE_CRC_ = 0x0e0,
|
LFS_TYPE_CRC = 0x0e0,
|
||||||
|
|
||||||
// on disk structure
|
// on disk structure
|
||||||
LFS_STRUCT_ATTR_ = 0x100,
|
LFS_STRUCT_ATTR = 0x100,
|
||||||
LFS_STRUCT_INLINE_ = 0x000,
|
LFS_STRUCT_INLINE = 0x000,
|
||||||
LFS_STRUCT_CTZ_ = 0x004,
|
LFS_STRUCT_CTZ = 0x004,
|
||||||
LFS_STRUCT_DIR_ = 0x008,
|
LFS_STRUCT_DIR = 0x008,
|
||||||
};
|
};
|
||||||
|
|
||||||
// File open flags
|
// File open flags
|
||||||
@@ -268,30 +257,9 @@ struct lfs_attr {
|
|||||||
|
|
||||||
|
|
||||||
/// littlefs data structures ///
|
/// littlefs data structures ///
|
||||||
typedef struct lfs_entry {
|
|
||||||
lfs_off_t off;
|
|
||||||
lfs_size_t size;
|
|
||||||
|
|
||||||
struct lfs_disk_entry {
|
|
||||||
uint8_t type;
|
|
||||||
uint8_t elen;
|
|
||||||
uint8_t alen;
|
|
||||||
uint8_t nlen;
|
|
||||||
union {
|
|
||||||
struct {
|
|
||||||
lfs_block_t head;
|
|
||||||
lfs_size_t size;
|
|
||||||
} file;
|
|
||||||
lfs_block_t dir[2];
|
|
||||||
} u;
|
|
||||||
} d;
|
|
||||||
} lfs_entry_t;
|
|
||||||
|
|
||||||
typedef uint32_t lfs_tag_t;
|
typedef uint32_t lfs_tag_t;
|
||||||
typedef int32_t lfs_stag_t;
|
typedef struct lfs_entry {
|
||||||
|
lfs_tag_t tag;
|
||||||
typedef struct lfs_entry_ {
|
|
||||||
uint32_t tag;
|
|
||||||
union {
|
union {
|
||||||
void *buffer;
|
void *buffer;
|
||||||
lfs_block_t pair[2];
|
lfs_block_t pair[2];
|
||||||
@@ -304,27 +272,20 @@ typedef struct lfs_entry_ {
|
|||||||
lfs_off_t off;
|
lfs_off_t off;
|
||||||
} d;
|
} d;
|
||||||
} u;
|
} u;
|
||||||
} lfs_entry_t_;
|
} lfs_entry_t;
|
||||||
|
|
||||||
typedef struct lfs_entry_list_ {
|
typedef struct lfs_entrylist {
|
||||||
lfs_entry_t_ e;
|
lfs_entry_t e;
|
||||||
struct lfs_entry_list_ *next;
|
struct lfs_entrylist *next;
|
||||||
} lfs_entrylist_t;
|
} lfs_entrylist_t;
|
||||||
|
|
||||||
typedef struct lfs_entry_attr {
|
|
||||||
struct lfs_disk_entry_attr {
|
|
||||||
uint8_t type;
|
|
||||||
uint8_t len;
|
|
||||||
} d;
|
|
||||||
} lfs_entry_attr_t;
|
|
||||||
|
|
||||||
typedef struct lfs_cache {
|
typedef struct lfs_cache {
|
||||||
lfs_block_t block;
|
lfs_block_t block;
|
||||||
lfs_off_t off;
|
lfs_off_t off;
|
||||||
uint8_t *buffer;
|
uint8_t *buffer;
|
||||||
} lfs_cache_t;
|
} lfs_cache_t;
|
||||||
|
|
||||||
typedef struct lfs_file_ {
|
typedef struct lfs_file {
|
||||||
struct lfs_file *next;
|
struct lfs_file *next;
|
||||||
lfs_block_t pair[2];
|
lfs_block_t pair[2];
|
||||||
uint16_t id;
|
uint16_t id;
|
||||||
@@ -344,21 +305,6 @@ typedef struct lfs_file_ {
|
|||||||
typedef struct lfs_dir {
|
typedef struct lfs_dir {
|
||||||
struct lfs_dir *next;
|
struct lfs_dir *next;
|
||||||
lfs_block_t pair[2];
|
lfs_block_t pair[2];
|
||||||
lfs_off_t off;
|
|
||||||
|
|
||||||
lfs_block_t head[2];
|
|
||||||
lfs_off_t pos;
|
|
||||||
|
|
||||||
struct lfs_disk_dir {
|
|
||||||
uint32_t rev;
|
|
||||||
lfs_size_t size;
|
|
||||||
lfs_block_t tail[2];
|
|
||||||
} d;
|
|
||||||
} lfs_dir_t;
|
|
||||||
|
|
||||||
typedef struct lfs_dir_ {
|
|
||||||
struct lfs_dir_ *next;
|
|
||||||
lfs_block_t pair[2];
|
|
||||||
|
|
||||||
lfs_block_t tail[2];
|
lfs_block_t tail[2];
|
||||||
uint32_t rev;
|
uint32_t rev;
|
||||||
@@ -372,23 +318,9 @@ typedef struct lfs_dir_ {
|
|||||||
uint16_t id;
|
uint16_t id;
|
||||||
lfs_block_t head[2];
|
lfs_block_t head[2];
|
||||||
lfs_off_t pos;
|
lfs_off_t pos;
|
||||||
} lfs_dir_t_;
|
} lfs_dir_t;
|
||||||
|
|
||||||
typedef struct lfs_superblock {
|
typedef struct lfs_superblock {
|
||||||
struct lfs_disk_superblock {
|
|
||||||
lfs_block_t root[2];
|
|
||||||
|
|
||||||
lfs_size_t block_size;
|
|
||||||
lfs_size_t block_count;
|
|
||||||
uint32_t version;
|
|
||||||
|
|
||||||
lfs_size_t inline_size;
|
|
||||||
lfs_size_t attrs_size;
|
|
||||||
lfs_size_t name_size;
|
|
||||||
} d;
|
|
||||||
} lfs_superblock_t;
|
|
||||||
|
|
||||||
typedef struct lfs_superblock_ {
|
|
||||||
lfs_block_t root[2];
|
lfs_block_t root[2];
|
||||||
char magic[8];
|
char magic[8];
|
||||||
uint32_t version;
|
uint32_t version;
|
||||||
@@ -399,7 +331,7 @@ typedef struct lfs_superblock_ {
|
|||||||
lfs_size_t inline_size;
|
lfs_size_t inline_size;
|
||||||
lfs_size_t attrs_size;
|
lfs_size_t attrs_size;
|
||||||
lfs_size_t name_size;
|
lfs_size_t name_size;
|
||||||
} lfs_superblock_t_;
|
} lfs_superblock_t;
|
||||||
|
|
||||||
typedef struct lfs_free {
|
typedef struct lfs_free {
|
||||||
lfs_block_t off;
|
lfs_block_t off;
|
||||||
|
|||||||
@@ -88,6 +88,8 @@ const struct lfs_config cfg = {{
|
|||||||
.erase = &lfs_emubd_erase,
|
.erase = &lfs_emubd_erase,
|
||||||
.sync = &lfs_emubd_sync,
|
.sync = &lfs_emubd_sync,
|
||||||
|
|
||||||
|
.name_size = 255,
|
||||||
|
|
||||||
.read_size = LFS_READ_SIZE,
|
.read_size = LFS_READ_SIZE,
|
||||||
.prog_size = LFS_PROG_SIZE,
|
.prog_size = LFS_PROG_SIZE,
|
||||||
.block_size = LFS_BLOCK_SIZE,
|
.block_size = LFS_BLOCK_SIZE,
|
||||||
|
|||||||
@@ -117,6 +117,8 @@ tests/test.py << TEST
|
|||||||
for (int i = 0; i < $LARGESIZE; i++) {
|
for (int i = 0; i < $LARGESIZE; i++) {
|
||||||
sprintf((char*)buffer, "test%d", i);
|
sprintf((char*)buffer, "test%d", i);
|
||||||
lfs_dir_read(&lfs, &dir[0], &info) => 1;
|
lfs_dir_read(&lfs, &dir[0], &info) => 1;
|
||||||
|
printf("nameee %s\n", info.name);
|
||||||
|
printf("expect %s\n", (char*)buffer);
|
||||||
strcmp(info.name, (char*)buffer) => 0;
|
strcmp(info.name, (char*)buffer) => 0;
|
||||||
info.type => LFS_TYPE_DIR;
|
info.type => LFS_TYPE_DIR;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user