From 37fe9e84b5ade4138c8f4c05041233799012f4a9 Mon Sep 17 00:00:00 2001 From: Mikhail Naganov Date: Tue, 28 Nov 2023 17:07:23 -0800 Subject: [PATCH] audio: Fix parsing of I/O flags from XML config The XML parser was missing a step to convert a value from legacy domain into AIDL. Bug: 293384960 Test: parse config with AUDIO_OUTPUT_FLAG_VOIP_RX Change-Id: I1e7778cbf093c2a393e9b2431c9a72b6020cf7be --- audio/aidl/default/XsdcConversion.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/audio/aidl/default/XsdcConversion.cpp b/audio/aidl/default/XsdcConversion.cpp index 9e303471cd..172094911c 100644 --- a/audio/aidl/default/XsdcConversion.cpp +++ b/audio/aidl/default/XsdcConversion.cpp @@ -205,24 +205,28 @@ ConversionResult convertAudioProfileToAidl(const ap_xsd::Profile& ConversionResult convertIoFlagsToAidl( const std::vector& flags, const ap_xsd::Role role, bool flagsForMixPort) { - int flagMask = 0; + int legacyFlagMask = 0; if ((role == ap_xsd::Role::sink && flagsForMixPort) || (role == ap_xsd::Role::source && !flagsForMixPort)) { for (const ap_xsd::AudioInOutFlag& flag : flags) { audio_input_flags_t legacyFlag; if (::android::InputFlagConverter::fromString(ap_xsd::toString(flag), legacyFlag)) { - flagMask |= static_cast(legacyFlag); + legacyFlagMask |= static_cast(legacyFlag); } } - return AudioIoFlags::make(flagMask); + return AudioIoFlags::make( + VALUE_OR_FATAL(legacy2aidl_audio_input_flags_t_int32_t_mask( + static_cast(legacyFlagMask)))); } else { for (const ap_xsd::AudioInOutFlag& flag : flags) { audio_output_flags_t legacyFlag; if (::android::OutputFlagConverter::fromString(ap_xsd::toString(flag), legacyFlag)) { - flagMask |= static_cast(legacyFlag); + legacyFlagMask |= static_cast(legacyFlag); } } - return AudioIoFlags::make(flagMask); + return AudioIoFlags::make( + VALUE_OR_FATAL(legacy2aidl_audio_output_flags_t_int32_t_mask( + static_cast(legacyFlagMask)))); } }