Ufs serve fix - makes it work better on esp32cam (ai thinker style) #21486
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description:
Related issue (if applicable): fixes #21473
This changes the rarely used UFSServe code enabled by
#ifdef UFILESYS_STATIC_SERVING
to be like the file download code.For me, this makes the file serving much more reliable on slower devices like the ESP Chip Id 3667140 (ESP32-D0WDQ6 v1.0)
Prior to this change, I would see a random main loop hang on accessing files.
I have tested with >5000 file downloads on ESP32S3 and >1500 downloads on esp32cam (ai thinker style), and had better results.
I don't think this is a complete fix, as I have had one device lose connection (unfortunately without serial) - but this could have been something else.
This PR also adds yield() in file list from the GUI. This is tested and does not cause a watchdog on a 1500 file folder. (the main thread is hung during this time - many seconds). I'm not sure if there can be a better solution whilst the webserver can handle a single client. One would be a re-write of the JS to poll for more files - but this may not help as even finding files in a large folder takes a lot of time. Having this many files in a folder on an IOT device seems unusual, so it may be better to document and live with it.
Checklist:
NOTE: The code change must pass CI tests. Your PR cannot be merged unless tests pass