arduino-audio-tools
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Attributes | List of all members
AudioSourceArray< FileType > Class Template Reference

Audio Data Source managing a static array of file names (const char*). Designed for PROGMEM storage on Arduino platforms with static file lists. This class is a template to support multiple SD libraries and other Streams. More...

#include <AudioSource.h>

Inheritance diagram for AudioSourceArray< FileType >:
AudioSource

Public Types

typedef FileType *(* FileToStreamCallback) (const char *path, FileType &file)
 

Public Member Functions

template<size_t N>
 AudioSourceArray (const char *(&nameArray)[N], FileToStreamCallback callback)
 Constructor with array and callback.
 
 AudioSourceArray (const char *const *nameArray, size_t size, FileToStreamCallback callback)
 Constructor with array pointer, size and callback.
 
virtual void begin () override
 Reset actual stream and move to root.
 
FileType & getCurrentFile ()
 
const char * getFilePath (int index) const
 Get file path at index.
 
virtual int index () override
 Returns the actual index of the stream.
 
int indexOf (const char *path)
 Find index of file by path.
 
virtual bool isAutoNext ()
 Returns default setting go to the next.
 
bool isEmpty () const
 Check if empty.
 
const char * name (int index)
 provides the name at the given index
 
virtual FileType * nextStream (int offset) override
 Returns next audio stream.
 
Streamoperator[] (int idx)
 access with array syntax
 
virtual StreampreviousStream (int offset)
 Returns previous audio stream.
 
virtual FileType * selectStream (const char *path) override
 Returns audio stream by path.
 
virtual FileType * selectStream (int index) override
 Returns audio stream at the indicated index.
 
template<size_t N>
void setArray (const char *(&nameArray)[N])
 Set the array of file names.
 
void setArray (const char *const *nameArray, size_t size)
 Set the array with pointer and size.
 
virtual StreamsetIndex (int index)
 same as selectStream - I just prefer this name
 
virtual bool setMetadataCallback (void(*fn)(MetaDataType info, const char *str, int len), ID3TypeSelection sel=SELECT_ICY)
 
void setNameToStreamCallback (FileToStreamCallback callback)
 Set the callback for converting file path to stream.
 
virtual void setTimeout (int millisec)
 Sets the timeout of Stream in milliseconds.
 
virtual void setTimeoutAutoNext (int millisec)
 
int size () const
 Get the number of files.
 
virtual int timeoutAutoNext ()
 Provides the timeout which is triggering to move to the next stream.
 
virtual const char * toStr () override
 provides the actual stream (e.g. file) name or url
 

Protected Attributes

size_t array_size = 0
 
int current_index = 0
 
FileType * current_stream = nullptr
 
const char *const * file_array = nullptr
 
FileToStreamCallback nameToStreamCallback = nullptr
 
int timeout_auto_next_value = 500
 

Detailed Description

template<typename FileType>
class audio_tools::AudioSourceArray< FileType >

Audio Data Source managing a static array of file names (const char*). Designed for PROGMEM storage on Arduino platforms with static file lists. This class is a template to support multiple SD libraries and other Streams.

Note
A mandatory callback function must be provided to convert a file path (and optionally an old file instance) into a stream or file object. This callback is set via the constructor or setNameToStreamCallback().

Example callback signature: FileType* callback(const char* path, FileType& oldFile);

Without this callback, the class cannot open or access files for playback. Also don't forget to close the old file to prevent any memory leaks.

Author
Phil Schatzmann

Member Function Documentation

◆ begin()

template<typename FileType >
virtual void begin ( )
inlineoverridevirtual

Reset actual stream and move to root.

Implements AudioSource.

◆ index()

template<typename FileType >
virtual int index ( )
inlineoverridevirtual

Returns the actual index of the stream.

Reimplemented from AudioSource.

◆ isAutoNext()

virtual bool isAutoNext ( )
inlinevirtualinherited

◆ nextStream()

template<typename FileType >
virtual FileType * nextStream ( int  offset)
inlineoverridevirtual

Returns next audio stream.

Implements AudioSource.

◆ previousStream()

virtual Stream * previousStream ( int  offset)
inlinevirtualinherited

Returns previous audio stream.

Reimplemented in AudioSourceFTP< ClientType >, and AudioSourceURL.

◆ selectStream() [1/2]

template<typename FileType >
virtual FileType * selectStream ( const char *  path)
inlineoverridevirtual

Returns audio stream by path.

Implements AudioSource.

◆ selectStream() [2/2]

template<typename FileType >
virtual FileType * selectStream ( int  index)
inlineoverridevirtual

Returns audio stream at the indicated index.

Reimplemented from AudioSource.

◆ setTimeout()

virtual void setTimeout ( int  millisec)
inlinevirtualinherited

Sets the timeout of Stream in milliseconds.

Reimplemented in AudioSourceURL, and AudioSourceSDFAT< AudioFs, AudioFile >.

◆ setTimeoutAutoNext()

virtual void setTimeoutAutoNext ( int  millisec)
inlinevirtualinherited

Sets the timeout which is triggering to move to the next stream. - the default value is 500 ms

◆ toStr()

template<typename FileType >
virtual const char * toStr ( )
inlineoverridevirtual

provides the actual stream (e.g. file) name or url

Reimplemented from AudioSource.


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