Public Access
Fix shifted pictures: non-blocking Nano drawing, frame check, refresh settings
The Nano's periodic full redraw blocked for ~0.8 s. A frame that arrived meanwhile overflowed its 64-byte serial buffer; lost bytes in a bitmap shift the rest of the image (picture moved up), and diff frames never repaired it. - Nano: all drawing (frames, effects, the dot refresh) runs from update() in ~1 ms slices; the refresh pauses while a frame is received or shown - New commands: C (reply with the image checksum) and I (refresh minutes, EEPROM) - ESP32: NanoMonitor asks for the checksum after frames and sends the whole image again on a mismatch, missing answer or Nano restart; counts ERR replies. Periodic whole-image resync. - Settings: "Dot refresh" and "Image resync" intervals (settings v5, v4 records are migrated) - System tab: loop timing, free memory, frame check counts - test_driver: the real driver against a simulated panel Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
58a7cb03c2
commit
090c2bf8ae
45 files changed
+1265
-157
No files matched your search
@@ -73,6 +73,7 @@ void loop()
|
||||
// OTA and the firmware guard come first, so they keep working whatever happens below
|
||||
otaLoop();
|
||||
firmwareGuardLoop(wifiConnected());
|
||||
loopStats.tick(micros());
|
||||
wifiWatchdog();
|
||||
|
||||
homeAssistantSetFirmwareStatus(firmwareGuardStatus());
|
||||
@@ -92,6 +93,10 @@ void loop()
|
||||
bool time_valid = appLocalTime(now);
|
||||
appPageLoop(time_valid, now);
|
||||
controller.update(millis(), time_valid, now, wifiConnected());
|
||||
// Checks the frames just sent; a wrong image on the Nano (and every resync interval):
|
||||
// the whole image again with the next update
|
||||
if (nanoMonitor.loop(millis(), appSettings().refresh.image * 60000UL))
|
||||
controller.pageChanged();
|
||||
|
||||
bool led = appSettings().status_led && statusLedLevel(millis(), wifiConnected(), nano.isOn());
|
||||
digitalWrite(LED_PIN, led);
|
||||
|
||||
Reference in new issue
Block a user