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

Commit a41e6a01 authored by Łukasz Rymanowski's avatar Łukasz Rymanowski
Browse files

leaudio: Clear ASE cis id and cis handle on ACL disconnected

Bug: 248931295
Test: atest BluetoothInstrumentationTests
Tag: #feature
Merged-In: Ie3a96cd842b289255a7991a42d2d944a75b5e296
Change-Id: Ie3a96cd842b289255a7991a42d2d944a75b5e296
(cherry picked from commit bd85efe2)
parent 30f465d5
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -2450,14 +2450,13 @@ bool LeAudioDevice::ActivateConfiguredAses(LeAudioContextType context_type) {
}

void LeAudioDevice::DeactivateAllAses(void) {
  /* Just clear states and keep previous configuration for use
   * in case device will get reconnected
   */
  for (auto& ase : ases_) {
    if (ase.active) {
      ase.state = AseState::BTA_LE_AUDIO_ASE_STATE_IDLE;
      ase.data_path_state = AudioStreamDataPathState::IDLE;
      ase.active = false;
      ase.cis_id = le_audio::kInvalidCisId;
      ase.cis_conn_hdl = 0;
    }
  }
}
+19 −1
Original line number Diff line number Diff line
@@ -651,6 +651,8 @@ class LeAudioAseConfigurationTest : public Test {
  void TestAsesInactivated(const LeAudioDevice* device) {
    for (const auto& ase : device->ases_) {
      ASSERT_FALSE(ase.active);
      ASSERT_TRUE(ase.cis_id == ::le_audio::kInvalidCisId);
      ASSERT_TRUE(ase.cis_conn_hdl == 0);
    }
  }

@@ -948,10 +950,20 @@ TEST_F(LeAudioAseConfigurationTest, test_reconnection_media) {

  TestSingleAseConfiguration(LeAudioContextType::MEDIA, data, 2, configuration);

  SetCisInformationToActiveAse();
  /* Generate CISes, symulate CIG creation and assign cis handles to ASEs.*/
  group_->CigGenerateCisIds(LeAudioContextType::MEDIA);
  std::vector<uint16_t> handles = {0x0012, 0x0013};
  group_->CigAssignCisConnHandles(handles);
  group_->CigAssignCisIds(left);
  group_->CigAssignCisIds(right);

  TestActiveAses();
  /* Left got disconnected */
  left->DeactivateAllAses();

  /* Unassign from the group*/
  group_->CigUnassignCis(left);

  TestAsesInactivated(left);

  /* Prepare reconfiguration */
@@ -979,6 +991,12 @@ TEST_F(LeAudioAseConfigurationTest, test_reconnection_media) {
    TestGroupAseConfigurationVerdict(data[i]);
  }

  /* Before device is rejoining, and group already exist, cis handles are
   * assigned before sending codec config
   */
  group_->CigAssignCisIds(left);
  group_->CigAssignCisConnHandlesToAses(left);

  TestActiveAses();
}
}  // namespace