ether2ser 0.1.0
Ethernet <-> synchronous V.24 bridge firmware for RP2040 + W5500
Loading...
Searching...
No Matches
ringbuffer.h File Reference
#include <stddef.h>
Include dependency graph for ringbuffer.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  Ringbuffer
 Generic fixed-size ring buffer state. More...
 

Functions

int RbInit (Ringbuffer *bufferStruct, void *bufferPointer, size_t capacity, size_t itemSizeInByte)
 Initialize ring buffer instance.
 
int RbPushBack (Ringbuffer *bufferStruct, const void *element)
 Push one element at tail/head end.
 
int RbPopFront (Ringbuffer *bufferStruct, void *element)
 Pop one element from front.
 
void RbPushBackWrap (Ringbuffer *bufferStruct, const void *element)
 Push one element and overwrite oldest entry when full.
 

Function Documentation

◆ RbInit()

int RbInit ( Ringbuffer bufferStruct,
void *  bufferPointer,
size_t  capacity,
size_t  itemSizeInByte 
)

Initialize ring buffer instance.

Parameters
bufferStructRing buffer object.
bufferPointerRaw backing storage.
capacityNumber of elements.
itemSizeInByteSize of each element in bytes.
Returns
0 on success, negative on error.

Definition at line 27 of file ringbuffer.c.

References Ringbuffer::buffer, Ringbuffer::bufferEnd, Ringbuffer::capacity, Ringbuffer::count, Ringbuffer::head, Ringbuffer::itemSizeInByte, and Ringbuffer::tail.

Referenced by tx_queue_init().

Here is the caller graph for this function:

◆ RbPopFront()

int RbPopFront ( Ringbuffer bufferStruct,
void *  element 
)

Pop one element from front.

Parameters
bufferStructRing buffer object.
elementDestination element pointer.
Returns
0 on success, negative on underflow/error.

Definition at line 60 of file ringbuffer.c.

References Ringbuffer::buffer, Ringbuffer::bufferEnd, Ringbuffer::count, Ringbuffer::itemSizeInByte, and Ringbuffer::tail.

Referenced by tx_queue_drain().

Here is the caller graph for this function:

◆ RbPushBack()

int RbPushBack ( Ringbuffer bufferStruct,
const void *  element 
)

Push one element at tail/head end.

Parameters
bufferStructRing buffer object.
elementPointer to source element.
Returns
0 on success, negative on overflow/error.

Definition at line 44 of file ringbuffer.c.

References Ringbuffer::buffer, Ringbuffer::bufferEnd, Ringbuffer::capacity, Ringbuffer::count, Ringbuffer::head, and Ringbuffer::itemSizeInByte.

Referenced by tx_queue_enqueue_udp_frame().

Here is the caller graph for this function:

◆ RbPushBackWrap()

void RbPushBackWrap ( Ringbuffer bufferStruct,
const void *  element 
)

Push one element and overwrite oldest entry when full.

Parameters
bufferStructRing buffer object.
elementPointer to source element.

Definition at line 76 of file ringbuffer.c.

References Ringbuffer::buffer, Ringbuffer::bufferEnd, Ringbuffer::capacity, Ringbuffer::count, Ringbuffer::head, Ringbuffer::itemSizeInByte, and Ringbuffer::tail.