audio: Implement proper parsing of masks in XsdcConversion am: cc21b6f2e6
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2794106
Change-Id: I5b839d0d5b820ff3f45a9aed291e1e4020842709
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/audio/aidl/default/XsdcConversion.cpp b/audio/aidl/default/XsdcConversion.cpp
index 2feb0c3..9e30347 100644
--- a/audio/aidl/default/XsdcConversion.cpp
+++ b/audio/aidl/default/XsdcConversion.cpp
@@ -141,11 +141,12 @@
}
ConversionResult<int> convertGainModeToAidl(const std::vector<ap_xsd::AudioGainMode>& gainModeVec) {
- static const char gainModeSeparator = ' ';
int gainModeMask = 0;
for (const ap_xsd::AudioGainMode& gainMode : gainModeVec) {
- gainModeMask |= static_cast<int>(::android::GainModeConverter::maskFromString(
- ap_xsd::toString(gainMode), &gainModeSeparator));
+ audio_gain_mode_t legacyGainMode;
+ if (::android::GainModeConverter::fromString(ap_xsd::toString(gainMode), legacyGainMode)) {
+ gainModeMask |= static_cast<int>(legacyGainMode);
+ }
}
return gainModeMask;
}
@@ -204,22 +205,25 @@
ConversionResult<AudioIoFlags> convertIoFlagsToAidl(
const std::vector<ap_xsd::AudioInOutFlag>& flags, const ap_xsd::Role role,
bool flagsForMixPort) {
- static const char flagSeparator = ' ';
int flagMask = 0;
if ((role == ap_xsd::Role::sink && flagsForMixPort) ||
(role == ap_xsd::Role::source && !flagsForMixPort)) {
for (const ap_xsd::AudioInOutFlag& flag : flags) {
- flagMask |= static_cast<int>(::android::InputFlagConverter::maskFromString(
- ap_xsd::toString(flag), &flagSeparator));
+ audio_input_flags_t legacyFlag;
+ if (::android::InputFlagConverter::fromString(ap_xsd::toString(flag), legacyFlag)) {
+ flagMask |= static_cast<int>(legacyFlag);
+ }
}
return AudioIoFlags::make<AudioIoFlags::Tag::input>(flagMask);
} else {
for (const ap_xsd::AudioInOutFlag& flag : flags) {
- flagMask |= static_cast<int>(::android::OutputFlagConverter::maskFromString(
- ap_xsd::toString(flag), &flagSeparator));
+ audio_output_flags_t legacyFlag;
+ if (::android::OutputFlagConverter::fromString(ap_xsd::toString(flag), legacyFlag)) {
+ flagMask |= static_cast<int>(legacyFlag);
+ }
}
+ return AudioIoFlags::make<AudioIoFlags::Tag::output>(flagMask);
}
- return AudioIoFlags::make<AudioIoFlags::Tag::output>(flagMask);
}
ConversionResult<AudioPort> convertDevicePortToAidl(