From c6b246f9ddf9b67d8b2e4ce8a2a0baf888bda7c1 Mon Sep 17 00:00:00 2001 From: lathoub Date: Wed, 24 Oct 2018 11:27:29 +0200 Subject: [PATCH] added connected/disconnected events --- src/BleMidi.h | 3 ++ src/Ble_esp32.h | 135 ++++++++++++++++++++++++------------------------ 2 files changed, 70 insertions(+), 68 deletions(-) diff --git a/src/BleMidi.h b/src/BleMidi.h index 8418f7a..b54c267 100644 --- a/src/BleMidi.h +++ b/src/BleMidi.h @@ -7,6 +7,9 @@ #include "utility/BleMidi_Settings.h" #include "utility/BleMidi_Defs.h" +#define SERVICE_UUID "03b80e5a-ede8-4b33-a751-6ce34ec4c700" +#define CHARACTERISTIC_UUID "7772e5db-3868-4112-a1a9-f2669d106bf3" + #if defined(ESP32) #include "Ble_esp32.h" #endif diff --git a/src/Ble_esp32.h b/src/Ble_esp32.h index a6d3a68..b7fc176 100644 --- a/src/Ble_esp32.h +++ b/src/Ble_esp32.h @@ -1,15 +1,44 @@ #pragma once +// Headers for ESP32 BLE #include #include #include -#define SERVICE_UUID "03b80e5a-ede8-4b33-a751-6ce34ec4c700" -#define CHARACTERISTIC_UUID "7772e5db-3868-4112-a1a9-f2669d106bf3" - BEGIN_BLEMIDI_NAMESPACE -class BleMidiInterface; +class BleMidiInterface +{ +protected: + // ESP32 + BLEServer *pServer; + BLEAdvertising *pAdvertising; + BLECharacteristic *pCharacteristic; + +public: + void(*mConnectedCallback)(); + void(*mDisconnectedCallback)(); + +public: + inline BleMidiInterface() + { + mConnectedCallback = NULL; + mDisconnectedCallback = NULL; + } + + inline ~BleMidiInterface() + { + } + + inline bool begin(const char* deviceName); + + inline void onConnected(void(*fptr)()) { + mConnectedCallback = fptr; + } + inline void onDisconnected(void(*fptr)()) { + mDisconnectedCallback = fptr; + } +}; class MyServerCallbacks: public BLEServerCallbacks { public: @@ -20,11 +49,11 @@ protected: BleMidiInterface* _bleMidiInterface; void onConnect(BLEServer* pServer) { - // _bleMidiInterface->mConnectedCallback(); + _bleMidiInterface->mConnectedCallback(); }; void onDisconnect(BLEServer* pServer) { - // _bleMidiInterface->mDisconnectedCallback(); + _bleMidiInterface->mDisconnectedCallback(); } }; @@ -33,69 +62,39 @@ class MyCallbacks: public BLECharacteristicCallbacks { } }; -class BleMidiInterface +bool BleMidiInterface::begin(const char* deviceName) { -protected: - // ESP32 - BLEServer *pServer; - BLEAdvertising *pAdvertising; - BLECharacteristic *pCharacteristic; - - void(*mConnectedCallback)(); - void(*mDisconnectedCallback)(); - -public: - inline BleMidiInterface() - { - mConnectedCallback = NULL; - mDisconnectedCallback = NULL; - } - - inline ~BleMidiInterface() - { - } - - inline bool begin(const char* deviceName) - { - BLEDevice::init(deviceName); - - pServer = BLEDevice::createServer(); - pServer->setCallbacks(new MyServerCallbacks(this)); - - // Create the BLE Service - BLEService* pService = pServer->createService(BLEUUID(SERVICE_UUID)); - - // Create a BLE Characteristic - pCharacteristic = pService->createCharacteristic( - BLEUUID(CHARACTERISTIC_UUID), - BLECharacteristic::PROPERTY_READ | - BLECharacteristic::PROPERTY_WRITE | - BLECharacteristic::PROPERTY_NOTIFY | - BLECharacteristic::PROPERTY_WRITE_NR - ); - pCharacteristic->setCallbacks(new MyCallbacks()); - // Start the service - pService->start(); - - BLEAdvertisementData advertisementData = BLEAdvertisementData(); - advertisementData.setFlags(0x04); - advertisementData.setCompleteServices(BLEUUID(SERVICE_UUID)); - advertisementData.setName(deviceName); - - // Start advertising - pAdvertising = pServer->getAdvertising(); - pAdvertising->setAdvertisementData(advertisementData); - pAdvertising->start(); - - return true; - } + BLEDevice::init(deviceName); - inline void onConnected(void(*fptr)()) { - mConnectedCallback = fptr; - } - inline void onDisconnected(void(*fptr)()) { - mDisconnectedCallback = fptr; - } -}; + pServer = BLEDevice::createServer(); + pServer->setCallbacks(new MyServerCallbacks(this)); + + // Create the BLE Service + BLEService* pService = pServer->createService(BLEUUID(SERVICE_UUID)); + + // Create a BLE Characteristic + pCharacteristic = pService->createCharacteristic( + BLEUUID(CHARACTERISTIC_UUID), + BLECharacteristic::PROPERTY_READ | + BLECharacteristic::PROPERTY_WRITE | + BLECharacteristic::PROPERTY_NOTIFY | + BLECharacteristic::PROPERTY_WRITE_NR + ); + pCharacteristic->setCallbacks(new MyCallbacks()); + // Start the service + pService->start(); + + BLEAdvertisementData advertisementData = BLEAdvertisementData(); + advertisementData.setFlags(0x04); + advertisementData.setCompleteServices(BLEUUID(SERVICE_UUID)); + advertisementData.setName(deviceName); + + // Start advertising + pAdvertising = pServer->getAdvertising(); + pAdvertising->setAdvertisementData(advertisementData); + pAdvertising->start(); + + return true; +} END_BLEMIDI_NAMESPACE