#pragma once #include #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_layout_test(); };