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

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

leaudio: Clear configuration cache when device got disconnected.

Make sure when device will try to attach to the stream after
disconnection, it will generate new configution valid for the connected
devices in the group

Bug: 304538560
Test: atest bluetooth_le_audio_test
Tag: #feature
Change-Id: Ifa6871f2ec384b59cd20e4d20c3945fb23ad3754
parent 698e6238
Loading
Loading
Loading
Loading
+8 −12
Original line number Diff line number Diff line
@@ -744,6 +744,14 @@ class LeAudioGroupStateMachineImpl : public LeAudioGroupStateMachine {
    /* mark ASEs as not used. */
    leAudioDevice->DeactivateAllAses();

    /* Update the current group audio context availability which could change
     * due to disconnected group member.
     */
    group->ReloadAudioLocations();
    group->ReloadAudioDirections();
    group->UpdateAudioContextAvailability();
    group->InvalidateCachedConfigurations();

    /* If group is in Idle and not transitioning, update the current group
     * audio context availability which could change due to disconnected group
     * member.
@@ -751,10 +759,6 @@ class LeAudioGroupStateMachineImpl : public LeAudioGroupStateMachine {
    if ((group->GetState() == AseState::BTA_LE_AUDIO_ASE_STATE_IDLE) &&
        !group->IsInTransition()) {
      LOG_INFO("group: %d is in IDLE", group->group_id_);
      group->ReloadAudioLocations();
      group->ReloadAudioDirections();
      group->UpdateAudioContextAvailability();
      group->InvalidateCachedConfigurations();

      /* When OnLeAudioDeviceSetStateTimeout happens, group will transition
       * to IDLE, and after that an ACL disconnect will be triggered. We need
@@ -775,14 +779,6 @@ class LeAudioGroupStateMachineImpl : public LeAudioGroupStateMachine {
        ADDRESS_TO_LOGGABLE_CSTR(leAudioDevice->address_),
        group->IsAnyDeviceConnected(), group->HaveAllCisesDisconnected());

    /* Update the current group audio context availability which could change
     * due to disconnected group member.
     */
    group->ReloadAudioLocations();
    group->ReloadAudioDirections();
    group->UpdateAudioContextAvailability();
    group->InvalidateCachedConfigurations();

    if (group->IsAnyDeviceConnected()) {
      /*
       * ACL of one of the device has been dropped. If number of CISes has