diff options
author | Sven Gothel <[email protected]> | 2021-10-26 11:27:28 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2021-10-26 11:27:28 +0200 |
commit | 626f3913249e4dc353e04d022e446e2ef8b1d30c (patch) | |
tree | 536cc57b219cab35e630d70ca2c95f1dccb1d02b /api/direct_bt/HCIHandler.hpp | |
parent | e5bbd4bc908b7ff6ff0dbf7a730f8415b1add80e (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.hpp | 1 |
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; |