From 86edbbc5416ede9f79914f6ba1eaed72eafa68c6 Mon Sep 17 00:00:00 2001 From: Matthew Colvin <35540398+Mc067415@users.noreply.github.com> Date: Wed, 23 Aug 2023 23:03:59 -0500 Subject: [PATCH] remove hardware ref from display and add touch handler to reset standby timer --- Platformio/HAL/Targets/ESP32/HardwareRevX.cpp | 13 ++++--------- Platformio/HAL/Targets/ESP32/display/display.cpp | 9 ++++----- Platformio/HAL/Targets/ESP32/display/display.hpp | 5 ++--- 3 files changed, 10 insertions(+), 17 deletions(-) diff --git a/Platformio/HAL/Targets/ESP32/HardwareRevX.cpp b/Platformio/HAL/Targets/ESP32/HardwareRevX.cpp index d822e5e..377e174 100644 --- a/Platformio/HAL/Targets/ESP32/HardwareRevX.cpp +++ b/Platformio/HAL/Targets/ESP32/HardwareRevX.cpp @@ -71,9 +71,12 @@ void HardwareRevX::init() { // Make sure ESP32 is running at full speed setCpuFrequencyMhz(240); - mDisplay = Display::getInstance(std::shared_ptr()); + mDisplay = Display::getInstance(); mBattery = std::make_shared(ADC_BAT,CRG_STAT); mWifiHandler = wifiHandler::getInstance(); + + mDisplay->onTouch([this]([[maybe_unused]] auto touchPoint){ standbyTimer = SLEEP_TIMEOUT;}); + wakeup_reason = getWakeReason(); initIO(); setupBacklight(); @@ -301,15 +304,7 @@ void HardwareRevX::setupIMU() { } void HardwareRevX::slowDisplayWakeup() { - // Slowly charge the VSW voltage to prevent a brownout - // Workaround for hardware rev 1! - for (int i = 0; i < 100; i++) { - digitalWrite(LCD_EN, HIGH); // LCD Logic off - delayMicroseconds(1); - digitalWrite(LCD_EN, LOW); // LCD Logic on - } - delay(100); // Wait for the LCD driver to power on } void HardwareRevX::setupIR() { diff --git a/Platformio/HAL/Targets/ESP32/display/display.cpp b/Platformio/HAL/Targets/ESP32/display/display.cpp index f3290a0..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(std::shared_ptr aHardware) +std::shared_ptr Display::getInstance() { if (DisplayAbstract::mInstance == nullptr) { - DisplayAbstract::mInstance = std::shared_ptr(new Display(LCD_EN, LCD_BL, aHardware)); + 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, std::shared_ptr aHardware): DisplayAbstract(), +Display::Display(int backlight_pin, int enable_pin): DisplayAbstract(), mBacklightPin(backlight_pin), mEnablePin(enable_pin), tft(TFT_eSPI()), - touch(Adafruit_FT6206()), - mHardware(aHardware) + touch(Adafruit_FT6206()) { pinMode(mEnablePin, OUTPUT); digitalWrite(mEnablePin, HIGH); diff --git a/Platformio/HAL/Targets/ESP32/display/display.hpp b/Platformio/HAL/Targets/ESP32/display/display.hpp index ac3adb9..8dd7791 100644 --- a/Platformio/HAL/Targets/ESP32/display/display.hpp +++ b/Platformio/HAL/Targets/ESP32/display/display.hpp @@ -20,7 +20,7 @@ class Display: public DisplayAbstract { public: - static std::shared_ptr getInstance(std::shared_ptr aHardware); + static std::shared_ptr getInstance(); virtual void setBrightness(uint8_t brightness) override; virtual void turnOff() override; @@ -32,7 +32,7 @@ class Display: public DisplayAbstract virtual void screenInput(lv_indev_drv_t *indev_driver, lv_indev_data_t *data) override; private: - Display(int backlight_pin, int enable_pin, std::shared_ptr aHardware); + Display(int backlight_pin, int enable_pin); void setupTFT(); void setupTouchScreen(); @@ -43,6 +43,5 @@ class Display: public DisplayAbstract Adafruit_FT6206 touch; TS_Point touchPoint; TS_Point oldPoint; - std::shared_ptr mHardware; Notification mTouchEvent; }; \ No newline at end of file