When building on linux/host compilers (e.g., GCC), the compiler may add padding
depending on the size and order of the member types.
This commit fixes the ordering or the StaticRingbuffer_t such that it matches
the internal Ringbuffer_t. The "_Static_assert" is always enabled for all
compilers.
Closes https://github.com/espressif/esp-idf/issues/11726
Ring buffers permit sending items of 0 size where:
- No-split/allow-split buffers will send an item (i.e., header) but the item
will have a 0 sized data section
- Byte buffers will simply return pdTRUE
This commit fixes an incorrect assert w.r.t 0 item size in
xRingbufferSendAcquire() and also adds a note to the API descriptions regarding
0 item sizes. A test case has also been added.
This commit replaces the existing TX/RX semaphores with FreeRTOS task event
lists (similar to how FreeRTOS queues implement task blocking). Using task
event lists allows the ring buffer object to be smaller and various ring buffer
functions to be faster. The ring buffer queue set impelementation was also
updated as a result.
This commit updates the chip independent system chapters of the
programming guide for esp32s3.
Signed-off-by: Sudeep Mohanty <sudeep.mohanty@espressif.com>
This commit updates does the following:
- xRingbufferCreateStatic() added to allow ringbuffers via to be statically
allocated. Docs and unit tests update accordingly. Closes#3064
- Fix doc typos, closes#3248. Updated API reference regarding to mention
item size limits of no-split buffers when calling
xRingbufferGetCurFreeSize() or xRingbufferGetMaxItemSize(), closes#3117.
- Remove the following deprecated types/functions for v4.0
- xRingbufferIsNextItemWrapped()
- xRingbufferAddToQueueSetWrite()
- xRingbufferRemoveFromQueueSetWrite()