Skip to content

File daisy_versio.h

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

Go to the documentation of this file

Source Code

#pragma once
#include "daisy_seed.h"

namespace daisy
{
class DaisyVersio
{
  public:
    // ENUMS to help index 4 LEDs, 7 knobs/CV inputs, 2 3-position switches
    enum AV_LEDS
    {
        LED_0,
        LED_1,
        LED_2,
        LED_3,
        LED_LAST
    };

    enum AV_KNOBS
    {
        KNOB_0,
        KNOB_1,
        KNOB_2,
        KNOB_3,
        KNOB_4,
        KNOB_5,
        KNOB_6,
        KNOB_LAST
    };

    enum AV_TOGGLE3
    {
        SW_0,
        SW_1,
        SW_LAST
    };

    DaisyVersio() {}
    ~DaisyVersio() {}

    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 SetAudioBlockSize(size_t size);

    size_t AudioBlockSize();

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

    float AudioSampleRate();

    float AudioCallbackRate();

    void StartAdc();

    void StopAdc();

    void ProcessAnalogControls();

    inline void ProcessAllControls() { ProcessAnalogControls(); }

    bool SwitchPressed();

    bool Gate();

    void SetLed(size_t idx, float red, float green, float blue);

    float GetKnobValue(int idx);

    void UpdateLeds();

    /* Call this once per main loop update to test the Versio Hardware
     * Each input (1 gate in, 1 momentary in, 2 3-position switches, 7 knobs) should change some or all of the output LEDs colors
     **/
    void UpdateExample();

    DaisySeed     seed;
    RgbLed        leds[LED_LAST];
    AnalogControl knobs[KNOB_LAST];
    Switch        tap;
    GateIn        gate;
    Switch3       sw[SW_LAST];

  private:
    void SetHidUpdateRates();
};

} // namespace daisy