fixing some display timeout issues

pull/74/head
Peter Buchegger 2021-03-13 22:45:43 +01:00
rodzic ab771fc325
commit c72668ecad
3 zmienionych plików z 19 dodań i 2 usunięć

Wyświetl plik

@ -2,7 +2,7 @@
#include <TaskManager.h>
#include <logger.h>
Display::Display() : _disp(0), _statusFrame(0), _displayOff(false) {
Display::Display() : _disp(0), _statusFrame(0), _displayOff(false), _displaySaveMode(false) {
}
void Display::setup(std::shared_ptr<BoardConfig> boardConfig) {
@ -27,6 +27,14 @@ void Display::turn180() {
_disp->flipScreenVertically();
}
void Display::activateDisplaySaveMode() {
_displaySaveMode = true;
}
void Display::setDisplayTimeout(time_t timeout) {
_displayTimeout.setTimeout(timeout);
}
void Display::update() {
if (_frameTimeout.check()) {
if (_statusFrame->isPrio()) {
@ -53,7 +61,9 @@ void Display::update() {
_statusFrame->drawStatusPage(bitmap);
activateDisplay();
_disp->display(&bitmap);
_displayTimeout.start();
if (_displaySaveMode) {
_displayTimeout.start();
}
}
if (_displayTimeout.check()) {
deactivateDisplay();

Wyświetl plik

@ -35,6 +35,8 @@ public:
void setup(std::shared_ptr<BoardConfig> boardConfig);
void turn180();
void activateDisplaySaveMode();
void setDisplayTimeout(time_t timeout);
void update();
void addFrame(std::shared_ptr<DisplayFrame> frame);
@ -52,6 +54,7 @@ private:
Timer _displayTimeout;
bool _displayOff;
bool _displaySaveMode;
Display();
Display(const Display &);

Wyświetl plik

@ -17,6 +17,10 @@ bool DisplayTask::setup(std::shared_ptr<Configuration> config, std::shared_ptr<B
}
std::shared_ptr<StatusFrame> statusFrame = std::shared_ptr<StatusFrame>(new StatusFrame(TaskManager::instance().getTasks()));
Display::instance().setStatusFrame(statusFrame);
if (!config->display.alwaysOn) {
Display::instance().activateDisplaySaveMode();
Display::instance().setDisplayTimeout(config->display.timeout);
}
_stateInfo = config->callsign;
return true;
}