Arduino PulseWire Transceiver Library
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes
pulsewire::RingBuffer< T > Class Template Reference

Efficient lock-free ring buffer for storing data. More...

#include <RingBuffer.h>

Public Member Functions

 RingBuffer (size_t size=128)
 
void resize (size_t new_size)
 
bool write (const T &value)
 
int writeArray (const T *data, size_t len)
 
size_t available () const
 
void clear ()
 
bool isFull () const
 
bool isEmpty () const
 
size_t size () const
 
bool read (T &out)
 Read and remove the next element. Returns true if successful.
 
int read ()
 
int readArray (T *dest, size_t len)
 Read up to len elements into dest, returns number of elements read.
 
bool peek (T &out) const
 Peek at the next element without removing it. Returns true if successful.
 
int peek () const
 Peek (uint8_t specialization compatibility). Returns -1 if empty.
 
size_t availableForWrite () const
 Returns available space for writing.
 

Protected Attributes

T_buffer = nullptr
 
size_t _capacity = 0
 
size_t _head = 0
 
size_t _tail = 0
 
size_t _count = 0
 

Detailed Description

template<typename T>
class pulsewire::RingBuffer< T >

Efficient lock-free ring buffer for storing data.

Implements a FIFO circular buffer for storage and retrieval. Used internally for TX and RX buffering. Supports push, read, peek, and bulk operations with minimal memory movement.

Template Parameters
TThe type of elements stored in the ring buffer.

Definition at line 24 of file RingBuffer.h.

Constructor & Destructor Documentation

◆ RingBuffer()

template<typename T >
pulsewire::RingBuffer< T >::RingBuffer ( size_t  size = 128)
inline

Definition at line 26 of file RingBuffer.h.

◆ ~RingBuffer()

template<typename T >
pulsewire::RingBuffer< T >::~RingBuffer ( )
inline

Definition at line 28 of file RingBuffer.h.

Member Function Documentation

◆ available()

template<typename T >
size_t pulsewire::RingBuffer< T >::available ( ) const
inline

Definition at line 60 of file RingBuffer.h.

◆ availableForWrite()

template<typename T >
size_t pulsewire::RingBuffer< T >::availableForWrite ( ) const
inline

Returns available space for writing.

Definition at line 119 of file RingBuffer.h.

◆ clear()

template<typename T >
void pulsewire::RingBuffer< T >::clear ( )
inline

Definition at line 62 of file RingBuffer.h.

◆ isEmpty()

template<typename T >
bool pulsewire::RingBuffer< T >::isEmpty ( ) const
inline

Definition at line 70 of file RingBuffer.h.

◆ isFull()

template<typename T >
bool pulsewire::RingBuffer< T >::isFull ( ) const
inline

Definition at line 68 of file RingBuffer.h.

◆ peek() [1/2]

template<typename T >
int pulsewire::RingBuffer< T >::peek ( ) const
inline

Peek (uint8_t specialization compatibility). Returns -1 if empty.

Definition at line 113 of file RingBuffer.h.

◆ peek() [2/2]

template<typename T >
bool pulsewire::RingBuffer< T >::peek ( T out) const
inline

Peek at the next element without removing it. Returns true if successful.

Definition at line 106 of file RingBuffer.h.

◆ read() [1/2]

template<typename T >
int pulsewire::RingBuffer< T >::read ( )
inline

Read and remove the next byte (uint8_t specialization compatibility). Returns -1 if empty.

Definition at line 85 of file RingBuffer.h.

◆ read() [2/2]

template<typename T >
bool pulsewire::RingBuffer< T >::read ( T out)
inline

Read and remove the next element. Returns true if successful.

Definition at line 75 of file RingBuffer.h.

◆ readArray()

template<typename T >
int pulsewire::RingBuffer< T >::readArray ( T dest,
size_t  len 
)
inline

Read up to len elements into dest, returns number of elements read.

Definition at line 94 of file RingBuffer.h.

◆ resize()

template<typename T >
void pulsewire::RingBuffer< T >::resize ( size_t  new_size)
inline

Definition at line 33 of file RingBuffer.h.

◆ size()

template<typename T >
size_t pulsewire::RingBuffer< T >::size ( ) const
inline

Definition at line 72 of file RingBuffer.h.

◆ write()

template<typename T >
bool pulsewire::RingBuffer< T >::write ( const T value)
inline

Definition at line 40 of file RingBuffer.h.

◆ writeArray()

template<typename T >
int pulsewire::RingBuffer< T >::writeArray ( const T data,
size_t  len 
)
inline

Definition at line 48 of file RingBuffer.h.

Field Documentation

◆ _buffer

template<typename T >
T* pulsewire::RingBuffer< T >::_buffer = nullptr
protected

Definition at line 122 of file RingBuffer.h.

◆ _capacity

template<typename T >
size_t pulsewire::RingBuffer< T >::_capacity = 0
protected

Definition at line 123 of file RingBuffer.h.

◆ _count

template<typename T >
size_t pulsewire::RingBuffer< T >::_count = 0
protected

Definition at line 126 of file RingBuffer.h.

◆ _head

template<typename T >
size_t pulsewire::RingBuffer< T >::_head = 0
protected

Definition at line 124 of file RingBuffer.h.

◆ _tail

template<typename T >
size_t pulsewire::RingBuffer< T >::_tail = 0
protected

Definition at line 125 of file RingBuffer.h.


The documentation for this class was generated from the following file: