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

A simple class which implements a automatic looping file. In order to support different file implementation the file class is a template parameter. The number of loops can be defined by calling setLoopCount(). You can also optinally limit the total looping file size by calling setSize();. More...

#include <FileLoop.h>

Inheritance diagram for FileLoopT< FileType >:
BaseStream Stream Print

Public Member Functions

 FileLoopT ()=default
 
 FileLoopT (FileType file, int count=-1, int rewindPos=-1, int startPos=0)
 
int available () override
 
virtual int availableForWrite () override
 
bool begin ()
 
void end ()
 
FileTypefile ()
 Returns the file.
 
virtual void flush () override
 
bool isLoopActive ()
 
 operator bool ()
 
size_t readBytes (uint8_t *data, size_t len) override
 
void setCallback (void(*cb)(FileLoopT &loop))
 You can be notified about a rewind.
 
void setFile (FileType file)
 defines the file that is used for looping
 
void setLoopCount (int count)
 
void setRewindPos (int pos)
 defines the start position after the rewind. E.g. for wav files this should be 44
 
void setSize (size_t len)
 optionally defines the requested playing size in bytes
 
void setStartPos (int pos)
 defines the start position at the beginning
 
void setWriteBufferSize (int size)
 
size_t size ()
 Returns the (requested) file size.
 
size_t write (const uint8_t *data, size_t len)
 
virtual size_t write (uint8_t ch) override
 

Protected Member Functions

void refillReadBuffer ()
 Refill small read buffer (e.g. 8 bytes) to avoid single byte reads when calling read()
 

Protected Attributes

int _timeout = 10
 
void(* callback )(FileLoopT &loop) = nullptr
 
FileType current_file
 
int loop_count = -1
 
int rewind_pos = -1
 
int size_open = -1
 
int start_pos = 0
 
RingBuffer< uint8_ttmp_in {0}
 
RingBuffer< uint8_ttmp_out {0}
 
int total_size = -1
 
int write_buffer_size = MAX_SINGLE_CHARS
 

Detailed Description

template<class FileType>
class audio_tools::FileLoopT< FileType >

A simple class which implements a automatic looping file. In order to support different file implementation the file class is a template parameter. The number of loops can be defined by calling setLoopCount(). You can also optinally limit the total looping file size by calling setSize();.

Author
Phil Schatzmann

Constructor & Destructor Documentation

◆ FileLoopT() [1/2]

template<class FileType >
FileLoopT ( )
default

◆ FileLoopT() [2/2]

template<class FileType >
FileLoopT ( FileType  file,
int  count = -1,
int  rewindPos = -1,
int  startPos = 0 
)
inline

Member Function Documentation

◆ available()

template<class FileType >
int available ( )
inlineoverridevirtual

Reimplemented from BaseStream.

◆ availableForWrite()

virtual int availableForWrite ( )
inlineoverridevirtualinherited

◆ begin()

template<class FileType >
bool begin ( )
inlinevirtual

Reimplemented from BaseStream.

◆ end()

template<class FileType >
void end ( )
inlinevirtual

Reimplemented from BaseStream.

◆ file()

template<class FileType >
FileType & file ( )
inline

Returns the file.

◆ flush()

virtual void flush ( )
inlineoverridevirtualinherited

◆ isLoopActive()

template<class FileType >
bool isLoopActive ( )
inline
Returns
true as long as we are looping

◆ operator bool()

template<class FileType >
operator bool ( )
inline

◆ readBytes()

template<class FileType >
size_t readBytes ( uint8_t data,
size_t  len 
)
inlineoverridevirtual

Implements BaseStream.

◆ refillReadBuffer()

void refillReadBuffer ( )
inlineprotectedinherited

Refill small read buffer (e.g. 8 bytes) to avoid single byte reads when calling read()

◆ setCallback()

template<class FileType >
void setCallback ( void(*)(FileLoopT< FileType > &loop cb)
inline

You can be notified about a rewind.

◆ setFile()

template<class FileType >
void setFile ( FileType  file)
inline

defines the file that is used for looping

◆ setLoopCount()

template<class FileType >
void setLoopCount ( int  count)
inline

count values: 0) do not loop, 1) loop once, n) loop n times, -1) loop endless

◆ setRewindPos()

template<class FileType >
void setRewindPos ( int  pos)
inline

defines the start position after the rewind. E.g. for wav files this should be 44

◆ setSize()

template<class FileType >
void setSize ( size_t  len)
inline

optionally defines the requested playing size in bytes

◆ setStartPos()

template<class FileType >
void setStartPos ( int  pos)
inline

defines the start position at the beginning

◆ setWriteBufferSize()

void setWriteBufferSize ( int  size)
inlineinherited

◆ size()

template<class FileType >
size_t size ( )
inline

Returns the (requested) file size.

◆ write() [1/2]

template<class FileType >
size_t write ( const uint8_t data,
size_t  len 
)
inlinevirtual

Implements BaseStream.

◆ write() [2/2]

virtual size_t write ( uint8_t  ch)
inlineoverridevirtualinherited

Member Data Documentation

◆ _timeout

int _timeout = 10
protectedinherited

◆ callback

template<class FileType >
void(* callback) (FileLoopT &loop) = nullptr
protected

◆ current_file

template<class FileType >
FileType current_file
protected

◆ loop_count

template<class FileType >
int loop_count = -1
protected

◆ rewind_pos

template<class FileType >
int rewind_pos = -1
protected

◆ size_open

template<class FileType >
int size_open = -1
protected

◆ start_pos

template<class FileType >
int start_pos = 0
protected

◆ tmp_in

RingBuffer<uint8_t> tmp_in {0}
protectedinherited

◆ tmp_out

RingBuffer<uint8_t> tmp_out {0}
protectedinherited

◆ total_size

template<class FileType >
int total_size = -1
protected

◆ write_buffer_size

int write_buffer_size = MAX_SINGLE_CHARS
protectedinherited

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