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

Commit ab06114a authored by Qasim Javed's avatar Qasim Javed
Browse files

Revert "Revert "Reland: EIR uuids should be added to device_found_cb am:...

Revert "Revert "Reland: EIR uuids should be added to device_found_cb am: 3154232a am: 1351819f am: ecf20624 am: 4791ca10 am: f7587cf6""

This reverts commit d0ce179b.

Reason for revert: UUID discovery through SDP fails for many devices due to multiple issues so we need UUID discovery through Inquiry Responses as a backup, otherwise there are bonding and/or connection issues.

BUG: 233263558
Test: gd/cert/run
Tag: #refactor

Change-Id: Ifd4547179cb18b7cc7d735d4381fe571f6d7790d
parent d0ce179b
Loading
Loading
Loading
Loading
+22 −9
Original line number Diff line number Diff line
@@ -1220,7 +1220,8 @@ static void btif_dm_search_devices_evt(tBTA_DM_SEARCH_EVT event,
      /* inquiry result */
      bt_bdname_t bdname;
      uint8_t remote_name_len;
      tBTA_SERVICE_MASK services = 0;
      uint8_t num_uuids = 0, max_num_uuid = 32;
      uint8_t uuid_list[32 * Uuid::kNumBytes16];

      p_search_data->inq_res.remt_name_not_required =
          check_eir_remote_name(p_search_data, NULL, NULL);
@@ -1234,18 +1235,15 @@ static void btif_dm_search_devices_evt(tBTA_DM_SEARCH_EVT event,
      if (!check_eir_remote_name(p_search_data, bdname.name, &remote_name_len))
        check_cached_remote_name(p_search_data, bdname.name, &remote_name_len);

      /* Check EIR for remote name and services */
      /* Check EIR for services */
      if (p_search_data->inq_res.p_eir) {
        BTA_GetEirService(p_search_data->inq_res.p_eir,
                          p_search_data->inq_res.eir_len, &services);
        BTIF_TRACE_DEBUG("%s()EIR BTA services = %08X", __func__,
                         (uint32_t)services);
        /* TODO:  Get the service list and check to see which uuids we got and
         * send it back to the client. */
        BTM_GetEirUuidList(p_search_data->inq_res.p_eir,
                           p_search_data->inq_res.eir_len, Uuid::kNumBytes16,
                           &num_uuids, uuid_list, max_num_uuid);
      }

      {
        bt_property_t properties[6];
        bt_property_t properties[7];
        bt_device_type_t dev_type;
        uint32_t num_properties = 0;
        bt_status_t status;
@@ -1309,6 +1307,21 @@ static void btif_dm_search_devices_evt(tBTA_DM_SEARCH_EVT event,
                                   &(p_search_data->inq_res.include_rsi));
        num_properties++;

        /* EIR queried services */
        std::vector<Uuid> uuid128_list;
        if (num_uuids > 0) {
          uint16_t* p_uuid16 = (uint16_t*)uuid_list;
          for (int i = 0; i < num_uuids; ++i) {
            Uuid uuid = Uuid::From16Bit(p_uuid16[i]);
            uuid128_list.push_back(uuid);
          }

          BTIF_STORAGE_FILL_PROPERTY(
              &properties[num_properties], BT_PROPERTY_UUIDS,
              num_uuids * Uuid::kNumBytes128, uuid128_list.data());
          num_properties++;
        }

        status =
            btif_storage_add_remote_device(&bdaddr, num_properties, properties);
        ASSERTC(status == BT_STATUS_SUCCESS,