From 3318265e0a9eb7d3c5e1dd117234477131510fe9 Mon Sep 17 00:00:00 2001 From: Matthew Colvin <35540398+Mc067415@users.noreply.github.com> Date: Thu, 24 Aug 2023 11:40:22 -0500 Subject: [PATCH] restore logic for voltage charge up still would like to investigate this early return on display sleep and wake functions use new sleep and wake functions in the hardware class to replace timing math. --- Platformio/HAL/Targets/ESP32/HardwareRevX.cpp | 53 +++++-------------- .../HAL/Targets/ESP32/display/display.hpp | 6 +-- 2 files changed, 15 insertions(+), 44 deletions(-) diff --git a/Platformio/HAL/Targets/ESP32/HardwareRevX.cpp b/Platformio/HAL/Targets/ESP32/HardwareRevX.cpp index 377e174..9e830cf 100644 --- a/Platformio/HAL/Targets/ESP32/HardwareRevX.cpp +++ b/Platformio/HAL/Targets/ESP32/HardwareRevX.cpp @@ -254,6 +254,7 @@ void HardwareRevX::configIMUInterrupts() { IMU.writeRegister(LIS3DH_CTRL_REG3, dataToWrite); } +// TODO move to display void HardwareRevX::setupBacklight() { // Configure the backlight PWM // Manual setup because ledcSetup() briefly turns on the backlight @@ -286,8 +287,6 @@ void HardwareRevX::restorePreferences() { } } - - void HardwareRevX::setupIMU() { // Setup hal IMU.settings.accelSampleRate = @@ -303,8 +302,17 @@ void HardwareRevX::setupIMU() { IMU.readRegister(&intDataRead, LIS3DH_INT1_SRC); // clear interrupt } +// TODO move to display 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() { @@ -329,21 +337,8 @@ void HardwareRevX::updateBatteryTask(void*){ } void HardwareRevX::loopHandler() { - - // TODO Move the backlight handling into task that spawns when the backlight - // setting changes and then gets deleted when the setting is achieved. - // Update Backlight brightness - static int fadeInTimer = millis(); // fadeInTimer = time after setup - if (millis() < - fadeInTimer + backlight_brightness) { // Fade in the backlight brightness - ledcWrite(5, millis() - fadeInTimer); - } else { // Dim Backlight before entering standby - if (standbyTimer < 2000) - ledcWrite(5, 85); // Backlight dim - else - ledcWrite(5, backlight_brightness); // Backlight on - } - + standbyTimer < 2000 ? mDisplay->sleep() : mDisplay->wake(); + // TODO move to debug task // Blink debug LED at 1 Hz digitalWrite(USER_LED, millis() % 1000 > 500); @@ -359,30 +354,6 @@ void HardwareRevX::loopHandler() { IMUTaskTimer = millis(); } - // TODO Convert to free RTOS task - - // TODO Create batter change notification for UI - - // if (battery_ischarging || (!battery_ischarging && battery_voltage > - // 4350)) { - // lv_label_set_text(objBattPercentage, ""); - // lv_label_set_text(objBattIcon, LV_SYMBOL_USB); - // } else { - // // Update status bar battery indicator - // // lv_label_set_text_fmt(objBattPercentage, "%d%%", - // battery_percentage); if (battery_percentage > 95) - // lv_label_set_text(objBattIcon, LV_SYMBOL_BATTERY_FULL); - // else if (battery_percentage > 75) - // lv_label_set_text(objBattIcon, LV_SYMBOL_BATTERY_3); - // elsse if (battery_percentage > 25) - // lv_label_set_text(objBattIcon, LV_SYMBOL_BATTERY_1); - // e if (battery_percentage > 50) - // lv_label_set_text(objBattIcon, LV_SYMBOL_BATTERY_2); - // elelse - // lv_label_set_text(objBattIcon, LV_SYMBOL_BATTERY_EMPTY); - // } - // } - // Keypad Handling customKeypad.getKey(); // Populate key list for (int i = 0; i < LIST_MAX; diff --git a/Platformio/HAL/Targets/ESP32/display/display.hpp b/Platformio/HAL/Targets/ESP32/display/display.hpp index e801e94..e70a52f 100644 --- a/Platformio/HAL/Targets/ESP32/display/display.hpp +++ b/Platformio/HAL/Targets/ESP32/display/display.hpp @@ -29,8 +29,8 @@ class Display: public DisplayAbstract void onTouch(Notification::HandlerTy aTouchHandler); - void wake() {isAsleep = false; startFade();} - void sleep() {isAsleep = true; startFade();} + inline void wake() {if(isAsleep) {isAsleep = false; startFade();}} + inline void sleep() {if(!isAsleep){isAsleep = true; startFade();}} protected: virtual void flushDisplay(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p); @@ -42,7 +42,7 @@ class Display: public DisplayAbstract bool fade(); /// @brief Start the Fade task void startFade(); - + /// @brief Set the actual display brightness right now /// @param brightness void setCurrentBrightness(uint8_t brightness);