Bugfix.
- feed WDT even if strip is updating - provide custom palette names - handle interface cooldown properly - rotary encoder ALT fix for custom palettes
This commit is contained in:
parent
bb45bee7f8
commit
d1b00ba95d
@ -398,8 +398,14 @@ void RotaryEncoderUIUsermod::sortModesAndPalettes() {
|
|||||||
modes_alpha_indexes = re_initIndexArray(strip.getModeCount());
|
modes_alpha_indexes = re_initIndexArray(strip.getModeCount());
|
||||||
re_sortModes(modes_qstrings, modes_alpha_indexes, strip.getModeCount(), MODE_SORT_SKIP_COUNT);
|
re_sortModes(modes_qstrings, modes_alpha_indexes, strip.getModeCount(), MODE_SORT_SKIP_COUNT);
|
||||||
|
|
||||||
palettes_qstrings = re_findModeStrings(JSON_palette_names, strip.getPaletteCount());
|
palettes_qstrings = re_findModeStrings(JSON_palette_names, strip.getPaletteCount()+strip.customPalettes.size());
|
||||||
palettes_alpha_indexes = re_initIndexArray(strip.getPaletteCount()); // only use internal palettes
|
palettes_alpha_indexes = re_initIndexArray(strip.getPaletteCount()+strip.customPalettes.size());
|
||||||
|
if (strip.customPalettes.size()) {
|
||||||
|
for (int i=0; i<strip.customPalettes.size(); i++) {
|
||||||
|
palettes_alpha_indexes[strip.getPaletteCount()+i] = 255-i;
|
||||||
|
palettes_qstrings[strip.getPaletteCount()+i] = PSTR("~Custom~");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// How many palette names start with '*' and should not be sorted?
|
// How many palette names start with '*' and should not be sorted?
|
||||||
// (Also skipping the first one, 'Default').
|
// (Also skipping the first one, 'Default').
|
||||||
@ -496,7 +502,7 @@ void RotaryEncoderUIUsermod::setup()
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
PinManagerPinType pins[3] = { { pinA, false }, { pinB, false }, { pinC, false } };
|
PinManagerPinType pins[3] = { { pinA, false }, { pinB, false }, { pinC, false } };
|
||||||
if (!pinManager.allocateMultiplePins(pins, 3, PinOwner::UM_RotaryEncoderUI)) {
|
if (pinA<0 || pinB<0 || !pinManager.allocateMultiplePins(pins, 3, PinOwner::UM_RotaryEncoderUI)) {
|
||||||
pinA = pinB = pinC = -1;
|
pinA = pinB = pinC = -1;
|
||||||
enabled = false;
|
enabled = false;
|
||||||
return;
|
return;
|
||||||
@ -507,7 +513,7 @@ void RotaryEncoderUIUsermod::setup()
|
|||||||
#endif
|
#endif
|
||||||
pinMode(pinA, USERMOD_ROTARY_ENCODER_GPIO);
|
pinMode(pinA, USERMOD_ROTARY_ENCODER_GPIO);
|
||||||
pinMode(pinB, USERMOD_ROTARY_ENCODER_GPIO);
|
pinMode(pinB, USERMOD_ROTARY_ENCODER_GPIO);
|
||||||
pinMode(pinC, USERMOD_ROTARY_ENCODER_GPIO);
|
if (pinC>=0) pinMode(pinC, USERMOD_ROTARY_ENCODER_GPIO);
|
||||||
}
|
}
|
||||||
|
|
||||||
loopTime = millis();
|
loopTime = millis();
|
||||||
@ -682,21 +688,25 @@ void RotaryEncoderUIUsermod::displayNetworkInfo() {
|
|||||||
void RotaryEncoderUIUsermod::findCurrentEffectAndPalette() {
|
void RotaryEncoderUIUsermod::findCurrentEffectAndPalette() {
|
||||||
DEBUG_PRINTLN(F("Finding current mode and palette."));
|
DEBUG_PRINTLN(F("Finding current mode and palette."));
|
||||||
currentEffectAndPaletteInitialized = true;
|
currentEffectAndPaletteInitialized = true;
|
||||||
for (uint8_t i = 0; i < strip.getModeCount(); i++) {
|
|
||||||
|
effectCurrentIndex = 0;
|
||||||
|
for (int i = 0; i < strip.getModeCount(); i++) {
|
||||||
if (modes_alpha_indexes[i] == effectCurrent) {
|
if (modes_alpha_indexes[i] == effectCurrent) {
|
||||||
effectCurrentIndex = i;
|
effectCurrentIndex = i;
|
||||||
|
DEBUG_PRINTLN(F("Found current mode."));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DEBUG_PRINTLN(F("Found current mode."));
|
|
||||||
|
|
||||||
for (uint8_t i = 0; i < strip.getPaletteCount(); i++) {
|
effectPaletteIndex = 0;
|
||||||
|
DEBUG_PRINTLN(effectPalette);
|
||||||
|
for (uint8_t i = 0; i < strip.getPaletteCount()+strip.customPalettes.size(); i++) {
|
||||||
if (palettes_alpha_indexes[i] == effectPalette) {
|
if (palettes_alpha_indexes[i] == effectPalette) {
|
||||||
effectPaletteIndex = i;
|
effectPaletteIndex = i;
|
||||||
|
DEBUG_PRINTLN(F("Found palette."));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DEBUG_PRINTLN(F("Found palette."));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RotaryEncoderUIUsermod::changeState(const char *stateName, byte markedLine, byte markedCol, byte glyph) {
|
bool RotaryEncoderUIUsermod::changeState(const char *stateName, byte markedLine, byte markedCol, byte glyph) {
|
||||||
@ -731,7 +741,9 @@ void RotaryEncoderUIUsermod::changeBrightness(bool increase) {
|
|||||||
}
|
}
|
||||||
display->updateRedrawTime();
|
display->updateRedrawTime();
|
||||||
#endif
|
#endif
|
||||||
bri = max(min((increase ? bri+fadeAmount : bri-fadeAmount), 255), 0);
|
//bri = max(min((increase ? bri+fadeAmount : bri-fadeAmount), 255), 0);
|
||||||
|
if (bri < 40) bri = max(min((increase ? bri+fadeAmount/2 : bri-fadeAmount/2), 255), 0); // slower steps when brightness < 16%
|
||||||
|
else bri = max(min((increase ? bri+fadeAmount : bri-fadeAmount), 255), 0);
|
||||||
lampUdated();
|
lampUdated();
|
||||||
#ifdef USERMOD_FOUR_LINE_DISPLAY
|
#ifdef USERMOD_FOUR_LINE_DISPLAY
|
||||||
display->updateBrightness();
|
display->updateBrightness();
|
||||||
@ -878,7 +890,7 @@ void RotaryEncoderUIUsermod::changePalette(bool increase) {
|
|||||||
}
|
}
|
||||||
display->updateRedrawTime();
|
display->updateRedrawTime();
|
||||||
#endif
|
#endif
|
||||||
effectPaletteIndex = max(min((increase ? effectPaletteIndex+1 : effectPaletteIndex-1), strip.getPaletteCount()-1), 0);
|
effectPaletteIndex = max(min((unsigned)(increase ? effectPaletteIndex+1 : effectPaletteIndex-1), strip.getPaletteCount()+strip.customPalettes.size()-1), 0U);
|
||||||
effectPalette = palettes_alpha_indexes[effectPaletteIndex];
|
effectPalette = palettes_alpha_indexes[effectPaletteIndex];
|
||||||
stateChanged = true;
|
stateChanged = true;
|
||||||
if (applyToAll) {
|
if (applyToAll) {
|
||||||
|
@ -161,6 +161,8 @@ void stateUpdated(byte callMode) {
|
|||||||
|
|
||||||
void updateInterfaces(uint8_t callMode)
|
void updateInterfaces(uint8_t callMode)
|
||||||
{
|
{
|
||||||
|
if (!interfaceUpdateCallMode || millis() - lastInterfaceUpdate < INTERFACE_UPDATE_COOLDOWN) return;
|
||||||
|
|
||||||
sendDataWs();
|
sendDataWs();
|
||||||
lastInterfaceUpdate = millis();
|
lastInterfaceUpdate = millis();
|
||||||
if (callMode == CALL_MODE_WS_SEND) return;
|
if (callMode == CALL_MODE_WS_SEND) return;
|
||||||
@ -179,7 +181,7 @@ void updateInterfaces(uint8_t callMode)
|
|||||||
void handleTransitions()
|
void handleTransitions()
|
||||||
{
|
{
|
||||||
//handle still pending interface update
|
//handle still pending interface update
|
||||||
if (interfaceUpdateCallMode && millis() - lastInterfaceUpdate > INTERFACE_UPDATE_COOLDOWN) updateInterfaces(interfaceUpdateCallMode);
|
updateInterfaces(interfaceUpdateCallMode);
|
||||||
#ifndef WLED_DISABLE_MQTT
|
#ifndef WLED_DISABLE_MQTT
|
||||||
if (doPublishMqtt) publishMqtt();
|
if (doPublishMqtt) publishMqtt();
|
||||||
#endif
|
#endif
|
||||||
|
@ -251,6 +251,12 @@ uint8_t extractModeName(uint8_t mode, const char *src, char *dest, uint8_t maxLe
|
|||||||
} else return 0;
|
} else return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (src == JSON_palette_names && mode > GRADIENT_PALETTE_COUNT) {
|
||||||
|
snprintf_P(dest, maxLen, PSTR("~ Custom %d~"), 255-mode);
|
||||||
|
dest[maxLen-1] = '\0';
|
||||||
|
return strlen(dest);
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t qComma = 0;
|
uint8_t qComma = 0;
|
||||||
bool insideQuotes = false;
|
bool insideQuotes = false;
|
||||||
uint8_t printedChars = 0;
|
uint8_t printedChars = 0;
|
||||||
@ -565,4 +571,4 @@ void enumerateLedmaps() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -195,12 +195,15 @@ void WLED::loop()
|
|||||||
|
|
||||||
#if WLED_WATCHDOG_TIMEOUT > 0
|
#if WLED_WATCHDOG_TIMEOUT > 0
|
||||||
// we finished our mainloop, reset the watchdog timer
|
// we finished our mainloop, reset the watchdog timer
|
||||||
if (!strip.isUpdating())
|
static unsigned long lastWDTFeed = 0;
|
||||||
|
if (!strip.isUpdating() || millis() - lastWDTFeed > (WLED_WATCHDOG_TIMEOUT*500)) {
|
||||||
#ifdef ARDUINO_ARCH_ESP32
|
#ifdef ARDUINO_ARCH_ESP32
|
||||||
esp_task_wdt_reset();
|
esp_task_wdt_reset();
|
||||||
#else
|
#else
|
||||||
ESP.wdtFeed();
|
ESP.wdtFeed();
|
||||||
#endif
|
#endif
|
||||||
|
lastWDTFeed = millis();
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (doReboot && (!doInitBusses || !doSerializeConfig)) // if busses have to be inited & saved, wait until next iteration
|
if (doReboot && (!doInitBusses || !doSerializeConfig)) // if busses have to be inited & saved, wait until next iteration
|
||||||
|
Loading…
Reference in New Issue
Block a user