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

Base Class for all PWM drivers. More...

#include <PWMAudioBase.h>

Inheritance diagram for DriverPWMBase:
PWMDriverAVR PWMDriverESP32 PWMDriverMBED PWMDriverRenesas PWMDriverSTM32

Public Member Functions

PWMConfigaudioInfo ()
 
virtual int availableForWrite ()
 
bool begin (PWMConfig cfg)
 
virtual PWMConfig defaultConfig ()
 
virtual void end ()
 
uint32_t framesPerSecond ()
 
bool isTimerStarted ()
 
virtual int maxChannels ()=0
 
virtual int maxOutputValue ()=0
 
virtual void pwmWrite (int channel, int value)=0
 
void setBuffer (BaseBuffer< uint8_t > *buffer)
 
virtual void setupPWM ()=0
 
virtual void setupTimer ()=0
 
virtual void startTimer ()=0
 
uint32_t underflowsPerSecond ()
 
void updateStatistics ()
 
virtual size_t write (const uint8_t *wrt_buffer, size_t bytes)
 

Protected Member Functions

virtual int decimation ()
 Decimation factor to reduce the sample rate.
 
void deleteBuffer ()
 
virtual int effectiveOutputSampleRate ()
 Provides the effective sample rate.
 
virtual bool isDecimateActive ()
 
virtual int maxSampleRate ()
 Provides the max working sample rate.
 
virtual int nextValue ()
 determines the next scaled value
 
void playNextFrame ()
 writes the next frame to the output pins
 

Protected Attributes

PWMConfig audio_config
 
BaseBuffer< uint8_t > * buffer = nullptr
 
Decimate decimate
 
uint32_t frame_count = 0
 
uint32_t frame_size = 0
 
uint32_t frames_per_second = 0
 
bool is_blocking_write = true
 
bool is_timer_started = false
 
uint32_t time_1_sec
 
uint32_t underflow_count = 0
 
uint32_t underflow_per_second = 0
 

Detailed Description

Base Class for all PWM drivers.

Member Function Documentation

◆ isDecimateActive()

virtual bool isDecimateActive ( )
inlineprotectedvirtual

The requested sampling rate is too hight: we only process half of the samples so we can half the sampling rate

◆ setBuffer()

void setBuffer ( BaseBuffer< uint8_t > *  buffer)
inline

You can assign your own custom buffer impelementation: must be allocated on the heap and will be cleaned up by this class


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