35 lines
779 B
C++
35 lines
779 B
C++
#pragma once
|
|
|
|
#include <cstdint>
|
|
#include "midi_transport.h"
|
|
#include "led_stub.h"
|
|
#include "switch_stub.h"
|
|
|
|
struct PadMapping {
|
|
uint8_t physical_switch;
|
|
uint8_t midi_channel;
|
|
uint8_t midi_note;
|
|
uint8_t led_index;
|
|
};
|
|
|
|
class AppTask {
|
|
public:
|
|
AppTask(LedStub* led, SwitchStub* sw, UsbMidiTransport* midi);
|
|
|
|
void begin();
|
|
void update();
|
|
void process_midi_event(const MidiEvent& event); // public for test commands
|
|
|
|
private:
|
|
LedStub* led_driver;
|
|
SwitchStub* switch_driver;
|
|
UsbMidiTransport* midi_transport;
|
|
|
|
static const uint8_t NUM_PADS = 10;
|
|
PadMapping pad_mapping[NUM_PADS];
|
|
bool last_switch_state[NUM_PADS];
|
|
|
|
void process_switch_event(uint8_t switch_id, bool pressed);
|
|
void run_palette_test();
|
|
};
|