From 6990986d9f7236a6d63996a424030aa54d019e93 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Tue, 11 Jan 2022 21:58:05 +0100 Subject: [PATCH] Bootloop fix for ALT 4LD. --- usermods/Temperature/usermod_temperature.h | 5 +- .../usermod_v2_four_line_display_ALT.h | 47 ++++++++++--------- wled00/wled.h | 2 +- 3 files changed, 30 insertions(+), 24 deletions(-) diff --git a/usermods/Temperature/usermod_temperature.h b/usermods/Temperature/usermod_temperature.h index a0d3cc7c..6a37ed24 100644 --- a/usermods/Temperature/usermod_temperature.h +++ b/usermods/Temperature/usermod_temperature.h @@ -37,7 +37,7 @@ class UsermodTemperature : public Usermod { // used to determine when we can read the sensors temperature // we have to wait at least 93.75 ms after requestTemperatures() is called unsigned long lastTemperaturesRequest; - float temperature = -127.0f; // default to -127, DS18B20 only goes down to -50C + float temperature; // indicates requestTemperatures has been called but the sensor measurement is not complete bool waitingForConversion = false; // flag set at startup if DS18B20 sensor not found, avoids trying to keep getting @@ -136,6 +136,7 @@ class UsermodTemperature : public Usermod { void setup() { int retries = 10; sensorFound = 0; + temperature = -127.0f; // default to -127, DS18B20 only goes down to -50C if (enabled) { // config says we are enabled DEBUG_PRINTLN(F("Allocating temperature pin...")); @@ -159,7 +160,7 @@ class UsermodTemperature : public Usermod { } void loop() { - if (!enabled || strip.isUpdating()) return; + if (!enabled || !sensorFound || strip.isUpdating()) return; unsigned long now = millis(); diff --git a/usermods/usermod_v2_four_line_display_ALT/usermod_v2_four_line_display_ALT.h b/usermods/usermod_v2_four_line_display_ALT/usermod_v2_four_line_display_ALT.h index 3dfa9a50..ebb51196 100644 --- a/usermods/usermod_v2_four_line_display_ALT/usermod_v2_four_line_display_ALT.h +++ b/usermods/usermod_v2_four_line_display_ALT/usermod_v2_four_line_display_ALT.h @@ -139,8 +139,8 @@ class FourLineDisplayUsermod : public Usermod { // Next variables hold the previous known values to determine if redraw is // required. - String knownSsid = ""; - IPAddress knownIp; + String knownSsid = apSSID; + IPAddress knownIp = IPAddress(4, 3, 2, 1); uint8_t knownBrightness = 0; uint8_t knownEffectSpeed = 0; uint8_t knownEffectIntensity = 0; @@ -161,8 +161,8 @@ class FourLineDisplayUsermod : public Usermod { unsigned long overlayUntil = 0; // Set to 2 or 3 to mark lines 2 or 3. Other values ignored. - byte markLineNum = 0; - byte markColNum = 0; + byte markLineNum = 255; + byte markColNum = 255; // strings to reduce flash memory usage (used more than twice) static const char _name[]; @@ -264,8 +264,8 @@ class FourLineDisplayUsermod : public Usermod { // gets called every time WiFi is (re-)connected. Initialize own network // interfaces here void connected() { - knownSsid = apActive ? apSSID : WiFi.SSID(); //apActive ? WiFi.softAPSSID() : - knownIp = apActive ? IPAddress(4, 3, 2, 1) : Network.localIP(); + knownSsid = WiFi.SSID(); //apActive ? apSSID : WiFi.SSID(); //apActive ? WiFi.softAPSSID() : + knownIp = Network.localIP(); //apActive ? IPAddress(4, 3, 2, 1) : Network.localIP(); networkOverlay(PSTR("NETWORK INFO"),7000); } @@ -358,6 +358,12 @@ class FourLineDisplayUsermod : public Usermod { } } + if (apActive && WLED_WIFI_CONFIGURED && now<15000) { + knownSsid = apSSID; + networkOverlay(PSTR("NETWORK INFO"),30000); + return; + } + // Check if values which are shown on display changed from the last time. if (forceRedraw) { needRedraw = true; @@ -407,7 +413,7 @@ class FourLineDisplayUsermod : public Usermod { // and turn it back on if it changed. clear(); sleepOrClock(true); - } else if (displayTurnedOff && clockMode) { + } else if (displayTurnedOff && ntpEnabled) { showTime(); } return; @@ -489,8 +495,8 @@ class FourLineDisplayUsermod : public Usermod { drawGlyph( 2, 0, 1, u8x8_4LineDisplay_WLED_icons_1x1); //brightness icon drawGlyph( 6, 0, 2, u8x8_4LineDisplay_WLED_icons_1x1); //speed icon drawGlyph(10, 0, 3, u8x8_4LineDisplay_WLED_icons_1x1); //intensity icon - if (markLineNum!=2) drawGlyph(0, 2, 4, u8x8_4LineDisplay_WLED_icons_1x1); //palette icon - if (markLineNum!=3) drawGlyph(0, 3, 5, u8x8_4LineDisplay_WLED_icons_1x1); //effect icon + drawGlyph(15, 2, 4, u8x8_4LineDisplay_WLED_icons_1x1); //palette icon + drawGlyph(15, 3, 5, u8x8_4LineDisplay_WLED_icons_1x1); //effect icon } } @@ -500,7 +506,7 @@ class FourLineDisplayUsermod : public Usermod { drawGlyph(col, row, (wificonnected ? 20 : 0), u8x8_4LineDisplay_WLED_icons_1x1, true); // wifi icon if (lineHeight==2) { col--; } else { row++; } drawGlyph(col, row, (bri > 0 ? 9 : 0), u8x8_4LineDisplay_WLED_icons_1x1, true); // power icon - if (lineHeight==2) { col--; } else { row++; } + if (lineHeight==2) { col--; } else { row++; col = row = 0; } drawGlyph(col, row, (nightlightActive ? 6 : 0), u8x8_4LineDisplay_WLED_icons_1x1, true); // moon icon for nighlight mode } @@ -693,17 +699,17 @@ class FourLineDisplayUsermod : public Usermod { } void networkOverlay(const char* line1, long showHowLong) { + String line; // Turn the display back on if (!wakeDisplay()) clear(); // Print the overlay if (line1) { - String l1 = line1; - l1.trim(); - center(l1, getCols()); - drawString(0, 0, l1.c_str()); + line = line1; + center(line, getCols()); + drawString(0, 0, line.c_str()); } // Second row with Wifi name - String line = knownSsid.substring(0, getCols() > 1 ? getCols() - 2 : 0); + line = knownSsid.substring(0, getCols() > 1 ? getCols() - 2 : 0); if (line.length() < getCols()) center(line, getCols()); drawString(0, lineHeight, line.c_str()); // Print `~` char to indicate that SSID is longer, than our display @@ -714,15 +720,14 @@ class FourLineDisplayUsermod : public Usermod { line = knownIp.toString(); center(line, getCols()); drawString(0, lineHeight*2, line.c_str()); + line = ""; if (apActive) { line = apPass; - center(line, getCols()); - drawString(0, lineHeight*3, line.c_str()); - } else if (strcmp(serverDescription, PSTR("WLED")) != 0) { + } else if (strcmp(serverDescription, "WLED") != 0) { line = serverDescription; - center(line, getCols()); - drawString(0, lineHeight*3, line.c_str()); } + center(line, getCols()); + drawString(0, lineHeight*3, line.c_str()); overlayUntil = millis() + showHowLong; } @@ -733,7 +738,7 @@ class FourLineDisplayUsermod : public Usermod { void sleepOrClock(bool enabled) { if (enabled) { displayTurnedOff = true; - if (clockMode) { + if (clockMode && ntpEnabled) { knownMinute = knownHour = 99; showTime(); } else diff --git a/wled00/wled.h b/wled00/wled.h index facfe861..05611b8c 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2201101 +#define VERSION 2201111 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG