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 17 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 24 of file esp32_nvs_flash_database.hpp.

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

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 45 of file esp32_nvs_flash_database.hpp.

45{ 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 47 of file esp32_nvs_flash_database.hpp.

48 {
49 if (!valid_) return ErrorCode::FAILED;
50
51 nvs_handle_t handle;
52 esp_err_t err = nvs_open(namespace_, NVS_READONLY, &handle);
53 if (err != ESP_OK) return ErrorCode::FAILED;
54
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)
58 {
59 nvs_close(handle);
60 return ErrorCode::NOT_FOUND;
61 }
62
63 if (required_size != key.raw_data_.size_)
64 {
65 nvs_close(handle);
66 return ErrorCode::FAILED;
67 }
68
69 err = nvs_get_blob(handle, key.name_, key.raw_data_.addr_, &required_size);
70 nvs_close(handle);
71 return (err == ESP_OK) ? ErrorCode::OK : ErrorCode::FAILED;
72 }

◆ IsValid()

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

查询初始化状态 / Check initialization state

Definition at line 39 of file esp32_nvs_flash_database.hpp.

39{ 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 74 of file esp32_nvs_flash_database.hpp.

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

Field Documentation

◆ namespace_

const char* LibXR::ESP32NvsFlashDatabase::namespace_
private

Definition at line 42 of file esp32_nvs_flash_database.hpp.

◆ valid_

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

Definition at line 43 of file esp32_nvs_flash_database.hpp.

43{false};

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