libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
LibXR::ESP32NvsFlashDatabase Class Reference

ESP32 NVS 数据库存储实现 / ESP32 NVS-backed database implementation. More...

#include <esp32_nvs_flash_database.hpp>

Inheritance diagram for LibXR::ESP32NvsFlashDatabase:
[legend]
Collaboration diagram for LibXR::ESP32NvsFlashDatabase:
[legend]

Public Member Functions

 ESP32NvsFlashDatabase (const char *namespace_name="storage")
 构造并初始化 NVS / Construct and initialize NVS storage
 
bool IsValid () const
 查询初始化状态 / Check initialization state
 

Private Member Functions

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).
 
ErrorCode Set (KeyBase &key, RawData data) override
 设置数据库中的键值 (Set the key's value in the database).
 

Private Attributes

const char * namespace_
 
bool valid_ {false}
 

Detailed Description

ESP32 NVS 数据库存储实现 / ESP32 NVS-backed database implementation.

Definition at line 19 of file esp32_nvs_flash_database.hpp.

Constructor & Destructor Documentation

◆ ESP32NvsFlashDatabase()

LibXR::ESP32NvsFlashDatabase::ESP32NvsFlashDatabase ( const char * namespace_name = "storage")
inlineexplicit

构造并初始化 NVS / Construct and initialize NVS storage

Parameters
namespace_name命名空间名称 / Namespace name (default: "storage")

Definition at line 26 of file esp32_nvs_flash_database.hpp.

27 : namespace_(namespace_name)
28 {
29 esp_err_t err = nvs_flash_init();
30 if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND)
31 {
32 nvs_flash_erase();
33 err = nvs_flash_init();
34 }
35 valid_ = (err == ESP_OK);
36 }

Member Function Documentation

◆ Add()

ErrorCode LibXR::ESP32NvsFlashDatabase::Add ( KeyBase & key)
inlineoverrideprivatevirtual

添加新键到数据库 (Add a new key to the database).

Parameters
key需要添加的键 (Key to add).
Returns
操作结果 (Operation result).

Implements LibXR::Database.

Definition at line 47 of file esp32_nvs_flash_database.hpp.

47{ return Set(key, key.raw_data_); }
ErrorCode Set(KeyBase &key, RawData data) override
设置数据库中的键值 (Set the key's value in the database).

◆ Get()

ErrorCode LibXR::ESP32NvsFlashDatabase::Get ( KeyBase & key)
inlineoverrideprivatevirtual

从数据库获取键的值 (Retrieve the key's value from the database).

Parameters
key需要获取的键 (Key to retrieve).
Returns
操作结果 (Operation result).

Implements LibXR::Database.

Definition at line 49 of file esp32_nvs_flash_database.hpp.

50 {
51 if (!valid_) return ErrorCode::FAILED;
52
53 nvs_handle_t handle;
54 esp_err_t err = nvs_open(namespace_, NVS_READONLY, &handle);
55 if (err != ESP_OK) return ErrorCode::FAILED;
56
57 size_t required_size = 0;
58 err = nvs_get_blob(handle, key.name_, nullptr, &required_size);
59 if (err == ESP_ERR_NVS_NOT_FOUND)
60 {
61 nvs_close(handle);
63 }
64
65 if (required_size != key.raw_data_.size_)
66 {
67 nvs_close(handle);
68 return ErrorCode::FAILED;
69 }
70
71 err = nvs_get_blob(handle, key.name_, key.raw_data_.addr_, &required_size);
72 nvs_close(handle);
73 return (err == ESP_OK) ? ErrorCode::OK : ErrorCode::FAILED;
74 }
@ NOT_FOUND
未找到 | Not found
@ FAILED
操作失败 | Operation failed
@ OK
操作成功 | Operation successful

◆ IsValid()

bool LibXR::ESP32NvsFlashDatabase::IsValid ( ) const
inline

查询初始化状态 / Check initialization state

Definition at line 41 of file esp32_nvs_flash_database.hpp.

41{ return valid_; }

◆ Set()

ErrorCode LibXR::ESP32NvsFlashDatabase::Set ( KeyBase & key,
RawData data )
inlineoverrideprivatevirtual

设置数据库中的键值 (Set the key's value in the database).

Parameters
key目标键 (Target key).
data需要存储的新值 (New value to store).
Returns
操作结果 (Operation result).

Implements LibXR::Database.

Definition at line 76 of file esp32_nvs_flash_database.hpp.

77 {
78 if (!valid_) return ErrorCode::FAILED;
79
80 nvs_handle_t handle;
81 esp_err_t err = nvs_open(namespace_, NVS_READWRITE, &handle);
82 if (err != ESP_OK) return ErrorCode::FAILED;
83
84 err = nvs_set_blob(handle, key.name_, data.addr_, data.size_);
85 if (err != ESP_OK)
86 {
87 nvs_close(handle);
88 return ErrorCode::FAILED;
89 }
90
91 err = nvs_commit(handle);
92 nvs_close(handle);
93 return (err == ESP_OK) ? ErrorCode::OK : ErrorCode::FAILED;
94 }

Field Documentation

◆ namespace_

const char* LibXR::ESP32NvsFlashDatabase::namespace_
private

Definition at line 44 of file esp32_nvs_flash_database.hpp.

◆ valid_

bool LibXR::ESP32NvsFlashDatabase::valid_ {false}
private

Definition at line 45 of file esp32_nvs_flash_database.hpp.

45{false};

The documentation for this class was generated from the following file: