mirror of
https://github.com/0xFEEDC0DE64/arduino-esp32.git
synced 2025-07-04 22:36:32 +02:00
overload Preferences.getBytes similar to nvs so you can get size of t… (#2498)
* overload Preferences.getBytes similar to nvs so you can get size of the array. * Cleaner implentation, with a separate function to get length. Added an example
This commit is contained in:
@ -447,9 +447,9 @@ String Preferences::getString(const char* key, const String defaultValue){
|
||||
return String(buf);
|
||||
}
|
||||
|
||||
size_t Preferences::getBytes(const char* key, void * buf, size_t maxLen){
|
||||
size_t Preferences::getBytesLength(const char* key){
|
||||
size_t len = 0;
|
||||
if(!_started || !key || !buf || !maxLen){
|
||||
if(!_started || !key){
|
||||
return 0;
|
||||
}
|
||||
esp_err_t err = nvs_get_blob(_handle, key, NULL, &len);
|
||||
@ -457,11 +457,19 @@ size_t Preferences::getBytes(const char* key, void * buf, size_t maxLen){
|
||||
log_e("nvs_get_blob len fail: %s %s", key, nvs_error(err));
|
||||
return 0;
|
||||
}
|
||||
return len;
|
||||
}
|
||||
|
||||
size_t Preferences::getBytes(const char* key, void * buf, size_t maxLen){
|
||||
size_t len = getBytesLength(key);
|
||||
if(!len || !buf || !maxLen){
|
||||
return len;
|
||||
}
|
||||
if(len > maxLen){
|
||||
log_e("not enough space in buffer: %u < %u", maxLen, len);
|
||||
return 0;
|
||||
}
|
||||
err = nvs_get_blob(_handle, key, buf, &len);
|
||||
esp_err_t err = nvs_get_blob(_handle, key, buf, &len);
|
||||
if(err){
|
||||
log_e("nvs_get_blob fail: %s %s", key, nvs_error(err));
|
||||
return 0;
|
||||
|
@ -63,6 +63,7 @@ class Preferences {
|
||||
bool getBool(const char* key, bool defaultValue = false);
|
||||
size_t getString(const char* key, char* value, size_t maxLen);
|
||||
String getString(const char* key, String defaultValue = String());
|
||||
size_t getBytesLength(const char* key);
|
||||
size_t getBytes(const char* key, void * buf, size_t maxLen);
|
||||
size_t freeEntries();
|
||||
};
|
||||
|
Reference in New Issue
Block a user