diff --git a/src/BLEMIDI_Transport.h b/src/BLEMIDI_Transport.h index 45b028a..377f910 100644 --- a/src/BLEMIDI_Transport.h +++ b/src/BLEMIDI_Transport.h @@ -185,6 +185,7 @@ protected: public: // callbacks void (*_connectedCallback)() = nullptr; + void (*_connectedCallbackDeviceName)(char *) = nullptr; void (*_disconnectedCallback)() = nullptr; BLEMIDI_Transport &setName(const char *deviceName) @@ -199,6 +200,12 @@ public: _connectedCallback = fptr; return *this; } + + BLEMIDI_Transport &setHandleConnected(void (*fptr)(char*)) + { + _connectedCallbackDeviceName= fptr; + return *this; + } BLEMIDI_Transport &setHandleDisconnected(void (*fptr)()) { diff --git a/src/hardware/BLEMIDI_Client_ESP32.h b/src/hardware/BLEMIDI_Client_ESP32.h index 4b7f8b4..c589f4e 100644 --- a/src/hardware/BLEMIDI_Client_ESP32.h +++ b/src/hardware/BLEMIDI_Client_ESP32.h @@ -228,7 +228,8 @@ private: BLERemoteCharacteristic *_characteristic = nullptr; BLERemoteService *pSvc = nullptr; bool firstTimeSend = true; //First writeValue get sends like Write with reponse for clean security flags. After first time, all messages are send like WriteNoResponse for increase transmision speed. - + char connectedDeviceName[24]; + BLEMIDI_Transport *_bleMidiTransport = nullptr; bool specificTarget = false; @@ -303,6 +304,12 @@ protected: _bleMidiTransport->_connectedCallback(); } firstTimeSend = true; + + if (_bleMidiTransport->_connectedCallbackDeviceName) + { + sprintf(connectedDeviceName, "%s", myAdvCB.advDevice.getName().c_str()); + _bleMidiTransport->_connectedCallbackDeviceName(connectedDeviceName); + } } void disconnected()