Added parameter to Preferences::begin to select non-default NVS partition (#4718)
This commit is contained in:
parent
d2530850a3
commit
8d0e68db4f
@ -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(){
|
|||||||
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 {
|
|||||||
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();
|
||||||
|
Loading…
Reference in New Issue
Block a user