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

Commit 27c0f9d0 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge changes Ie1b2f0f6,I5f115595,I7c766087,If341f69a,Idba0190c, ... am: 29fb2d63

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

Change-Id: I566ef8d048349e2bc0a7a4e8a87aa3577c1d80e7
parents 98d060dd 29fb2d63
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -30,11 +30,12 @@ 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_connected =
          acl_ble_enhanced_connection_complete_from_shim,
      .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,
+1 −1
Original line number Diff line number Diff line
@@ -226,7 +226,7 @@ static bool event_already_registered_in_hci_layer(
      return bluetooth::shim::is_gd_hci_enabled();
    case bluetooth::hci::EventCode::LE_META_EVENT:
    case bluetooth::hci::EventCode::DISCONNECTION_COMPLETE:
      return bluetooth::shim::is_gd_shim_enabled();
      return bluetooth::shim::is_gd_acl_enabled();
    default:
      return false;
  }
+6 −4
Original line number Diff line number Diff line
@@ -192,15 +192,13 @@ typedef struct {
  friend uint16_t BTM_GetNumAclLinks(void);
  friend uint16_t acl_get_link_supervision_timeout();
  friend uint16_t acl_get_supported_packet_types();
  friend uint16_t btm_get_acl_disc_reason_code(void);
  friend uint8_t acl_get_disconnect_reason();
  friend uint8_t btm_handle_to_acl_index(uint16_t hci_handle);
  friend void BTM_SetDefaultLinkSuperTout(uint16_t timeout);
  friend void BTM_acl_after_controller_started();
  friend void BTM_default_block_role_switch();
  friend void BTM_default_unblock_role_switch();
  friend void acl_initialize_power_mode(const tACL_CONN& p_acl);
  friend void acl_set_disconnect_reason(uint8_t acl_disc_reason);
  friend void acl_set_disconnect_reason(tHCI_STATUS acl_disc_reason);
  friend void btm_acl_created(const RawAddress& bda, uint16_t hci_handle,
                              uint8_t link_role, tBT_TRANSPORT transport);
  friend void btm_acl_device_down(void);
@@ -241,6 +239,10 @@ typedef struct {
  uint16_t btm_acl_pkt_types_supported;
  uint16_t btm_def_link_policy;
  uint16_t btm_def_link_super_tout;
  uint8_t acl_disc_reason;
  tHCI_STATUS acl_disc_reason;
  uint8_t pm_pend_link;

 public:
  tHCI_STATUS get_disconnect_reason() const { return acl_disc_reason; }
  void set_disconnect_reason(tHCI_STATUS reason) { acl_disc_reason = reason; }
} tACL_CB;
+4 −3
Original line number Diff line number Diff line
@@ -108,9 +108,10 @@ void acl_ble_enhanced_connection_complete(

void acl_ble_enhanced_connection_complete_from_shim(
    const tBLE_BD_ADDR& address_with_type, uint16_t handle, uint8_t role,
    bool match, uint16_t conn_interval, uint16_t conn_latency,
    uint16_t conn_timeout, const RawAddress& local_rpa,
    const RawAddress& peer_rpa, uint8_t peer_addr_type) {
    uint16_t conn_interval, uint16_t conn_latency, uint16_t conn_timeout,
    const RawAddress& local_rpa, const RawAddress& peer_rpa,
    uint8_t peer_addr_type) {
  bool match = false;  // TODO look up in database
  acl_ble_enhanced_connection_complete(
      address_with_type, handle, role, match, conn_interval, conn_latency,
      conn_timeout, local_rpa, peer_rpa, peer_addr_type);
+36 −7
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 {
@@ -1271,9 +1272,7 @@ uint16_t BTM_GetNumAclLinks(void) {
 *
 ******************************************************************************/
uint16_t btm_get_acl_disc_reason_code(void) {
  uint8_t res = btm_cb.acl_cb_.acl_disc_reason;
  LOG_WARN("This API should require an address for per ACL basis");
  return res;
  return btm_cb.acl_cb_.get_disconnect_reason();
}

/*******************************************************************************
@@ -2746,10 +2745,12 @@ uint16_t acl_get_link_supervision_timeout() {
  return btm_cb.acl_cb_.btm_def_link_super_tout;
}

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

void acl_set_disconnect_reason(uint8_t acl_disc_reason) {
  btm_cb.acl_cb_.acl_disc_reason = acl_disc_reason;
void acl_set_disconnect_reason(tHCI_STATUS acl_disc_reason) {
  btm_cb.acl_cb_.set_disconnect_reason(acl_disc_reason);
}

bool acl_is_role_switch_allowed() {
@@ -2778,6 +2779,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;
@@ -2891,11 +2909,22 @@ void acl_write_automatic_flush_timeout(const RawAddress& bd_addr,
  btsnd_hcic_write_auto_flush_tout(p_acl->hci_handle, flush_timeout_in_ticks);
}

bool acl_create_le_connection_with_id(uint8_t id, const RawAddress& bd_addr) {
  if (bluetooth::shim::is_gd_acl_enabled()) {
    bluetooth::shim::ACL_CreateLeConnection(bd_addr);
    return true;
  }
  return connection_manager::direct_connect_add(id, bd_addr);
}

bool acl_create_le_connection(const RawAddress& bd_addr) {
  return connection_manager::direct_connect_add(CONN_MGR_ID_L2CAP, bd_addr);
  return acl_create_le_connection_with_id(CONN_MGR_ID_L2CAP, bd_addr);
}

void acl_cancel_le_connection(const RawAddress& bd_addr) {
  if (bluetooth::shim::is_gd_acl_enabled()) {
    return bluetooth::shim::ACL_CancelLeConnection(bd_addr);
  }
  connection_manager::direct_connect_remove(CONN_MGR_ID_L2CAP, bd_addr);
}

Loading