feat: enhance NVS and WiFi handlers for improved credential management and error handling
This commit is contained in:
@@ -20,6 +20,7 @@ NVSStorageHandler::~NVSStorageHandler() {
|
||||
void NVSStorageHandler::init(const EventGroupHandle_t& system_event_group) {
|
||||
esp_err_t err = nvs_flash_init();
|
||||
if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND) {
|
||||
ESP_LOGW(TAG, "NVS Flash init failed with %s, erasing and retrying...", esp_err_to_name(err));
|
||||
nvs_flash_erase();
|
||||
err = nvs_flash_init();
|
||||
}
|
||||
@@ -43,11 +44,26 @@ void NVSStorageHandler::put(const std::string& key, const std::string& value) {
|
||||
}
|
||||
|
||||
esp_err_t err = nvs_set_str(this->nvsHandle, key.c_str(), value.c_str());
|
||||
if (err != ESP_OK) {
|
||||
ESP_LOGE(TAG, "Error (%s) setting key-value pair in NVS!", esp_err_to_name(err));
|
||||
} else {
|
||||
if (err == ESP_ERR_NVS_NOT_ENOUGH_SPACE) {
|
||||
ESP_LOGE(TAG, "NVS storage full! Cannot store key '%s'. Consider clearing old data.", key.c_str());
|
||||
ESP_LOGI(TAG, "Attempting to erase and retry...");
|
||||
// Try to commit pending changes first
|
||||
nvs_commit(this->nvsHandle);
|
||||
// ESP_LOGI(TAG, "Key-value pair (%s, %s) stored in NVS.", key.c_str(), value.c_str());
|
||||
// Retry once
|
||||
err = nvs_set_str(this->nvsHandle, key.c_str(), value.c_str());
|
||||
if (err != ESP_OK) {
|
||||
ESP_LOGE(TAG, "Retry failed: %s", esp_err_to_name(err));
|
||||
return;
|
||||
}
|
||||
} else if (err != ESP_OK) {
|
||||
ESP_LOGE(TAG, "Error (%s) setting key-value pair in NVS!", esp_err_to_name(err));
|
||||
return;
|
||||
}
|
||||
|
||||
// Commit successful write
|
||||
err = nvs_commit(this->nvsHandle);
|
||||
if (err != ESP_OK) {
|
||||
ESP_LOGE(TAG, "Error (%s) committing to NVS!", esp_err_to_name(err));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user