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_METHOD(std::string, getValue, ());
 
  116     MOCK_METHOD(
void, setValue, (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                 (BLECharacteristicCallbacks *));
 
  146     MOCK_METHOD(
void, 
begin,
 
  147                 (BLEServerCallbacks *, BLECharacteristicCallbacks *));
 
  148     MOCK_METHOD(
void, 
notifyValue, (uint8_t * data, 
size_t len));
 
  149     MOCK_METHOD(std::string, 
getValue, ());