From ad7177329325019f62a23a366cff3465dc2f3e3b Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 3 Feb 2025 09:18:41 +0100 Subject: [PATCH] disable old led port when changing port, #2389 --- src/core/system.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/core/system.cpp b/src/core/system.cpp index ca66c4004..1c1a2bba4 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -549,15 +549,20 @@ void System::button_init(bool refresh) { // set the LED to on or off when in normal operating mode void System::led_init(bool refresh) { if (refresh) { + // disabled old led port before setting new one + if ((led_gpio_ != 0) && is_valid_gpio(led_gpio_)) { + led_type_ ? neopixelWrite(led_gpio_, 0, 0, 0) : digitalWrite(led_gpio_, !LED_ON); + pinMode(led_gpio_, INPUT); + } reload_settings(); } - if ((led_gpio_ != 0) && is_valid_gpio(led_gpio_)) { + if ((led_gpio_ != 0) && is_valid_gpio(led_gpio_)) { // 0 means disabled if (led_type_) { - // rgb LED WS2812B, use Adafruit Neopixel + // rgb LED WS2812B, use Neopixel neopixelWrite(led_gpio_, 0, 0, 0); } else { - pinMode(led_gpio_, OUTPUT); // 0 means disabled + pinMode(led_gpio_, OUTPUT); digitalWrite(led_gpio_, !LED_ON); // start with LED off } } @@ -2095,7 +2100,7 @@ bool System::readCommand(const char * data) { // extract [offset] [length] from string char * p; char value[11]; - + // make a copy so we can iterate, max 15 chars (XX XXXX XX XX) char data_args[15]; strlcpy(data_args, data, sizeof(data_args));