kopia lustrzana https://github.com/lora-aprs/LoRa_APRS_iGate
fixing some display timeout issues
rodzic
ab771fc325
commit
c72668ecad
|
@ -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();
|
||||
|
|
|
@ -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 &);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue