1
2
3
4
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
46
47
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
78
79
80
81
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
111
112
113
114
115
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
155
156
157
158
159
160
161
162
163
#ifndef ESP_LITTLEFS_API_H__
#define ESP_LITTLEFS_API_H__
#include <stdint.h>
#include <stddef.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/semphr.h"
#include "esp_vfs.h"
#include "esp_partition.h"
#include "littlefs/lfs.h"
#include <sdkconfig.h>9 includes
#ifdef CONFIG_LITTLEFS_SDMMC_SUPPORT
#include <sdmmc_cmd.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* ... */
typedef struct _vfs_littlefs_file_t {
lfs_file_t file;
uint32_t hash;
struct _vfs_littlefs_file_t * next;
#ifndef CONFIG_LITTLEFS_USE_ONLY_HASH
char * path;
#endif
}{ ... } vfs_littlefs_file_t;
/* ... */
typedef struct {
lfs_t *fs;
SemaphoreHandle_t lock;
#ifdef CONFIG_LITTLEFS_SDMMC_SUPPORT
sdmmc_card_t *sdcard;
#endif
const esp_partition_t* partition;
char base_path[ESP_VFS_PATH_MAX+1];
struct lfs_config cfg;
vfs_littlefs_file_t *file;
vfs_littlefs_file_t **cache;
uint16_t cache_size;
uint16_t fd_count;
bool read_only;
}{ ... } esp_littlefs_t;
/* ... */
int littlefs_esp_part_read(const struct lfs_config *c, lfs_block_t block,
lfs_off_t off, void *buffer, lfs_size_t size);
/* ... */
int littlefs_esp_part_write(const struct lfs_config *c, lfs_block_t block,
lfs_off_t off, const void *buffer, lfs_size_t size);
/* ... */
int littlefs_esp_part_erase(const struct lfs_config *c, lfs_block_t block);
/* ... */
int littlefs_esp_part_sync(const struct lfs_config *c);
#ifdef CONFIG_LITTLEFS_SDMMC_SUPPORT
/* ... */
int littlefs_sdmmc_read(const struct lfs_config *c, lfs_block_t block,
lfs_off_t off, void *buffer, lfs_size_t size);
/* ... */
int littlefs_sdmmc_write(const struct lfs_config *c, lfs_block_t block,
lfs_off_t off, const void *buffer, lfs_size_t size);
/* ... */
int littlefs_sdmmc_erase(const struct lfs_config *c, lfs_block_t block);
/* ... */
int littlefs_sdmmc_sync(const struct lfs_config *c);
/* ... */
#endif
#ifdef __cplusplus
}{...}
#endif
/* ... */
#endif