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

Commit 54b06fc0 authored by Himanshu Rawat's avatar Himanshu Rawat
Browse files

Ensure that pairing state is reset at the end of GATT service discovery.

Pairing state is not reset if preferred services are not found in the GATT service discovery initiated by the pairing completion. This prevents the stops all outgoing pairing attempts till either BT is restarted or the paired device is removed.


Bug: 260958486
Test: Pair Fitbit Charge 4, then try to pair with another device.
Change-Id: Ia3562b187174b10b2b3dc2ace3dc6c622724320b
parent e599bb71
Loading
Loading
Loading
Loading
+8 −12
Original line number Diff line number Diff line
@@ -1795,6 +1795,14 @@ static void btif_dm_search_services_evt(tBTA_DM_SEARCH_EVT event,
          }
          pairing_cb.gatt_over_le =
              btif_dm_pairing_cb_t::ServiceDiscoveryState::FINISHED;

          if (pairing_cb.sdp_over_classic !=
              btif_dm_pairing_cb_t::ServiceDiscoveryState::SCHEDULED) {
            // Both SDP and bonding are either done, or not scheduled,
            // we are safe to clear the service discovery part of CB.
            LOG_INFO("clearing pairing_cb");
            pairing_cb = {};
          }
        }
      } else {
        LOG_INFO("New GATT over SDP UUIDs for %s:",
@@ -1864,18 +1872,6 @@ static void btif_dm_search_services_evt(tBTA_DM_SEARCH_EVT event,
      /* Send the event to the BTIF */
      GetInterfaceToProfiles()->events->invoke_remote_device_properties_cb(
          BT_STATUS_SUCCESS, bd_addr, num_properties, prop);

      if ((bd_addr == pairing_cb.bd_addr ||
           bd_addr == pairing_cb.static_bdaddr) &&
          pairing_cb.sdp_over_classic !=
              btif_dm_pairing_cb_t::ServiceDiscoveryState::SCHEDULED &&
          pairing_cb.gatt_over_le !=
              btif_dm_pairing_cb_t::ServiceDiscoveryState::SCHEDULED) {
        // Both SDP and bonding are either done, or not scheduled, we are safe
        // to clear the service discovery part of CB.
        LOG_INFO("clearing pairing_cb");
        pairing_cb = {};
      }
    } break;

    case BTA_DM_DID_RES_EVT: {