Skip to content

File daisy_pod.h

File List > external-docs > libDaisy > src > daisy_pod.h

Go to the documentation of this file

Source Code

#pragma once
#ifndef DSY_POD_BSP_H
#define DSY_POD_BSP_H

#include "daisy_seed.h"

namespace daisy
{
class DaisyPod
{
  public:
    enum Sw
    {
        BUTTON_1,    
        BUTTON_2,    
        BUTTON_LAST, 
    };

    enum Knob
    {
        KNOB_1,    
        KNOB_2,    
        KNOB_LAST, 
    };

    DaisyPod() {}
    ~DaisyPod() {}

    void Init(bool boost = false);

    void DelayMs(size_t del);

    void StartAudio(AudioHandle::InterleavingAudioCallback cb);

    void StartAudio(AudioHandle::AudioCallback cb);

    void ChangeAudioCallback(AudioHandle::InterleavingAudioCallback cb);

    void ChangeAudioCallback(AudioHandle::AudioCallback cb);

    void StopAudio();

    void SetAudioSampleRate(SaiHandle::Config::SampleRate samplerate);

    float AudioSampleRate();

    void SetAudioBlockSize(size_t blocksize);

    size_t AudioBlockSize();

    float AudioCallbackRate();

    void StartAdc();

    void StopAdc();

    void ProcessAnalogControls();

    inline void ProcessAllControls()
    {
        ProcessAnalogControls();
        ProcessDigitalControls();
    }

    float GetKnobValue(Knob k);

    void ProcessDigitalControls();

    void ClearLeds();

    void UpdateLeds();

    DaisySeed     seed;        
    Encoder       encoder;     
    AnalogControl knob1,       
        knob2,                 
        *knobs[KNOB_LAST];     
    Switch button1,            
        button2,               
        *buttons[BUTTON_LAST]; 
    RgbLed led1,               
        led2;                  
    MidiUartHandler midi;

  private:
    void SetHidUpdateRates();
    void InitButtons();
    void InitEncoder();
    void InitLeds();
    void InitKnobs();
    void InitMidi();
};

} // namespace daisy
#endif