Release v3.6.3: OTA reliability + watchdog fix + WebUI live radar

Fixes a watchdog reset that could crash the device after many hours
of continuous flight logging: yield() alone doesn't reliably feed the
task watchdog (it only yields to the idle task when another
equal-or-higher-priority task is actually ready to run), so long CSV
scans in flight_logbook.cpp now use delay(1) instead, in
countLinesFast(), loadSeenFromCurrentFile(), and todayMaxAltitude().

Bundles all OTA reliability and WebUI live radar work already
committed since v3.6.0 (title-overflow fix, OTA diagnostic logging,
NetTask pause/resume during updates, WebUI radar compass/click/
radius/starfield enhancements).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Eiswolf-BG
2026-08-14 03:03:21 +02:00
parent 1dea6d6553
commit 87633441d3
4 changed files with 7 additions and 5 deletions

Binary file not shown.

View File

@@ -112,7 +112,7 @@
<div class="container">
<h1>EISWOLFS FLIGHTRADAR CYD</h1>
<div class="subtitle">Firmware Flash Utility</div>
<div class="version-badge">Version: v3.6.2</div>
<div class="version-badge">Version: v3.6.3</div>
<p>Install the latest Flightradar firmware directly from your browser to your Cheap Yellow Display.</p>

View File

@@ -6,7 +6,7 @@ namespace Config {
// CLAUDE.md-Workflow "Standard-Workflow: Push & Release") - erscheint
// im Info-Screen (Menue > System > Info) und muss zum jeweiligen
// Git-Tag passen.
constexpr const char* APP_VERSION = "3.6.2";
constexpr const char* APP_VERSION = "3.6.3";
// Display-Helligkeit (Menue > System > Helligkeit), in Prozent.
// MIN bewusst nicht 0 - ein komplett dunkles Display koennte sonst wie

View File

@@ -92,7 +92,7 @@ namespace {
if (buf[i] == '\n') lines++;
}
blocksRead++;
if (blocksRead % 8 == 0) yield();
if (blocksRead % 8 == 0) delay(1);
}
return lines;
}
@@ -141,7 +141,7 @@ namespace {
}
}
blocksRead++;
if (blocksRead % 8 == 0) yield();
if (blocksRead % 8 == 0) delay(1);
}
f.close();
}
@@ -284,6 +284,7 @@ TopAltitude todayMaxAltitude() {
if (!f) return result;
bool firstLine = true;
uint32_t lineIdx = 0;
while (f.available()) {
String line = f.readStringUntil('\n');
if (firstLine) { firstLine = false; continue; } // CSV-Header ueberspringen
@@ -315,7 +316,8 @@ TopAltitude todayMaxAltitude() {
strncpy(result.callsign, callsign.c_str(), sizeof(result.callsign) - 1);
result.callsign[sizeof(result.callsign) - 1] = 0;
}
yield();
lineIdx++;
if (lineIdx % 16 == 0) delay(1);
}
f.close();