On esp32, its possible that two threads (async_tcp, looptask) are sending out JSON via AsyncWebServer in parallel
- serveJson() responds to json/si, and
- updateInterfaces() is sending JSON state info using sendDataWs().
This workaround uses the INTERFACE_UPDATE_COOLDOWN timer to delay the second webSocket send command so it does not (usually) interfere with the first.
It looks like the root cause that parts of AsyncWebServer are not thread-safe, and the payloads from a second ->send() call may corrupt the previous one if still being sent out. The problem should be solved properly in AsyncWebServer, however until that happens, this workaround help to reduce the frequency of errors.
Many bad quality analog mics are not centered properly at 1.6V, but stuck at 0V or stuck at 3.3V in silence. The bandpass filter removes DC offsets and improve signal quality.
* debug messages added to different initializers
* SPH0654::initialize() was having a wrong signature: uint8 instead of int8.
C++ can be a real bastard ;-)
* improves robustness of the Matrix effect, by dynamically adjusting the "reference color" used to identify "falling code" head pixels.
* a bit faster, as I've removed the need to scan all pixels a second time for "black screen" detection.
Its still not perfect, and the main loop could be simplified a lot by leveraging on the fact that all changes actually happen in the top row, and "falling" is actually just moving everything down by one pixel.
Update ES8388Source::initialize and ES7243::initialize method signatures to match I2SSource::initialize so that when initialize is called on a AudioSource pointer the child class's method is used.
To make it better readable and prevent copy&paste errors, all needed flags can be referenced from the "esp32" buildenv:
${esp32.AR_build_flags}
${esp32.AR_lib_deps}
* remove "not supported" warning on -S2
* minor tweaking of beat detector
* optimized parameters for arduinoFFT
* fixed a few implicit "double" promotions
* minor UDP protocol optimizations
* small optimization for fft task create / suspend
* completely remove analogmic settings for -S3/-S2/-C3 where analog is not supported
changes were already tested extensively in the MM fork.
this is a band-aid fix for random crashes when switching between presets with multiple segments - crossfade disabled.
!! adding type initializers fixed it for me on -S3, however I still see (less frequent) crashes on esp32, due to heap corruption.
It took me hours to get a meaningful stackdump:
assert failed: heap_caps_free heap_caps.c:360 (heap != NULL && "free() target pointer is outside heap areas")
Backtrace: 0x40084ee1:0x3ffb2570 0x4008e341:0x3ffb2590 0x40094709:0x3ffb25b0 0x4008534a:0x3ffb26e0 0x40094739:0x3ffb2700 0x400e9037:0x3ffb2720 0x400e917c:0x3ffb2740 0x400eaeeb:0x3ffb2760 0x40117ec5:0x3ffb27c0 0x401184ea:0x3ffb2800 0x4013509d:0x3ffb2820
#0 0x40084ee1:0x3ffb2570 in panic_abort at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/esp_system/panic.c:402
#1 0x4008e341:0x3ffb2590 in esp_system_abort at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/esp_system/esp_system.c:128
#2 0x40094709:0x3ffb25b0 in __assert_func at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/newlib/assert.c:85
#3 0x4008534a:0x3ffb26e0 in heap_caps_free at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/heap/heap_caps.c:360
(inlined by) heap_caps_free at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/heap/heap_caps.c:345
#4 0x40094739:0x3ffb2700 in free at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/newlib/heap.c:39
#5 0x400e9037:0x3ffb2720 in Segment::deallocateData() at wled00/FX_fcn.cpp:189
#6 0x400e917c:0x3ffb2740 in Segment::resetIfRequired() at wled00/FX_fcn.cpp:206
(inlined by) Segment::resetIfRequired() at wled00/FX_fcn.cpp:203
#7 0x400eaeeb:0x3ffb2760 in WS2812FX::service() at wled00/FX_fcn.cpp:1216 (discriminator 2)
#8 0x40117ec5:0x3ffb27c0 in WLED::loop() at wled00/wled.cpp:115 (discriminator 3)
#9 0x401184ea:0x3ffb2800 in loop() at C:/src/wled00/wled00.ino:20
#10 0x4013509d:0x3ffb2820 in loopTask(void*) at C:/Users/user/.platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp:50
ELF file SHA256: 18c20b536f4c6ef4
commit 84148ad07a
Author: Blaz Kristan <blaz@kristan-sp.si>
Date: Sun Sep 3 12:34:17 2023 +0200
Implement palette colors
commit af3c8f66f7
Author: Blaz Kristan <blaz@kristan-sp.si>
Date: Tue Aug 1 18:18:41 2023 +0200
revert wled00.ino
commit 3097a1b17e
Author: Blaz Kristan <blaz@kristan-sp.si>
Date: Tue Aug 1 18:13:37 2023 +0200
minor aesthetic fixes
commit 54b80f74b2
Author: Blaz Kristan <blaz@kristan-sp.si>
Date: Tue Aug 1 18:09:32 2023 +0200
remove unused variable
commit 9a78d28cd7
Merge: 56a74bc51ed81793
Author: Blaz Kristan <blaz@kristan-sp.si>
Date: Tue Aug 1 18:08:29 2023 +0200
Merge branch 'main' into PJH_ADD_Linearbounce
commit 56a74bc54c
Author: pjhatch <66844564+pjhatch@users.noreply.github.com>
Date: Sat Aug 15 12:34:13 2020 -0500
Update FX.cpp
Added the improvements suggested by Gregor Hartmann
commit a20358b61b
Author: pjhatch <66844564+pjhatch@users.noreply.github.com>
Date: Sun Jul 12 08:33:48 2020 -0500
Adding 2 ball track modes
With and without collisions
commit 341d9d1697
Author: pjhatch <66844564+pjhatch@users.noreply.github.com>
Date: Sun Jul 5 14:55:14 2020 -0500
Update FX.cpp
Still 1 bug to fix - this was a test.
commit 9cee424383
Author: pjhatch <66844564+pjhatch@users.noreply.github.com>
Date: Sun Jul 5 14:53:14 2020 -0500
Update FX.cpp
commit 37cb51cfd6
Author: pjhatch <66844564+pjhatch@users.noreply.github.com>
Date: Thu Jul 2 14:16:25 2020 -0500
Adding Collision
A couple of bugs still need sorting
commit 84b7bfb989
Author: pjhatch <66844564+pjhatch@users.noreply.github.com>
Date: Sun Jun 28 19:59:46 2020 -0500
update for lost balls
Added some protection - so that when intensity is lowered and raised some time later balls that have moved way off the track are recovered.
commit 04d17e4839
Author: pjhatch <66844564+pjhatch@users.noreply.github.com>
Date: Sun Jun 28 19:43:56 2020 -0500
Added Ball Track V1
In this version the balls bounce of the edges and do not interact with one another.
bracket was on wrong position, resulting in this warning:
wled00/set.cpp:357:79: warning: value computed is not used [-Wunused-value]
strlcpy(mqttGroupTopic, request->arg(F("MG")).c_str(), MQTT_MAX_TOPIC_LEN)+1;