libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
LibXR::ESP32NvsFlashDatabase Class Reference
Inheritance diagram for LibXR::ESP32NvsFlashDatabase:
[legend]
Collaboration diagram for LibXR::ESP32NvsFlashDatabase:
[legend]

Public Member Functions

 ESP32NvsFlashDatabase (const char *namespace_name="storage")
 构造函数,初始化 NVS 和命名空间
 
bool IsValid () const
 数据库是否有效初始化
 

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

Definition at line 14 of file esp32_nvs_flash_database.hpp.

Constructor & Destructor Documentation

◆ ESP32NvsFlashDatabase()

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

构造函数,初始化 NVS 和命名空间

Parameters
namespace_name命名空间名,默认 "storage"

Definition at line 21 of file esp32_nvs_flash_database.hpp.

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

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

42{ 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 44 of file esp32_nvs_flash_database.hpp.

45 {
46 if (!valid_) return ErrorCode::FAILED;
47
48 nvs_handle_t handle;
49 esp_err_t err = nvs_open(namespace_, NVS_READONLY, &handle);
50 if (err != ESP_OK) return ErrorCode::FAILED;
51
52 size_t required_size = 0;
53 err = nvs_get_blob(handle, key.name_, nullptr, &required_size);
54 if (err == ESP_ERR_NVS_NOT_FOUND)
55 {
56 nvs_close(handle);
57 return ErrorCode::NOT_FOUND;
58 }
59
60 if (required_size != key.raw_data_.size_)
61 {
62 nvs_close(handle);
63 return ErrorCode::FAILED;
64 }
65
66 err = nvs_get_blob(handle, key.name_, key.raw_data_.addr_, &required_size);
67 nvs_close(handle);
68 return (err == ESP_OK) ? ErrorCode::OK : ErrorCode::FAILED;
69 }

◆ IsValid()

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

数据库是否有效初始化

Definition at line 36 of file esp32_nvs_flash_database.hpp.

36{ 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 71 of file esp32_nvs_flash_database.hpp.

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

Field Documentation

◆ namespace_

const char* LibXR::ESP32NvsFlashDatabase::namespace_
private

Definition at line 39 of file esp32_nvs_flash_database.hpp.

◆ valid_

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

Definition at line 40 of file esp32_nvs_flash_database.hpp.

40{false};

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