False positive error report
BlueAndi opened this issue · comments
The "NeoEsp32RmtMethod" is used to update the strip.
After a Show(), the CanShow() is called periodically to determine when the strip update is finished.
CanShow() calls IsReadyToUpdate() method:
NeoPixelBus/src/internal/methods/NeoEsp32RmtMethod.h
Lines 598 to 601 in e40289f
The rmt_wait_tx_done() is called with a timeout of 0, which causes an error report in case the transfer is not finished yet.
See
This pollute the log and causes that the system slows down.
Could we skip using the ESP_ERROR_CHECK_WITHOUT_ABORT() in especially this case?
One single error log looks like:
ESP_ERROR_CHECK_WITHOUT_ABORT failed: esp_err_t 0x107 (ESP_ERR_TIMEOUT) at 0x4008862b
file: ".pio/libdeps/default/NeoPixelBus/src/internal/methods/NeoEsp32RmtMethod.h" line 599
func: bool NeoEsp32RmtMethodBase<T_SPEED, T_CHANNEL>::IsReadyToUpdate() const [with T_SPEED = NeoEsp32RmtSpeedWs2812x; T_CHANNEL = NeoEsp32RmtChannel6]
expression: rmt_wait_tx_done(_channel.RmtChannelNumber, 0)
NeoPixelBus: v2.7.9
Platform: espressif32 v6.5.0
Framework: arduino
Board: esp32-S3 DevKitC-1
The timeout shouldn't be an error, or they should provide a routine you can call to check/poll the state.
But your suggestion sounds like a good work around.
https://github.com/Makuna/NeoPixelBus/tree/Esp32RmtSilentTimeout contains the changes to silence timeouts.
Give it try, if it works I will merge into master before the next release.
Thanks, will try and come back with feedback.
Successful tested, you can integrate the bugfix. Thanks for the fast and good support!!