diff --git a/Platformio/HAL/Targets/ESP32/HardwareRevX.cpp b/Platformio/HAL/Targets/ESP32/HardwareRevX.cpp index 6023625..c2f8e35 100644 --- a/Platformio/HAL/Targets/ESP32/HardwareRevX.cpp +++ b/Platformio/HAL/Targets/ESP32/HardwareRevX.cpp @@ -53,10 +53,13 @@ void HardwareRevX::initIO() { HardwareRevX::HardwareRevX(): HardwareAbstract( - Display::getInstance(standbyTimer), + Display::getInstance(), std::make_shared(ADC_BAT,CRG_STAT), wifiHandler::getInstance() - ){} + ){ + // Reset Sleep Timer on Touch Events + Display::getInstance()->onTouch([this]([[maybe_unused]] auto touchPoint){ standbyTimer = SLEEP_TIMEOUT;}); + } HardwareRevX::WakeReason getWakeReason() { // Find out wakeup cause @@ -361,11 +364,11 @@ void HardwareRevX::loopHandler() { // lv_label_set_text(objBattIcon, LV_SYMBOL_BATTERY_FULL); // else if (battery_percentage > 75) // lv_label_set_text(objBattIcon, LV_SYMBOL_BATTERY_3); - // else if (battery_percentage > 50) - // lv_label_set_text(objBattIcon, LV_SYMBOL_BATTERY_2); - // else if (battery_percentage > 25) + // elsse if (battery_percentage > 25) // lv_label_set_text(objBattIcon, LV_SYMBOL_BATTERY_1); - // else + // e if (battery_percentage > 50) + // lv_label_set_text(objBattIcon, LV_SYMBOL_BATTERY_2); + // elelse // lv_label_set_text(objBattIcon, LV_SYMBOL_BATTERY_EMPTY); // } // } diff --git a/Platformio/HAL/Targets/ESP32/display/display.cpp b/Platformio/HAL/Targets/ESP32/display/display.cpp index ef84b0e..422bd2c 100644 --- a/Platformio/HAL/Targets/ESP32/display/display.cpp +++ b/Platformio/HAL/Targets/ESP32/display/display.cpp @@ -3,21 +3,20 @@ #include "omoteconfig.h" #include "Wire.h" -std::shared_ptr Display::getInstance(int& standby_timer) +std::shared_ptr Display::getInstance() { if (DisplayAbstract::mInstance == nullptr) { - DisplayAbstract::mInstance = std::shared_ptr(new Display(LCD_EN, LCD_BL, standby_timer)); + DisplayAbstract::mInstance = std::shared_ptr(new Display(LCD_EN, LCD_BL)); } return std::static_pointer_cast(mInstance); } -Display::Display(int backlight_pin, int enable_pin, int& standby_timer): DisplayAbstract(), +Display::Display(int backlight_pin, int enable_pin): DisplayAbstract(), mBacklightPin(backlight_pin), mEnablePin(enable_pin), tft(TFT_eSPI()), - touch(Adafruit_FT6206()), - standbyTimer(standby_timer) + touch(Adafruit_FT6206()) { pinMode(mEnablePin, OUTPUT); digitalWrite(mEnablePin, HIGH); @@ -41,6 +40,10 @@ Display::Display(int backlight_pin, int enable_pin, int& standby_timer): Display setupTouchScreen(); } +void Display::onTouch(Notification::HandlerTy aTouchHandler){ + mTouchEvent.onNotify(std::move(aTouchHandler)); +} + void Display::setupTFT() { tft.init(); tft.initDMA(); @@ -78,7 +81,7 @@ void Display::screenInput(lv_indev_drv_t *indev_driver, lv_indev_data_t *data){ bool touched = false; if ((touchX > 0) || (touchY > 0)) { touched = true; - standbyTimer = SLEEP_TIMEOUT; + mTouchEvent.notify(touchPoint); } if (!touched) { diff --git a/Platformio/HAL/Targets/ESP32/display/display.hpp b/Platformio/HAL/Targets/ESP32/display/display.hpp index c0230ec..a359ebb 100644 --- a/Platformio/HAL/Targets/ESP32/display/display.hpp +++ b/Platformio/HAL/Targets/ESP32/display/display.hpp @@ -1,5 +1,6 @@ #pragma once #include "DisplayAbstract.h" +#include "Notification.hpp" #include #include #include @@ -18,18 +19,19 @@ class Display: public DisplayAbstract { public: - static std::shared_ptr getInstance(int& standby_timer); + static std::shared_ptr getInstance(); virtual void setBrightness(uint8_t brightness) override; virtual void turnOff() override; + void onTouch(Notification::HandlerTy aTouchHandler); + protected: virtual void flushDisplay(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p); virtual void screenInput(lv_indev_drv_t *indev_driver, lv_indev_data_t *data) override; private: - // TODO Find a better way to handle timeout resets - Display(int backlight_pin, int enable_pin, int& standby_timer); + Display(int backlight_pin, int enable_pin); void setupTFT(); void setupTouchScreen(); @@ -41,5 +43,5 @@ class Display: public DisplayAbstract TS_Point touchPoint; TS_Point oldPoint; - int& standbyTimer; + Notification mTouchEvent; }; \ No newline at end of file