Skip to content

File daisy_legio.h

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

Go to the documentation of this file

Source Code

#pragma once
#include "daisy_seed.h"

namespace daisy
{
class DaisyLegio
{
  public:
    // ENUMS to help index 2 LEDs, 2 controls/CV inputs, 2 3-position switches
    enum LEGIO_LEDS
    {
        LED_LEFT,
        LED_RIGHT,
        LED_LAST
    };

    enum LEGIO_CONTROLS
    {
        CONTROL_PITCH,
        CONTROL_KNOB_TOP,
        CONTROL_KNOB_BOTTOM,
        CONTROL_LAST
    };

    enum LEGIO_TOGGLE3
    {
        SW_LEFT,
        SW_RIGHT,
        SW_LAST
    };

    DaisyLegio() {}
    ~DaisyLegio() {}

    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 ProcessDigitalControls();

    void ProcessAnalogControls();

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

    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 Legio Hardware
     * Each input (1 gate in, 1 momentary in, 2 3-position switches, 3 controls) should change some or all of the output LEDs colors
     **/
    void UpdateExample();

    DaisySeed     seed;
    Encoder       encoder;
    GateIn        gate;
    RgbLed        leds[LED_LAST];
    AnalogControl controls[CONTROL_LAST];
    Switch3       sw[SW_LAST];

  private:
    void SetHidUpdateRates();
};

} // namespace daisy