2023-06-13 23:47:12 -04:00
|
|
|
#include "nvs_config.h"
|
|
|
|
#include "esp_log.h"
|
2023-09-17 00:01:54 -04:00
|
|
|
#include "nvs.h"
|
2023-06-13 23:47:12 -04:00
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
#define NVS_CONFIG_NAMESPACE "main"
|
|
|
|
|
2023-09-17 00:01:54 -04:00
|
|
|
static const char * TAG = "nvs_config";
|
2023-06-13 23:47:12 -04:00
|
|
|
|
2023-09-17 00:01:54 -04:00
|
|
|
char * nvs_config_get_string(const char * key, const char * default_value)
|
2023-06-13 23:47:12 -04:00
|
|
|
{
|
|
|
|
nvs_handle handle;
|
|
|
|
esp_err_t err;
|
|
|
|
err = nvs_open(NVS_CONFIG_NAMESPACE, NVS_READONLY, &handle);
|
2023-09-17 00:01:54 -04:00
|
|
|
if (err != ESP_OK) {
|
2023-06-13 23:47:12 -04:00
|
|
|
return strdup(default_value);
|
|
|
|
}
|
|
|
|
|
|
|
|
size_t size = 0;
|
|
|
|
err = nvs_get_str(handle, key, NULL, &size);
|
|
|
|
|
2023-09-17 00:01:54 -04:00
|
|
|
if (err != ESP_OK) {
|
2023-06-13 23:47:12 -04:00
|
|
|
return strdup(default_value);
|
|
|
|
}
|
|
|
|
|
2023-09-17 00:01:54 -04:00
|
|
|
char * out = malloc(size);
|
2023-06-13 23:47:12 -04:00
|
|
|
err = nvs_get_str(handle, key, out, &size);
|
|
|
|
|
2023-09-17 00:01:54 -04:00
|
|
|
if (err != ESP_OK) {
|
2023-08-27 12:32:20 -04:00
|
|
|
free(out);
|
2023-06-13 23:47:12 -04:00
|
|
|
return strdup(default_value);
|
|
|
|
}
|
|
|
|
|
|
|
|
nvs_close(handle);
|
|
|
|
return out;
|
|
|
|
}
|
|
|
|
|
2023-09-17 00:01:54 -04:00
|
|
|
void nvs_config_set_string(const char * key, const char * value)
|
2023-08-26 12:21:41 -04:00
|
|
|
{
|
|
|
|
|
|
|
|
nvs_handle handle;
|
|
|
|
esp_err_t err;
|
|
|
|
err = nvs_open(NVS_CONFIG_NAMESPACE, NVS_READWRITE, &handle);
|
2023-09-17 00:01:54 -04:00
|
|
|
if (err != ESP_OK) {
|
2023-09-18 21:58:52 -04:00
|
|
|
ESP_LOGW(TAG, "Could not open nvs");
|
2023-08-26 12:21:41 -04:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
err = nvs_set_str(handle, key, value);
|
2023-09-17 00:01:54 -04:00
|
|
|
if (err != ESP_OK) {
|
2023-09-18 21:58:52 -04:00
|
|
|
ESP_LOGW(TAG, "Could not write nvs key: %s, value: %s", key, value);
|
2023-08-26 12:21:41 -04:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
nvs_close(handle);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2023-09-17 00:01:54 -04:00
|
|
|
uint16_t nvs_config_get_u16(const char * key, const uint16_t default_value)
|
2023-06-13 23:47:12 -04:00
|
|
|
{
|
|
|
|
nvs_handle handle;
|
|
|
|
esp_err_t err;
|
|
|
|
err = nvs_open(NVS_CONFIG_NAMESPACE, NVS_READONLY, &handle);
|
2023-09-17 00:01:54 -04:00
|
|
|
if (err != ESP_OK) {
|
2023-06-13 23:47:12 -04:00
|
|
|
return default_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
uint16_t out;
|
|
|
|
err = nvs_get_u16(handle, key, &out);
|
2024-08-09 16:56:18 -04:00
|
|
|
nvs_close(handle);
|
|
|
|
|
2023-09-17 00:01:54 -04:00
|
|
|
if (err != ESP_OK) {
|
2023-06-13 23:47:12 -04:00
|
|
|
return default_value;
|
|
|
|
}
|
|
|
|
return out;
|
|
|
|
}
|
2023-08-26 12:21:41 -04:00
|
|
|
|
2023-09-17 00:01:54 -04:00
|
|
|
void nvs_config_set_u16(const char * key, const uint16_t value)
|
2023-08-26 12:21:41 -04:00
|
|
|
{
|
|
|
|
|
|
|
|
nvs_handle handle;
|
|
|
|
esp_err_t err;
|
|
|
|
err = nvs_open(NVS_CONFIG_NAMESPACE, NVS_READWRITE, &handle);
|
2023-09-17 00:01:54 -04:00
|
|
|
if (err != ESP_OK) {
|
|
|
|
ESP_LOGW(TAG, "Could not open nvs");
|
2023-08-26 12:21:41 -04:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
err = nvs_set_u16(handle, key, value);
|
2023-09-17 00:01:54 -04:00
|
|
|
if (err != ESP_OK) {
|
|
|
|
ESP_LOGW(TAG, "Could not write nvs key: %s, value: %u", key, value);
|
2023-08-26 12:21:41 -04:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
nvs_close(handle);
|
|
|
|
return;
|
|
|
|
}
|
2023-10-19 16:40:33 -04:00
|
|
|
|
|
|
|
uint64_t nvs_config_get_u64(const char * key, const uint64_t default_value)
|
|
|
|
{
|
|
|
|
nvs_handle handle;
|
|
|
|
esp_err_t err;
|
|
|
|
err = nvs_open(NVS_CONFIG_NAMESPACE, NVS_READONLY, &handle);
|
|
|
|
if (err != ESP_OK) {
|
|
|
|
return default_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
uint64_t out;
|
|
|
|
err = nvs_get_u64(handle, key, &out);
|
|
|
|
|
|
|
|
if (err != ESP_OK) {
|
|
|
|
return default_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
nvs_close(handle);
|
|
|
|
return out;
|
|
|
|
}
|
|
|
|
|
|
|
|
void nvs_config_set_u64(const char * key, const uint64_t value)
|
|
|
|
{
|
|
|
|
|
|
|
|
nvs_handle handle;
|
|
|
|
esp_err_t err;
|
|
|
|
err = nvs_open(NVS_CONFIG_NAMESPACE, NVS_READWRITE, &handle);
|
|
|
|
if (err != ESP_OK) {
|
|
|
|
ESP_LOGW(TAG, "Could not open nvs");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
err = nvs_set_u64(handle, key, value);
|
|
|
|
if (err != ESP_OK) {
|
|
|
|
ESP_LOGW(TAG, "Could not write nvs key: %s, value: %llu", key, value);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
nvs_close(handle);
|
|
|
|
return;
|
|
|
|
}
|