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

Commit 2aab1f24 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 7037824 from 785322b4 to sc-release

Change-Id: Ife9f0daee83809efa4a54f3ebe0a34d32a0d4ce1
parents 2a21496d 785322b4
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -182,7 +182,7 @@ void bta_ag_start_open(tBTA_AG_SCB* p_scb, const tBTA_AG_DATA& data) {
    /* Let the incoming connection goes through.                        */
    /* Issue collision for this scb for now.                            */
    /* We will decide what to do when we find incoming connetion later. */
    bta_ag_collision_cback(0, BTA_ID_AG, 0, p_scb->peer_addr);
    bta_ag_collision_cback(BTA_SYS_CONN_OPEN, BTA_ID_AG, 0, p_scb->peer_addr);
    return;
  }

+1 −1
Original line number Diff line number Diff line
@@ -1018,7 +1018,7 @@ bool bta_av_link_role_ok(tBTA_AV_SCB* p_scb, uint8_t bits) {
            "%s: peer %s BTM_SwitchRoleToCentral(HCI_ROLE_CENTRAL) error: %d",
            __func__, p_scb->PeerAddress().ToString().c_str(), status);
      }
      if (status != BTM_MODE_UNSUPPORTED && status != BTM_DEV_BLACKLISTED) {
      if (status != BTM_MODE_UNSUPPORTED && status != BTM_DEV_RESTRICT_LISTED) {
        is_ok = false;
        p_scb->wait |= BTA_AV_WAIT_ROLE_SW_RES_START;
      }
+30 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@
#include "device/include/controller.h"
#include "device/include/interop.h"
#include "main/shim/btm_api.h"
#include "main/shim/dumpsys.h"
#include "main/shim/shim.h"
#include "osi/include/log.h"
#include "osi/include/osi.h"
@@ -2174,6 +2175,29 @@ void BTA_dm_report_role_change(const RawAddress bd_addr, uint8_t new_role,
      FROM_HERE, base::Bind(handle_role_change, bd_addr, new_role, hci_status));
}

void handle_remote_features_complete(const RawAddress& bd_addr) {
  tBTA_DM_PEER_DEVICE* p_dev = bta_dm_find_peer_device(bd_addr);
  if (!p_dev) {
    LOG_WARN("Unable to find device peer:%s", PRIVATE_ADDRESS(bd_addr));
    return;
  }

  if (controller_get_interface()->supports_sniff_subrating() &&
      acl_peer_supports_sniff_subrating(bd_addr)) {
    LOG_DEBUG("Device supports sniff subrating peer:%s",
              PRIVATE_ADDRESS(bd_addr));
    p_dev->info = BTA_DM_DI_USE_SSR;
  } else {
    LOG_DEBUG("Device does NOT support sniff subrating peer:%s",
              PRIVATE_ADDRESS(bd_addr));
  }
}

void BTA_dm_notify_remote_features_complete(const RawAddress bd_addr) {
  do_in_main_thread(FROM_HERE,
                    base::Bind(handle_remote_features_complete, bd_addr));
}

static tBTA_DM_PEER_DEVICE* allocate_device_for(const RawAddress& bd_addr,
                                                tBT_TRANSPORT transport) {
  for (uint8_t i = 0; i < bta_dm_cb.device_list.count; i++) {
@@ -2209,6 +2233,12 @@ static void bta_dm_acl_up(const RawAddress& bd_addr, tBT_TRANSPORT transport) {

  if (controller_get_interface()->supports_sniff_subrating() &&
      acl_peer_supports_sniff_subrating(bd_addr)) {
    // NOTE: This callback assumes upon ACL connection that
    // the read remote features has completed and is valid.
    // The only guaranteed contract for valid read remote features
    // data is when the BTA_dm_notify_remote_features_complete()
    // callback has completed.  The below assignment is kept for
    // transitional informational purposes only.
    device->info = BTA_DM_DI_USE_SSR;
  }

+6 −3
Original line number Diff line number Diff line
@@ -695,7 +695,7 @@ static bool bta_dm_pm_park(const RawAddress& peer_addr) {
 *
 ******************************************************************************/
static void bta_dm_pm_sniff(tBTA_DM_PEER_DEVICE* p_peer_dev, uint8_t index) {
  tBTM_PM_MODE mode = BTM_PM_STS_ACTIVE;
  tBTM_PM_MODE mode = BTM_PM_MD_ACTIVE;
  tBTM_PM_PWR_MD pwr_md;
  tBTM_STATUS status;

@@ -703,10 +703,13 @@ static void bta_dm_pm_sniff(tBTA_DM_PEER_DEVICE* p_peer_dev, uint8_t index) {
    LOG_WARN("Unable to read power mode for peer:%s",
             PRIVATE_ADDRESS(p_peer_dev->peer_bdaddr));
  }
  tBTM_PM_STATUS mode_status = static_cast<tBTM_PM_STATUS>(mode);
  LOG_DEBUG("Current power mode:%s[0x%x] peer_mode:x%02x",
            power_mode_status_text(mode_status).c_str(), mode_status,
            p_peer_dev->info);

  uint8_t* p_rem_feat = BTM_ReadRemoteFeatures(p_peer_dev->peer_bdaddr);
  APPL_TRACE_DEBUG("bta_dm_pm_sniff cur:%d, idx:%d, info:x%x", mode, index,
                   p_peer_dev->info);

  const controller_t* controller = controller_get_interface();
  if (mode != BTM_PM_MD_SNIFF ||
      (controller->supports_sniff_subrating() && p_rem_feat &&
+2 −1
Original line number Diff line number Diff line
@@ -107,7 +107,8 @@ void bta_hf_client_start_open(tBTA_HF_CLIENT_DATA* p_data) {
    /* Let the incoming connection goes through.                        */
    /* Issue collision for now.                                         */
    /* We will decide what to do when we find incoming connection later.*/
    bta_hf_client_collision_cback(0, BTA_ID_HS, 0, client_cb->peer_addr);
    bta_hf_client_collision_cback(BTA_SYS_CONN_OPEN, BTA_ID_HS, 0,
                                  client_cb->peer_addr);
    return;
  }

Loading