arduino-audio-tools
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
I2SCodecStream Class Reference

I2S Stream which also sets up a codec chip and i2s. More...

#include <I2SCodecStream.h>

Inheritance diagram for I2SCodecStream:
AudioStream VolumeSupport BaseStream AudioInfoSupport AudioInfoSource Stream Print AudioBoardStream

Public Member Functions

 I2SCodecStream ()=default
 Default Constructor (w/o codec)
 
 I2SCodecStream (AudioBoard &board)
 Default constructor: for available AudioBoard values check audioboard variables in https://pschatzmann.github.io/arduino-audio-driver/html/group__audio__driver.html Further information can be found in https://github.com/pschatzmann/arduino-audio-driver/wiki.
 
 I2SCodecStream (AudioBoard *board)
 Provide board via pointer.
 
virtual void addNotifyAudioChange (AudioInfoSupport &bi)
 Adds target to be notified about audio changes.
 
virtual AudioInfo audioInfo () override
 provides the actual input AudioInfo
 
virtual AudioInfo audioInfoOut ()
 provides the actual output AudioInfo: this is usually the same as audioInfo() unless we use a transforming stream
 
virtual int available () override
 Provides the available audio data.
 
virtual int availableForWrite () override
 Provides the available audio data.
 
bool begin ()
 
virtual bool begin (I2SCodecConfig cfg)
 Starts the I2S interface.
 
AudioBoard & board ()
 Provides the board.
 
virtual void clearNotifyAudioChange ()
 Deletes all change notify subscriptions.
 
I2SCodecConfig defaultConfig (RxTxMode mode=TX_MODE)
 Provides the default configuration.
 
I2SDriverdriver ()
 Provides the i2s driver.
 
void end ()
 Stops the I2S interface.
 
virtual void flush () override
 
GpioPin getKey (int pos)
 Provides the gpio for the indicated key pos.
 
GpioPin getPinID (PinFunction function)
 Provides the gpio for the indicated function.
 
GpioPin getPinID (PinFunction function, int pos)
 Provides the gpio for the indicated function.
 
DriverPins & getPins ()
 Provides access to the pin information.
 
float getVolume ()
 legacy: same as volume()
 
bool hasBoard ()
 checks if a board has been defined
 
bool isNotifyActive ()
 Checks if the automatic AudioInfo update is active.
 
 operator bool ()
 
virtual size_t readBytes (uint8_t *data, size_t length) override
 Reads the audio data.
 
virtual size_t readSilence (uint8_t *buffer, size_t length)
 Source to generate silence: just sets the buffer to 0.
 
virtual bool removeNotifyAudioChange (AudioInfoSupport &bi)
 Removes a target in order not to be notified about audio changes.
 
virtual void setAudioInfo (AudioInfo info)
 updates the sample rate dynamically
 
void setBoard (AudioBoard &board)
 (re)defines the board
 
void setBoard (AudioBoard *board)
 (re)defines the board
 
bool setMute (bool mute)
 Mute / unmote.
 
bool setMute (bool mute, int line)
 Mute / unmute of an individual line (codec)
 
void setNotifyActive (bool flag)
 Deactivate/Reactivate automatic AudioInfo updates: (default is active)
 
bool setPAPower (bool active)
 Sets the output of the PA Power Pin.
 
bool setVolume (float vol) override
 sets the volume (range 0.0f - 1.0f)
 
float volume () override
 Provides the actual volume (0.0f - 1.0f)
 
virtual size_t write (const uint8_t *buffer, size_t size)
 Writes the audio data to I2S.
 
virtual size_t write (uint8_t ch) override
 
virtual void writeSilence (size_t len)
 Writes len bytes of silence (=0).
 

Protected Member Functions

bool begin1 ()
 
bool beginCodec (I2SCodecConfig info)
 
virtual int not_supported (int out, const char *msg="")
 
void notifyAudioChange (AudioInfo info)
 
void refillReadBuffer ()
 
void setupI2SPins ()
 We use the board pins if they are available.
 
sample_bits_t toCodecBits (int bits)
 
i2s_format_t toFormat (I2SFormat fmt)
 
samplerate_t toRate (int rate)
 

Protected Attributes

int _timeout = 10
 
I2SCodecConfig cfg
 
CodecConfig codec_cfg
 
I2SStream i2s
 
AudioInfo info
 
bool is_active = false
 
bool is_notify_active = true
 
Vector< AudioInfoSupport * > notify_vector
 
AudioBoard * p_board = nullptr
 
RingBuffer< uint8_t > tmp_in {0}
 
RingBuffer< uint8_t > tmp_out {0}
 
float volume_value = 1.0f
 

Detailed Description

I2S Stream which also sets up a codec chip and i2s.

Author
Phil Schatzmann

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