Modbus Vault v1.0
Loading...
Searching...
No Matches
mock_nvs.h
1#ifndef MOCK_NVS_H
2#define MOCK_NVS_H
3
4#include "esp_err.h"
5#include "nvs.h"
6
7#include <stdbool.h>
8#include <stdint.h>
9#include <string.h>
10
11#define MOCK_FLASH_SIZE (16 * 1024) // 16KB
12#define MOCK_NAMESPACE_MAX_SIZE (32U)
13#define MOCK_KEY_MAX_SIZE (32U)
14#define MOCK_HANDLE (1)
15#define MOCK_HANDLE_NAMESPACE_NAME ("storage")
16#define MOCK_CONFIG_KEY ("app_cfg")
17
21typedef struct {
22 uint8_t memory[MOCK_FLASH_SIZE];
23 size_t size;
24 size_t write_size;
25 char namespace_name[MOCK_NAMESPACE_MAX_SIZE];
26 char key[MOCK_KEY_MAX_SIZE];
27 nvs_handle_t handle;
29
30static mock_nvs_t nvs_mock = {0};
31
42esp_err_t ram_init (void)
43{
44 (void) snprintf (nvs_mock.namespace_name, MOCK_NAMESPACE_MAX_SIZE, "%s", MOCK_HANDLE_NAMESPACE_NAME);
45 (void) snprintf (nvs_mock.key, MOCK_KEY_MAX_SIZE, "%s", MOCK_CONFIG_KEY);
46 nvs_mock.size = MOCK_FLASH_SIZE;
47 nvs_mock.handle = 0;
48
49 return ESP_OK;
50}
51
68esp_err_t ram_open (const char *namespace_name, nvs_open_mode_t mode, nvs_handle_t *handle_ptr)
69{
70 esp_err_t err = ESP_OK;
71
72 (void) mode;
73
74 if ((strcmp (namespace_name, nvs_mock.namespace_name) == 0) && (nvs_mock.handle == 0))
75 {
76 *handle_ptr = MOCK_HANDLE;
77 nvs_mock.handle = MOCK_HANDLE;
78 }
79 else
80 {
81 err = ESP_ERR_NO_MEM;
82 }
83
84 return err;
85}
86
99esp_err_t ram_read (nvs_handle_t handle, const char *key_ptr, void *dst, size_t *size_ptr)
100{
101 esp_err_t err = ESP_OK;
102 if ((strcmp (key_ptr, nvs_mock.key) == 0) && (handle == nvs_mock.handle) &&
103 (*size_ptr <= MOCK_FLASH_SIZE))
104 {
105 (void) memcpy (dst, nvs_mock.memory, *size_ptr);
106 }
107 else
108 {
109 err = ESP_FAIL;
110 }
111
112 return err;
113}
114
127esp_err_t ram_write (nvs_handle_t handle, const char *key_ptr, const void *src, size_t size)
128{
129 esp_err_t err = ESP_OK;
130
131 if ((handle == nvs_mock.handle) && (size <= nvs_mock.size))
132 {
133 (void) memcpy (nvs_mock.memory, src, size);
134 }
135 else
136 {
137 err = ESP_FAIL;
138 }
139
140 return err;
141}
142
149esp_err_t ram_erase (void)
150{
151 memset (nvs_mock.memory, 0x00, MOCK_FLASH_SIZE);
152
153 return ESP_OK;
154}
155
165esp_err_t ram_commit (nvs_handle_t handle)
166{
167 esp_err_t err = ESP_OK;
168
169 if (handle != nvs_mock.handle)
170 {
171 err = ESP_FAIL;
172 }
173
174 return err;
175}
176
182void ram_close (nvs_handle_t handle)
183{
184 if (handle == nvs_mock.handle)
185 {
186 nvs_mock.handle = 0;
187 }
188}
189
196esp_err_t ram_deinit (void)
197{
198 nvs_mock.handle = 0;
199 return ESP_OK;
200}
201
202#endif
Mock NVS type structure.
Definition mock_nvs.h:21
size_t write_size
Definition mock_nvs.h:24
size_t size
Definition mock_nvs.h:23
char namespace_name[(32U)]
Definition mock_nvs.h:25
uint8_t memory[(16 *1024)]
Definition mock_nvs.h:22
nvs_handle_t handle
Definition mock_nvs.h:27
char key[(32U)]
Definition mock_nvs.h:26