arduino-audio-tools
All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Modules Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
BufferRP2040T< T > Class Template Reference

Buffer implementation which is based on a RP2040 queue. This class is intended to be used to exchange data between the 2 different cores. Multi-core and IRQ safe queue implementation! More...

#include <BufferRP2040.h>

Inheritance diagram for BufferRP2040T< T >:
BaseBuffer< T >

Public Member Functions

 BufferRP2040T (int bufferCount)
 
 BufferRP2040T (size_t bufferSize, int bufferCount)
 
T * address () override
 returns the address of the start of the physical read buffer
 
int available () override
 provides the number of entries that are available to read
 
int availableForWrite () override
 provides the number of entries that are available to write
 
void clear ()
 same as reset
 
virtual int clearArray (int len)
 Removes the next len entries.
 
bool isEmpty ()
 
bool isFull () override
 checks if the buffer is full
 
virtual float levelPercent ()
 Returns the level of the buffer in %.
 
bool peek (T &result) override
 peeks the actual entry from the buffer
 
bool read (T &data)
 reads a single value
 
int readArray (T data[], int len) override
 reads multiple values
 
void reset () override
 clears the buffer
 
bool resize (size_t size)
 Re-Allocats the memory and the queue (size is in entries)
 
void setBlockingRead (bool flag)
 When we use a blockingread, the we wait for the data to be available.
 
void setBlockingWrite (bool flag)
 When we use a non blocking write, the write size must be identical with the buffer size.
 
size_t size ()
 
bool write (T data) override
 write add an entry to the buffer
 
int writeArray (const T data[], int len) override
 Fills the buffer data.
 
virtual int writeArrayOverwrite (const T data[], int len)
 Fills the buffer data and overwrites the oldest data if the buffer is full.
 

Protected Member Functions

void setWritePos (int pos)
 
int writeBlocking (const T data[], int len)
 
int writeNonBlocking (const T data[], int len)
 

Protected Attributes

int buffer_size = 0
 
int buffer_size_alloc_bytes = 0
 
int buffer_size_bytes = 0
 
int buffer_size_req_bytes = 0
 
bool is_blocking_read = false
 
bool is_blocking_write = true
 
friend NBuffer< T >
 
queue_t queue
 
audio_tools::RingBuffer< T > read_buffer {0}
 
SingleBuffer< T > write_buffer {0}
 

Detailed Description

template<typename T>
class audio_tools::BufferRP2040T< T >

Buffer implementation which is based on a RP2040 queue. This class is intended to be used to exchange data between the 2 different cores. Multi-core and IRQ safe queue implementation!

In order to increase the efficiency we to not enqueue individual items but write them into a temporary buffer of bufferSize and write this array to the queue when it is full.

Author
Phil Schatzmann
Template Parameters
T

Member Function Documentation

◆ address()

template<typename T >
T * address ( )
inlineoverridevirtual

returns the address of the start of the physical read buffer

Implements BaseBuffer< T >.

◆ available()

template<typename T >
int available ( )
inlineoverridevirtual

provides the number of entries that are available to read

Implements BaseBuffer< T >.

◆ availableForWrite()

template<typename T >
int availableForWrite ( )
inlineoverridevirtual

provides the number of entries that are available to write

Implements BaseBuffer< T >.

◆ clearArray()

template<typename T >
virtual int clearArray ( int  len)
inlinevirtualinherited

Removes the next len entries.

Reimplemented in SingleBuffer< T >, SingleBuffer< int16_t >, and SingleBuffer< uint8_t >.

◆ isFull()

template<typename T >
bool isFull ( )
inlineoverridevirtual

checks if the buffer is full

Reimplemented from BaseBuffer< T >.

◆ peek()

template<typename T >
bool peek ( T &  result)
inlineoverridevirtual

peeks the actual entry from the buffer

Implements BaseBuffer< T >.

◆ read()

template<typename T >
bool read ( T &  result)
inlinevirtual

reads a single value

Implements BaseBuffer< T >.

◆ readArray()

template<typename T >
int readArray ( data[],
int  len 
)
inlineoverridevirtual

reads multiple values

Reimplemented from BaseBuffer< T >.

◆ reset()

template<typename T >
void reset ( )
inlineoverridevirtual

clears the buffer

Implements BaseBuffer< T >.

◆ size()

template<typename T >
size_t size ( )
inlinevirtual

Implements BaseBuffer< T >.

◆ write()

template<typename T >
bool write ( data)
inlineoverridevirtual

write add an entry to the buffer

Implements BaseBuffer< T >.

◆ writeArray()

template<typename T >
int writeArray ( const T  data[],
int  len 
)
inlineoverridevirtual

Fills the buffer data.

Reimplemented from BaseBuffer< T >.


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