OSDN Git Service

Re-layout stack/acl/btm_acl::btm_remove_acl
authorChris Manton <cmanton@google.com>
Fri, 5 Feb 2021 05:47:45 +0000 (21:47 -0800)
committerChris Manton <cmanton@google.com>
Tue, 16 Feb 2021 16:27:18 +0000 (08:27 -0800)
Towards readable code

Bug: 163134718
Tag: #refactor
Test: gd/cert/run

Change-Id: Ieb9d1a0c66d45c7d500f88bcc33c355f05886ed6

stack/acl/btm_acl.cc

index c8c2bcb..6623f0e 100644 (file)
@@ -2033,24 +2033,30 @@ tBTM_STATUS btm_remove_acl(const RawAddress& bd_addr, tBT_TRANSPORT transport) {
     bluetooth::shim::L2CA_DisconnectLink(bd_addr);
     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);
-  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) {
+    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;
-  } else /* otherwise can disconnect right away */
-  {
-    if (hci_handle != HCI_INVALID_HANDLE) {
-      hci_btsnd_hcic_disconnect(*p_acl, HCI_ERR_PEER_USER);
-    } else {
-      status = BTM_UNKNOWN_ADDR;
-    }
+    return BTM_SUCCESS;
   }
 
-  return status;
+  hci_btsnd_hcic_disconnect(*p_acl, HCI_ERR_PEER_USER);
+  return BTM_SUCCESS;
 }
 
 /*******************************************************************************