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

Commit 84ec6ff8 authored by Zach Johnson's avatar Zach Johnson Committed by Chris Manton
Browse files

split bta_dm_acl_change into an up and a down variant

The code share between the two was very little, no need to
complicate things with a boolean parameter.

Bug: 159815595
Tag: #refactor
Test: compile & verify basic functions working
Change-Id: Ia346858f61167009e1190e17214a76ad101b2203
parent 9f68d949
Loading
Loading
Loading
Loading
+94 −90
Original line number Diff line number Diff line
@@ -2709,15 +2709,11 @@ static tBTA_DM_PEER_DEVICE* allocate_device_for(const RawAddress& bd_addr,
  return nullptr;
}

static void bta_dm_acl_change(bool is_new, const RawAddress& bd_addr,
                              tBT_TRANSPORT transport, uint16_t handle) {
  bool issue_unpair_cb = false;
  bool remove_device = false;

static void bta_dm_acl_up(const RawAddress& bd_addr, tBT_TRANSPORT transport,
                          uint16_t handle) {
  tBTA_DM_SEC conn;
  memset(&conn, 0, sizeof(tBTA_DM_SEC));

  if (is_new) {
  auto device = allocate_device_for(bd_addr, transport, handle);
  if (device == nullptr) {
    APPL_TRACE_ERROR("%s max active connection reached, no resources",
@@ -2743,7 +2739,18 @@ static void bta_dm_acl_change(bool is_new, const RawAddress& bd_addr,
  if (bta_dm_cb.p_sec_cback) {
    bta_dm_cb.p_sec_cback(BTA_DM_LINK_UP_EVT, &conn);
  }
  } else {

  bta_dm_adjust_roles(true);
}

static void bta_dm_acl_down(const RawAddress& bd_addr, tBT_TRANSPORT transport,
                            uint16_t handle) {
  bool issue_unpair_cb = false;
  bool remove_device = false;

  tBTA_DM_SEC conn;
  memset(&conn, 0, sizeof(tBTA_DM_SEC));

  for (uint8_t i = 0; i < bta_dm_cb.device_list.count; i++) {
    auto device = &bta_dm_cb.device_list.peer_device[i];
    if (device->peer_bdaddr != bd_addr || device->transport != transport)
@@ -2784,8 +2791,7 @@ static void bta_dm_acl_change(bool is_new, const RawAddress& bd_addr,
  }

  if ((transport == BT_TRANSPORT_BR_EDR) &&
        (bta_dm_search_cb.wait_disc &&
         bta_dm_search_cb.peer_bdaddr == bd_addr)) {
      (bta_dm_search_cb.wait_disc && bta_dm_search_cb.peer_bdaddr == bd_addr)) {
    bta_dm_search_cb.wait_disc = false;

    if (bta_dm_search_cb.sdp_results) {
@@ -2813,9 +2819,7 @@ static void bta_dm_acl_change(bool is_new, const RawAddress& bd_addr,
  conn.link_down.bd_addr = bd_addr;
  if (bta_dm_cb.p_sec_cback) {
    bta_dm_cb.p_sec_cback(BTA_DM_LINK_DOWN_EVT, &conn);
      if (issue_unpair_cb)
        bta_dm_cb.p_sec_cback(BTA_DM_DEV_UNPAIRED_EVT, &conn);
    }
    if (issue_unpair_cb) bta_dm_cb.p_sec_cback(BTA_DM_DEV_UNPAIRED_EVT, &conn);
  }

  bta_dm_adjust_roles(true);
@@ -2827,13 +2831,13 @@ static void bta_dm_bl_change_cback(tBTM_BL_EVENT_DATA* p_data) {
    case BTM_BL_CONN_EVT:
      /* connection up */
      do_in_main_thread(
          FROM_HERE, base::Bind(bta_dm_acl_change, true, *p_data->conn.p_bda,
          FROM_HERE, base::Bind(bta_dm_acl_up, *p_data->conn.p_bda,
                                p_data->conn.transport, p_data->conn.handle));
      break;
    case BTM_BL_DISCN_EVT:
      /* connection down */
      do_in_main_thread(
          FROM_HERE, base::Bind(bta_dm_acl_change, false, *p_data->discn.p_bda,
          FROM_HERE, base::Bind(bta_dm_acl_down, *p_data->discn.p_bda,
                                p_data->discn.transport, p_data->discn.handle));
      break;