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

Commit bc0d3d2f authored by Jakub Rotkiewicz (xWF)'s avatar Jakub Rotkiewicz (xWF) Committed by Gerrit Code Review
Browse files

Merge "l2cdefs: improve l2cap result parsing function" into main

parents f3b30d88 5d1ac10b
Loading
Loading
Loading
Loading
+24 −20
Original line number Diff line number Diff line
@@ -178,26 +178,26 @@ enum class tL2CAP_CONN : uint16_t {

inline std::string l2cap_result_code_text(const tL2CAP_CONN& result) {
  switch (result) {
    CASE_RETURN_TEXT(tL2CAP_CONN::L2CAP_CONN_OK);
    CASE_RETURN_TEXT(tL2CAP_CONN::L2CAP_CONN_PENDING);
    CASE_RETURN_TEXT(tL2CAP_CONN::L2CAP_CONN_NO_PSM);
    CASE_RETURN_TEXT(tL2CAP_CONN::L2CAP_CONN_SECURITY_BLOCK);
    CASE_RETURN_TEXT(tL2CAP_CONN::L2CAP_CONN_NO_RESOURCES);
    CASE_RETURN_TEXT(tL2CAP_CONN::L2CAP_CONN_TIMEOUT);
    CASE_RETURN_TEXT(tL2CAP_CONN::L2CAP_CONN_OTHER_ERROR);
    CASE_RETURN_TEXT(tL2CAP_CONN::L2CAP_CONN_ACL_CONNECTION_FAILED);
    CASE_RETURN_TEXT(tL2CAP_CONN::L2CAP_CONN_CLIENT_SECURITY_CLEARANCE_FAILED);
    CASE_RETURN_TEXT(tL2CAP_CONN::L2CAP_CONN_NO_LINK);
    CASE_RETURN_TEXT(tL2CAP_CONN::L2CAP_CONN_CANCEL);
    CASE_RETURN_TEXT(tL2CAP_CONN::L2CAP_CONN_INSUFFICIENT_AUTHENTICATION);
    CASE_RETURN_TEXT(tL2CAP_CONN::L2CAP_CONN_INSUFFICIENT_AUTHORIZATION);
    CASE_RETURN_TEXT(tL2CAP_CONN::L2CAP_CONN_INSUFFICIENT_ENCRYP_KEY_SIZE);
    CASE_RETURN_TEXT(tL2CAP_CONN::L2CAP_CONN_INSUFFICIENT_ENCRYP);
    CASE_RETURN_TEXT(tL2CAP_CONN::L2CAP_CONN_INVALID_SOURCE_CID);
    CASE_RETURN_TEXT(tL2CAP_CONN::L2CAP_CONN_SOURCE_CID_ALREADY_ALLOCATED);
    CASE_RETURN_TEXT(tL2CAP_CONN::L2CAP_CONN_UNACCEPTABLE_PARAMETERS);
    CASE_RETURN_TEXT(tL2CAP_CONN::L2CAP_CONN_INVALID_PARAMETERS);
  }
    CASE_RETURN_STRING_HEX04(tL2CAP_CONN::L2CAP_CONN_OK);
    CASE_RETURN_STRING_HEX04(tL2CAP_CONN::L2CAP_CONN_PENDING);
    CASE_RETURN_STRING_HEX04(tL2CAP_CONN::L2CAP_CONN_NO_PSM);
    CASE_RETURN_STRING_HEX04(tL2CAP_CONN::L2CAP_CONN_SECURITY_BLOCK);
    CASE_RETURN_STRING_HEX04(tL2CAP_CONN::L2CAP_CONN_NO_RESOURCES);
    CASE_RETURN_STRING_HEX04(tL2CAP_CONN::L2CAP_CONN_TIMEOUT);
    CASE_RETURN_STRING_HEX04(tL2CAP_CONN::L2CAP_CONN_OTHER_ERROR);
    CASE_RETURN_STRING_HEX04(tL2CAP_CONN::L2CAP_CONN_ACL_CONNECTION_FAILED);
    CASE_RETURN_STRING_HEX04(tL2CAP_CONN::L2CAP_CONN_CLIENT_SECURITY_CLEARANCE_FAILED);
    CASE_RETURN_STRING_HEX04(tL2CAP_CONN::L2CAP_CONN_NO_LINK);
    CASE_RETURN_STRING_HEX04(tL2CAP_CONN::L2CAP_CONN_CANCEL);
    CASE_RETURN_STRING_HEX04(tL2CAP_CONN::L2CAP_CONN_INSUFFICIENT_AUTHENTICATION);
    CASE_RETURN_STRING_HEX04(tL2CAP_CONN::L2CAP_CONN_INSUFFICIENT_AUTHORIZATION);
    CASE_RETURN_STRING_HEX04(tL2CAP_CONN::L2CAP_CONN_INSUFFICIENT_ENCRYP_KEY_SIZE);
    CASE_RETURN_STRING_HEX04(tL2CAP_CONN::L2CAP_CONN_INSUFFICIENT_ENCRYP);
    CASE_RETURN_STRING_HEX04(tL2CAP_CONN::L2CAP_CONN_INVALID_SOURCE_CID);
    CASE_RETURN_STRING_HEX04(tL2CAP_CONN::L2CAP_CONN_SOURCE_CID_ALREADY_ALLOCATED);
    CASE_RETURN_STRING_HEX04(tL2CAP_CONN::L2CAP_CONN_UNACCEPTABLE_PARAMETERS);
    CASE_RETURN_STRING_HEX04(tL2CAP_CONN::L2CAP_CONN_INVALID_PARAMETERS);
  };
  RETURN_UNKNOWN_TYPE_STRING(tL2CAP_CONN, result);
}

@@ -275,6 +275,10 @@ inline tL2CAP_CONN to_l2cap_result_code(uint16_t result) {
  return static_cast<tL2CAP_CONN>(result);
}

inline std::string l2cap_result_code_text(uint16_t result) {
  return l2cap_result_code_text(to_l2cap_result_code(result));
}

/* Credit based reconfig results code */
enum class tL2CAP_RECONFIG_RESULT : uint16_t {
  L2CAP_RECONFIG_SUCCEED = 0,
+24 −19
Original line number Diff line number Diff line
@@ -212,38 +212,43 @@ TEST_F(StackL2capChannelTest, l2c_link_init) {

TEST_F(StackL2capTest, l2cap_result_code_text) {
  std::vector<std::pair<tL2CAP_CONN, std::string>> results = {
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_OK, "tL2CAP_CONN::L2CAP_CONN_OK"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_PENDING, "tL2CAP_CONN::L2CAP_CONN_PENDING"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_NO_PSM, "tL2CAP_CONN::L2CAP_CONN_NO_PSM"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_OK, "tL2CAP_CONN::L2CAP_CONN_OK(0x0000)"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_PENDING,
                         "tL2CAP_CONN::L2CAP_CONN_PENDING(0x0001)"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_NO_PSM, "tL2CAP_CONN::L2CAP_CONN_NO_PSM(0x0002)"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_SECURITY_BLOCK,
                         "tL2CAP_CONN::L2CAP_CONN_SECURITY_BLOCK"),
                         "tL2CAP_CONN::L2CAP_CONN_SECURITY_BLOCK(0x0003)"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_NO_RESOURCES,
                         "tL2CAP_CONN::L2CAP_CONN_NO_RESOURCES"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_TIMEOUT, "tL2CAP_CONN::L2CAP_CONN_TIMEOUT"),
                         "tL2CAP_CONN::L2CAP_CONN_NO_RESOURCES(0x0004)"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_TIMEOUT,
                         "tL2CAP_CONN::L2CAP_CONN_TIMEOUT(0xeeee)"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_OTHER_ERROR,
                         "tL2CAP_CONN::L2CAP_CONN_OTHER_ERROR"),
                         "tL2CAP_CONN::L2CAP_CONN_OTHER_ERROR(0xf000)"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_ACL_CONNECTION_FAILED,
                         "tL2CAP_CONN::L2CAP_CONN_ACL_CONNECTION_FAILED"),

                         "tL2CAP_CONN::L2CAP_CONN_ACL_CONNECTION_FAILED(0xf001)"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_CLIENT_SECURITY_CLEARANCE_FAILED,
                         "tL2CAP_CONN::L2CAP_CONN_CLIENT_SECURITY_CLEARANCE_FAILED"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_NO_LINK, "tL2CAP_CONN::L2CAP_CONN_NO_LINK"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_CANCEL, "tL2CAP_CONN::L2CAP_CONN_CANCEL"),
                         "tL2CAP_CONN::L2CAP_CONN_CLIENT_SECURITY_CLEARANCE_FAILED(0xf002)"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_NO_LINK,
                         "tL2CAP_CONN::L2CAP_CONN_NO_LINK(0xf003)"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_CANCEL, "tL2CAP_CONN::L2CAP_CONN_CANCEL(0xf004)"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_INSUFFICIENT_AUTHENTICATION,
                         "tL2CAP_CONN::L2CAP_CONN_INSUFFICIENT_AUTHENTICATION"),
                         "tL2CAP_CONN::L2CAP_CONN_INSUFFICIENT_AUTHENTICATION(0xff05)"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_INSUFFICIENT_AUTHORIZATION,
                         "tL2CAP_CONN::L2CAP_CONN_INSUFFICIENT_AUTHORIZATION"),
                         "tL2CAP_CONN::L2CAP_CONN_INSUFFICIENT_AUTHORIZATION(0xff06)"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_INSUFFICIENT_ENCRYP_KEY_SIZE,
                         "tL2CAP_CONN::L2CAP_CONN_INSUFFICIENT_ENCRYP_KEY_SIZE"),
                         "tL2CAP_CONN::L2CAP_CONN_INSUFFICIENT_ENCRYP_KEY_SIZE(0xff07)"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_INSUFFICIENT_ENCRYP,
                         "tL2CAP_CONN::L2CAP_CONN_INSUFFICIENT_ENCRYP"),
                         "tL2CAP_CONN::L2CAP_CONN_INSUFFICIENT_ENCRYP(0xff08)"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_INVALID_SOURCE_CID,
                         "tL2CAP_CONN::L2CAP_CONN_INVALID_SOURCE_CID"),
                         "tL2CAP_CONN::L2CAP_CONN_INVALID_SOURCE_CID(0xff09)"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_SOURCE_CID_ALREADY_ALLOCATED,
                         "tL2CAP_CONN::L2CAP_CONN_SOURCE_CID_ALREADY_ALLOCATED"),
                         "tL2CAP_CONN::L2CAP_CONN_SOURCE_CID_ALREADY_ALLOCATED(0xff0a)"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_UNACCEPTABLE_PARAMETERS,
                         "tL2CAP_CONN::L2CAP_CONN_UNACCEPTABLE_PARAMETERS"),

                         "tL2CAP_CONN::L2CAP_CONN_UNACCEPTABLE_PARAMETERS(0xff0b)"),
          std::make_pair(tL2CAP_CONN::L2CAP_CONN_INVALID_PARAMETERS,
                         "tL2CAP_CONN::L2CAP_CONN_INVALID_PARAMETERS"),
                         "tL2CAP_CONN::L2CAP_CONN_INVALID_PARAMETERS(0xff0c)"),
  };
  for (const auto& result : results) {
    ASSERT_STREQ(result.second.c_str(), l2cap_result_code_text(result.first).c_str());