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

Commit 35548962 authored by Chris Manton's avatar Chris Manton Committed by Automerger Merge Worker
Browse files

Re-layout stack/acl/btm_acl::btm_remove_acl am: e5aed268 am: 146f67a2 am: 81d4b32e

Original change: https://android-review.googlesource.com/c/platform/system/bt/+/1574625

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I19324ccb59bf15a69d05a2bac978166773b05705
parents e87dac6b 81d4b32e
Loading
Loading
Loading
Loading
+18 −12
Original line number Original line Diff line number Diff line
@@ -2033,24 +2033,30 @@ tBTM_STATUS btm_remove_acl(const RawAddress& bd_addr, tBT_TRANSPORT transport) {
    bluetooth::shim::L2CA_DisconnectLink(bd_addr);
    bluetooth::shim::L2CA_DisconnectLink(bd_addr);
    return BTM_SUCCESS;
    return BTM_SUCCESS;
  }
  }
  uint16_t hci_handle = BTM_GetHCIConnHandle(bd_addr, transport);

  tBTM_STATUS status = BTM_SUCCESS;
  tACL_CONN* p_acl = internal_.btm_bda_to_acl(bd_addr, transport);
  tACL_CONN* p_acl = internal_.btm_bda_to_acl(bd_addr, transport);
  if (p_acl == nullptr) return BTM_UNKNOWN_ADDR;
  if (p_acl == nullptr) {
    LOG_WARN("Unable to find active acl");
    return BTM_UNKNOWN_ADDR;
  }

  if (p_acl->Handle() == HCI_INVALID_HANDLE) {
    LOG_WARN("Cannot remove unknown acl bd_addr:%s transport:%s",
             PRIVATE_ADDRESS(bd_addr), BtTransportText(transport).c_str());
    return BTM_UNKNOWN_ADDR;
  }


  /* Role Switch is pending, postpone until completed */
  if (p_acl->rs_disc_pending == BTM_SEC_RS_PENDING) {
  if (p_acl->rs_disc_pending == BTM_SEC_RS_PENDING) {
    LOG_DEBUG(
        "Delay disconnect until role switch is complete bd_addr:%s "
        "transport:%s",
        PRIVATE_ADDRESS(bd_addr), BtTransportText(transport).c_str());
    p_acl->rs_disc_pending = BTM_SEC_DISC_PENDING;
    p_acl->rs_disc_pending = BTM_SEC_DISC_PENDING;
  } else /* otherwise can disconnect right away */
    return BTM_SUCCESS;
  {
    if (hci_handle != HCI_INVALID_HANDLE) {
      hci_btsnd_hcic_disconnect(*p_acl, HCI_ERR_PEER_USER);
    } else {
      status = BTM_UNKNOWN_ADDR;
    }
  }
  }


  return status;
  hci_btsnd_hcic_disconnect(*p_acl, HCI_ERR_PEER_USER);
  return BTM_SUCCESS;
}
}


/*******************************************************************************
/*******************************************************************************