v3.3.0: Welcome screen, factory reset, calibration/touch fixes, flash partition fix
## New - "Welcome" screen shown on first-time setup (before touch calibration), with the splash screen's animated radar graphic and a Start button. - The "Setup complete" screen now counts down 7 seconds with a button matching the Welcome screen's style, then automatically continues into the app (previously required a tap). - System menu "Backup & Reset" page (Backup, Restore, and a new "Reset settings" option that wipes the on-device data and re-runs first-time setup - useful for testing or handing the device to someone else). - Touch calibration targets are now green mini radar reticles instead of red crosshairs. ## Improved - The SD card's data folder is now only created after tapping Start on the Welcome screen, instead of on every boot regardless. - Flash partition layout changed to free up roughly 850 KB of firmware space (no OTA update slot needed, since firmware is always flashed via cable/USB) - lowers flash usage from ~95% to ~59%. ## Fixed - The Start button and the WiFi scanning screen now show a loading indicator instead of appearing frozen during SD-card/WiFi operations. - A touch-input bug during first-time setup that could corrupt touch calibration and cause taps to land on the wrong on-screen element afterward (most noticeable in the WiFi network selection list). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
19
src/main.cpp
19
src/main.cpp
@@ -456,10 +456,21 @@ void setup() {
|
||||
haltWithSdRequiredScreen();
|
||||
return;
|
||||
}
|
||||
SdStorage::seedDefaultDataFiles();
|
||||
|
||||
bool isFirstRun = !SD.exists(Config::SD_SETTINGS_FILE);
|
||||
|
||||
// The Flightradar folder structure and default data files are
|
||||
// deliberately NOT created yet on a first boot - that happens further
|
||||
// down, after the Start button on the Welcome screen has been tapped
|
||||
// (the button is "the gate to the app": nothing should exist on the
|
||||
// card before that). On every later boot the structure already
|
||||
// exists anyway - creating it immediately here is harmless,
|
||||
// ensureDir()/writeIfAbsent() are idempotent.
|
||||
if (!isFirstRun) {
|
||||
SdStorage::createStructure();
|
||||
SdStorage::seedDefaultDataFiles();
|
||||
}
|
||||
|
||||
SettingsStore::load();
|
||||
tft.invertDisplay(SettingsStore::displayInverted());
|
||||
// Der erste ledcWrite() oben (vor SettingsStore::load()) kannte die
|
||||
@@ -488,6 +499,12 @@ void setup() {
|
||||
// da die Sprachauswahl (FirstRunLanguageScreen) erst danach kommt,
|
||||
// siehe first_run_welcome_screen.cpp.
|
||||
if (isFirstRun) {
|
||||
// Creating the folder structure, seeding default data files, AND
|
||||
// showing the loading indicator during those (noticeably slow) SD
|
||||
// accesses now all happen directly inside
|
||||
// FirstRunWelcomeScreen::run() (triggered by the Start tap) - see
|
||||
// there for why (button otherwise looked frozen, repeated tapping
|
||||
// let a tap leak into calibration).
|
||||
FirstRunWelcomeScreen::run(tft);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user