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.
This commit is contained in:
Matthew Colvin 2023-08-24 11:40:22 -05:00 committed by MatthewColvin
parent 4ce4739ab0
commit 3318265e0a
2 changed files with 15 additions and 44 deletions

View file

@ -254,6 +254,7 @@ void HardwareRevX::configIMUInterrupts() {
IMU.writeRegister(LIS3DH_CTRL_REG3, dataToWrite); IMU.writeRegister(LIS3DH_CTRL_REG3, dataToWrite);
} }
// TODO move to display
void HardwareRevX::setupBacklight() { void HardwareRevX::setupBacklight() {
// Configure the backlight PWM // Configure the backlight PWM
// Manual setup because ledcSetup() briefly turns on the backlight // Manual setup because ledcSetup() briefly turns on the backlight
@ -286,8 +287,6 @@ void HardwareRevX::restorePreferences() {
} }
} }
void HardwareRevX::setupIMU() { void HardwareRevX::setupIMU() {
// Setup hal // Setup hal
IMU.settings.accelSampleRate = IMU.settings.accelSampleRate =
@ -303,8 +302,17 @@ void HardwareRevX::setupIMU() {
IMU.readRegister(&intDataRead, LIS3DH_INT1_SRC); // clear interrupt IMU.readRegister(&intDataRead, LIS3DH_INT1_SRC); // clear interrupt
} }
// TODO move to display
void HardwareRevX::slowDisplayWakeup() { 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() { void HardwareRevX::setupIR() {
@ -329,21 +337,8 @@ void HardwareRevX::updateBatteryTask(void*){
} }
void HardwareRevX::loopHandler() { void HardwareRevX::loopHandler() {
standbyTimer < 2000 ? mDisplay->sleep() : mDisplay->wake();
// 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
}
// TODO move to debug task // TODO move to debug task
// Blink debug LED at 1 Hz // Blink debug LED at 1 Hz
digitalWrite(USER_LED, millis() % 1000 > 500); digitalWrite(USER_LED, millis() % 1000 > 500);
@ -359,30 +354,6 @@ void HardwareRevX::loopHandler() {
IMUTaskTimer = millis(); 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 // Keypad Handling
customKeypad.getKey(); // Populate key list customKeypad.getKey(); // Populate key list
for (int i = 0; i < LIST_MAX; for (int i = 0; i < LIST_MAX;

View file

@ -29,8 +29,8 @@ class Display: public DisplayAbstract
void onTouch(Notification<TS_Point>::HandlerTy aTouchHandler); void onTouch(Notification<TS_Point>::HandlerTy aTouchHandler);
void wake() {isAsleep = false; startFade();} inline void wake() {if(isAsleep) {isAsleep = false; startFade();}}
void sleep() {isAsleep = true; startFade();} inline void sleep() {if(!isAsleep){isAsleep = true; startFade();}}
protected: protected:
virtual void flushDisplay(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p); 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(); bool fade();
/// @brief Start the Fade task /// @brief Start the Fade task
void startFade(); void startFade();
/// @brief Set the actual display brightness right now /// @brief Set the actual display brightness right now
/// @param brightness /// @param brightness
void setCurrentBrightness(uint8_t brightness); void setCurrentBrightness(uint8_t brightness);