Zephyr Project API  3.1.0
A Scalable Open Source RTOS
nvs.h
Go to the documentation of this file.
1/* NVS: non volatile storage in flash
2 *
3 * Copyright (c) 2018 Laczen
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7#ifndef ZEPHYR_INCLUDE_FS_NVS_H_
8#define ZEPHYR_INCLUDE_FS_NVS_H_
9
10#include <sys/types.h>
11#include <zephyr/kernel.h>
12#include <zephyr/device.h>
13#include <zephyr/toolchain.h>
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
48struct nvs_fs {
49 off_t offset;
54 bool ready;
56 const struct device *flash_device;
58};
59
80int nvs_mount(struct nvs_fs *fs);
81
90int nvs_clear(struct nvs_fs *fs);
91
106ssize_t nvs_write(struct nvs_fs *fs, uint16_t id, const void *data, size_t len);
107
118int nvs_delete(struct nvs_fs *fs, uint16_t id);
119
135ssize_t nvs_read(struct nvs_fs *fs, uint16_t id, void *data, size_t len);
136
153ssize_t nvs_read_hist(struct nvs_fs *fs, uint16_t id, void *data, size_t len, uint16_t cnt);
154
167
180__deprecated static inline int nvs_init(struct nvs_fs *fs, const char *dev_name)
181{
182 fs->flash_device = device_get_binding(dev_name);
183 if (fs->flash_device == NULL) {
184 return -ENODEV;
185 }
186
187 return nvs_mount(fs);
188}
189
194#ifdef __cplusplus
195}
196#endif
197
198#endif /* ZEPHYR_INCLUDE_FS_NVS_H_ */
const struct device * device_get_binding(const char *name)
Get a const struct device* from its name field.
ssize_t nvs_read(struct nvs_fs *fs, uint16_t id, void *data, size_t len)
nvs_read
ssize_t nvs_write(struct nvs_fs *fs, uint16_t id, const void *data, size_t len)
nvs_write
ssize_t nvs_calc_free_space(struct nvs_fs *fs)
nvs_calc_free_space
int nvs_clear(struct nvs_fs *fs)
nvs_clear
int nvs_delete(struct nvs_fs *fs, uint16_t id)
nvs_delete
static int nvs_init(struct nvs_fs *fs, const char *dev_name)
nvs_init
Definition: nvs.h:180
ssize_t nvs_read_hist(struct nvs_fs *fs, uint16_t id, void *data, size_t len, uint16_t cnt)
nvs_read_hist
int nvs_mount(struct nvs_fs *fs)
nvs_mount
#define ENODEV
Definition: errno.h:58
Public kernel APIs.
__SIZE_TYPE__ ssize_t
Definition: types.h:28
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
__UINT16_TYPE__ uint16_t
Definition: stdint.h:89
Runtime device structure (in ROM) per driver instance.
Definition: device.h:456
Definition: flash.h:55
Definition: kernel.h:2699
Non-volatile Storage File system structure.
Definition: nvs.h:48
const struct device * flash_device
Definition: nvs.h:56
uint16_t sector_size
Definition: nvs.h:52
bool ready
Definition: nvs.h:54
const struct flash_parameters * flash_parameters
Definition: nvs.h:57
struct k_mutex nvs_lock
Definition: nvs.h:55
off_t offset
Definition: nvs.h:49
uint32_t ate_wra
Definition: nvs.h:50
uint16_t sector_count
Definition: nvs.h:53
uint32_t data_wra
Definition: nvs.h:51
static fdata_t data[2]
Definition: test_fifo_contexts.c:15
Macros to abstract toolchain specific capabilities.