OSDN Git Service

Add Api stack/acl/btm_acl::acl_disconnect
authorChris Manton <cmanton@google.com>
Sun, 23 Aug 2020 20:47:11 +0000 (13:47 -0700)
committerChris Manton <cmanton@google.com>
Mon, 24 Aug 2020 15:01:13 +0000 (08:01 -0700)
Towards proper interfaces

Bug: 163134718
Tag: #refactor
Test: compile & verify basic functions working
Change-Id: I69ee9674a65a1b9b67235b0ca8eea3dc3bcc21a0

stack/acl/acl.h
stack/acl/btm_acl.cc
stack/include/acl_api.h

index 974f82d..a667012 100644 (file)
@@ -52,6 +52,7 @@ typedef struct {
   uint16_t pkt_types_mask;
   uint8_t active_remote_addr_type;
   uint8_t conn_addr_type;
+  uint8_t disconnect_reason;
   uint8_t encrypt_state;
   uint8_t link_role;
   uint8_t lmp_version;
index 882bac3..27994a7 100644 (file)
@@ -1327,8 +1327,8 @@ uint16_t BTM_GetNumAclLinks(void) {
  ******************************************************************************/
 uint16_t btm_get_acl_disc_reason_code(void) {
   uint8_t res = btm_cb.acl_cb_.acl_disc_reason;
-  BTM_TRACE_DEBUG("btm_get_acl_disc_reason_code");
-  return (res);
+  LOG_WARN("%s This API should require an address for per ACL basis", __func__);
+  return res;
 }
 
 /*******************************************************************************
@@ -2851,6 +2851,17 @@ void acl_reject_connection_request(const RawAddress& bd_addr, uint8_t reason) {
   btsnd_hcic_reject_conn(bd_addr, reason);
 }
 
+void acl_disconnect(const RawAddress& bd_addr, tBT_TRANSPORT transport,
+                    uint8_t reason) {
+  tACL_CONN* p_acl = internal_.btm_bda_to_acl(bd_addr, transport);
+  if (p_acl == nullptr) {
+    LOG_WARN("%s Acl disconnect request for unknown device", __func__);
+    return;
+  }
+  p_acl->disconnect_reason = reason;
+  btsnd_hcic_disconnect(p_acl->hci_handle, reason);
+}
+
 void acl_send_data_packet(BT_HDR* p_buf, uint16_t flags) {
   bte_main_hci_send(p_buf, flags);
 }
index 18320d9..fd6e5f5 100644 (file)
@@ -345,3 +345,6 @@ bool BTM_ReadPowerMode(const RawAddress& remote_bda, tBTM_PM_MODE* p_mode);
 
 void btm_acl_created(const RawAddress& bda, uint16_t hci_handle,
                      uint8_t link_role, tBT_TRANSPORT transport);
+
+void acl_disconnect(const RawAddress& bd_addr, tBT_TRANSPORT transport,
+                    uint8_t reason);