6#include "libxr_def.hpp"
7#include "libxr_type.hpp"
25 : namespace_(namespace_name)
27 esp_err_t err = nvs_flash_init();
28 if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND)
31 err = nvs_flash_init();
33 valid_ = (err == ESP_OK);
42 const char* namespace_;
49 if (!valid_)
return ErrorCode::FAILED;
52 esp_err_t err = nvs_open(namespace_, NVS_READONLY, &handle);
53 if (err != ESP_OK)
return ErrorCode::FAILED;
55 size_t required_size = 0;
56 err = nvs_get_blob(handle, key.
name_,
nullptr, &required_size);
57 if (err == ESP_ERR_NVS_NOT_FOUND)
60 return ErrorCode::NOT_FOUND;
66 return ErrorCode::FAILED;
71 return (err == ESP_OK) ? ErrorCode::OK : ErrorCode::FAILED;
76 if (!valid_)
return ErrorCode::FAILED;
79 esp_err_t err = nvs_open(namespace_, NVS_READWRITE, &handle);
80 if (err != ESP_OK)
return ErrorCode::FAILED;
86 return ErrorCode::FAILED;
89 err = nvs_commit(handle);
91 return (err == ESP_OK) ? ErrorCode::OK : ErrorCode::FAILED;
键的基类,存储键名及其数据 (Base class for keys, storing key name and associated data).
RawData raw_data_
原始数据 (Raw data associated with the key).
const char * name_
键名 (Key name).
数据库接口,提供键值存储和管理功能 (Database interface providing key-value storage and management).
ESP32 NVS 数据库存储实现 / ESP32 NVS-backed database implementation.
ESP32NvsFlashDatabase(const char *namespace_name="storage")
构造并初始化 NVS / Construct and initialize NVS storage
bool IsValid() const
查询初始化状态 / Check initialization state
ErrorCode Set(KeyBase &key, RawData data) override
设置数据库中的键值 (Set the key's value in the database).
ErrorCode Add(KeyBase &key) override
添加新键到数据库 (Add a new key to the database).
ErrorCode Get(KeyBase &key) override
从数据库获取键的值 (Retrieve the key's value from the database).
原始数据封装类。 A class for encapsulating raw data.
size_t size_
数据大小(字节)。 The size of the data (in bytes).
void * addr_
数据存储地址。 The storage address of the data.