76 lines
1.6 KiB
C
76 lines
1.6 KiB
C
#include "bsp_flash.h"
|
|
|
|
#include "nvs.h"
|
|
#include "nvs_flash.h"
|
|
|
|
#define STORAGE_NAMESPACE "storage"
|
|
|
|
bsp_status_t bsp_flash_init() {
|
|
esp_err_t err = nvs_flash_init();
|
|
if (err == ESP_ERR_NVS_NO_FREE_PAGES ||
|
|
err == ESP_ERR_NVS_NEW_VERSION_FOUND) {
|
|
// NVS partition was truncated and needs to be erased
|
|
// Retry nvs_flash_init
|
|
ESP_ERROR_CHECK(nvs_flash_erase());
|
|
err = nvs_flash_init();
|
|
}
|
|
ESP_ERROR_CHECK(err);
|
|
|
|
return err == ESP_OK ? BSP_OK : BSP_ERR;
|
|
}
|
|
|
|
size_t bsp_flash_check_blog(const char* name) {
|
|
nvs_handle_t my_handle = 0;
|
|
esp_err_t err = ESP_OK;
|
|
size_t required_size = 0;
|
|
|
|
// Open
|
|
err = nvs_open(STORAGE_NAMESPACE, NVS_READWRITE, &my_handle);
|
|
if (err != ESP_OK) {
|
|
return err;
|
|
}
|
|
|
|
nvs_get_blob(my_handle, name, NULL, &required_size);
|
|
|
|
nvs_close(my_handle);
|
|
|
|
return required_size;
|
|
}
|
|
|
|
void bsp_flash_get_blog(const char* name, uint8_t* buff, uint32_t len) {
|
|
nvs_handle_t my_handle = 0;
|
|
esp_err_t err = ESP_OK;
|
|
|
|
if (bsp_flash_check_blog(name) != len) {
|
|
return;
|
|
}
|
|
|
|
// Open
|
|
err = nvs_open(STORAGE_NAMESPACE, NVS_READWRITE, &my_handle);
|
|
if (err != ESP_OK) {
|
|
return;
|
|
}
|
|
|
|
nvs_get_blob(my_handle, name, buff, (size_t*)(&len));
|
|
|
|
nvs_close(my_handle);
|
|
}
|
|
|
|
void bsp_flash_set_blog(const char* name, const uint8_t* buff, uint32_t len) {
|
|
nvs_handle_t my_handle = 0;
|
|
esp_err_t err = ESP_OK;
|
|
size_t required_size = 0;
|
|
|
|
// Open
|
|
err = nvs_open(STORAGE_NAMESPACE, NVS_READWRITE, &my_handle);
|
|
if (err != ESP_OK) {
|
|
return;
|
|
}
|
|
|
|
nvs_set_blob(my_handle, name, buff, len);
|
|
|
|
err = nvs_commit(my_handle);
|
|
|
|
nvs_close(my_handle);
|
|
}
|