diff options
Diffstat (limited to 'src/bluetooth/bluez')
-rw-r--r-- | src/bluetooth/bluez/hcimanager.cpp | 7 | ||||
-rw-r--r-- | src/bluetooth/bluez/hcimanager_p.h | 2 |
2 files changed, 5 insertions, 4 deletions
diff --git a/src/bluetooth/bluez/hcimanager.cpp b/src/bluetooth/bluez/hcimanager.cpp index cf2f2a0f..dfb99d5a 100644 --- a/src/bluetooth/bluez/hcimanager.cpp +++ b/src/bluetooth/bluez/hcimanager.cpp @@ -486,8 +486,8 @@ void HciManager::handleHciAclPacket(const quint8 *data, int size) // qCDebug(QT_BT_BLUEZ) << "handle:" << aclData->handle << "PB:" << aclData->pbFlag // << "BC:" << aclData->bcFlag << "data len:" << aclData->dataLen; - // Consider only directed, complete messages from controller to host (i.e. incoming packets). - if (aclData->pbFlag != 2 || aclData->bcFlag != 0) + // Consider only directed, complete messages. + if ((aclData->pbFlag != 0 && aclData->pbFlag != 2) || aclData->bcFlag != 0) return; if (size < int(sizeof(L2CapHeader))) { @@ -516,7 +516,8 @@ void HciManager::handleHciAclPacket(const quint8 *data, int size) } quint128 csrk; memcpy(&csrk, data + 1, sizeof csrk); - emit signatureResolvingKeyReceived(aclData->handle, csrk); + const bool isRemoteKey = aclData->pbFlag == 2; + emit signatureResolvingKeyReceived(aclData->handle, isRemoteKey, csrk); } void HciManager::handleLeMetaEvent(const quint8 *data) diff --git a/src/bluetooth/bluez/hcimanager_p.h b/src/bluetooth/bluez/hcimanager_p.h index eb899c79..3bae92e5 100644 --- a/src/bluetooth/bluez/hcimanager_p.h +++ b/src/bluetooth/bluez/hcimanager_p.h @@ -91,7 +91,7 @@ signals: void commandCompleted(quint16 opCode, quint8 status, const QByteArray &data); void connectionComplete(quint16 handle); void connectionUpdate(quint16 handle, const QLowEnergyConnectionParameters ¶meters); - void signatureResolvingKeyReceived(quint16 connHandle, const quint128 &csrk); + void signatureResolvingKeyReceived(quint16 connHandle, bool remoteKey, const quint128 &csrk); private slots: void _q_readNotify(); |