arduino-audio-tools
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
CatStream Class Referenceabstract

Provides data from a concatenation of Streams. Please note that the provided Streams can be played only once! You will need to reset them (e.g. moving the file pointer to the beginning) and readd them back if you want to process them a second time. The default timeout on the available() method is set to 0. This might be not good if you use e.g. a URLStream. More...

#include <BaseStream.h>

Inheritance diagram for CatStream:
BaseStream Stream Print

Public Member Functions

void add (Stream &stream)
 
void add (Stream *stream)
 
int available () override
 
virtual int availableForWrite () override
 
bool begin ()
 
void end ()
 
virtual void flush () override
 
 operator bool ()
 Returns true if active and we still have data.
 
size_t readBytes (uint8_t *data, size_t len) override
 
void setOnBeginCallback (void(*callback)(Stream *stream))
 
void setOnEndCallback (void(*callback)(Stream *stream))
 
void setTimeout (uint32_t t)
 
virtual size_t write (const uint8_t *buffer, size_t size) override=0
 
virtual size_t write (uint8_t ch) override
 

Protected Member Functions

int availableWithTimout ()
 
bool moveToNextStreamOnEnd ()
 
void refillReadBuffer ()
 

Protected Attributes

uint_fast32_t _timeout = 0
 
void(* begin_callback )(Stream *stream) = nullptr
 
void(* end_callback )(Stream *stream) = nullptr
 
Vector< Stream * > input_streams
 
bool is_active = false
 
Streamp_current_stream = nullptr
 
RingBuffer< uint8_t > tmp_in {0}
 
RingBuffer< uint8_t > tmp_out {0}
 

Detailed Description

Provides data from a concatenation of Streams. Please note that the provided Streams can be played only once! You will need to reset them (e.g. moving the file pointer to the beginning) and readd them back if you want to process them a second time. The default timeout on the available() method is set to 0. This might be not good if you use e.g. a URLStream.

Author
Phil Schatzmann

Member Function Documentation

◆ moveToNextStreamOnEnd()

bool moveToNextStreamOnEnd ( )
inlineprotected

moves to the next stream if necessary: returns true if we still have a valid stream


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