Loading system/bta/csis/csis_client.cc +16 −27 Original line number Diff line number Diff line Loading @@ -259,8 +259,6 @@ class CsisClientImpl : public CsisClient { void Disconnect(const RawAddress& addr) override { LOG_DEBUG("%s ", ADDRESS_TO_LOGGABLE_CSTR(addr)); btif_storage_set_csis_autoconnect(addr, false); auto device = FindDeviceByAddress(addr); if (device == nullptr) { LOG_WARN("Device not connected to profile %s", Loading Loading @@ -656,17 +654,26 @@ class CsisClientImpl : public CsisClient { return group_rank_map; } void AddFromStorage(const RawAddress& addr, const std::vector<uint8_t>& in, bool autoconnect) { void StartOpportunisticConnect(const RawAddress& address) { /* Oportunistic works only for direct connect, * but in fact this is background connect */ LOG_INFO(": %s ", ADDRESS_TO_LOGGABLE_CSTR(address)); BTA_GATTC_Open(gatt_if_, address, BTM_BLE_DIRECT_CONNECTION, true); } void AddFromStorage(const RawAddress& addr, const std::vector<uint8_t>& in) { auto group_rank_map = DeserializeSets(addr, in); LOG_DEBUG(" %s, number of groups %d", ADDRESS_TO_LOGGABLE_CSTR(addr), static_cast<int>(csis_groups_.size())); auto device = FindDeviceByAddress(addr); if (device == nullptr) { device = std::make_shared<CsisDevice>(addr, false); devices_.push_back(device); } bool is_le_audio_device = false; for (const auto& csis_group : csis_groups_) { if (!csis_group->IsDeviceInTheGroup(device)) continue; Loading @@ -680,21 +687,11 @@ class CsisClientImpl : public CsisClient { callbacks_->OnDeviceAvailable(device->addr, group_id, csis_group->GetDesiredSize(), rank, csis_group->GetUuid()); if (csis_group->GetUuid() == bluetooth::Uuid::From16Bit(UUID_COMMON_AUDIO_SERVICE)) { is_le_audio_device = true; } } } /* For now, if this is LeAudio device, CSIP is opportunistic profile. */ bool is_opportunistic = is_le_audio_device; if (autoconnect) { BTA_GATTC_Open(gatt_if_, addr, BTM_BLE_BKG_CONNECT_ALLOW_LIST, is_opportunistic); } /* For bonded devices, CSIP can be always opportunistic service */ StartOpportunisticConnect(addr); } void CleanUp() { Loading Loading @@ -913,11 +910,6 @@ class CsisClientImpl : public CsisClient { } } } if (device->first_connection) { device->first_connection = false; btif_storage_set_csis_autoconnect(device->addr, true); } } void OnGattWriteCcc(uint16_t conn_id, tGATT_STATUS status, uint16_t handle, Loading Loading @@ -2140,7 +2132,6 @@ class CsisClientImpl : public CsisClient { if (device->is_gatt_service_valid) { instance->OnEncrypted(device); } else { device->first_connection = true; BTA_GATTC_ServiceSearchRequest(device->conn_id, &kCsisServiceUuid); } } Loading @@ -2155,7 +2146,6 @@ class CsisClientImpl : public CsisClient { /* Invalidate service discovery results */ BtaGattQueue::Clean(device->conn_id); device->first_connection = true; DeregisterNotifications(device); device->ClearSvcData(); BTA_GATTC_ServiceSearchRequest(device->conn_id, &kCsisServiceUuid); Loading Loading @@ -2407,14 +2397,13 @@ CsisClient* CsisClient::Get(void) { } void CsisClient::AddFromStorage(const RawAddress& addr, const std::vector<uint8_t>& in, bool autoconnect) { const std::vector<uint8_t>& in) { if (!instance) { LOG_ERROR("Not initialized yet!"); return; } instance->AddFromStorage(addr, in, autoconnect); instance->AddFromStorage(addr, in); } bool CsisClient::GetForStorage(const RawAddress& addr, Loading system/bta/csis/csis_client_test.cc +2 −8 Original line number Diff line number Diff line Loading @@ -554,12 +554,8 @@ class CsisClientTest : public ::testing::Test { EXPECT_CALL(*callbacks, OnDeviceAvailable(address, _, _, _, _)) .Times(AtLeast(1)); /* In testing only whe set info is empty, there is no CAP context. */ bool is_opportunistic = (storage_buf.size() != 0); EXPECT_CALL(gatt_interface, Open(gatt_if, address, BTM_BLE_BKG_CONNECT_ALLOW_LIST, is_opportunistic)) Open(gatt_if, address, BTM_BLE_DIRECT_CONNECTION, true)) .WillOnce(Invoke([this, conn_id](tGATT_IF client_if, const RawAddress& remote_bda, bool is_direct, bool opportunistic) { Loading @@ -568,7 +564,7 @@ class CsisClientTest : public ::testing::Test { })); DeviceGroups::AddFromStorage(address, storage_group_buf); CsisClient::AddFromStorage(address, storage_buf, true); CsisClient::AddFromStorage(address, storage_buf); } void InjectEncryptionEvent(const RawAddress& test_address, uint16_t conn_id) { Loading Loading @@ -1387,11 +1383,9 @@ TEST_F(CsisClientTest, test_storage_calls) { ASSERT_EQ(1, get_func_call_count("btif_storage_load_bonded_csis_devices")); ASSERT_EQ(0, get_func_call_count("btif_storage_update_csis_info")); ASSERT_EQ(0, get_func_call_count("btif_storage_set_csis_autoconnect")); TestConnect(test_address); InjectConnectedEvent(test_address, 1); GetSearchCompleteEvent(1); ASSERT_EQ(1, get_func_call_count("btif_storage_set_csis_autoconnect")); ASSERT_EQ(1, get_func_call_count("btif_storage_update_csis_info")); ASSERT_EQ(0, get_func_call_count("btif_storage_remove_csis_device")); Loading system/bta/csis/csis_types.h +1 −7 Original line number Diff line number Diff line Loading @@ -89,12 +89,6 @@ enum class CsisDiscoveryState : uint8_t { class GattServiceDevice { public: RawAddress addr; /* * This is true only during first connection to profile, until we store the * device. */ bool first_connection; /* * We are making active attempt to connect to this device, 'direct connect'. */ Loading @@ -105,7 +99,7 @@ class GattServiceDevice { bool is_gatt_service_valid = false; GattServiceDevice(const RawAddress& addr, bool first_connection) : addr(addr), first_connection(first_connection) {} : addr(addr) {} GattServiceDevice() : GattServiceDevice(RawAddress::kEmpty, false) {} Loading system/bta/include/bta_csis_api.h +1 −1 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ class CsisClient { static void Initialize(bluetooth::csis::CsisClientCallbacks* callbacks, base::Closure initCb); static void AddFromStorage(const RawAddress& addr, const std::vector<uint8_t>& in, bool autoconnect); const std::vector<uint8_t>& in); static bool GetForStorage(const RawAddress& addr, std::vector<uint8_t>& out); static void CleanUp(); static CsisClient* Get(); Loading system/btif/include/btif_storage.h +0 −2 Original line number Diff line number Diff line Loading @@ -391,8 +391,6 @@ void btif_storage_add_groups(const RawAddress& addr); void btif_storage_load_bonded_groups(void); void btif_storage_remove_groups(const RawAddress& address); void btif_storage_set_csis_autoconnect(const RawAddress& addr, bool autoconnect); void btif_storage_update_csis_info(const RawAddress& addr); void btif_storage_load_bonded_csis_devices(); void btif_storage_remove_csis_device(const RawAddress& address); Loading Loading
system/bta/csis/csis_client.cc +16 −27 Original line number Diff line number Diff line Loading @@ -259,8 +259,6 @@ class CsisClientImpl : public CsisClient { void Disconnect(const RawAddress& addr) override { LOG_DEBUG("%s ", ADDRESS_TO_LOGGABLE_CSTR(addr)); btif_storage_set_csis_autoconnect(addr, false); auto device = FindDeviceByAddress(addr); if (device == nullptr) { LOG_WARN("Device not connected to profile %s", Loading Loading @@ -656,17 +654,26 @@ class CsisClientImpl : public CsisClient { return group_rank_map; } void AddFromStorage(const RawAddress& addr, const std::vector<uint8_t>& in, bool autoconnect) { void StartOpportunisticConnect(const RawAddress& address) { /* Oportunistic works only for direct connect, * but in fact this is background connect */ LOG_INFO(": %s ", ADDRESS_TO_LOGGABLE_CSTR(address)); BTA_GATTC_Open(gatt_if_, address, BTM_BLE_DIRECT_CONNECTION, true); } void AddFromStorage(const RawAddress& addr, const std::vector<uint8_t>& in) { auto group_rank_map = DeserializeSets(addr, in); LOG_DEBUG(" %s, number of groups %d", ADDRESS_TO_LOGGABLE_CSTR(addr), static_cast<int>(csis_groups_.size())); auto device = FindDeviceByAddress(addr); if (device == nullptr) { device = std::make_shared<CsisDevice>(addr, false); devices_.push_back(device); } bool is_le_audio_device = false; for (const auto& csis_group : csis_groups_) { if (!csis_group->IsDeviceInTheGroup(device)) continue; Loading @@ -680,21 +687,11 @@ class CsisClientImpl : public CsisClient { callbacks_->OnDeviceAvailable(device->addr, group_id, csis_group->GetDesiredSize(), rank, csis_group->GetUuid()); if (csis_group->GetUuid() == bluetooth::Uuid::From16Bit(UUID_COMMON_AUDIO_SERVICE)) { is_le_audio_device = true; } } } /* For now, if this is LeAudio device, CSIP is opportunistic profile. */ bool is_opportunistic = is_le_audio_device; if (autoconnect) { BTA_GATTC_Open(gatt_if_, addr, BTM_BLE_BKG_CONNECT_ALLOW_LIST, is_opportunistic); } /* For bonded devices, CSIP can be always opportunistic service */ StartOpportunisticConnect(addr); } void CleanUp() { Loading Loading @@ -913,11 +910,6 @@ class CsisClientImpl : public CsisClient { } } } if (device->first_connection) { device->first_connection = false; btif_storage_set_csis_autoconnect(device->addr, true); } } void OnGattWriteCcc(uint16_t conn_id, tGATT_STATUS status, uint16_t handle, Loading Loading @@ -2140,7 +2132,6 @@ class CsisClientImpl : public CsisClient { if (device->is_gatt_service_valid) { instance->OnEncrypted(device); } else { device->first_connection = true; BTA_GATTC_ServiceSearchRequest(device->conn_id, &kCsisServiceUuid); } } Loading @@ -2155,7 +2146,6 @@ class CsisClientImpl : public CsisClient { /* Invalidate service discovery results */ BtaGattQueue::Clean(device->conn_id); device->first_connection = true; DeregisterNotifications(device); device->ClearSvcData(); BTA_GATTC_ServiceSearchRequest(device->conn_id, &kCsisServiceUuid); Loading Loading @@ -2407,14 +2397,13 @@ CsisClient* CsisClient::Get(void) { } void CsisClient::AddFromStorage(const RawAddress& addr, const std::vector<uint8_t>& in, bool autoconnect) { const std::vector<uint8_t>& in) { if (!instance) { LOG_ERROR("Not initialized yet!"); return; } instance->AddFromStorage(addr, in, autoconnect); instance->AddFromStorage(addr, in); } bool CsisClient::GetForStorage(const RawAddress& addr, Loading
system/bta/csis/csis_client_test.cc +2 −8 Original line number Diff line number Diff line Loading @@ -554,12 +554,8 @@ class CsisClientTest : public ::testing::Test { EXPECT_CALL(*callbacks, OnDeviceAvailable(address, _, _, _, _)) .Times(AtLeast(1)); /* In testing only whe set info is empty, there is no CAP context. */ bool is_opportunistic = (storage_buf.size() != 0); EXPECT_CALL(gatt_interface, Open(gatt_if, address, BTM_BLE_BKG_CONNECT_ALLOW_LIST, is_opportunistic)) Open(gatt_if, address, BTM_BLE_DIRECT_CONNECTION, true)) .WillOnce(Invoke([this, conn_id](tGATT_IF client_if, const RawAddress& remote_bda, bool is_direct, bool opportunistic) { Loading @@ -568,7 +564,7 @@ class CsisClientTest : public ::testing::Test { })); DeviceGroups::AddFromStorage(address, storage_group_buf); CsisClient::AddFromStorage(address, storage_buf, true); CsisClient::AddFromStorage(address, storage_buf); } void InjectEncryptionEvent(const RawAddress& test_address, uint16_t conn_id) { Loading Loading @@ -1387,11 +1383,9 @@ TEST_F(CsisClientTest, test_storage_calls) { ASSERT_EQ(1, get_func_call_count("btif_storage_load_bonded_csis_devices")); ASSERT_EQ(0, get_func_call_count("btif_storage_update_csis_info")); ASSERT_EQ(0, get_func_call_count("btif_storage_set_csis_autoconnect")); TestConnect(test_address); InjectConnectedEvent(test_address, 1); GetSearchCompleteEvent(1); ASSERT_EQ(1, get_func_call_count("btif_storage_set_csis_autoconnect")); ASSERT_EQ(1, get_func_call_count("btif_storage_update_csis_info")); ASSERT_EQ(0, get_func_call_count("btif_storage_remove_csis_device")); Loading
system/bta/csis/csis_types.h +1 −7 Original line number Diff line number Diff line Loading @@ -89,12 +89,6 @@ enum class CsisDiscoveryState : uint8_t { class GattServiceDevice { public: RawAddress addr; /* * This is true only during first connection to profile, until we store the * device. */ bool first_connection; /* * We are making active attempt to connect to this device, 'direct connect'. */ Loading @@ -105,7 +99,7 @@ class GattServiceDevice { bool is_gatt_service_valid = false; GattServiceDevice(const RawAddress& addr, bool first_connection) : addr(addr), first_connection(first_connection) {} : addr(addr) {} GattServiceDevice() : GattServiceDevice(RawAddress::kEmpty, false) {} Loading
system/bta/include/bta_csis_api.h +1 −1 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ class CsisClient { static void Initialize(bluetooth::csis::CsisClientCallbacks* callbacks, base::Closure initCb); static void AddFromStorage(const RawAddress& addr, const std::vector<uint8_t>& in, bool autoconnect); const std::vector<uint8_t>& in); static bool GetForStorage(const RawAddress& addr, std::vector<uint8_t>& out); static void CleanUp(); static CsisClient* Get(); Loading
system/btif/include/btif_storage.h +0 −2 Original line number Diff line number Diff line Loading @@ -391,8 +391,6 @@ void btif_storage_add_groups(const RawAddress& addr); void btif_storage_load_bonded_groups(void); void btif_storage_remove_groups(const RawAddress& address); void btif_storage_set_csis_autoconnect(const RawAddress& addr, bool autoconnect); void btif_storage_update_csis_info(const RawAddress& addr); void btif_storage_load_bonded_csis_devices(); void btif_storage_remove_csis_device(const RawAddress& address); Loading