5 #ifndef ARDUINO_ARCH_ESP32
6 #error "MIDI over Bluetooth is only supported on ESP32 boards"
10 #include <BLEDevice.h>
11 #include <BLEServer.h>
35 ERROR(
F(
"Error: pServer has not been initialized"), 0x2020);
46 ERROR(
F(
"Error: Characteristic has not been initialized"), 0x2021);
52 void begin(BLEServerCallbacks *serverCallbacks,
53 BLECharacteristicCallbacks *midiCallbacks) {
54 DEBUGFN(
"Initializing BLE MIDI Interface");
55 if (BLEDevice::getInitialized()) {
56 ERROR(
F(
"Error: BLEDevice is initialized already"), 0x2022);
64 pServer = BLEDevice::createServer();
73 BLECharacteristic::PROPERTY_READ |
74 BLECharacteristic::PROPERTY_NOTIFY |
75 BLECharacteristic::PROPERTY_WRITE_NR);
87 BLEAdvertising *pAdvertising =
pServer->getAdvertising();
88 pAdvertising->addServiceUUID(pService->getUUID());
89 pAdvertising->start();
110 #include <gmock-wrapper.h>
113 class BLECharacteristic {
115 MOCK_METHOD0(getValue, std::string(
void));
116 MOCK_METHOD2(setValue,
void(uint8_t *data,
size_t len));
119 class BLECharacteristicCallbacks {
121 virtual ~BLECharacteristicCallbacks() =
default;
122 virtual void onRead(BLECharacteristic *pCharacteristic) {
123 (void)pCharacteristic;
125 virtual void onWrite(BLECharacteristic *pCharacteristic) {
126 (void)pCharacteristic;
132 class BLEServerCallbacks {
134 virtual ~BLEServerCallbacks() =
default;
135 virtual void onConnect(BLEServer *pServer) { (void)pServer; }
136 virtual void onDisconnect(BLEServer *pServer) { (void)pServer; }
145 void(BLECharacteristicCallbacks *));
147 void(BLEServerCallbacks *, BLECharacteristicCallbacks *));
148 MOCK_METHOD2(
notifyValue,
void(uint8_t *data,
size_t len));
149 MOCK_METHOD0(
getValue, std::string(
void));