未验证 提交 8d0e68db 编写于 作者: B bot1131357 提交者: GitHub

Added parameter to Preferences::begin to select non-default NVS partition (#4718)

上级 d2530850
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "Preferences.h" #include "Preferences.h"
#include "nvs.h" #include "nvs.h"
#include "nvs_flash.h"
const char * nvs_errors[] = { "OTHER", "NOT_INITIALIZED", "NOT_FOUND", "TYPE_MISMATCH", "READ_ONLY", "NOT_ENOUGH_SPACE", "INVALID_NAME", "INVALID_HANDLE", "REMOVE_FAILED", "KEY_TOO_LONG", "PAGE_FULL", "INVALID_STATE", "INVALID_LENGTH"}; const char * nvs_errors[] = { "OTHER", "NOT_INITIALIZED", "NOT_FOUND", "TYPE_MISMATCH", "READ_ONLY", "NOT_ENOUGH_SPACE", "INVALID_NAME", "INVALID_HANDLE", "REMOVE_FAILED", "KEY_TOO_LONG", "PAGE_FULL", "INVALID_STATE", "INVALID_LENGTH"};
#define nvs_error(e) (((e)>ESP_ERR_NVS_BASE)?nvs_errors[(e)&~(ESP_ERR_NVS_BASE)]:nvs_errors[0]) #define nvs_error(e) (((e)>ESP_ERR_NVS_BASE)?nvs_errors[(e)&~(ESP_ERR_NVS_BASE)]:nvs_errors[0])
...@@ -28,12 +29,22 @@ Preferences::~Preferences(){ ...@@ -28,12 +29,22 @@ Preferences::~Preferences(){
end(); end();
} }
bool Preferences::begin(const char * name, bool readOnly){ bool Preferences::begin(const char * name, bool readOnly, const char* partition_label){
if(_started){ if(_started){
return false; return false;
} }
_readOnly = readOnly; _readOnly = readOnly;
esp_err_t err = nvs_open(name, readOnly?NVS_READONLY:NVS_READWRITE, &_handle); esp_err_t err = ESP_OK;
if (partition_label != NULL) {
err = nvs_flash_init_partition(partition_label);
if (err) {
log_e("nvs_flash_init_partition failed: %s", nvs_error(err));
return false;
}
err = nvs_open_from_partition(partition_label, name, readOnly ? NVS_READONLY : NVS_READWRITE, &_handle);
} else {
err = nvs_open(name, readOnly?NVS_READONLY:NVS_READWRITE, &_handle);
}
if(err){ if(err){
log_e("nvs_open failed: %s", nvs_error(err)); log_e("nvs_open failed: %s", nvs_error(err));
return false; return false;
......
...@@ -29,7 +29,7 @@ class Preferences { ...@@ -29,7 +29,7 @@ class Preferences {
Preferences(); Preferences();
~Preferences(); ~Preferences();
bool begin(const char * name, bool readOnly=false); bool begin(const char * name, bool readOnly=false, const char* partition_label=NULL);
void end(); void end();
bool clear(); bool clear();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册