Source file: /~heha/basteln/Haus/Telefon/Sprachausgabe.zip/AudioOutputPWM.h

/*
  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