Loading system/stack/include/l2cdefs.h +35 −39 Original line number Diff line number Diff line Loading @@ -115,20 +115,43 @@ /* Define the LE L2CAP Connection Response Result codes */ enum tL2CAP_LE_RESULT_CODE : uint16_t { L2CAP_LE_RESULT_CONN_OK = 0, L2CAP_LE_RESULT_NO_PSM = 2, L2CAP_LE_RESULT_NO_RESOURCES = 4, L2CAP_LE_RESULT_INSUFFICIENT_AUTHENTICATION = 5, L2CAP_LE_RESULT_INSUFFICIENT_AUTHORIZATION = 6, L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP_KEY_SIZE = 7, L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP = 8, /* We don't like peer device response */ L2CAP_LE_RESULT_INVALID_SOURCE_CID = 9, L2CAP_LE_RESULT_SOURCE_CID_ALREADY_ALLOCATED = 0x0A, L2CAP_LE_RESULT_UNACCEPTABLE_PARAMETERS = 0x0B, L2CAP_LE_RESULT_INVALID_PARAMETERS = 0x0C L2CAP_LE_RESULT_CONN_OK = 0x0000, L2CAP_LE_RESULT_NO_PSM = 0x0002, L2CAP_LE_RESULT_NO_RESOURCES = 0x0004, L2CAP_LE_RESULT_INSUFFICIENT_AUTHENTICATION = 0x0005, L2CAP_LE_RESULT_INSUFFICIENT_AUTHORIZATION = 0x0006, L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP_KEY_SIZE = 0x0007, L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP = 0x0008, L2CAP_LE_RESULT_INVALID_SOURCE_CID = 0x0009, L2CAP_LE_RESULT_SOURCE_CID_ALREADY_ALLOCATED = 0x000A, L2CAP_LE_RESULT_UNACCEPTABLE_PARAMETERS = 0x000B, L2CAP_LE_RESULT_INVALID_PARAMETERS = 0x000C, L2CAP_LE_RESULT_CONN_PENDING = 0x000D, L2CAP_LE_RESULT_CONN_PENDING_AUTHENTICATION = 0x000E, L2CAP_LE_RESULT_CONN_PENDING_AUTHORIZATION = 0x000F, }; 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); break; } RETURN_UNKNOWN_TYPE_STRING(tL2CAP_LE_RESULT_CODE, code); } /* Define the L2CAP connection result codes */ enum tL2CAP_CONN : uint16_t { L2CAP_CONN_OK = 0, Loading Loading @@ -217,33 +240,6 @@ inline tL2CAP_CONN to_l2cap_result_code(uint16_t result) { return static_cast<tL2CAP_CONN>(result); } inline std::string l2cap_le_result_code_text(const tL2CAP_LE_RESULT_CODE& code) { switch (code) { case L2CAP_LE_RESULT_CONN_OK: return std::string("le connection success"); case L2CAP_LE_RESULT_NO_PSM: return std::string("le no psm service"); case L2CAP_LE_RESULT_NO_RESOURCES: return std::string("le no resources"); case L2CAP_LE_RESULT_INSUFFICIENT_AUTHENTICATION: return std::string("le authentication failed"); case L2CAP_LE_RESULT_INSUFFICIENT_AUTHORIZATION: return std::string("le authorization failed"); case L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP_KEY_SIZE: return std::string("le encryption key size failed"); case L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP: return std::string("le encryption failed"); case L2CAP_LE_RESULT_INVALID_SOURCE_CID: return std::string("le invalid source channel identifier"); case L2CAP_LE_RESULT_SOURCE_CID_ALREADY_ALLOCATED: return std::string("le source channel identifier busy"); case L2CAP_LE_RESULT_UNACCEPTABLE_PARAMETERS: return std::string("le unacceptable parameters"); case L2CAP_LE_RESULT_INVALID_PARAMETERS: return std::string("invalid parameters"); } } /* Credit based reconfig results code */ #define L2CAP_RECONFIG_SUCCEED 0 #define L2CAP_RECONFIG_REDUCTION_MTU_NO_ALLOWED 1 Loading system/stack/l2cap/l2c_csm.cc +6 −0 Original line number Diff line number Diff line Loading @@ -312,6 +312,12 @@ static void l2c_csm_closed(tL2C_CCB* p_ccb, tL2CEVT event, void* p_data) { case L2CAP_LE_RESULT_INVALID_SOURCE_CID: case L2CAP_LE_RESULT_SOURCE_CID_ALREADY_ALLOCATED: break; case L2CAP_LE_RESULT_CONN_PENDING: case L2CAP_LE_RESULT_CONN_PENDING_AUTHENTICATION: case L2CAP_LE_RESULT_CONN_PENDING_AUTHORIZATION: log::warn("Received unexpected connection request return code:{}", l2cap_le_result_code_text(result)); break; } } else { if (!BTM_SetLinkPolicyActiveMode(p_ccb->p_lcb->remote_bd_addr)) { Loading Loading
system/stack/include/l2cdefs.h +35 −39 Original line number Diff line number Diff line Loading @@ -115,20 +115,43 @@ /* Define the LE L2CAP Connection Response Result codes */ enum tL2CAP_LE_RESULT_CODE : uint16_t { L2CAP_LE_RESULT_CONN_OK = 0, L2CAP_LE_RESULT_NO_PSM = 2, L2CAP_LE_RESULT_NO_RESOURCES = 4, L2CAP_LE_RESULT_INSUFFICIENT_AUTHENTICATION = 5, L2CAP_LE_RESULT_INSUFFICIENT_AUTHORIZATION = 6, L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP_KEY_SIZE = 7, L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP = 8, /* We don't like peer device response */ L2CAP_LE_RESULT_INVALID_SOURCE_CID = 9, L2CAP_LE_RESULT_SOURCE_CID_ALREADY_ALLOCATED = 0x0A, L2CAP_LE_RESULT_UNACCEPTABLE_PARAMETERS = 0x0B, L2CAP_LE_RESULT_INVALID_PARAMETERS = 0x0C L2CAP_LE_RESULT_CONN_OK = 0x0000, L2CAP_LE_RESULT_NO_PSM = 0x0002, L2CAP_LE_RESULT_NO_RESOURCES = 0x0004, L2CAP_LE_RESULT_INSUFFICIENT_AUTHENTICATION = 0x0005, L2CAP_LE_RESULT_INSUFFICIENT_AUTHORIZATION = 0x0006, L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP_KEY_SIZE = 0x0007, L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP = 0x0008, L2CAP_LE_RESULT_INVALID_SOURCE_CID = 0x0009, L2CAP_LE_RESULT_SOURCE_CID_ALREADY_ALLOCATED = 0x000A, L2CAP_LE_RESULT_UNACCEPTABLE_PARAMETERS = 0x000B, L2CAP_LE_RESULT_INVALID_PARAMETERS = 0x000C, L2CAP_LE_RESULT_CONN_PENDING = 0x000D, L2CAP_LE_RESULT_CONN_PENDING_AUTHENTICATION = 0x000E, L2CAP_LE_RESULT_CONN_PENDING_AUTHORIZATION = 0x000F, }; 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); break; } RETURN_UNKNOWN_TYPE_STRING(tL2CAP_LE_RESULT_CODE, code); } /* Define the L2CAP connection result codes */ enum tL2CAP_CONN : uint16_t { L2CAP_CONN_OK = 0, Loading Loading @@ -217,33 +240,6 @@ inline tL2CAP_CONN to_l2cap_result_code(uint16_t result) { return static_cast<tL2CAP_CONN>(result); } inline std::string l2cap_le_result_code_text(const tL2CAP_LE_RESULT_CODE& code) { switch (code) { case L2CAP_LE_RESULT_CONN_OK: return std::string("le connection success"); case L2CAP_LE_RESULT_NO_PSM: return std::string("le no psm service"); case L2CAP_LE_RESULT_NO_RESOURCES: return std::string("le no resources"); case L2CAP_LE_RESULT_INSUFFICIENT_AUTHENTICATION: return std::string("le authentication failed"); case L2CAP_LE_RESULT_INSUFFICIENT_AUTHORIZATION: return std::string("le authorization failed"); case L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP_KEY_SIZE: return std::string("le encryption key size failed"); case L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP: return std::string("le encryption failed"); case L2CAP_LE_RESULT_INVALID_SOURCE_CID: return std::string("le invalid source channel identifier"); case L2CAP_LE_RESULT_SOURCE_CID_ALREADY_ALLOCATED: return std::string("le source channel identifier busy"); case L2CAP_LE_RESULT_UNACCEPTABLE_PARAMETERS: return std::string("le unacceptable parameters"); case L2CAP_LE_RESULT_INVALID_PARAMETERS: return std::string("invalid parameters"); } } /* Credit based reconfig results code */ #define L2CAP_RECONFIG_SUCCEED 0 #define L2CAP_RECONFIG_REDUCTION_MTU_NO_ALLOWED 1 Loading
system/stack/l2cap/l2c_csm.cc +6 −0 Original line number Diff line number Diff line Loading @@ -312,6 +312,12 @@ static void l2c_csm_closed(tL2C_CCB* p_ccb, tL2CEVT event, void* p_data) { case L2CAP_LE_RESULT_INVALID_SOURCE_CID: case L2CAP_LE_RESULT_SOURCE_CID_ALREADY_ALLOCATED: break; case L2CAP_LE_RESULT_CONN_PENDING: case L2CAP_LE_RESULT_CONN_PENDING_AUTHENTICATION: case L2CAP_LE_RESULT_CONN_PENDING_AUTHORIZATION: log::warn("Received unexpected connection request return code:{}", l2cap_le_result_code_text(result)); break; } } else { if (!BTM_SetLinkPolicyActiveMode(p_ccb->p_lcb->remote_bd_addr)) { Loading