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:
BIN
firmware.bin
BIN
firmware.bin
Binary file not shown.
@@ -112,7 +112,7 @@
|
|||||||
<div class="container">
|
<div class="container">
|
||||||
<h1>EISWOLFS FLIGHTRADAR CYD</h1>
|
<h1>EISWOLFS FLIGHTRADAR CYD</h1>
|
||||||
<div class="subtitle">Firmware Flash Utility</div>
|
<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>
|
<p>Install the latest Flightradar firmware directly from your browser to your Cheap Yellow Display.</p>
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Config {
|
|||||||
// CLAUDE.md-Workflow "Standard-Workflow: Push & Release") - erscheint
|
// CLAUDE.md-Workflow "Standard-Workflow: Push & Release") - erscheint
|
||||||
// im Info-Screen (Menue > System > Info) und muss zum jeweiligen
|
// im Info-Screen (Menue > System > Info) und muss zum jeweiligen
|
||||||
// Git-Tag passen.
|
// 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.
|
// Display-Helligkeit (Menue > System > Helligkeit), in Prozent.
|
||||||
// MIN bewusst nicht 0 - ein komplett dunkles Display koennte sonst wie
|
// MIN bewusst nicht 0 - ein komplett dunkles Display koennte sonst wie
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ namespace {
|
|||||||
if (buf[i] == '\n') lines++;
|
if (buf[i] == '\n') lines++;
|
||||||
}
|
}
|
||||||
blocksRead++;
|
blocksRead++;
|
||||||
if (blocksRead % 8 == 0) yield();
|
if (blocksRead % 8 == 0) delay(1);
|
||||||
}
|
}
|
||||||
return lines;
|
return lines;
|
||||||
}
|
}
|
||||||
@@ -141,7 +141,7 @@ namespace {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
blocksRead++;
|
blocksRead++;
|
||||||
if (blocksRead % 8 == 0) yield();
|
if (blocksRead % 8 == 0) delay(1);
|
||||||
}
|
}
|
||||||
f.close();
|
f.close();
|
||||||
}
|
}
|
||||||
@@ -284,6 +284,7 @@ TopAltitude todayMaxAltitude() {
|
|||||||
if (!f) return result;
|
if (!f) return result;
|
||||||
|
|
||||||
bool firstLine = true;
|
bool firstLine = true;
|
||||||
|
uint32_t lineIdx = 0;
|
||||||
while (f.available()) {
|
while (f.available()) {
|
||||||
String line = f.readStringUntil('\n');
|
String line = f.readStringUntil('\n');
|
||||||
if (firstLine) { firstLine = false; continue; } // CSV-Header ueberspringen
|
if (firstLine) { firstLine = false; continue; } // CSV-Header ueberspringen
|
||||||
@@ -315,7 +316,8 @@ TopAltitude todayMaxAltitude() {
|
|||||||
strncpy(result.callsign, callsign.c_str(), sizeof(result.callsign) - 1);
|
strncpy(result.callsign, callsign.c_str(), sizeof(result.callsign) - 1);
|
||||||
result.callsign[sizeof(result.callsign) - 1] = 0;
|
result.callsign[sizeof(result.callsign) - 1] = 0;
|
||||||
}
|
}
|
||||||
yield();
|
lineIdx++;
|
||||||
|
if (lineIdx % 16 == 0) delay(1);
|
||||||
}
|
}
|
||||||
f.close();
|
f.close();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user