Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 98caa708 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "stack::l2cap Cleanly define tL2CAP_LE_RESULT_CODE" into main

parents b58cf8c0 a97e2e8d
Loading
Loading
Loading
Loading
+35 −39
Original line number Original line Diff line number Diff line
@@ -115,20 +115,43 @@
/* Define the LE L2CAP Connection Response Result codes
/* Define the LE L2CAP Connection Response Result codes
 */
 */
enum tL2CAP_LE_RESULT_CODE : uint16_t {
enum tL2CAP_LE_RESULT_CODE : uint16_t {
  L2CAP_LE_RESULT_CONN_OK = 0,
  L2CAP_LE_RESULT_CONN_OK = 0x0000,
  L2CAP_LE_RESULT_NO_PSM = 2,
  L2CAP_LE_RESULT_NO_PSM = 0x0002,
  L2CAP_LE_RESULT_NO_RESOURCES = 4,
  L2CAP_LE_RESULT_NO_RESOURCES = 0x0004,
  L2CAP_LE_RESULT_INSUFFICIENT_AUTHENTICATION = 5,
  L2CAP_LE_RESULT_INSUFFICIENT_AUTHENTICATION = 0x0005,
  L2CAP_LE_RESULT_INSUFFICIENT_AUTHORIZATION = 6,
  L2CAP_LE_RESULT_INSUFFICIENT_AUTHORIZATION = 0x0006,
  L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP_KEY_SIZE = 7,
  L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP_KEY_SIZE = 0x0007,
  L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP = 8,
  L2CAP_LE_RESULT_INSUFFICIENT_ENCRYP = 0x0008,
  /* We don't like peer device response */
  L2CAP_LE_RESULT_INVALID_SOURCE_CID = 0x0009,
  L2CAP_LE_RESULT_INVALID_SOURCE_CID = 9,
  L2CAP_LE_RESULT_SOURCE_CID_ALREADY_ALLOCATED = 0x000A,
  L2CAP_LE_RESULT_SOURCE_CID_ALREADY_ALLOCATED = 0x0A,
  L2CAP_LE_RESULT_UNACCEPTABLE_PARAMETERS = 0x000B,
  L2CAP_LE_RESULT_UNACCEPTABLE_PARAMETERS = 0x0B,
  L2CAP_LE_RESULT_INVALID_PARAMETERS = 0x000C,
  L2CAP_LE_RESULT_INVALID_PARAMETERS = 0x0C
  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 */
/* Define the L2CAP connection result codes */
enum tL2CAP_CONN : uint16_t {
enum tL2CAP_CONN : uint16_t {
  L2CAP_CONN_OK = 0,
  L2CAP_CONN_OK = 0,
@@ -217,33 +240,6 @@ inline tL2CAP_CONN to_l2cap_result_code(uint16_t result) {
  return static_cast<tL2CAP_CONN>(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 */
/* Credit based reconfig results code */
#define L2CAP_RECONFIG_SUCCEED 0
#define L2CAP_RECONFIG_SUCCEED 0
#define L2CAP_RECONFIG_REDUCTION_MTU_NO_ALLOWED 1
#define L2CAP_RECONFIG_REDUCTION_MTU_NO_ALLOWED 1
+6 −0
Original line number Original line Diff line number Diff line
@@ -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_INVALID_SOURCE_CID:
          case L2CAP_LE_RESULT_SOURCE_CID_ALREADY_ALLOCATED:
          case L2CAP_LE_RESULT_SOURCE_CID_ALREADY_ALLOCATED:
            break;
            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 {
      } else {
        if (!BTM_SetLinkPolicyActiveMode(p_ccb->p_lcb->remote_bd_addr)) {
        if (!BTM_SetLinkPolicyActiveMode(p_ccb->p_lcb->remote_bd_addr)) {