fota lib for mdot

Dependents:   UQ_LoraWAN

Committer:
Jenkins@KEILDM1.dc.multitech.prv
Date:
Fri Sep 14 15:39:09 2018 -0500
Revision:
3:63d10f2375ea
fota lib updates

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 1 /*
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 2 * spiffs.h
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 3 *
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 4 * Created on: May 26, 2013
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 5 * Author: petera
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 6 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 7
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 8
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 9
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 10 #ifndef SPIFFS_H_
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 11 #define SPIFFS_H_
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 12
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 13 #include "spiffs_config.h"
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 14
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 15 #ifdef __cplusplus
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 16 extern "C"
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 17 {
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 18 #endif
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 19
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 20 #define SPIFFS_OK 0
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 21 #define SPIFFS_ERR_NOT_MOUNTED -10000
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 22 #define SPIFFS_ERR_FULL -10001
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 23 #define SPIFFS_ERR_NOT_FOUND -10002
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 24 #define SPIFFS_ERR_END_OF_OBJECT -10003
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 25 #define SPIFFS_ERR_DELETED -10004
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 26 #define SPIFFS_ERR_NOT_FINALIZED -10005
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 27 #define SPIFFS_ERR_NOT_INDEX -10006
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 28 #define SPIFFS_ERR_OUT_OF_FILE_DESCS -10007
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 29 #define SPIFFS_ERR_FILE_CLOSED -10008
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 30 #define SPIFFS_ERR_FILE_DELETED -10009
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 31 #define SPIFFS_ERR_BAD_DESCRIPTOR -10010
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 32 #define SPIFFS_ERR_IS_INDEX -10011
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 33 #define SPIFFS_ERR_IS_FREE -10012
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 34 #define SPIFFS_ERR_INDEX_SPAN_MISMATCH -10013
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 35 #define SPIFFS_ERR_DATA_SPAN_MISMATCH -10014
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 36 #define SPIFFS_ERR_INDEX_REF_FREE -10015
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 37 #define SPIFFS_ERR_INDEX_REF_LU -10016
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 38 #define SPIFFS_ERR_INDEX_REF_INVALID -10017
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 39 #define SPIFFS_ERR_INDEX_FREE -10018
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 40 #define SPIFFS_ERR_INDEX_LU -10019
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 41 #define SPIFFS_ERR_INDEX_INVALID -10020
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 42 #define SPIFFS_ERR_NOT_WRITABLE -10021
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 43 #define SPIFFS_ERR_NOT_READABLE -10022
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 44
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 45 #define SPIFFS_ERR_INTERNAL -10050
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 46
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 47 #define SPIFFS_ERR_TEST -10100
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 48
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 49
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 50 // spiffs file descriptor index type. must be signed
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 51 typedef s16_t spiffs_file;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 52 // spiffs file descriptor flags
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 53 typedef u16_t spiffs_flags;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 54 // spiffs file mode
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 55 typedef u16_t spiffs_mode;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 56 // object type
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 57 typedef u8_t spiffs_obj_type;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 58
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 59 /* spi read call function type */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 60 typedef s32_t (*spiffs_read)(u32_t addr, u32_t size, u8_t *dst);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 61 /* spi write call function type */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 62 typedef s32_t (*spiffs_write)(u32_t addr, u32_t size, u8_t *src);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 63 /* spi erase call function type */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 64 typedef s32_t (*spiffs_erase)(u32_t addr, u32_t size);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 65
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 66 /* file system check callback report operation */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 67 typedef enum {
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 68 SPIFFS_CHECK_LOOKUP = 0,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 69 SPIFFS_CHECK_INDEX,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 70 SPIFFS_CHECK_PAGE
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 71 } spiffs_check_type;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 72
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 73 /* file system check callback report type */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 74 typedef enum {
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 75 SPIFFS_CHECK_PROGRESS = 0,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 76 SPIFFS_CHECK_ERROR,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 77 SPIFFS_CHECK_FIX_INDEX,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 78 SPIFFS_CHECK_FIX_LOOKUP,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 79 SPIFFS_CHECK_DELETE_ORPHANED_INDEX,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 80 SPIFFS_CHECK_DELETE_PAGE,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 81 SPIFFS_CHECK_DELETE_BAD_FILE,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 82 } spiffs_check_report;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 83
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 84 /* file system check callback function */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 85 typedef void (*spiffs_check_callback)(spiffs_check_type type, spiffs_check_report report,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 86 u32_t arg1, u32_t arg2);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 87
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 88 #ifndef SPIFFS_DBG
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 89 #define SPIFFS_DBG(...) \
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 90 print(__VA_ARGS__)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 91 #endif
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 92 #ifndef SPIFFS_GC_DBG
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 93 #define SPIFFS_GC_DBG(...) printf(__VA_ARGS__)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 94 #endif
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 95 #ifndef SPIFFS_CACHE_DBG
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 96 #define SPIFFS_CACHE_DBG(...) printf(__VA_ARGS__)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 97 #endif
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 98 #ifndef SPIFFS_CHECK_DBG
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 99 #define SPIFFS_CHECK_DBG(...) printf(__VA_ARGS__)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 100 #endif
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 101
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 102 /* Any write to the filehandle is appended to end of the file */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 103 #define SPIFFS_APPEND (1<<0)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 104 /* If the opened file exists, it will be truncated to zero length before opened */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 105 #define SPIFFS_TRUNC (1<<1)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 106 /* If the opened file does not exist, it will be created before opened */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 107 #define SPIFFS_CREAT (1<<2)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 108 /* The opened file may only be read */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 109 #define SPIFFS_RDONLY (1<<3)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 110 /* The opened file may only be writted */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 111 #define SPIFFS_WRONLY (1<<4)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 112 /* The opened file may be both read and writted */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 113 #define SPIFFS_RDWR (SPIFFS_RDONLY | SPIFFS_WRONLY)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 114 /* Any writes to the filehandle will never be cached */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 115 #define SPIFFS_DIRECT (1<<5)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 116
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 117 #define SPIFFS_SEEK_SET (0)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 118 #define SPIFFS_SEEK_CUR (1)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 119 #define SPIFFS_SEEK_END (2)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 120
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 121 #define SPIFFS_TYPE_FILE (1)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 122 #define SPIFFS_TYPE_DIR (2)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 123 #define SPIFFS_TYPE_HARD_LINK (3)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 124 #define SPIFFS_TYPE_SOFT_LINK (4)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 125
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 126 #ifndef SPIFFS_LOCK
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 127 #define SPIFFS_LOCK(fs)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 128 #endif
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 129
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 130 #ifndef SPIFFS_UNLOCK
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 131 #define SPIFFS_UNLOCK(fs)
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 132 #endif
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 133
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 134 // phys structs
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 135
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 136 // spiffs spi configuration struct
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 137 typedef struct {
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 138 // physical read function
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 139 spiffs_read hal_read_f;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 140 // physical write function
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 141 spiffs_write hal_write_f;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 142 // physical erase function
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 143 spiffs_erase hal_erase_f;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 144 #if SPIFFS_SINGLETON == 0
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 145 // physical size of the spi flash
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 146 u32_t phys_size;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 147 // physical offset in spi flash used for spiffs,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 148 // must be on block boundary
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 149 u32_t phys_addr;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 150 // physical size when erasing a block
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 151 u32_t phys_erase_block;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 152
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 153 // logical size of a block, must be on physical
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 154 // block size boundary and must never be less than
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 155 // a physical block
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 156 u32_t log_block_size;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 157 // logical size of a page, must be at least
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 158 // log_block_size / 8
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 159 u32_t log_page_size;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 160 #endif
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 161 } spiffs_config;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 162
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 163 typedef struct {
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 164 // file system configuration
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 165 spiffs_config cfg;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 166 // number of logical blocks
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 167 u32_t block_count;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 168
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 169 // cursor for free blocks, block index
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 170 spiffs_block_ix free_cursor_block_ix;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 171 // cursor for free blocks, entry index
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 172 int free_cursor_obj_lu_entry;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 173 // cursor when searching, block index
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 174 spiffs_block_ix cursor_block_ix;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 175 // cursor when searching, entry index
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 176 int cursor_obj_lu_entry;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 177
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 178 // primary work buffer, size of a logical page
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 179 u8_t *lu_work;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 180 // secondary work buffer, size of a logical page
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 181 u8_t *work;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 182 // file descriptor memory area
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 183 u8_t *fd_space;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 184 // available file descriptors
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 185 u32_t fd_count;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 186
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 187 // last error
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 188 s32_t err_code;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 189
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 190 // current number of free blocks
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 191 u32_t free_blocks;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 192 // current number of busy pages
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 193 u32_t stats_p_allocated;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 194 // current number of deleted pages
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 195 u32_t stats_p_deleted;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 196 // flag indicating that garbage collector is cleaning
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 197 u8_t cleaning;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 198 // max erase count amongst all blocks
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 199 spiffs_obj_id max_erase_count;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 200
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 201 #if SPIFFS_GC_STATS
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 202 u32_t stats_gc_runs;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 203 #endif
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 204
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 205 #if SPIFFS_CACHE
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 206 // cache memory
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 207 u8_t *cache;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 208 // cache size
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 209 u32_t cache_size;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 210 #if SPIFFS_CACHE_STATS
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 211 u32_t cache_hits;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 212 u32_t cache_misses;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 213 #endif
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 214 #endif
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 215
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 216 // check callback function
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 217 spiffs_check_callback check_cb_f;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 218 } spiffs;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 219
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 220 /* spiffs file status struct */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 221 typedef struct {
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 222 spiffs_obj_id obj_id;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 223 u32_t size;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 224 spiffs_obj_type type;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 225 u8_t name[SPIFFS_OBJ_NAME_LEN];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 226 } spiffs_stat;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 227
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 228 struct spiffs_dirent {
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 229 spiffs_obj_id obj_id;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 230 u8_t name[SPIFFS_OBJ_NAME_LEN];
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 231 spiffs_obj_type type;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 232 u32_t size;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 233 };
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 234
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 235 typedef struct {
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 236 spiffs *fs;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 237 spiffs_block_ix block;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 238 int entry;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 239 } spiffs_DIR;
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 240
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 241 // functions
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 242
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 243 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 244 * Initializes the file system dynamic parameters and mounts the filesystem
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 245 * @param fs the file system struct
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 246 * @param config the physical and logical configuration of the file system
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 247 * @param work a memory work buffer comprising 2*config->log_page_size
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 248 * bytes used throughout all file system operations
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 249 * @param fd_space memory for file descriptors
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 250 * @param fd_space_size memory size of file descriptors
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 251 * @param cache memory for cache, may be null
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 252 * @param cache_size memory size of cache
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 253 * @param check_cb_f callback function for reporting during consistency checks
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 254 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 255 s32_t SPIFFS_mount(spiffs *fs, spiffs_config *config, u8_t *work,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 256 u8_t *fd_space, u32_t fd_space_size,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 257 u8_t *cache, u32_t cache_size,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 258 spiffs_check_callback check_cb_f);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 259
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 260 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 261 * Unmounts the file system. All file handles will be flushed of any
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 262 * cached writes and closed.
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 263 * @param fs the file system struct
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 264 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 265 void SPIFFS_unmount(spiffs *fs);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 266
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 267 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 268 * Creates a new file.
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 269 * @param fs the file system struct
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 270 * @param path the path of the new file
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 271 * @param mode ignored, for posix compliance
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 272 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 273 s32_t SPIFFS_creat(spiffs *fs, const char *path, spiffs_mode mode);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 274
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 275 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 276 * Opens/creates a file.
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 277 * @param fs the file system struct
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 278 * @param path the path of the new file
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 279 * @param flags the flags for the open command, can be combinations of
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 280 * SPIFFS_APPEND, SPIFFS_TRUNC, SPIFFS_CREAT, SPIFFS_RD_ONLY,
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 281 * SPIFFS_WR_ONLY, SPIFFS_RDWR, SPIFFS_DIRECT
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 282 * @param mode ignored, for posix compliance
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 283 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 284 spiffs_file SPIFFS_open(spiffs *fs, const char *path, spiffs_flags flags, spiffs_mode mode);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 285
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 286 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 287 * Reads from given filehandle.
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 288 * @param fs the file system struct
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 289 * @param fh the filehandle
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 290 * @param buf where to put read data
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 291 * @param len how much to read
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 292 * @returns number of bytes read, or -1 if error
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 293 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 294 s32_t SPIFFS_read(spiffs *fs, spiffs_file fh, void *buf, s32_t len);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 295
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 296 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 297 * Writes to given filehandle.
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 298 * @param fs the file system struct
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 299 * @param fh the filehandle
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 300 * @param buf the data to write
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 301 * @param len how much to write
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 302 * @returns number of bytes written, or -1 if error
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 303 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 304 s32_t SPIFFS_write(spiffs *fs, spiffs_file fh, void *buf, s32_t len);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 305
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 306 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 307 * Moves the read/write file offset
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 308 * @param fs the file system struct
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 309 * @param fh the filehandle
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 310 * @param offs how much/where to move the offset
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 311 * @param whence if SPIFFS_SEEK_SET, the file offset shall be set to offset bytes
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 312 * if SPIFFS_SEEK_CUR, the file offset shall be set to its current location plus offset
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 313 * if SPIFFS_SEEK_END, the file offset shall be set to the size of the file plus offset
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 314 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 315 s32_t SPIFFS_lseek(spiffs *fs, spiffs_file fh, s32_t offs, int whence);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 316
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 317 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 318 * Removes a file by path
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 319 * @param fs the file system struct
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 320 * @param path the path of the file to remove
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 321 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 322 s32_t SPIFFS_remove(spiffs *fs, const char *path);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 323
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 324 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 325 * Removes a file by path
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 326 * @param fs the file system struct
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 327 * @param path the path of the file to move
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 328 * @param new_path the path of the file to move
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 329 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 330 s32_t SPIFFS_move(spiffs *fs, const char *path, const char *new_path);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 331
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 332 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 333 * Removes a file by filehandle
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 334 * @param fs the file system struct
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 335 * @param fh the filehandle of the file to remove
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 336 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 337 s32_t SPIFFS_fremove(spiffs *fs, spiffs_file fh);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 338
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 339 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 340 * Gets file status by path
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 341 * @param fs the file system struct
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 342 * @param path the path of the file to stat
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 343 * @param s the stat struct to populate
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 344 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 345 s32_t SPIFFS_stat(spiffs *fs, const char *path, spiffs_stat *s);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 346
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 347 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 348 * Gets file status by filehandle
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 349 * @param fs the file system struct
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 350 * @param fh the filehandle of the file to stat
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 351 * @param s the stat struct to populate
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 352 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 353 s32_t SPIFFS_fstat(spiffs *fs, spiffs_file fh, spiffs_stat *s);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 354
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 355 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 356 * Flushes all pending write operations from cache for given file
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 357 * @param fs the file system struct
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 358 * @param fh the filehandle of the file to flush
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 359 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 360 s32_t SPIFFS_fflush(spiffs *fs, spiffs_file fh);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 361
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 362 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 363 * Closes a filehandle. If there are pending write operations, these are finalized before closing.
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 364 * @param fs the file system struct
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 365 * @param fh the filehandle of the file to close
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 366 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 367 void SPIFFS_close(spiffs *fs, spiffs_file fh);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 368
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 369 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 370 * Returns last error of last file operation.
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 371 * @param fs the file system struct
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 372 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 373 s32_t SPIFFS_errno(spiffs *fs);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 374
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 375 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 376 * Opens a directory stream corresponding to the given name.
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 377 * The stream is positioned at the first entry in the directory.
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 378 * On hydrogen builds the name argument is ignored as hydrogen builds always correspond
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 379 * to a flat file structure - no directories.
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 380 * @param fs the file system struct
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 381 * @param name the name of the directory
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 382 * @param d pointer the directory stream to be populated
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 383 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 384 spiffs_DIR *SPIFFS_opendir(spiffs *fs, const char *name, spiffs_DIR *d);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 385
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 386 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 387 * Closes a directory stream
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 388 * @param d the directory stream to close
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 389 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 390 s32_t SPIFFS_closedir(spiffs_DIR *d);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 391
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 392 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 393 * Reads a directory into given spifs_dirent struct.
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 394 * @param d pointer to the directory stream
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 395 * @param e the dirent struct to be populated
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 396 * @returns null if error or end of stream, else given dirent is returned
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 397 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 398 struct spiffs_dirent *SPIFFS_readdir(spiffs_DIR *d, struct spiffs_dirent *e);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 399
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 400 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 401 * Runs a consistency check on given filesystem.
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 402 * @param fs the file system struct
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 403 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 404 s32_t SPIFFS_check(spiffs *fs);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 405
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 406 #if SPIFFS_TEST_VISUALISATION
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 407 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 408 * Prints out a visualization of the filesystem.
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 409 * @param fs the file system struct
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 410 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 411 s32_t SPIFFS_vis(spiffs *fs);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 412 #endif
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 413
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 414 #if SPIFFS_BUFFER_HELP
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 415 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 416 * Returns number of bytes needed for the filedescriptor buffer given
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 417 * amount of file descriptors.
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 418 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 419 u32_t SPIFFS_buffer_bytes_for_filedescs(spiffs *fs, u32_t num_descs);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 420
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 421 #if SPIFFS_CACHE
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 422 /**
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 423 * Returns number of bytes needed for the cache buffer given
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 424 * amount of cache pages.
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 425 */
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 426 u32_t SPIFFS_buffer_bytes_for_cache(spiffs *fs, u32_t num_pages);
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 427 #endif
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 428 #endif
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 429
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 430 #if SPIFFS_CHACHE
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 431 #endif
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 432
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 433 #ifdef __cplusplus
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 434 }
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 435 #endif
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 436
Jenkins@KEILDM1.dc.multitech.prv 3:63d10f2375ea 437 #endif /* SPIFFS_H_ */