/*
AudioOutputPWM
class for PWM output
Copyright (C) 2017 Earle F. Philhower, III
*/
#pragma once
#include "AudioOutput.h"
class AudioOutputPWM : public AudioOutput
{
public:
AudioOutputPWM();
~AudioOutputPWM();
bool SetPinout(int bclkPin, int wclkPin, int doutPin);
virtual bool SetRate(int hz) override;
virtual bool SetBitsPerSample(int bits) override;
virtual bool SetChannels(int channels) override;
virtual bool begin() override {return true;}
virtual bool ConsumeSample(int16_t sample[2]) override;
virtual bool stop() override {return true;}
bool SetOutputModeMono(bool _mono) {mono=_mono; return true;} // Force mono output no matter the input
enum : int { APLL_AUTO = -1, APLL_ENABLE = 1, APLL_DISABLE = 0 };
enum : int { EXTERNAL_I2S = 0, INTERNAL_DAC = 1, INTERNAL_PDM = 2 };
protected:
virtual int AdjustI2SRate(int hz) { return hz; }
uint8_t portNo;
int output_mode;
bool mono;
bool i2sOn;
};
Detected encoding: ASCII (7 bit) | 2
|