Commit Graph

486 Commits

Author SHA1 Message Date
Frank
d4a37ecaea clean up ledmap names when directly reading from file 2023-06-09 17:26:44 +02:00
Frank
7dcc8f1d1f enumerateLedmaps improvements
improve reading on ledmap names
* remove trailing " " "," "\r"
* clear buffer between reads
* fix for a 1-byte buffer overflow
2023-06-08 22:31:39 +02:00
Ewoud
b473a40037 Tiny things 2023-06-08 19:25:38 +02:00
Ewoud
5c7937507b Bug fix segment view, use ledmapMaxSize (TroyHack) 2023-06-08 19:24:37 +02:00
Frank
af6091b493 fixing some memory leaks
* audio_reactive.h: catch memory errors from WiFiUDP
* udp: explicitly flush unused receive buffers.
* wled.cpp: additional debug info about "largest available block"
* FX_fcn.cpp: free _globalLeds before running purgeSegments().
2023-06-07 17:10:32 +02:00
TroyHacks
143f84238f WLED_DEBUG_MAPS flag added 2023-06-06 19:44:02 -04:00
Frank
aded74d8b1 suspendStripService improvements
* also suspend Transitions, Notifications and Live LED updates while strip or segments are under update from the Web UI.
2023-06-04 20:30:03 +02:00
Frank
63b03a4139 Merge branch 'mdev' into audio_fastpath 2023-06-01 21:58:34 +02:00
Frank
404fb566fa partly disable waitUntilIdle() as its still work-in-progress
This disables parts of the new feature that might lead to delays, so basicially there is some detection, but no protection any more.

further development needed --> audio_fastpath branch

compile with -D WLEDMM_PROTECT_SERVICE to enable full protection.
2023-06-01 21:55:46 +02:00
Frank
333f5ac2a1 waitUntilIdle() improvements
* protect deserializeMap()
* better handling of recursion in deserializeSegment() and deserializeState
* don't use yield() on esp32
2023-06-01 21:28:46 +02:00
Frank
52fe8e28a3 Merge branch 'mdev' into audio_fastpath 2023-06-01 17:44:36 +02:00
Frank
0a5bfb656d avoid updating strip / segments while draving effects (ESP32 only)
💫 this is the way🌟
A new locking mechanism that allows to wait until strip.service() has completed.
2023-06-01 17:41:36 +02:00
Frank
1daeecc7dd Merge branch 'mdev' into audio_fastpath 2023-05-30 20:44:10 +02:00
Ewoud
5081cfb891 Bug fix, allocate string to store ledmap name 2023-05-29 19:16:17 +02:00
Ewoud
b1e9f825ca Bug fix, allocate string to store ledmap name 2023-05-29 18:33:49 +02:00
Frank
6d78e46a47 strip.service() optimization
to have more stable frame times, the minimum delay should be calculated from the time BEFORE strip.show() not after.

This optimization increases CPU load and potentially has negative impact on usermods that check for strip.isUpdating(), so its only enabled with WLEDMM_FASTPATH.
2023-05-26 23:37:01 +02:00
Frank
9cb6189611 minor speedup for 2D
* robustness: Segment::height() should never return 0
* Segment::XY(), Segment::virtualWidth() and Segment::virtualHeight() declared inline in fx.h. The compiler will always inline these functions now, avoiding overhead of call/return. "Knowing" the function body might also enable other optimizations.
--> up to 10% speedup in 2D effects.
2023-05-26 23:12:49 +02:00
Frank
71153ee832 small debug improvements
- don't set -DNDEBUG -> this flag is "not recommended"
- minor change in deserializeMap() WLED_DEBUG code
2023-05-25 21:50:44 +02:00
Frank
0a826f10ad small debug improvements
- don't set -DNDEBUG -> this flag is "not recommended"
- minor change in deserializeMap() WLED_DEBUG code
2023-05-25 21:38:08 +02:00
Ewoud
305a5b19c4 leds(rgb): also adjusted if new ledmap + grow not shrink (unless...)
FX.h: add ledsrgbSize and allocLeds()
FX_fcn.cpp: 
- copy constructor: allocLeds()
- move constructor: no change
- copy assignment: reuse! + allocLeds()
- move asignment: no change
- resetIfRequired: no free
- setUpLeds/resetSegments: allocLeds()

unless...: copy constructor aften called. That is the bad boy causing re-allocs at every effect change!
2023-05-24 14:59:39 +02:00
Frank
d8726293bf Merge remote-tracking branch 'upstream/main' into mdev 2023-05-22 02:21:23 +02:00
Frank
eeb06e0f4d Merge remote-tracking branch 'upstream/main' into mdev 2023-05-22 02:03:56 +02:00
Frank
fc193408d8 (experimental) use malloc/realloc for customMappingTable
if this works better, we should cherry-pick it into mdev.
2023-05-21 19:38:04 +02:00
Blaz Kristan
bffeec1615 Remove PSRAM use from global LED buffer. 2023-05-21 18:37:18 +02:00
Frank
894fdce4b5 Merge remote-tracking branch 'upstream/main' into mdev 2023-05-21 15:21:22 +02:00
Frank
2cbdc55a85 Merge remote-tracking branch 'upstream/main' into mdev 2023-05-21 14:53:49 +02:00
Frank
e4a9f115cb fx functions: avoid memory corruption
* PSRAM_Allocator was missing the "reallocate" method, which lead to undefined behaviour when dynamic JSON doc needed to grow/shrink
* Segment::setUpLeds() quickfix for length() == 0 (should not happen, but it did happen for me once)
* leds in PSRAM causes major slowdown on wrover boards - disabled.
2023-05-21 14:33:25 +02:00
Ewoud
22decaa0d6 segment.leds refactor (wip)
rename leds to ledsrgb
2023-05-19 15:25:26 +02:00
Ewoud
ef12aaa60b Temp fix for leds array crashes: size fixed to 10000pixels/30000bytes 2023-05-17 15:07:42 +02:00
Ewoud
175375e30d Merge branch 'mdev' into audio_fastpath 2023-05-16 16:02:47 +02:00
Ewoud
21c7347296 Minimal (de)allocs on customMappingTable (only grow, not shrink) 2023-05-16 15:13:30 +02:00
Ewoud
b51972fe41 Merge remote-tracking branch 'origin/mdev' into mdev 2023-05-16 13:12:40 +02:00
Ewoud
d6bc9967d0 Support for large ledmaps
optimize jMapC, enumerateLedmaps and deserializeMap
2023-05-16 13:12:30 +02:00
Frank
6d23eb6874 improve robustness when heap is low
* customMappingTable: allocate using calloc instead of new (new will throw exception if nor enough heap)
* fixing a few minor memory leaks
* ws.cpp: catch out-of-memory in sendLiveLedsWs
* ws.cpp: change interval to 80ms (120 ws very slow...)
2023-05-15 21:15:24 +02:00
Blaz Kristan
9f6278ae8a Bugfix.
- disbled transitions/crossfade prevented segment off
2023-05-14 20:29:26 +02:00
Blaz Kristan
380b63a255 Bugfix.
- disbled transitions/crossfade prevented segment off
2023-05-14 20:27:54 +02:00
Blaz Kristan
217004c70c Bugfix.
- disbled transitions/crossfade prevented segment off
2023-05-14 18:18:09 +02:00
Ewoud
fede3dd54c Merge remote-tracking branch 'upstream/main' into mdev 2023-05-11 17:39:12 +02:00
Ewoud
ca5a54bb72 Merge branch 'mdev' into audio_fastpath 2023-05-04 17:52:21 +02:00
Ewoud
642dbfed85 GFX default on, if set off it stays off (until page refresh) 2023-05-04 17:51:33 +02:00
Frank
7d0e627e14 some effect optimizations
* getpixelcolor: attribute pure - it reads memory, but does not write
* some optimizations for SEGMENT.blur() and SEGMENT.fadeToBlackBy()

* FX.c:pp remove double calls to blur() and fade_out()
* FX.cpp: SEGMENT.setUpLeds() added to effects, to enable LED buffering (safe some time because getPixelColor does not need to access NeopixelBus)

* a few other optimizations to safe time and avoid "expensive" operations
* set I2C bus speed to 400kHz (default is 100Khz)

* a few other small optimizations and tweaks
* pio: esp32 V4 builds use "patch5" toolchain version, which contains a few bugfixes especially for memory management.
2023-05-03 20:33:23 +02:00
Frank
40c96c14f5 a bunch of smaller speedups to core functions
*  make local functions "static"
* use fast_ int types where possible
* use native min/max instead of MIN/MAX macros. Macros evaluate each parameter TWICE!!
* adding __attribute__((pure)) and __attribute((const)) to help the compiler optimize
* ws.cpp: reduce max "live leds" in fastpath mode
2023-04-30 18:41:30 +02:00
Blaz Kristan
65c584aeda 2D enhancement (internal)
- move() wrapping
- dual addPixelColorXY()
2023-04-27 17:31:55 +02:00
Blaž Kristan
2540a2dfd9 Soap, new 2D effect (#3184)
* Soap, new 2D effect

* Fix Soap FX on matrices with edges < 8 LEDs

* Add palette support to Soap FX

---------

Co-authored-by: cschwinne <dev.aircoookie@gmail.com>
2023-04-27 01:22:33 +02:00
Frank
8e9db0adde more accurate FPS forESP32
the standard millis() code is very inaccurate in the "high FPS" ranges. This replaces it with the esp32 high resolution timer.
2023-04-21 17:34:01 +02:00
Frank
9130e4be54 minor optimization of core LED functions
* use _fast_ integer types in loops - in contrast to "uint16_t" etc, the compiler can leave out range/overflow corrections, so it might run faster.
* fcn_declare.h: revive "WLED_USE_REAL_MATH" option, which can be a bit faster on ESP32.
2023-04-21 16:44:58 +02:00
Frank
00661de7fc accept up to 250 fps target in LED preferences
warning included.
2023-04-21 15:26:35 +02:00
Frank
d90ee766f6 PSRAM: you can have it, and eat it or not eat it
*This patch allows to compile with BOARD_HAS_PSRAM, but not set WLED_USE_PSRAM - reserved pins will be protected, and PSRAM usage will be shown in info.
* if you add `-D WLED_USE_PSRAM_JSON` then PSRAM will be used for some JSON buffers, but not for LEDs and Segments.
2023-04-19 17:58:50 +02:00
Frank
cc9a19bc1d partial merge of upstream/main
* leaving out DotStarHspi5MhzMethod, as we are still on NPB 2.6.9 for eth boards
* leaving out the index.css/index.css changes, as I'm not sure how to merge this.

@ewoudwijma we need to merge the JS and CSS parts when you are back; I'll stay with our MM version for now.
2023-04-14 19:53:04 +02:00
Will Tatam
cc25a21bcb Merge branch 'mdev' into audio-palette-updates 2023-04-14 18:28:43 +01:00