Loading system/bta/le_audio/devices.cc +10 −0 Original line number Diff line number Diff line Loading @@ -189,6 +189,16 @@ void LeAudioDeviceGroup::Deactivate(void) { } } le_audio::types::CigState LeAudioDeviceGroup::GetCigState(void) { return cig_state_; } void LeAudioDeviceGroup::SetCigState(le_audio::types::CigState state) { LOG_VERBOSE("%s -> %s", bluetooth::common::ToString(cig_state_).c_str(), bluetooth::common::ToString(state).c_str()); cig_state_ = state; } bool LeAudioDeviceGroup::Activate(LeAudioContextType context_type) { for (auto leAudioDevice : leAudioDevices_) { if (leAudioDevice.expired()) continue; Loading system/bta/le_audio/devices.h +2 −0 Original line number Diff line number Diff line Loading @@ -227,6 +227,8 @@ class LeAudioDeviceGroup { types::LeAudioContextType context_type = types::LeAudioContextType::RFU); bool Activate(types::LeAudioContextType context_type); void Deactivate(void); types::CigState GetCigState(void); void SetCigState(le_audio::types::CigState state); void CigClearCis(void); void ClearSinksFromConfiguration(void); void ClearSourcesFromConfiguration(void); Loading system/bta/le_audio/state_machine.cc +15 −14 Original line number Diff line number Diff line Loading @@ -101,6 +101,7 @@ using le_audio::types::ase; using le_audio::types::AseState; using le_audio::types::AudioContexts; using le_audio::types::AudioStreamDataPathState; using le_audio::types::CigState; using le_audio::types::CodecLocation; namespace { Loading Loading @@ -361,18 +362,18 @@ class LeAudioGroupStateMachineImpl : public LeAudioGroupStateMachine { } if (status != HCI_SUCCESS) { group->cig_state_ = le_audio::types::CigState::NONE; group->SetCigState(CigState::NONE); LOG_ERROR(", failed to create CIG, reason: 0x%02x, new cig state: %s", +status, ToString(group->cig_state_).c_str()); StopStream(group); return; } ASSERT_LOG(group->cig_state_ == le_audio::types::CigState::CREATING, ASSERT_LOG(group->GetCigState() == CigState::CREATING, "Unexpected CIG creation group id: %d, cig state: %s", group->group_id_, ToString(group->cig_state_).c_str()); group->cig_state_ = le_audio::types::CigState::CREATED; group->SetCigState(CigState::CREATED); LOG_INFO("Group: %p, id: %d cig state: %s, number of cis handles: %d", group, group->group_id_, ToString(group->cig_state_).c_str(), static_cast<int>(conn_handles.size())); Loading Loading @@ -406,19 +407,19 @@ class LeAudioGroupStateMachineImpl : public LeAudioGroupStateMachine { void ProcessHciNotifOnCigRemove(uint8_t status, LeAudioDeviceGroup* group) override { if (status) { group->cig_state_ = le_audio::types::CigState::CREATED; if (status != HCI_SUCCESS) { group->SetCigState(CigState::CREATED); LOG_ERROR( "failed to remove cig, id: %d, status 0x%02x, new cig state: %s", group->group_id_, +status, ToString(group->cig_state_).c_str()); group->group_id_, +status, ToString(group->GetCigState()).c_str()); return; } ASSERT_LOG(group->cig_state_ == le_audio::types::CigState::REMOVING, ASSERT_LOG(group->GetCigState() == CigState::REMOVING, "Unexpected CIG remove group id: %d, cig state %s", group->group_id_, ToString(group->cig_state_).c_str()); group->group_id_, ToString(group->GetCigState()).c_str()); group->cig_state_ = le_audio::types::CigState::NONE; group->SetCigState(CigState::NONE); LeAudioDevice* leAudioDevice = group->GetFirstDevice(); if (!leAudioDevice) return; Loading Loading @@ -556,13 +557,13 @@ class LeAudioGroupStateMachineImpl : public LeAudioGroupStateMachine { void RemoveCigForGroup(LeAudioDeviceGroup* group) { LOG_DEBUG("Group: %p, id: %d cig state: %s", group, group->group_id_, ToString(group->cig_state_).c_str()); if (group->cig_state_ != le_audio::types::CigState::CREATED) { if (group->GetCigState() != CigState::CREATED) { LOG_WARN("Group: %p, id: %d cig state: %s cannot be removed", group, group->group_id_, ToString(group->cig_state_).c_str()); return; } group->cig_state_ = le_audio::types::CigState::REMOVING; group->SetCigState(CigState::REMOVING); IsoManager::GetInstance()->RemoveCig(group->group_id_); LOG_DEBUG("Group: %p, id: %d cig state: %s", group, group->group_id_, ToString(group->cig_state_).c_str()); Loading Loading @@ -1143,7 +1144,7 @@ class LeAudioGroupStateMachineImpl : public LeAudioGroupStateMachine { LOG_DEBUG("Group: %p, id: %d cig state: %s", group, group->group_id_, ToString(group->cig_state_).c_str()); if (group->cig_state_ != le_audio::types::CigState::NONE) { if (group->GetCigState() != CigState::NONE) { LOG_WARN(" Group %p, id: %d has invalid cig state: %s ", group, group->group_id_, ToString(group->cig_state_).c_str()); return; Loading Loading @@ -1233,7 +1234,7 @@ class LeAudioGroupStateMachineImpl : public LeAudioGroupStateMachine { .max_trans_lat_mtos = max_trans_lat_mtos, .cis_cfgs = std::move(cis_cfgs), }; group->cig_state_ = le_audio::types::CigState::CREATING; group->SetCigState(CigState::CREATING); IsoManager::GetInstance()->CreateCig(group->group_id_, std::move(param)); LOG_DEBUG("Group: %p, id: %d cig state: %s", group, group->group_id_, ToString(group->cig_state_).c_str()); Loading Loading @@ -1447,7 +1448,7 @@ class LeAudioGroupStateMachineImpl : public LeAudioGroupStateMachine { return; } if (group->cig_state_ == le_audio::types::CigState::CREATED) if (group->GetCigState() == CigState::CREATED) group->CigAssignCisConnHandlesToAses(leAudioDevice); ase = leAudioDevice->GetFirstActiveAse(); Loading Loading
system/bta/le_audio/devices.cc +10 −0 Original line number Diff line number Diff line Loading @@ -189,6 +189,16 @@ void LeAudioDeviceGroup::Deactivate(void) { } } le_audio::types::CigState LeAudioDeviceGroup::GetCigState(void) { return cig_state_; } void LeAudioDeviceGroup::SetCigState(le_audio::types::CigState state) { LOG_VERBOSE("%s -> %s", bluetooth::common::ToString(cig_state_).c_str(), bluetooth::common::ToString(state).c_str()); cig_state_ = state; } bool LeAudioDeviceGroup::Activate(LeAudioContextType context_type) { for (auto leAudioDevice : leAudioDevices_) { if (leAudioDevice.expired()) continue; Loading
system/bta/le_audio/devices.h +2 −0 Original line number Diff line number Diff line Loading @@ -227,6 +227,8 @@ class LeAudioDeviceGroup { types::LeAudioContextType context_type = types::LeAudioContextType::RFU); bool Activate(types::LeAudioContextType context_type); void Deactivate(void); types::CigState GetCigState(void); void SetCigState(le_audio::types::CigState state); void CigClearCis(void); void ClearSinksFromConfiguration(void); void ClearSourcesFromConfiguration(void); Loading
system/bta/le_audio/state_machine.cc +15 −14 Original line number Diff line number Diff line Loading @@ -101,6 +101,7 @@ using le_audio::types::ase; using le_audio::types::AseState; using le_audio::types::AudioContexts; using le_audio::types::AudioStreamDataPathState; using le_audio::types::CigState; using le_audio::types::CodecLocation; namespace { Loading Loading @@ -361,18 +362,18 @@ class LeAudioGroupStateMachineImpl : public LeAudioGroupStateMachine { } if (status != HCI_SUCCESS) { group->cig_state_ = le_audio::types::CigState::NONE; group->SetCigState(CigState::NONE); LOG_ERROR(", failed to create CIG, reason: 0x%02x, new cig state: %s", +status, ToString(group->cig_state_).c_str()); StopStream(group); return; } ASSERT_LOG(group->cig_state_ == le_audio::types::CigState::CREATING, ASSERT_LOG(group->GetCigState() == CigState::CREATING, "Unexpected CIG creation group id: %d, cig state: %s", group->group_id_, ToString(group->cig_state_).c_str()); group->cig_state_ = le_audio::types::CigState::CREATED; group->SetCigState(CigState::CREATED); LOG_INFO("Group: %p, id: %d cig state: %s, number of cis handles: %d", group, group->group_id_, ToString(group->cig_state_).c_str(), static_cast<int>(conn_handles.size())); Loading Loading @@ -406,19 +407,19 @@ class LeAudioGroupStateMachineImpl : public LeAudioGroupStateMachine { void ProcessHciNotifOnCigRemove(uint8_t status, LeAudioDeviceGroup* group) override { if (status) { group->cig_state_ = le_audio::types::CigState::CREATED; if (status != HCI_SUCCESS) { group->SetCigState(CigState::CREATED); LOG_ERROR( "failed to remove cig, id: %d, status 0x%02x, new cig state: %s", group->group_id_, +status, ToString(group->cig_state_).c_str()); group->group_id_, +status, ToString(group->GetCigState()).c_str()); return; } ASSERT_LOG(group->cig_state_ == le_audio::types::CigState::REMOVING, ASSERT_LOG(group->GetCigState() == CigState::REMOVING, "Unexpected CIG remove group id: %d, cig state %s", group->group_id_, ToString(group->cig_state_).c_str()); group->group_id_, ToString(group->GetCigState()).c_str()); group->cig_state_ = le_audio::types::CigState::NONE; group->SetCigState(CigState::NONE); LeAudioDevice* leAudioDevice = group->GetFirstDevice(); if (!leAudioDevice) return; Loading Loading @@ -556,13 +557,13 @@ class LeAudioGroupStateMachineImpl : public LeAudioGroupStateMachine { void RemoveCigForGroup(LeAudioDeviceGroup* group) { LOG_DEBUG("Group: %p, id: %d cig state: %s", group, group->group_id_, ToString(group->cig_state_).c_str()); if (group->cig_state_ != le_audio::types::CigState::CREATED) { if (group->GetCigState() != CigState::CREATED) { LOG_WARN("Group: %p, id: %d cig state: %s cannot be removed", group, group->group_id_, ToString(group->cig_state_).c_str()); return; } group->cig_state_ = le_audio::types::CigState::REMOVING; group->SetCigState(CigState::REMOVING); IsoManager::GetInstance()->RemoveCig(group->group_id_); LOG_DEBUG("Group: %p, id: %d cig state: %s", group, group->group_id_, ToString(group->cig_state_).c_str()); Loading Loading @@ -1143,7 +1144,7 @@ class LeAudioGroupStateMachineImpl : public LeAudioGroupStateMachine { LOG_DEBUG("Group: %p, id: %d cig state: %s", group, group->group_id_, ToString(group->cig_state_).c_str()); if (group->cig_state_ != le_audio::types::CigState::NONE) { if (group->GetCigState() != CigState::NONE) { LOG_WARN(" Group %p, id: %d has invalid cig state: %s ", group, group->group_id_, ToString(group->cig_state_).c_str()); return; Loading Loading @@ -1233,7 +1234,7 @@ class LeAudioGroupStateMachineImpl : public LeAudioGroupStateMachine { .max_trans_lat_mtos = max_trans_lat_mtos, .cis_cfgs = std::move(cis_cfgs), }; group->cig_state_ = le_audio::types::CigState::CREATING; group->SetCigState(CigState::CREATING); IsoManager::GetInstance()->CreateCig(group->group_id_, std::move(param)); LOG_DEBUG("Group: %p, id: %d cig state: %s", group, group->group_id_, ToString(group->cig_state_).c_str()); Loading Loading @@ -1447,7 +1448,7 @@ class LeAudioGroupStateMachineImpl : public LeAudioGroupStateMachine { return; } if (group->cig_state_ == le_audio::types::CigState::CREATED) if (group->GetCigState() == CigState::CREATED) group->CigAssignCisConnHandlesToAses(leAudioDevice); ase = leAudioDevice->GetFirstActiveAse(); Loading