Improve mbuf fix

Byte index is now stored on 2 bytes. Macros have been made cleaner
This commit is contained in:
Steins7 2023-09-24 21:59:29 +02:00
parent 0628c4c07c
commit cc54ca7ca8
2 changed files with 7 additions and 3 deletions

View File

@ -18,8 +18,11 @@
static void mbuf_callback(enum DmaIRQSource src, volatile void* param);
#define byte_index (((uint8_t**)buffer->buffers)[buffer->buffer_index][buffer->buffer_size + 1])
#define dma_byte_index (((uint8_t**)buffer->buffers)[buffer->dma_buffer_index][buffer->buffer_size + 1])
//take last 2 bytes of a buffer and assemble them store the current byte index
#define byte_index (((uint16_t**)buffer->buffers) \
[buffer->buffer_index][buffer->buffer_size/2])
#define dma_byte_index (((uint16_t**)buffer->buffers) \
[buffer->dma_buffer_index][buffer->buffer_size/2])
//--local variables-------------------------------------------------------------

View File

@ -43,7 +43,8 @@ struct DmaMultiBuffer {
* Configure a DMA multibuffer for a single DMA channel. A list of buffers is
* used to allow concurent write and DMA tranfers to the specified destination
* wich must be a peripheral. The DMA's priority is also given as parameters.
* The peripheral's specific configuration must be handled separately.
* The peripheral's specific configuration must be handled separately. 2 bytes
* are reserved in each buffer for index storage.
*
* This system needs to be started manually: dma_mbuf_refresh() should be called
* whenever a DMA transfer can be started. This can be done manually after