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

Commit ae094b36 authored by Hansong Zhang's avatar Hansong Zhang
Browse files

Set ACL disconnect reason in ACL, not L2cap

And combine two identical functions

Test: cert/run
Tag: #gd-refactor
Bug: 141555841
Change-Id: Idb883bebc85df8b68270de5f650e2bc7fffcc69e
parent b996e07f
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -2622,10 +2622,6 @@ bool acl_peer_supports_ble_coded_phy(uint16_t hci_handle) {
  return HCI_LE_CODED_PHY_SUPPORTED(p_acl->peer_le_features);
}

tHCI_STATUS acl_get_disconnect_reason() {
  return btm_cb.acl_cb_.get_disconnect_reason();
}

void acl_set_disconnect_reason(tHCI_STATUS acl_disc_reason) {
  btm_cb.acl_cb_.set_disconnect_reason(acl_disc_reason);
}
@@ -2702,6 +2698,12 @@ void btm_acl_disconnected(tHCI_STATUS status, uint16_t handle,
             hci_error_code_text(status).c_str());
  }

  /* There can be a case when we rejected PIN code authentication */
  /* otherwise save a new reason */
  if (btm_get_acl_disc_reason_code() != HCI_ERR_HOST_REJECT_SECURITY) {
    acl_set_disconnect_reason(static_cast<tHCI_STATUS>(reason));
  }

  /* If L2CAP or SCO doesn't know about it, send it to ISO */
  if (!l2c_link_hci_disc_comp(handle, reason) &&
      !btm_sco_removed(handle, reason)) {
+0 −1
Original line number Diff line number Diff line
@@ -271,7 +271,6 @@ tBT_TRANSPORT acl_get_transport_from_handle(uint16_t handle);
uint16_t acl_get_hci_handle_for_hcif(const RawAddress& bd_addr,
                                     tBT_TRANSPORT transport);

tHCI_STATUS acl_get_disconnect_reason();
void acl_set_disconnect_reason(tHCI_STATUS acl_disc_reason);

bool acl_is_role_switch_allowed();
+1 −8
Original line number Diff line number Diff line
@@ -45,7 +45,6 @@ extern tBTM_CB btm_cb;
bool BTM_ReadPowerMode(const RawAddress& remote_bda, tBTM_PM_MODE* p_mode);
bool btm_dev_support_role_switch(const RawAddress& bd_addr);
tBTM_STATUS btm_sec_disconnect(uint16_t handle, tHCI_STATUS reason);
tHCI_STATUS acl_get_disconnect_reason();
void btm_acl_created(const RawAddress& bda, uint16_t hci_handle,
                     uint8_t link_role, tBT_TRANSPORT transport);
void btm_acl_removed(uint16_t handle);
@@ -340,13 +339,7 @@ bool l2c_link_hci_disc_comp(uint16_t handle, uint8_t reason) {
  if (!p_lcb) {
    status = false;
  } else {
    /* There can be a case when we rejected PIN code authentication */
    /* otherwise save a new reason */
    if (acl_get_disconnect_reason() != HCI_ERR_HOST_REJECT_SECURITY) {
      acl_set_disconnect_reason(static_cast<tHCI_STATUS>(reason));
    }

    p_lcb->SetDisconnectReason(acl_get_disconnect_reason());
    p_lcb->SetDisconnectReason(reason);

    /* Just in case app decides to try again in the callback context */
    p_lcb->link_state = LST_DISCONNECTING;