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

Commit 83ee3d10 authored by Chris Manton's avatar Chris Manton
Browse files

Add stack/acl/btm_acl::btm_acl_disconnected

Also connect to shim acl

Bug: 166280067
Tag: #refactor
Test: act.py -tc BleCocTest
Test: ble paired 2 phones
Test: classic paired Bose SoundLink

Change-Id: I8a3d7ef1f44b637a053e85a98765a3db5498e590
parent 41f3a733
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -30,11 +30,11 @@ const acl_interface_t GetAclInterface() {

      .connection.classic.on_connected = btm_acl_connected,
      .connection.classic.on_failed = btm_acl_connected,
      .connection.classic.on_disconnected = nullptr,
      .connection.classic.on_disconnected = btm_acl_disconnected,

      .connection.le.on_connected = nullptr,
      .connection.le.on_failed = acl_ble_connection_fail,
      .connection.le.on_disconnected = nullptr,
      .connection.le.on_disconnected = btm_acl_disconnected,

      .link.classic.on_authentication_complete = nullptr,
      .link.classic.on_change_connection_link_key_complete = nullptr,
+18 −0
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@
#include "stack/include/btu.h"
#include "stack/include/hcimsgs.h"
#include "stack/include/l2cap_acl_interface.h"
#include "stack/include/sco_hci_link_interface.h"
#include "types/raw_address.h"

struct StackAclBtmAcl {
@@ -2769,6 +2770,23 @@ void btm_acl_connected(const RawAddress& bda, uint16_t handle,
  l2c_link_hci_conn_comp(status, handle, bda);
}

void btm_acl_disconnected(tHCI_STATUS status, uint16_t handle,
                          tHCI_STATUS reason) {
  if (status != HCI_SUCCESS) {
    LOG_WARN("Received disconnect with error:%s",
             hci_error_code_text(status).c_str());
  }

  /* 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)) {
    bluetooth::hci::IsoManager::GetInstance()->HandleDisconnect(handle, reason);
  }

  /* Notify security manager */
  btm_sec_disconnected(handle, reason);
}

constexpr uint16_t kDefaultPacketTypes =
    HCI_PKT_TYPES_MASK_DM1 | HCI_PKT_TYPES_MASK_DH1 | HCI_PKT_TYPES_MASK_DM3 |
    HCI_PKT_TYPES_MASK_DH3 | HCI_PKT_TYPES_MASK_DM5 | HCI_PKT_TYPES_MASK_DH5;
+2 −0
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@
void btm_acl_connection_request(const RawAddress& bda, uint8_t* dc);
void btm_acl_connected(const RawAddress& bda, uint16_t handle,
                       tHCI_STATUS status, uint8_t enc_mode);
void btm_acl_disconnected(tHCI_STATUS status, uint16_t handle,
                          tHCI_STATUS reason);
void btm_acl_encrypt_change(uint16_t handle, uint8_t status,
                            uint8_t encr_enable);
void btm_acl_paging(BT_HDR* p, const RawAddress& dest);