diff --git a/system/audio_hal_interface/le_audio_software.cc b/system/audio_hal_interface/le_audio_software.cc index 25120c7e7095a569359287ede78b5a93fec31fa4..5793b444fbe4ebc746a1016360ce614c0203cb7d 100644 --- a/system/audio_hal_interface/le_audio_software.cc +++ b/system/audio_hal_interface/le_audio_software.cc @@ -325,6 +325,28 @@ void LeAudioClientInterface::Sink::CancelStreamingRequest() { break; } } + + auto aidl_instance = get_aidl_transport_instance(is_broadcaster_); + auto start_request_state = aidl_instance->GetStartRequestState(); + switch (start_request_state) { + case StartRequestState::IDLE: + LOG_WARN(", no pending start stream request"); + return; + case StartRequestState::PENDING_BEFORE_RESUME: + LOG_INFO("Response before sending PENDING to audio HAL"); + aidl_instance->SetStartRequestState(StartRequestState::CANCELED); + return; + case StartRequestState::PENDING_AFTER_RESUME: + LOG_INFO("Response after sending PENDING to audio HAL"); + aidl_instance->ClearStartRequestState(); + get_aidl_client_interface(is_broadcaster_) + ->StreamStarted(aidl::BluetoothAudioCtrlAck::FAILURE); + return; + case StartRequestState::CONFIRMED: + case StartRequestState::CANCELED: + LOG_ERROR("Invalid state, start stream already confirmed"); + break; + } } void LeAudioClientInterface::Sink::CancelStreamingRequestV2() {