55 lines
1.2 KiB
C
55 lines
1.2 KiB
C
|
#include "constants.h"
|
||
|
#include "storage.h"
|
||
|
#include "nvs_flash.h"
|
||
|
#include "nvs.h"
|
||
|
#include <string.h>
|
||
|
|
||
|
#define STORAGE_NAMESPACE "storage"
|
||
|
|
||
|
#define DEV_NAME_KEY "dev_name"
|
||
|
|
||
|
bool storage_init()
|
||
|
{
|
||
|
esp_err_t err = nvs_flash_init();
|
||
|
if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND)
|
||
|
{
|
||
|
printf("Need to reset storage\n");
|
||
|
|
||
|
// NVS partition was truncated and needs to be erased
|
||
|
// Retry nvs_flash_init
|
||
|
ESP_ERROR_CHECK(nvs_flash_erase());
|
||
|
err = nvs_flash_init();
|
||
|
}
|
||
|
|
||
|
return err == ESP_OK;
|
||
|
}
|
||
|
|
||
|
void storage_set_dev_name(const char *name)
|
||
|
{
|
||
|
nvs_handle_t my_handle;
|
||
|
|
||
|
ESP_ERROR_CHECK(nvs_open(STORAGE_NAMESPACE, NVS_READWRITE, &my_handle));
|
||
|
|
||
|
ESP_ERROR_CHECK(nvs_set_blob(my_handle, DEV_NAME_KEY, name, strlen(name)));
|
||
|
|
||
|
nvs_close(my_handle);
|
||
|
}
|
||
|
|
||
|
size_t storage_get_dev_name(char *dest)
|
||
|
{
|
||
|
nvs_handle_t my_handle;
|
||
|
|
||
|
ESP_ERROR_CHECK(nvs_open(STORAGE_NAMESPACE, NVS_READWRITE, &my_handle));
|
||
|
|
||
|
size_t len = (dest == NULL ? 0 : DEV_NAME_LEN);
|
||
|
esp_err_t res = nvs_get_blob(my_handle, DEV_NAME_KEY, dest, &len);
|
||
|
|
||
|
nvs_close(my_handle);
|
||
|
|
||
|
if (res == ESP_ERR_NVS_NOT_FOUND || len == 0)
|
||
|
return 0;
|
||
|
|
||
|
ESP_ERROR_CHECK(res);
|
||
|
|
||
|
return len;
|
||
|
}
|