From 26eeb9261ac6e94b495d20186e9416bf41b4e1a3 Mon Sep 17 00:00:00 2001 From: RobertoHE Date: Thu, 2 Jun 2022 18:42:59 +0200 Subject: [PATCH 1/2] Update BLEMIDI_Client_ESP32.h Some bug fixed related with AdvertisedDeviceCallbacks and templates. #define BLEMIDI_CREATE_INTANCE fixed --- src/hardware/BLEMIDI_Client_ESP32.h | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/hardware/BLEMIDI_Client_ESP32.h b/src/hardware/BLEMIDI_Client_ESP32.h index 94196ae..52a4b80 100644 --- a/src/hardware/BLEMIDI_Client_ESP32.h +++ b/src/hardware/BLEMIDI_Client_ESP32.h @@ -174,7 +174,6 @@ BEGIN_BLEMIDI_NAMESPACE #define BLEMIDI_CLIENT_SECURITY_AUTH (BLEMIDI_CLIENT_BOND_DUMMY | BLEMIDI_CLIENT_MITM_DUMMY | BLEMIDI_CLIENT_PAIR_DUMMY) /** Define a class to handle the callbacks when advertisments are received */ -template class AdvertisedDeviceCallbacks : public NimBLEAdvertisedDeviceCallbacks { public: @@ -235,10 +234,7 @@ private: bool specificTarget = false; - // TODO: somehow the forward declaration of the template class is not accepted by the compiler -// template friend MyClientCallbacks; - - AdvertisedDeviceCallbacks<_Settings> myAdvCB; + AdvertisedDeviceCallbacks myAdvCB; protected: QueueHandle_t mRxQueue; @@ -300,7 +296,7 @@ protected: void scan(); bool connect(); -public: // TODO: somehow the forward declaration of the template class is not accepted by the compiler +public: void connected() { if (_bleMidiTransport->_connectedCallback) @@ -432,7 +428,7 @@ bool BLEMIDI_Client_ESP32<_Settings>::begin(const char *deviceName, BLEMIDI_Tran // To communicate between the 2 cores. // Core_0 runs here, core_1 runs the BLE stack - mRxQueue = xQueueCreate(256, sizeof(uint8_t)); // TODO Settings::MaxBufferSize + mRxQueue = xQueueCreate(_Settings::MaxBufferSize, sizeof(uint8_t)); NimBLEDevice::setSecurityIOCap(BLEMIDI_CLIENT_SECURITY_CAP); // Attention, it may need a passkey NimBLEDevice::setSecurityAuth(BLEMIDI_CLIENT_SECURITY_AUTH); @@ -633,8 +629,8 @@ END_BLEMIDI_NAMESPACE It will try to connect to a specific server with equal name or addr than . If is "", it will connect to first midi server */ #define BLEMIDI_CREATE_INSTANCE(DeviceName, Name) \ - BLEMIDI_NAMESPACE::BLEMIDI_Transport BLE##Name(DeviceName); \ - MIDI_NAMESPACE::MidiInterface, BLEMIDI_NAMESPACE::MySettings> Name((BLEMIDI_NAMESPACE::BLEMIDI_Transport &)BLE##Name); + BLEMIDI_NAMESPACE::BLEMIDI_Transport, BLEMIDI_NAMESPACE::DefaultSettings> BLE##Name(DeviceName); \ + MIDI_NAMESPACE::MidiInterface, BLEMIDI_NAMESPACE::DefaultSettings>, BLEMIDI_NAMESPACE::MySettings> Name((BLEMIDI_NAMESPACE::BLEMIDI_Transport, BLEMIDI_NAMESPACE::DefaultSettings> &)BLE##Name); /*! \brief Create a default instance for ESP32 named BLEMIDI-CLIENT. It will try to connect to first midi ble server found. From c69bb30ff1366e19280e7cc20f60948c19e60a0d Mon Sep 17 00:00:00 2001 From: RobertoHE Date: Mon, 6 Jun 2022 16:32:10 +0200 Subject: [PATCH 2/2] Change Define Template --- src/hardware/BLEMIDI_Client_ESP32.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/hardware/BLEMIDI_Client_ESP32.h b/src/hardware/BLEMIDI_Client_ESP32.h index 52a4b80..780855e 100644 --- a/src/hardware/BLEMIDI_Client_ESP32.h +++ b/src/hardware/BLEMIDI_Client_ESP32.h @@ -628,9 +628,8 @@ END_BLEMIDI_NAMESPACE /*! \brief Create an instance for ESP32 named , and advertise it like "Prefix + + Subfix" It will try to connect to a specific server with equal name or addr than . If is "", it will connect to first midi server */ -#define BLEMIDI_CREATE_INSTANCE(DeviceName, Name) \ - BLEMIDI_NAMESPACE::BLEMIDI_Transport, BLEMIDI_NAMESPACE::DefaultSettings> BLE##Name(DeviceName); \ - MIDI_NAMESPACE::MidiInterface, BLEMIDI_NAMESPACE::DefaultSettings>, BLEMIDI_NAMESPACE::MySettings> Name((BLEMIDI_NAMESPACE::BLEMIDI_Transport, BLEMIDI_NAMESPACE::DefaultSettings> &)BLE##Name); +#define BLEMIDI_CREATE_INSTANCE(DeviceName, Name) \ + BLEMIDI_CREATE_CUSTOM_INSTANCE (DeviceName, Name, BLEMIDI_NAMESPACE::DefaultSettings) /*! \brief Create a default instance for ESP32 named BLEMIDI-CLIENT. It will try to connect to first midi ble server found.