From ab02fbc108b1a0a332f7f76b5cc8c40391f98eaa Mon Sep 17 00:00:00 2001 From: wakwak_koba <5591750+wakwak-koba@users.noreply.github.com> Date: Fri, 23 Oct 2020 08:12:52 +0900 Subject: [PATCH 1/2] Fixed not being able to pair with Windows when using NimBLE and, consideration for boards that don't implement the `LED_BUILTIN` constant --- examples/MidiBle/MidiBle.ino | 6 ++++++ examples/SysEx_Receive/SysEx_Receive.ino | 6 ++++++ examples/SysEx_Send/SysEx_Send.ino | 6 ++++++ src/hardware/BLEMIDI_ESP32_NimBLE.h | 12 ++++++------ 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/examples/MidiBle/MidiBle.ino b/examples/MidiBle/MidiBle.ino index 2d530d9..e6f5cf5 100644 --- a/examples/MidiBle/MidiBle.ino +++ b/examples/MidiBle/MidiBle.ino @@ -17,8 +17,10 @@ void setup() { MIDI.begin(); +#ifdef LED_BUILTIN pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, LOW); +#endif BLEMIDI.setHandleConnected(OnConnected); BLEMIDI.setHandleDisconnected(OnDisconnected); @@ -51,7 +53,9 @@ void loop() // ----------------------------------------------------------------------------- void OnConnected() { isConnected = true; +#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, HIGH); +#endif } // ----------------------------------------------------------------------------- @@ -59,7 +63,9 @@ void OnConnected() { // ----------------------------------------------------------------------------- void OnDisconnected() { isConnected = false; +#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, LOW); +#endif } // ----------------------------------------------------------------------------- diff --git a/examples/SysEx_Receive/SysEx_Receive.ino b/examples/SysEx_Receive/SysEx_Receive.ino index 98cc209..fac30a8 100644 --- a/examples/SysEx_Receive/SysEx_Receive.ino +++ b/examples/SysEx_Receive/SysEx_Receive.ino @@ -19,8 +19,10 @@ void setup() Serial.begin(115200); while (!Serial); +#ifdef LED_BUILTIN pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, LOW); +#endif BLEMIDI.setHandleConnected(OnConnected); BLEMIDI.setHandleDisconnected(OnDisconnected); @@ -49,7 +51,9 @@ void loop() // ----------------------------------------------------------------------------- void OnConnected() { isConnected = true; +#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, HIGH); +#endif } // ----------------------------------------------------------------------------- @@ -57,7 +61,9 @@ void OnConnected() { // ----------------------------------------------------------------------------- void OnDisconnected() { isConnected = false; +#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, LOW); +#endif } // ----------------------------------------------------------------------------- diff --git a/examples/SysEx_Send/SysEx_Send.ino b/examples/SysEx_Send/SysEx_Send.ino index b1c28b8..f86a8dd 100644 --- a/examples/SysEx_Send/SysEx_Send.ino +++ b/examples/SysEx_Send/SysEx_Send.ino @@ -41,8 +41,10 @@ bool isConnected = false; // ----------------------------------------------------------------------------- void setup() { +#ifdef LED_BUILTIN pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, LOW); +#endif BLEMIDI.setHandleConnected(OnConnected); BLEMIDI.setHandleDisconnected(OnDisconnected); @@ -75,7 +77,9 @@ void loop() // ----------------------------------------------------------------------------- void OnConnected() { isConnected = true; +#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, HIGH); +#endif } // ----------------------------------------------------------------------------- @@ -83,5 +87,7 @@ void OnConnected() { // ----------------------------------------------------------------------------- void OnDisconnected() { isConnected = false; +#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, LOW); +#endif } diff --git a/src/hardware/BLEMIDI_ESP32_NimBLE.h b/src/hardware/BLEMIDI_ESP32_NimBLE.h index 52e8524..ad92b63 100644 --- a/src/hardware/BLEMIDI_ESP32_NimBLE.h +++ b/src/hardware/BLEMIDI_ESP32_NimBLE.h @@ -128,17 +128,17 @@ bool BLEMIDI_ESP32_NimBLE::begin(const char* deviceName, BLEMIDI_TransportsetCallbacks(new MyCharacteristicCallbacks(this)); + + auto _security = new NimBLESecurity(); + _security->setAuthenticationMode(ESP_LE_AUTH_BOND); + // Start the service service->start(); - - auto advertisementData = BLEAdvertisementData(); - advertisementData.setFlags(0x04); - advertisementData.setCompleteServices(BLEUUID(SERVICE_UUID)); - advertisementData.setName(deviceName); // Start advertising _advertising = _server->getAdvertising(); - _advertising->setAdvertisementData(advertisementData); + _advertising->addServiceUUID(service->getUUID()); + _advertising->setAppearance(0x00); _advertising->start(); return true; From d8746c296757abf986b363a5eb9d6df89bc8808a Mon Sep 17 00:00:00 2001 From: wakwak_koba <5591750+wakwak-koba@users.noreply.github.com> Date: Sun, 25 Oct 2020 06:14:46 +0900 Subject: [PATCH 2/2] Revert examples --- examples/MidiBle/MidiBle.ino | 6 ------ examples/SysEx_Receive/SysEx_Receive.ino | 6 ------ examples/SysEx_Send/SysEx_Send.ino | 6 ------ 3 files changed, 18 deletions(-) diff --git a/examples/MidiBle/MidiBle.ino b/examples/MidiBle/MidiBle.ino index e6f5cf5..2d530d9 100644 --- a/examples/MidiBle/MidiBle.ino +++ b/examples/MidiBle/MidiBle.ino @@ -17,10 +17,8 @@ void setup() { MIDI.begin(); -#ifdef LED_BUILTIN pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, LOW); -#endif BLEMIDI.setHandleConnected(OnConnected); BLEMIDI.setHandleDisconnected(OnDisconnected); @@ -53,9 +51,7 @@ void loop() // ----------------------------------------------------------------------------- void OnConnected() { isConnected = true; -#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, HIGH); -#endif } // ----------------------------------------------------------------------------- @@ -63,9 +59,7 @@ void OnConnected() { // ----------------------------------------------------------------------------- void OnDisconnected() { isConnected = false; -#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, LOW); -#endif } // ----------------------------------------------------------------------------- diff --git a/examples/SysEx_Receive/SysEx_Receive.ino b/examples/SysEx_Receive/SysEx_Receive.ino index fac30a8..98cc209 100644 --- a/examples/SysEx_Receive/SysEx_Receive.ino +++ b/examples/SysEx_Receive/SysEx_Receive.ino @@ -19,10 +19,8 @@ void setup() Serial.begin(115200); while (!Serial); -#ifdef LED_BUILTIN pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, LOW); -#endif BLEMIDI.setHandleConnected(OnConnected); BLEMIDI.setHandleDisconnected(OnDisconnected); @@ -51,9 +49,7 @@ void loop() // ----------------------------------------------------------------------------- void OnConnected() { isConnected = true; -#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, HIGH); -#endif } // ----------------------------------------------------------------------------- @@ -61,9 +57,7 @@ void OnConnected() { // ----------------------------------------------------------------------------- void OnDisconnected() { isConnected = false; -#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, LOW); -#endif } // ----------------------------------------------------------------------------- diff --git a/examples/SysEx_Send/SysEx_Send.ino b/examples/SysEx_Send/SysEx_Send.ino index f86a8dd..b1c28b8 100644 --- a/examples/SysEx_Send/SysEx_Send.ino +++ b/examples/SysEx_Send/SysEx_Send.ino @@ -41,10 +41,8 @@ bool isConnected = false; // ----------------------------------------------------------------------------- void setup() { -#ifdef LED_BUILTIN pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, LOW); -#endif BLEMIDI.setHandleConnected(OnConnected); BLEMIDI.setHandleDisconnected(OnDisconnected); @@ -77,9 +75,7 @@ void loop() // ----------------------------------------------------------------------------- void OnConnected() { isConnected = true; -#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, HIGH); -#endif } // ----------------------------------------------------------------------------- @@ -87,7 +83,5 @@ void OnConnected() { // ----------------------------------------------------------------------------- void OnDisconnected() { isConnected = false; -#ifdef LED_BUILTIN digitalWrite(LED_BUILTIN, LOW); -#endif }