Loading system/bta/le_audio/client.cc +7 −0 Original line number Diff line number Diff line Loading @@ -1237,6 +1237,13 @@ class LeAudioClientImpl : public LeAudioClient { return; } if (group->NumOfConnected() == 0) { log::error("Group: {} is not connected anymore", static_cast<int>(group_id)); callbacks_->OnGroupStatus(group_id, GroupStatus::INACTIVE); return; } if (active_group_id_ != bluetooth::groups::kGroupUnknown) { if (active_group_id_ == group_id) { log::info("Group is already active: {}", Loading system/bta/le_audio/le_audio_client_test.cc +55 −0 Original line number Diff line number Diff line Loading @@ -4669,6 +4669,61 @@ TEST_F(UnicastTest, HandleResumeWithoutMetadataUpdateOnLocalSink) { Mock::VerifyAndClearExpectations(&mock_state_machine_); } TEST_F(UnicastTest, GroupSetActiveNonConnectedGroup) { const RawAddress test_address0 = GetTestAddress(0); int group_id = bluetooth::groups::kGroupUnknown; /** * In this test we want to make sure that Available context change reach Java * when group is in Configured state */ default_channel_cnt = 1; int conn_id = 1; SetSampleDatabaseEarbudsValid( conn_id, test_address0, codec_spec_conf::kLeAudioLocationStereo, codec_spec_conf::kLeAudioLocationStereo, default_channel_cnt, default_channel_cnt, 0x0004, /* source sample freq 16khz */ false /*add_csis*/, true /*add_cas*/, true /*add_pacs*/, default_ase_cnt /*add_ascs_cnt*/, 1 /*set_size*/, 0 /*rank*/); EXPECT_CALL(mock_audio_hal_client_callbacks_, OnConnectionState(ConnectionState::CONNECTED, test_address0)) .Times(1); EXPECT_CALL(mock_audio_hal_client_callbacks_, OnGroupNodeStatus(test_address0, _, GroupNodeStatus::ADDED)) .WillOnce(DoAll(SaveArg<1>(&group_id))); ConnectLeAudio(test_address0); ASSERT_NE(group_id, bluetooth::groups::kGroupUnknown); Mock::VerifyAndClearExpectations(&mock_audio_hal_client_callbacks_); EXPECT_CALL(mock_audio_hal_client_callbacks_, OnGroupStatus(group_id, GroupStatus::INACTIVE)) .Times(1); InjectDisconnectedEvent(conn_id); SyncOnMainLoop(); // Audio sessions are started only when device gets active EXPECT_CALL(mock_audio_hal_client_callbacks_, OnAudioGroupSelectableCodecConf(group_id, _, _)) .Times(0); EXPECT_CALL(mock_audio_hal_client_callbacks_, OnAudioGroupCurrentCodecConf(group_id, _, _)) .Times(0); EXPECT_CALL(*mock_le_audio_source_hal_client_, Start(_, _, _)).Times(0); EXPECT_CALL(*mock_le_audio_sink_hal_client_, Start(_, _, _)).Times(0); // try to set active group on non connected group LeAudioClient::Get()->GroupSetActive(group_id); SyncOnMainLoop(); Mock::VerifyAndClearExpectations(&mock_audio_hal_client_callbacks_); Mock::VerifyAndClearExpectations(mock_le_audio_source_hal_client_); } TEST_F(UnicastTest, GroupSetActive) { const RawAddress test_address0 = GetTestAddress(0); int group_id = bluetooth::groups::kGroupUnknown; Loading Loading
system/bta/le_audio/client.cc +7 −0 Original line number Diff line number Diff line Loading @@ -1237,6 +1237,13 @@ class LeAudioClientImpl : public LeAudioClient { return; } if (group->NumOfConnected() == 0) { log::error("Group: {} is not connected anymore", static_cast<int>(group_id)); callbacks_->OnGroupStatus(group_id, GroupStatus::INACTIVE); return; } if (active_group_id_ != bluetooth::groups::kGroupUnknown) { if (active_group_id_ == group_id) { log::info("Group is already active: {}", Loading
system/bta/le_audio/le_audio_client_test.cc +55 −0 Original line number Diff line number Diff line Loading @@ -4669,6 +4669,61 @@ TEST_F(UnicastTest, HandleResumeWithoutMetadataUpdateOnLocalSink) { Mock::VerifyAndClearExpectations(&mock_state_machine_); } TEST_F(UnicastTest, GroupSetActiveNonConnectedGroup) { const RawAddress test_address0 = GetTestAddress(0); int group_id = bluetooth::groups::kGroupUnknown; /** * In this test we want to make sure that Available context change reach Java * when group is in Configured state */ default_channel_cnt = 1; int conn_id = 1; SetSampleDatabaseEarbudsValid( conn_id, test_address0, codec_spec_conf::kLeAudioLocationStereo, codec_spec_conf::kLeAudioLocationStereo, default_channel_cnt, default_channel_cnt, 0x0004, /* source sample freq 16khz */ false /*add_csis*/, true /*add_cas*/, true /*add_pacs*/, default_ase_cnt /*add_ascs_cnt*/, 1 /*set_size*/, 0 /*rank*/); EXPECT_CALL(mock_audio_hal_client_callbacks_, OnConnectionState(ConnectionState::CONNECTED, test_address0)) .Times(1); EXPECT_CALL(mock_audio_hal_client_callbacks_, OnGroupNodeStatus(test_address0, _, GroupNodeStatus::ADDED)) .WillOnce(DoAll(SaveArg<1>(&group_id))); ConnectLeAudio(test_address0); ASSERT_NE(group_id, bluetooth::groups::kGroupUnknown); Mock::VerifyAndClearExpectations(&mock_audio_hal_client_callbacks_); EXPECT_CALL(mock_audio_hal_client_callbacks_, OnGroupStatus(group_id, GroupStatus::INACTIVE)) .Times(1); InjectDisconnectedEvent(conn_id); SyncOnMainLoop(); // Audio sessions are started only when device gets active EXPECT_CALL(mock_audio_hal_client_callbacks_, OnAudioGroupSelectableCodecConf(group_id, _, _)) .Times(0); EXPECT_CALL(mock_audio_hal_client_callbacks_, OnAudioGroupCurrentCodecConf(group_id, _, _)) .Times(0); EXPECT_CALL(*mock_le_audio_source_hal_client_, Start(_, _, _)).Times(0); EXPECT_CALL(*mock_le_audio_sink_hal_client_, Start(_, _, _)).Times(0); // try to set active group on non connected group LeAudioClient::Get()->GroupSetActive(group_id); SyncOnMainLoop(); Mock::VerifyAndClearExpectations(&mock_audio_hal_client_callbacks_); Mock::VerifyAndClearExpectations(mock_le_audio_source_hal_client_); } TEST_F(UnicastTest, GroupSetActive) { const RawAddress test_address0 = GetTestAddress(0); int group_id = bluetooth::groups::kGroupUnknown; Loading