work on nvs

This commit is contained in:
Mitchell Marino 2025-08-22 12:52:24 -05:00
parent a8d3a61cf6
commit 0caf28c86a
8 changed files with 50 additions and 2 deletions

View File

@ -8,6 +8,7 @@ set(SOURCES
"char_lcd.cpp"
"game_info.cpp"
"game_timer.cpp"
"hwdata.cpp"
"i2c_lcd_pcf8574.c"
"i2c.cpp"
"leds.cpp"

View File

@ -4,6 +4,7 @@ void init_drivers() {
init_i2c();
// init char_lcd so we can use it to report other initialization errors.
init_lcd();
init_nvs();
init_star_code_system();
// init the bottom half so that we can get user input.
init_bottom_half();

View File

@ -6,6 +6,7 @@
#include "game_timer.h"
#include "i2c.h"
#include "leds.h"
#include "nvs.h"
#include "power.h"
#include "sd.h"
#include "speaker.h"

3
main/drivers/hwdata.cpp Normal file
View File

@ -0,0 +1,3 @@
#include "hwdata.h"

6
main/drivers/hwdata.h Normal file
View File

@ -0,0 +1,6 @@
#ifndef HWDATA_H
#define HWDATA_H
#endif /* HWDATA_H */

View File

@ -1,3 +1,38 @@
#include "nvs.h"
#include "nvs_flash.h"
#include "esp_log.h"
#include "bottom_half.h"
#include "char_lcd.h"
static const char* TAG = "nvs";
nvs_handle_t hw_handle;
bool init_nvs() {
esp_err_t ret = nvs_flash_init();
if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
// NVS partition was truncated, erase and retry
ESP_LOGE(TAG, "Failed to init nvs flash: %s.", esp_err_to_name(ret));
lcd_print(1, 0, "NVS: ");
lcd_print(1, 4, esp_err_to_name(ret));
lcd_print(2, 0, "Press Yellow to skip");
lcd_print(3, 0, "Press Red to erase");
ButtonKey button;
while (!( get_button_pressed(&button) && (button == ButtonKey::button_red || button == ButtonKey::button_yellow) )) vTaskDelay(pdMS_TO_TICKS(10));
lcd_clear();
if (button == ButtonKey::button_yellow) {
return false;
}
if (button == ButtonKey::button_red) {
ESP_ERROR_CHECK(nvs_flash_erase());
ret = nvs_flash_init();
}
}
ESP_ERROR_CHECK(ret);
return true;
}

View File

@ -1,6 +1,7 @@
#ifndef NVS_H
#define NVS_H
/// @brief Initializes the NVS.
bool init_nvs();
#endif /* NVS_H */

View File

@ -71,7 +71,7 @@ void step0() {
.code = "59860",
.display_text = "Hardware Config",
.delay_us = 2'000'000,
.callback = hardware_config
.callback = hardware_config,
.triggered_sem = nullptr,
},
{