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

Commit e092babd authored by Jakub Pawlowski's avatar Jakub Pawlowski Committed by Jakub Pawłowski
Browse files

Separate search and discovery control blocks

Bug: 330675788
Bug: 335732980
Flag: com.android.bluetooth.flags.separate_service_and_device_discovery
Test: mma -j32
Change-Id: I5e7f88e893aeedde85de4240f21dd6cf6be4099c
parent b45c4285
Loading
Loading
Loading
Loading
+160 −171

File changed.

Preview size limit exceeded, changes collapsed.

+16 −13
Original line number Diff line number Diff line
@@ -155,40 +155,43 @@ inline std::string bta_dm_state_text(
/* DM search control block */
typedef struct {
  tBTA_DM_SEARCH_CBACK* p_device_search_cback;
  service_discovery_callbacks service_search_cbacks;
  tBTM_INQ_INFO* p_btm_inq_info;
  tBTA_SERVICE_MASK services_to_search;
  tBTA_SERVICE_MASK services_found;
  tSDP_DISCOVERY_DB* p_sdp_db;
  /* This covers device search state. That is scanning through android Settings
   * to discover LE and Classic devices. Runs Name discovery on Inquiry Results
   */
  tBTA_DM_DEVICE_SEARCH_STATE search_state;
  bool name_discover_done;
  /* peer address used for name discovery */
  RawAddress peer_bdaddr;
  BD_NAME peer_name;
  std::unique_ptr<tBTA_DM_MSG> p_pending_search;
  tBTA_DM_SEARCH_CBACK* p_csis_scan_cback;
} tBTA_DM_SEARCH_CB;

typedef struct {
  RawAddress peer_bdaddr;
  service_discovery_callbacks service_search_cbacks;
  tBTA_SERVICE_MASK services_to_search;
  tBTA_SERVICE_MASK services_found;
  tSDP_DISCOVERY_DB* p_sdp_db;
  /* This covers service discovery state - callers of BTA_DmDiscover. That is
   * initial service discovery after bonding and
   * BluetoothDevice.fetchUuidsWithSdp(). Responsible for LE GATT Service
   * Discovery and SDP */
  tBTA_DM_SERVICE_DISCOVERY_STATE service_discovery_state;
  RawAddress peer_bdaddr;
  bool name_discover_done;
  BD_NAME peer_name;
  alarm_t* search_timer;
  uint8_t service_index;
  std::unique_ptr<tBTA_DM_MSG> p_pending_search;
  std::queue<tBTA_DM_API_DISCOVER> pending_discovery_queue;
  bool wait_disc;
  bool sdp_results;
  bluetooth::Uuid uuid;
  bool wait_disc;
  uint8_t peer_scn;
  tBTA_DM_SEARCH_CBACK* p_csis_scan_cback;
  tGATT_IF client_if;
  uint8_t uuid_to_search;
  bool gatt_disc_active;
  uint16_t conn_id;
  alarm_t* gatt_close_timer;    /* GATT channel close delay timer */
  RawAddress pending_close_bda; /* pending GATT channel remote device address */

} tBTA_DM_SEARCH_CB;
} tBTA_DM_SERVICE_DISCOVERY_CB;

extern const uint32_t bta_service_id_to_btm_srv_id_lkup_tbl[];
extern const uint16_t bta_service_id_to_uuid_lkup_tbl[];
+0 −1
Original line number Diff line number Diff line
@@ -301,7 +301,6 @@ typedef void(tBTA_DM_DISC_CBACK)(RawAddress bd_addr, tBTA_SERVICE_MASK services,
                                 const std::vector<bluetooth::Uuid>& uuids,
                                 tBTA_STATUS result, tHCI_STATUS hci_status);
struct service_discovery_callbacks {
  /* legacy callback I'll tear apart and get rid of */
  tBTA_DM_GATT_DISC_CBACK* on_gatt_results;
  tBTA_DM_DID_RES_CBACK* on_did_received;
  // TODO: delete after separate_service_and_device_discovery rolls out
+2 −4
Original line number Diff line number Diff line
@@ -206,15 +206,13 @@ TEST_F(BtaInitializedTest,
}

TEST_F(BtaInitializedTest, init_bta_dm_search_cb__conn_id) {
  constexpr uint16_t kConnId = 123;

  // Set the global search block target field to some non-reset value
  tBTA_DM_SEARCH_CB& search_cb =
      bluetooth::legacy::testing::bta_dm_disc_search_cb();
  search_cb.conn_id = kConnId;
  search_cb.name_discover_done = true;

  bluetooth::legacy::testing::bta_dm_disc_init_search_cb(search_cb);

  // Verify global search block field reset value is correct
  ASSERT_EQ(search_cb.conn_id, GATT_INVALID_CONN_ID);
  ASSERT_EQ(search_cb.name_discover_done, false);
}
+0 −1
Original line number Diff line number Diff line
@@ -341,7 +341,6 @@ TEST_F(BtaDmTest, bta_dm_remname_cback__wrong_address) {
  tBTA_DM_SEARCH_CB& search_cb =
      bluetooth::legacy::testing::bta_dm_disc_search_cb();
  search_cb.p_device_search_cback = nullptr;
  search_cb.service_search_cbacks = {};
  search_cb.peer_bdaddr = kRawAddress;
  search_cb.name_discover_done = false;

Loading