From c20ed926cdf38d356c6a089a30a69364052862cb Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Mon, 3 May 2021 22:00:24 +1000 Subject: [PATCH] Hook some status colours to the LED --- source/Core/BSP/MHP30/BSP.cpp | 9 ++++++--- source/Core/Threads/GUIThread.cpp | 17 +++++++++++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/source/Core/BSP/MHP30/BSP.cpp b/source/Core/BSP/MHP30/BSP.cpp index 30eb3fe5..ae04372e 100644 --- a/source/Core/BSP/MHP30/BSP.cpp +++ b/source/Core/BSP/MHP30/BSP.cpp @@ -438,7 +438,7 @@ bool isTipDisconnected() { void setStatusLED(const enum StatusLED state) { static enum StatusLED lastState = LED_UNKNOWN; - if (lastState != state) { + if (lastState != state || state == LED_HEATING) { switch (state) { case LED_UNKNOWN: case LED_OFF: @@ -447,8 +447,11 @@ void setStatusLED(const enum StatusLED state) { case LED_STANDBY: WS2812::led_set_color(0, 0, 0xFF, 0); //green break; - case LED_HEATING: - WS2812::led_set_color(0, 0, 0, 0xFF); //Blue + case LED_HEATING: { + WS2812::led_set_color(0, ((HAL_GetTick() / 10) % 192) + 64, 0, + 0); //Red fade + } + break; case LED_HOT: WS2812::led_set_color(0, 0xFF, 0, 0); //red diff --git a/source/Core/Threads/GUIThread.cpp b/source/Core/Threads/GUIThread.cpp index 9b11673a..f9e49595 100644 --- a/source/Core/Threads/GUIThread.cpp +++ b/source/Core/Threads/GUIThread.cpp @@ -522,7 +522,7 @@ static void gui_solderingMode(uint8_t jumpToSleep) { // Unlock buttons buttonsLocked = false; warnUser(translatedString(Tr->UnlockingKeysString), - TICKS_SECOND); + TICKS_SECOND); break; case BUTTON_F_LONG: // if boost mode is enabled turn it on @@ -538,7 +538,7 @@ static void gui_solderingMode(uint8_t jumpToSleep) { case BUTTON_B_SHORT: // Do nothing and display a lock warming warnUser(translatedString(Tr->WarningKeysLockedString), - TICKS_SECOND / 2); + TICKS_SECOND / 2); break; default: break; @@ -575,7 +575,7 @@ static void gui_solderingMode(uint8_t jumpToSleep) { // Lock buttons buttonsLocked = true; warnUser(translatedString(Tr->LockingKeysString), - TICKS_SECOND); + TICKS_SECOND); } break; default: @@ -679,6 +679,14 @@ static void gui_solderingMode(uint8_t jumpToSleep) { return; // If the function returns non-0 then exit } } + //Update LED status + int error = currentTempTargetDegC - TipThermoModel::getTipInC(); + if (error >= -10 && error <= 10) { + //converged + setStatusLED(LED_HOT); + } else { + setStatusLED(LED_HEATING); + } // slow down ui update rate GUIDelay(); } @@ -918,7 +926,7 @@ void startGUITask(void const *argument __unused) { if (tipTemp > 55) { setStatusLED(LED_COOLING_STILL_HOT); } else { - setStatusLED(LED_OFF); + setStatusLED(LED_STANDBY); } // Preemptively turn the display on. Turn it off if and only if // the tip temperature is below 50 degrees C *and* motion sleep @@ -933,6 +941,7 @@ void startGUITask(void const *argument __unused) { && ((xTaskGetTickCount() - lastButtonTime) > BUTTON_INACTIVITY_TIME))) { OLED::setDisplayState(OLED::DisplayState::OFF); + setStatusLED(LED_OFF); } // Clear the lcd buffer OLED::clearScreen();