Show loading bootsplash with firmware name and version #18

Merged
awonak merged 4 commits from bootsplash-version into main 2025-07-22 05:16:32 +00:00
4 changed files with 28 additions and 5 deletions

View File

@ -64,6 +64,10 @@ void setup() {
// Start Gravity.
gravity.Init();
// Show bootsplash when initializing firmware.
Bootsplash();
delay(2000);
// Initialize the state manager. This will load settings from EEPROM
stateManager.initialize(app);
InitGravity(app);
@ -219,7 +223,9 @@ void HandleEncoderPressed() {
}
if (app.selected_param == PARAM_MAIN_FACTORY_RESET) {
if (app.selected_sub_param == 0) { // Reset
Bootsplash();
stateManager.factoryReset();
stateManager.reset(app);
InitGravity(app);
}
}

View File

@ -469,4 +469,21 @@ void UpdateDisplay() {
} while (gravity.display.nextPage());
}
void Bootsplash() {
gravity.display.firstPage();
do {
int textWidth;
gravity.display.setFont(TEXT_FONT);
textWidth = gravity.display.getStrWidth(SKETCH_NAME);
gravity.display.drawStr(24 + (textWidth / 2), 24, SKETCH_NAME);
textWidth = gravity.display.getStrWidth(SEMANTIC_VERSION);
gravity.display.drawStr(24 + (textWidth / 2), 36, SEMANTIC_VERSION);
textWidth = gravity.display.getStrWidth("LOADING....");
gravity.display.drawStr(34 + (textWidth / 2), 48, "LOADING....");
} while (gravity.display.nextPage());
}
#endif // DISPLAY_H

View File

@ -105,7 +105,7 @@ bool StateManager::_isDataValid() {
Metadata load_meta;
EEPROM.get(METADATA_START_ADDR, load_meta);
bool name_match = (strcmp(load_meta.sketch_name, SKETCH_NAME) == 0);
bool version_match = (load_meta.version == SKETCH_VERSION);
bool version_match = (strcmp(load_meta.version, SEMANTIC_VERSION) == 0);
return name_match && version_match;
}
@ -184,7 +184,7 @@ void StateManager::_saveMetadata(const AppState& app) {
noInterrupts();
Metadata current_meta;
strcpy(current_meta.sketch_name, SKETCH_NAME);
current_meta.version = SKETCH_VERSION;
strcpy(current_meta.version, SEMANTIC_VERSION);
// Global user settings
current_meta.selected_save_slot = app.selected_save_slot;

View File

@ -19,8 +19,8 @@
struct AppState;
// Define the constants for the current firmware.
const char SKETCH_NAME[] = "AltGravity";
const byte SKETCH_VERSION = 1;
const char SKETCH_NAME[] = "ALT GRAVITY";
const char SEMANTIC_VERSION[] = "V2.0.0BETA1";
// Number of available save slots.
const byte MAX_SAVE_SLOTS = 10; // Count of save slots 0 - 9 to save/load presets.
@ -58,8 +58,8 @@ class StateManager {
// This struct holds the data that identifies the firmware version.
struct Metadata {
byte version;
char sketch_name[16];
char version[16];
// Additional global/hardware settings
byte selected_save_slot;
bool encoder_reversed;