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

Commit e30a5125 authored by Abhishek Pandit-Subedi's avatar Abhishek Pandit-Subedi Committed by Abhishek Pandit-Subedi
Browse files

EIR uuids should be added to device_found_cb

Currently, uuids in the extended inquiry result are parsed and sent to
debug trace but are not shared. We should parse the uuids in the EIR and
attach them to the device_found_cb as BT_PROPERTY_UUID.

Bug: 201454401
Tag: #refactor
Test: gd/cert/run
Change-Id: I186c18bf5d2d09a6adaaa3c46b32c407b48f2c19
parent b70ed864
Loading
Loading
Loading
Loading
+21 −8
Original line number Diff line number Diff line
@@ -1155,7 +1155,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);
@@ -1169,14 +1170,11 @@ 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);
      }

      {
@@ -1244,6 +1242,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 */
        if (num_uuids > 0) {
          uint16_t* p_uuid16 = (uint16_t*)uuid_list;
          std::vector<Uuid> uuid128_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,