Loading system/stack/eatt/eatt_impl.h +6 −4 Original line number Diff line number Diff line Loading @@ -263,8 +263,9 @@ struct eatt_impl { if (key_size < min_key_size) { std::vector<uint16_t> empty; log::error("Insufficient key size ({}<{}) for device {}", key_size, min_key_size, bda); if (!L2CA_ConnectCreditBasedRsp(bda, identifier, empty, L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP_KEY_SIZE, nullptr)) { if (!L2CA_ConnectCreditBasedRsp( bda, identifier, empty, tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP_KEY_SIZE, nullptr)) { log::warn("Unable to respond L2CAP le_coc credit indication peer:{}", bda); } return; Loading Loading @@ -303,9 +304,10 @@ struct eatt_impl { !BTM_IsEncrypted(bda, BT_TRANSPORT_LE)) { /* If Link is not encrypted, we shall not accept EATT channel creation. */ std::vector<uint16_t> empty; uint16_t result = L2CAP_LE_RESULT_INSUFFICIENT_AUTHENTICATION; tL2CAP_LE_RESULT_CODE result = tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_INSUFFICIENT_AUTHENTICATION; if (BTM_IsLinkKeyKnown(bda, BT_TRANSPORT_LE)) { result = L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP; result = tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP; } log::error("ACL to device {} is unencrypted.", bda); if (!L2CA_ConnectCreditBasedRsp(bda, identifier, empty, result, nullptr)) { Loading system/stack/include/l2c_api.h +3 −2 Original line number Diff line number Diff line Loading @@ -418,7 +418,8 @@ void L2CA_DeregisterLECoc(uint16_t psm); [[nodiscard]] bool L2CA_ConnectCreditBasedRsp(const RawAddress& p_bd_addr, uint8_t id, std::vector<uint16_t>& accepted_lcids, uint16_t result, tL2CAP_LE_CFG_INFO* p_cfg); tL2CAP_LE_RESULT_CODE result, tL2CAP_LE_CFG_INFO* p_cfg); /******************************************************************************* * * Function L2CA_DisconnectReq Loading Loading @@ -852,7 +853,7 @@ public: uint16_t psm, const RawAddress& bd_addr, tL2CAP_LE_CFG_INFO* p_cfg) override; [[nodiscard]] bool L2CA_ConnectCreditBasedRsp(const RawAddress& bd_addr, uint8_t id, std::vector<uint16_t>& accepted_lcids, uint16_t result, tL2CAP_LE_RESULT_CODE result, tL2CAP_LE_CFG_INFO* p_cfg) override; [[nodiscard]] uint16_t L2CA_GetPeerLECocCredit(const RawAddress& bd_addr, uint16_t lcid) override; [[nodiscard]] bool L2CA_ReconfigCreditBasedConnsReq(const RawAddress& bd_addr, Loading system/stack/include/l2cap_interface.h +2 −1 Original line number Diff line number Diff line Loading @@ -470,7 +470,8 @@ public: ** ******************************************************************************/ virtual bool L2CA_ConnectCreditBasedRsp(const RawAddress& p_bd_addr, uint8_t id, std::vector<uint16_t>& accepted_lcids, uint16_t result, std::vector<uint16_t>& accepted_lcids, tL2CAP_LE_RESULT_CODE result, tL2CAP_LE_CFG_INFO* p_cfg) = 0; /******************************************************************************* Loading system/stack/include/l2cdefs.h +15 −15 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ /* Define the LE L2CAP Connection Response Result codes */ enum tL2CAP_LE_RESULT_CODE : uint16_t { enum class tL2CAP_LE_RESULT_CODE : uint16_t { L2CAP_LE_RESULT_CONN_OK = 0x0000, L2CAP_LE_RESULT_NO_PSM = 0x0002, L2CAP_LE_RESULT_NO_RESOURCES = 0x0004, Loading @@ -132,20 +132,20 @@ enum tL2CAP_LE_RESULT_CODE : uint16_t { inline std::string l2cap_le_result_code_text(const tL2CAP_LE_RESULT_CODE& code) { switch (code) { CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_CONN_OK); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_NO_PSM); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_NO_RESOURCES); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_INSUFFICIENT_AUTHENTICATION); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_INSUFFICIENT_AUTHORIZATION); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP_KEY_SIZE); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_INVALID_SOURCE_CID); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_SOURCE_CID_ALREADY_ALLOCATED); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_UNACCEPTABLE_PARAMETERS); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_INVALID_PARAMETERS); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_CONN_PENDING); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_CONN_PENDING_AUTHENTICATION); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_CONN_PENDING_AUTHORIZATION); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_CONN_OK); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_NO_PSM); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_NO_RESOURCES); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_INSUFFICIENT_AUTHENTICATION); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_INSUFFICIENT_AUTHORIZATION); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP_KEY_SIZE); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_INVALID_SOURCE_CID); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_SOURCE_CID_ALREADY_ALLOCATED); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_UNACCEPTABLE_PARAMETERS); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_INVALID_PARAMETERS); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_CONN_PENDING); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_CONN_PENDING_AUTHENTICATION); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_CONN_PENDING_AUTHORIZATION); break; } RETURN_UNKNOWN_TYPE_STRING(tL2CAP_LE_RESULT_CODE, code); Loading system/stack/l2cap/l2c_api.cc +3 −2 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ #include <cstdint> #include <string> #include <vector> #include "hal/snoop_logger.h" #include "hci/controller_interface.h" Loading Loading @@ -650,7 +651,7 @@ uint16_t L2CA_GetPeerLECocCredit(const RawAddress& bd_addr, uint16_t lcid) { * ******************************************************************************/ bool L2CA_ConnectCreditBasedRsp(const RawAddress& p_bd_addr, uint8_t id, std::vector<uint16_t>& accepted_lcids, uint16_t result, std::vector<uint16_t>& accepted_lcids, tL2CAP_LE_RESULT_CODE result, tL2CAP_LE_CFG_INFO* p_cfg) { log::verbose("BDA: {} num of cids: {} Result: {}", p_bd_addr, int(accepted_lcids.size()), result); Loading Loading @@ -694,7 +695,7 @@ bool L2CA_ConnectCreditBasedRsp(const RawAddress& p_bd_addr, uint8_t id, .bd_addr = p_bd_addr, .hci_status{}, .psm{}, .l2cap_result = result, .l2cap_result = static_cast<tL2CAP_CONN>(result), .l2cap_status{}, .remote_cid{}, .lcids = accepted_lcids, Loading Loading
system/stack/eatt/eatt_impl.h +6 −4 Original line number Diff line number Diff line Loading @@ -263,8 +263,9 @@ struct eatt_impl { if (key_size < min_key_size) { std::vector<uint16_t> empty; log::error("Insufficient key size ({}<{}) for device {}", key_size, min_key_size, bda); if (!L2CA_ConnectCreditBasedRsp(bda, identifier, empty, L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP_KEY_SIZE, nullptr)) { if (!L2CA_ConnectCreditBasedRsp( bda, identifier, empty, tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP_KEY_SIZE, nullptr)) { log::warn("Unable to respond L2CAP le_coc credit indication peer:{}", bda); } return; Loading Loading @@ -303,9 +304,10 @@ struct eatt_impl { !BTM_IsEncrypted(bda, BT_TRANSPORT_LE)) { /* If Link is not encrypted, we shall not accept EATT channel creation. */ std::vector<uint16_t> empty; uint16_t result = L2CAP_LE_RESULT_INSUFFICIENT_AUTHENTICATION; tL2CAP_LE_RESULT_CODE result = tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_INSUFFICIENT_AUTHENTICATION; if (BTM_IsLinkKeyKnown(bda, BT_TRANSPORT_LE)) { result = L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP; result = tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP; } log::error("ACL to device {} is unencrypted.", bda); if (!L2CA_ConnectCreditBasedRsp(bda, identifier, empty, result, nullptr)) { Loading
system/stack/include/l2c_api.h +3 −2 Original line number Diff line number Diff line Loading @@ -418,7 +418,8 @@ void L2CA_DeregisterLECoc(uint16_t psm); [[nodiscard]] bool L2CA_ConnectCreditBasedRsp(const RawAddress& p_bd_addr, uint8_t id, std::vector<uint16_t>& accepted_lcids, uint16_t result, tL2CAP_LE_CFG_INFO* p_cfg); tL2CAP_LE_RESULT_CODE result, tL2CAP_LE_CFG_INFO* p_cfg); /******************************************************************************* * * Function L2CA_DisconnectReq Loading Loading @@ -852,7 +853,7 @@ public: uint16_t psm, const RawAddress& bd_addr, tL2CAP_LE_CFG_INFO* p_cfg) override; [[nodiscard]] bool L2CA_ConnectCreditBasedRsp(const RawAddress& bd_addr, uint8_t id, std::vector<uint16_t>& accepted_lcids, uint16_t result, tL2CAP_LE_RESULT_CODE result, tL2CAP_LE_CFG_INFO* p_cfg) override; [[nodiscard]] uint16_t L2CA_GetPeerLECocCredit(const RawAddress& bd_addr, uint16_t lcid) override; [[nodiscard]] bool L2CA_ReconfigCreditBasedConnsReq(const RawAddress& bd_addr, Loading
system/stack/include/l2cap_interface.h +2 −1 Original line number Diff line number Diff line Loading @@ -470,7 +470,8 @@ public: ** ******************************************************************************/ virtual bool L2CA_ConnectCreditBasedRsp(const RawAddress& p_bd_addr, uint8_t id, std::vector<uint16_t>& accepted_lcids, uint16_t result, std::vector<uint16_t>& accepted_lcids, tL2CAP_LE_RESULT_CODE result, tL2CAP_LE_CFG_INFO* p_cfg) = 0; /******************************************************************************* Loading
system/stack/include/l2cdefs.h +15 −15 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ /* Define the LE L2CAP Connection Response Result codes */ enum tL2CAP_LE_RESULT_CODE : uint16_t { enum class tL2CAP_LE_RESULT_CODE : uint16_t { L2CAP_LE_RESULT_CONN_OK = 0x0000, L2CAP_LE_RESULT_NO_PSM = 0x0002, L2CAP_LE_RESULT_NO_RESOURCES = 0x0004, Loading @@ -132,20 +132,20 @@ enum tL2CAP_LE_RESULT_CODE : uint16_t { inline std::string l2cap_le_result_code_text(const tL2CAP_LE_RESULT_CODE& code) { switch (code) { CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_CONN_OK); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_NO_PSM); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_NO_RESOURCES); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_INSUFFICIENT_AUTHENTICATION); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_INSUFFICIENT_AUTHORIZATION); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP_KEY_SIZE); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_INVALID_SOURCE_CID); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_SOURCE_CID_ALREADY_ALLOCATED); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_UNACCEPTABLE_PARAMETERS); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_INVALID_PARAMETERS); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_CONN_PENDING); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_CONN_PENDING_AUTHENTICATION); CASE_RETURN_STRING_HEX04(L2CAP_LE_RESULT_CONN_PENDING_AUTHORIZATION); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_CONN_OK); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_NO_PSM); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_NO_RESOURCES); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_INSUFFICIENT_AUTHENTICATION); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_INSUFFICIENT_AUTHORIZATION); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP_KEY_SIZE); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_INVALID_SOURCE_CID); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_SOURCE_CID_ALREADY_ALLOCATED); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_UNACCEPTABLE_PARAMETERS); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_INVALID_PARAMETERS); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_CONN_PENDING); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_CONN_PENDING_AUTHENTICATION); CASE_RETURN_STRING_HEX04(tL2CAP_LE_RESULT_CODE::L2CAP_LE_RESULT_CONN_PENDING_AUTHORIZATION); break; } RETURN_UNKNOWN_TYPE_STRING(tL2CAP_LE_RESULT_CODE, code); Loading
system/stack/l2cap/l2c_api.cc +3 −2 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ #include <cstdint> #include <string> #include <vector> #include "hal/snoop_logger.h" #include "hci/controller_interface.h" Loading Loading @@ -650,7 +651,7 @@ uint16_t L2CA_GetPeerLECocCredit(const RawAddress& bd_addr, uint16_t lcid) { * ******************************************************************************/ bool L2CA_ConnectCreditBasedRsp(const RawAddress& p_bd_addr, uint8_t id, std::vector<uint16_t>& accepted_lcids, uint16_t result, std::vector<uint16_t>& accepted_lcids, tL2CAP_LE_RESULT_CODE result, tL2CAP_LE_CFG_INFO* p_cfg) { log::verbose("BDA: {} num of cids: {} Result: {}", p_bd_addr, int(accepted_lcids.size()), result); Loading Loading @@ -694,7 +695,7 @@ bool L2CA_ConnectCreditBasedRsp(const RawAddress& p_bd_addr, uint8_t id, .bd_addr = p_bd_addr, .hci_status{}, .psm{}, .l2cap_result = result, .l2cap_result = static_cast<tL2CAP_CONN>(result), .l2cap_status{}, .remote_cid{}, .lcids = accepted_lcids, Loading