| LUFA Library 140302 |

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Functions
RingBuffer.h File Reference

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

`#include "../../Common/Common.h"`

## 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.