get/post led segments
Some checks failed
ESP-IDF Build / build (esp32c6, release-v5.4) (push) Failing after 4m49s
ESP-IDF Build / build (esp32c6, release-v5.5) (push) Failing after 4m44s
ESP-IDF Build / build (esp32s3, release-v5.4) (push) Failing after 4m34s
ESP-IDF Build / build (esp32s3, release-v5.5) (push) Failing after 4m43s
Some checks failed
ESP-IDF Build / build (esp32c6, release-v5.4) (push) Failing after 4m49s
ESP-IDF Build / build (esp32c6, release-v5.5) (push) Failing after 4m44s
ESP-IDF Build / build (esp32s3, release-v5.4) (push) Failing after 4m34s
ESP-IDF Build / build (esp32s3, release-v5.5) (push) Failing after 4m43s
Signed-off-by: Peter Siegmund <developer@mars3142.org>
This commit is contained in:
@@ -205,6 +205,33 @@ extern "C"
|
||||
void persistence_manager_get_string(const persistence_manager_t *pm, const char *key, char *out_value,
|
||||
size_t max_len, const char *default_value);
|
||||
|
||||
/**
|
||||
* @brief Set a blob (binary data) value for a key in NVS storage.
|
||||
*
|
||||
* This function stores arbitrary binary data under the given key.
|
||||
*
|
||||
* @param pm Pointer to the persistence manager structure.
|
||||
* @param key Key to set.
|
||||
* @param value Pointer to the data to store.
|
||||
* @param length Length of the data in bytes.
|
||||
*/
|
||||
void persistence_manager_set_blob(persistence_manager_t *pm, const char *key, const void *value, size_t length);
|
||||
|
||||
/**
|
||||
* @brief Get a blob (binary data) value for a key from NVS storage.
|
||||
*
|
||||
* This function retrieves binary data previously stored under the given key.
|
||||
*
|
||||
* @param pm Pointer to the persistence manager structure.
|
||||
* @param key Key to retrieve.
|
||||
* @param out_value Buffer to store the retrieved data.
|
||||
* @param max_length Maximum length of the output buffer in bytes.
|
||||
* @param out_length Pointer to variable to receive the actual data length.
|
||||
* @return true if the blob was found and read successfully, false otherwise.
|
||||
*/
|
||||
bool persistence_manager_get_blob(const persistence_manager_t *pm, const char *key, void *out_value,
|
||||
size_t max_length, size_t *out_length);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
#include "persistence_manager.h"
|
||||
#include <esp_log.h>
|
||||
#include <string.h>
|
||||
@@ -174,6 +173,17 @@ void persistence_manager_set_string(persistence_manager_t *pm, const char *key,
|
||||
}
|
||||
}
|
||||
|
||||
void persistence_manager_set_blob(persistence_manager_t *pm, const char *key, const void *value, size_t length)
|
||||
{
|
||||
if (!persistence_manager_is_initialized(pm) || !value || length == 0)
|
||||
return;
|
||||
esp_err_t err = nvs_set_blob(pm->nvs_handle, key, value, length);
|
||||
if (err != ESP_OK)
|
||||
{
|
||||
ESP_LOGE(TAG, "Failed to set blob key '%s': %s", key, esp_err_to_name(err));
|
||||
}
|
||||
}
|
||||
|
||||
bool persistence_manager_get_bool(const persistence_manager_t *pm, const char *key, bool default_value)
|
||||
{
|
||||
if (!persistence_manager_is_initialized(pm))
|
||||
@@ -245,3 +255,20 @@ void persistence_manager_get_string(const persistence_manager_t *pm, const char
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
bool persistence_manager_get_blob(const persistence_manager_t *pm, const char *key, void *out_value, size_t max_length,
|
||||
size_t *out_length)
|
||||
{
|
||||
if (!persistence_manager_is_initialized(pm) || !out_value || max_length == 0)
|
||||
return false;
|
||||
size_t required_size = 0;
|
||||
esp_err_t err = nvs_get_blob(pm->nvs_handle, key, NULL, &required_size);
|
||||
if (err != ESP_OK || required_size == 0 || required_size > max_length)
|
||||
return false;
|
||||
err = nvs_get_blob(pm->nvs_handle, key, out_value, &required_size);
|
||||
if (err != ESP_OK)
|
||||
return false;
|
||||
if (out_length)
|
||||
*out_length = required_size;
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user