feat(eink): full refresh interval setting in Settings › Display

Add "Full rfsh" setting (e-ink only) with options off/5/10/20/30
partial refreshes between full refreshes. Prevents ghosting on panels
that accumulate artifacts after many partial updates.

GxEPDDisplay counts partial refreshes and calls display.display(false)
every N frames when the interval is set. Persisted in DataStore and
applied at startup via applyFullRefreshInterval().

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-05-24 10:22:03 +02:00
parent 8012278483
commit a6bf3ee08f
8 changed files with 54 additions and 1 deletions

View File

@@ -195,7 +195,12 @@ void GxEPDDisplay::setDisplayRotation(uint8_t rot) {
void GxEPDDisplay::endFrame() {
uint32_t crc = display_crc.finalize();
if (crc != last_display_crc_value) {
display.display(true);
bool partial = true;
if (_full_refresh_interval > 0 && ++_partial_count >= _full_refresh_interval) {
partial = false;
_partial_count = 0;
}
display.display(partial);
last_display_crc_value = crc;
}
}