From 440d7748b9fefc8333a2067e92014b22b877d754 Mon Sep 17 00:00:00 2001 From: you69man Date: Thu, 18 Jul 2024 20:50:53 +0200 Subject: [PATCH] reduce update cycle of ePaper from 5 to 10 seconds ... and fix calls to mEpaper.fullRefresh() and mEpaper.tickerSecond() if no ePaper is configured --- src/plugins/Display/Display.h | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/plugins/Display/Display.h b/src/plugins/Display/Display.h index 0ce1522c..844e403a 100644 --- a/src/plugins/Display/Display.h +++ b/src/plugins/Display/Display.h @@ -79,16 +79,25 @@ class Display { void tickerSecond() { bool request_refresh = false; - if (mMono != NULL) + if (mMono != NULL) { + // maintain LCD and OLED displays with pixel shift screensavers, at least every 5 seconds request_refresh = mMono->loop(motionSensorActive()); - - if (mNewPayload || (((++mLoopCnt) % 5) == 0) || request_refresh) { - DataScreen(); - mNewPayload = false; - mLoopCnt = 0; - } + if (mNewPayload || (((++mLoopCnt) % 5) == 0) || request_refresh) { + DataScreen(); + mNewPayload = false; + mLoopCnt = 0; + } + } #if defined(ESP32) && !defined(ETHERNET) + else if (DISP_TYPE_T10_EPAPER == mCfg->type) { + // maintain ePaper at least every 10 seconds + if (mNewPayload || (((++mLoopCnt) % 10) == 0)) { + DataScreen(); + mNewPayload = false; + mLoopCnt = 0; + } mEpaper.tickerSecond(); + } #endif } @@ -180,12 +189,14 @@ class Display { else if (DISP_TYPE_T10_EPAPER == mCfg->type) { mEpaper.loop((totalPower), totalYieldDay, totalYieldTotal, nrprod); mRefreshCycle++; - } - if (mRefreshCycle > 480) { - mEpaper.fullRefresh(); - mRefreshCycle = 0; + if (mRefreshCycle > 480) { + mEpaper.fullRefresh(); + mRefreshCycle = 0; + } + } + #endif }