LUFA Library  151115
RingBuffer.h File Reference

Lightweight ring (circular) buffer, for fast insertion/deletion of bytes. More...

Data Structures

struct  RingBuffer_t
 Ring Buffer Management Structure. More...
 

Functions

static uint16_t RingBuffer_GetCount (RingBuffer_t *const Buffer) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(1)
 
static uint16_t RingBuffer_GetFreeCount (RingBuffer_t *const Buffer) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(1)
 
static void RingBuffer_InitBuffer (RingBuffer_t *Buffer, uint8_t *const DataPtr, const uint16_t Size) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2)
 
static void RingBuffer_Insert (RingBuffer_t *Buffer, const uint8_t Data) ATTR_NON_NULL_PTR_ARG(1)
 
static bool RingBuffer_IsEmpty (RingBuffer_t *const Buffer) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(1)
 
static bool RingBuffer_IsFull (RingBuffer_t *const Buffer) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(1)
 
static uint8_t RingBuffer_Peek (RingBuffer_t *const Buffer) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(1)
 
static uint8_t RingBuffer_Remove (RingBuffer_t *Buffer) ATTR_NON_NULL_PTR_ARG(1)
 

Detailed Description

Lightweight ring buffer, for fast insertion/deletion. Multiple buffers can be created of different sizes to suit different needs.

Note that for each buffer, insertion and removal operations may occur at the same time (via a multi-threaded ISR based system) however the same kind of operation (two or more insertions or deletions) must not overlap. If there is possibility of two or more of the same kind of operating occurring at the same point in time, atomic (mutex) locking should be used.