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

@@ -54,6 +54,8 @@ class GxEPDDisplay : public DisplayDriver {
CRC32 display_crc;
int last_display_crc_value = 0;
int _text_sz = 1;
uint8_t _full_refresh_interval = 0; // 0=never, N=full refresh every N partial refreshes
uint8_t _partial_count = 0;
public:
#if defined(EINK_DISPLAY_MODEL)
@@ -100,5 +102,6 @@ public:
void drawXbm(int x, int y, const uint8_t* bits, int w, int h) override;
uint16_t getTextWidth(const char* str) override;
void setDisplayRotation(uint8_t rot) override;
void setFullRefreshInterval(uint8_t n) override { _full_refresh_interval = n; _partial_count = 0; }
void endFrame() override;
};