MSC Device: Add asynchronous IO support #2967
Open
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.
Describe the PR
Currently, mixing the MSC class with other classes could be problematic since IO operations could block
tud_task()
for a long time and degrade real-time performance, especially for isochronous and interrupt transfer-based classes.Now, it's possible to delegate IO operations to a background task.
The
cdc_msc_freertos
example has been updated for demonstration. One can changeCFG_EXAMPLE_MSC_IO_DELAY_MS
to a high value and type in the console while doing disk IO. WithCFG_EXAMPLE_MSC_ASYNC_IO
ON and OFF, the latency difference should be very noticeable.