Files
loopy_midi_controller/include/ble_midi_transport.h

32 lines
860 B
C++

#pragma once
#include <cstdint>
#include <functional>
#include "midi_transport.h"
class BleMidiTransport {
public:
BleMidiTransport();
~BleMidiTransport();
bool begin();
void update();
void on_midi_receive(std::function<void(const MidiEvent&)> callback);
void send_note_on(uint8_t channel, uint8_t note, uint8_t velocity);
void send_note_off(uint8_t channel, uint8_t note, uint8_t velocity);
void send_cc(uint8_t channel, uint8_t cc, uint8_t value);
bool is_connected();
void send_midi_packet(const uint8_t* data, uint8_t len);
void on_receive(const uint8_t* data, size_t len);
size_t parse_ble_midi(uint8_t status, const uint8_t* data, size_t len, size_t offset, MidiEvent& event);
private:
std::function<void(const MidiEvent&)> receive_callback;
bool initialized;
bool client_connected;
};