aboutsummaryrefslogtreecommitdiffstats
path: root/api/direct_bt/HCIHandler.hpp
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2021-10-26 11:27:28 +0200
committerSven Gothel <[email protected]>2021-10-26 11:27:28 +0200
commit626f3913249e4dc353e04d022e446e2ef8b1d30c (patch)
tree536cc57b219cab35e630d70ca2c95f1dccb1d02b /api/direct_bt/HCIHandler.hpp
parente5bbd4bc908b7ff6ff0dbf7a730f8415b1add80e (diff)
Add 3 HCI Commands + 1 HCI MetaEvent to support SMP SC on slave peripheral site, incl. mapping to Mgmt event object
Situation: Linux Kernel 5.10.0-9-amd64, Debian 12 dbt_scanner10: Master, initiatior (DUAL) dbt_peripheral00: Slave, peripheral (LE only) LE Secure Connections enabled per default. Issue: LTK via Mgmt event in ~50% of cases not send! However, full information already passed via HCI commands/events. Workaround: Listen to HCI commands as well and allow related commands + events to complement SC status tracking. +++ New HCI commands + events, incl. their Mgmt event mapping: - HCIOpcode::LE_ENABLE_ENC -> HCILEEnableEncryptionCmd - Mgmt HCI_LE_ENABLE_ENC -> MgmtEvtHCILEEnableEncryptionCmd - HCIOpcode::LE_LTK_REPLY_ACK -> HCILELTKReplyAckCmd - Mgmt HCI_LE_LTK_REPLY_ACK -> MgmtEvtHCILELTKReplyAckCmd - HCIOpcode::LE_LTK_REPLY_REJ -> HCILELTKReplyRejCmd - Mgmt HCI_LE_LTK_REPLY_REJ -> MgmtEvtHCILELTKReplyRejCmd - HCIMetaEventType::LE_LTK_REQUEST -> HCILELTKReqEvent - Mgmt: Opcode::HCI_LE_LTK_REQUEST -> MgmtEvtHCILELTKReq - HCICommand::getSpecialized(..)
Diffstat (limited to 'api/direct_bt/HCIHandler.hpp')
-rw-r--r--api/direct_bt/HCIHandler.hpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/api/direct_bt/HCIHandler.hpp b/api/direct_bt/HCIHandler.hpp
index 75f89ad5..e1a23eed 100644
--- a/api/direct_bt/HCIHandler.hpp
+++ b/api/direct_bt/HCIHandler.hpp
@@ -330,6 +330,7 @@ namespace direct_bt {
HCISMPMsgCallbackList hciSMPMsgCallbackList;
std::unique_ptr<MgmtEvent> translate(HCIEvent& ev) noexcept;
+ std::unique_ptr<MgmtEvent> translate(HCICommand& ev) noexcept;
std::unique_ptr<const SMPPDUMsg> getSMPPDUMsg(const HCIACLData::l2cap_frame & l2cap, const uint8_t * l2cap_data) const noexcept;
void hciReaderThreadImpl() noexcept;