From c96a0310ae78037ba38a1258cd4b74b7eff34b62 Mon Sep 17 00:00:00 2001 From: Peter Buchegger Date: Sun, 21 Mar 2021 22:33:31 +0100 Subject: [PATCH] reduce display update rate --- lib/Display/Display.cpp | 71 ++++++++++++++++++++++------------------- lib/Display/Display.h | 2 ++ 2 files changed, 40 insertions(+), 33 deletions(-) diff --git a/lib/Display/Display.cpp b/lib/Display/Display.cpp index ac653f5..6ef53ca 100644 --- a/lib/Display/Display.cpp +++ b/lib/Display/Display.cpp @@ -24,6 +24,8 @@ void Display::setup(std::shared_ptr boardConfig) { _disp->display(&bitmap); _displayTimeout.setTimeout(10); _frameTimeout.setTimeout(15); + _displayUpdateRate.setTimeout(1); + _displayUpdateRate.start(); } void Display::turn180() { @@ -39,41 +41,44 @@ void Display::setDisplayTimeout(time_t timeout) { } void Display::update() { - if (_frameTimeout.check()) { - if (_statusFrame->isPrio()) { - Bitmap bitmap(_disp.get()); - _statusFrame->drawStatusPage(bitmap); - activateDisplay(); - _disp->display(&bitmap); - return; - } - - if (_frames.size() > 0) { - std::shared_ptr frame = *_frames.begin(); - Bitmap bitmap(_disp.get()); - frame->drawStatusPage(bitmap); - activateDisplay(); - _disp->display(&bitmap); - _frames.pop_front(); - _frameTimeout.start(); - return; - } - - if (!_displayOff && !_displayTimeout.isActive()) { - Bitmap bitmap(_disp.get()); - _statusFrame->drawStatusPage(bitmap); - activateDisplay(); - _disp->display(&bitmap); - if (_displaySaveMode) { - _displayTimeout.start(); + if (_displayUpdateRate.check()) { + if (_frameTimeout.check()) { + if (_statusFrame->isPrio()) { + Bitmap bitmap(_disp.get()); + _statusFrame->drawStatusPage(bitmap); + activateDisplay(); + _disp->display(&bitmap); + return; + } + + if (_frames.size() > 0) { + std::shared_ptr frame = *_frames.begin(); + Bitmap bitmap(_disp.get()); + frame->drawStatusPage(bitmap); + activateDisplay(); + _disp->display(&bitmap); + _frames.pop_front(); + _frameTimeout.start(); + return; + } + + if (!_displayOff && !_displayTimeout.isActive()) { + Bitmap bitmap(_disp.get()); + _statusFrame->drawStatusPage(bitmap); + activateDisplay(); + _disp->display(&bitmap); + if (_displaySaveMode) { + _displayTimeout.start(); + } + return; + } + if (_displayTimeout.check()) { + deactivateDisplay(); + _displayTimeout.reset(); } - return; } - if (_displayTimeout.check()) { - deactivateDisplay(); - _displayTimeout.reset(); - } - } + _displayUpdateRate.start(); + }; } void Display::addFrame(std::shared_ptr frame) { diff --git a/lib/Display/Display.h b/lib/Display/Display.h index 681054c..3f8e35d 100644 --- a/lib/Display/Display.h +++ b/lib/Display/Display.h @@ -51,6 +51,8 @@ private: bool _displayOff; bool _displaySaveMode; + Timer _displayUpdateRate; + void activateDisplay(); void deactivateDisplay(); };