Audio CAP: Address ANAPIC comments, Part 2.
See ag/30063274.
Remove superfluous field and type from AudioHalCapCriterionV2.
Bug: 364310317
Test: atest VtsHalAudioCoreTargetTest
Change-Id: I8d8f4cad80d98e9abe4910e3ebb08f17f1b70bae
diff --git a/audio/aidl/default/CapEngineConfigXmlConverter.cpp b/audio/aidl/default/CapEngineConfigXmlConverter.cpp
index 8210664..a6e78b9 100644
--- a/audio/aidl/default/CapEngineConfigXmlConverter.cpp
+++ b/audio/aidl/default/CapEngineConfigXmlConverter.cpp
@@ -69,29 +69,36 @@
std::string criterionName = xsdcRule.getSelectionCriterion();
std::string criterionValue = xsdcRule.getValue();
if (iequals(criterionName, toString(Tag::availableInputDevices))) {
- rule.criterion = AudioHalCapCriterionV2::make<Tag::availableInputDevices>();
- rule.criterionTypeValue =
- VALUE_OR_RETURN(convertDeviceTypeToAidl(gLegacyInputDevicePrefix + criterionValue));
+ AudioHalCapCriterionV2::AvailableDevices value;
+ value.values.emplace_back(VALUE_OR_RETURN(
+ convertDeviceTypeToAidl(gLegacyInputDevicePrefix + criterionValue)));
+ rule.criterionAndValue = AudioHalCapCriterionV2::make<Tag::availableInputDevices>(value);
+
} else if (iequals(criterionName, toString(Tag::availableOutputDevices))) {
- rule.criterion = AudioHalCapCriterionV2::make<Tag::availableOutputDevices>();
- rule.criterionTypeValue = VALUE_OR_RETURN(
- convertDeviceTypeToAidl(gLegacyOutputDevicePrefix + criterionValue));
+ AudioHalCapCriterionV2::AvailableDevices value;
+ value.values.emplace_back(VALUE_OR_RETURN(
+ convertDeviceTypeToAidl(gLegacyOutputDevicePrefix + criterionValue)));
+ rule.criterionAndValue = AudioHalCapCriterionV2::make<Tag::availableOutputDevices>(value);
} else if (iequals(criterionName, toString(Tag::availableInputDevicesAddresses))) {
- rule.criterion = AudioHalCapCriterionV2::make<Tag::availableInputDevicesAddresses>();
- rule.criterionTypeValue =
- AudioDeviceAddress::make<AudioDeviceAddress::Tag::id>(criterionValue);
+ AudioHalCapCriterionV2::AvailableDevicesAddresses value;
+ value.values.emplace_back(criterionValue);
+ rule.criterionAndValue =
+ AudioHalCapCriterionV2::make<Tag::availableInputDevicesAddresses>(value);
} else if (iequals(criterionName, toString(Tag::availableOutputDevicesAddresses))) {
- rule.criterion = AudioHalCapCriterionV2::make<Tag::availableOutputDevicesAddresses>();
- rule.criterionTypeValue =
- AudioDeviceAddress::make<AudioDeviceAddress::Tag::id>(criterionValue);
+ AudioHalCapCriterionV2::AvailableDevicesAddresses value;
+ value.values.emplace_back(criterionValue);
+ rule.criterionAndValue =
+ AudioHalCapCriterionV2::make<Tag::availableOutputDevicesAddresses>(value);
} else if (iequals(criterionName, toString(Tag::telephonyMode))) {
- rule.criterion = AudioHalCapCriterionV2::make<Tag::telephonyMode>();
- rule.criterionTypeValue = VALUE_OR_RETURN(convertTelephonyModeToAidl(criterionValue));
+ AudioHalCapCriterionV2::TelephonyMode value;
+ value.values.emplace_back(VALUE_OR_RETURN(convertTelephonyModeToAidl(criterionValue)));
+ rule.criterionAndValue = AudioHalCapCriterionV2::make<Tag::telephonyMode>(value);
} else if (!fastcmp<strncmp>(criterionName.c_str(), kXsdcForceConfigForUse,
strlen(kXsdcForceConfigForUse))) {
- rule.criterion = AudioHalCapCriterionV2::make<Tag::forceConfigForUse>(
- VALUE_OR_RETURN(convertForceUseCriterionToAidl(criterionName)));
- rule.criterionTypeValue = VALUE_OR_RETURN(convertForcedConfigToAidl(criterionValue));
+ AudioHalCapCriterionV2::ForceConfigForUse value;
+ value.forceUse = VALUE_OR_RETURN(convertForceUseCriterionToAidl(criterionName));
+ value.values.emplace_back(VALUE_OR_RETURN(convertForcedConfigToAidl(criterionValue)));
+ rule.criterionAndValue = AudioHalCapCriterionV2::make<Tag::forceConfigForUse>(value);
} else {
LOG(ERROR) << __func__ << " unrecognized criterion " << criterionName;
return unexpected(BAD_VALUE);
diff --git a/audio/aidl/vts/VtsHalAudioCoreConfigTargetTest.cpp b/audio/aidl/vts/VtsHalAudioCoreConfigTargetTest.cpp
index 25fcd46..583143c 100644
--- a/audio/aidl/vts/VtsHalAudioCoreConfigTargetTest.cpp
+++ b/audio/aidl/vts/VtsHalAudioCoreConfigTargetTest.cpp
@@ -355,7 +355,6 @@
const AudioHalCapRule& rule,
const std::vector<std::optional<AudioHalCapCriterionV2>>& criteria) {
const auto& compoundRule = rule.compoundRule;
- using TypeTag = AudioHalCapCriterionV2::Type::Tag;
if (rule.nestedRules.empty() && rule.criterionRules.empty()) {
EXPECT_EQ(compoundRule, AudioHalCapRule::CompoundRule::ALL);
}
@@ -365,8 +364,8 @@
ValidateAudioHalConfigurationRule(nestedRule, criteria);
}
for (const auto& criterionRule : rule.criterionRules) {
- auto selectionCriterion = criterionRule.criterion;
- auto criterionValue = criterionRule.criterionTypeValue;
+ auto selectionCriterion = criterionRule.criterionAndValue;
+ auto criterionValue = criterionRule.criterionAndValue;
auto matchesWhen = criterionRule.matchingRule;
auto criteriaIt = find_if(criteria.begin(), criteria.end(), [&](const auto& criterion) {
return criterion.has_value() &&
@@ -377,50 +376,65 @@
AudioHalCapCriterionV2 matchingCriterion = (*criteriaIt).value();
switch (selectionCriterion.getTag()) {
case AudioHalCapCriterionV2::availableInputDevices: {
- EXPECT_EQ(criterionValue.getTag(), TypeTag::availableDevicesType);
+ const auto& values =
+ criterionValue.get<AudioHalCapCriterionV2::availableInputDevices>()
+ .values;
+ ASSERT_FALSE(values.empty());
validateAudioHalCapRule(
matchingCriterion.get<AudioHalCapCriterionV2::availableInputDevices>(),
- criterionValue.get<TypeTag::availableDevicesType>(), matchesWhen);
+ values[0], matchesWhen);
break;
}
case AudioHalCapCriterionV2::availableOutputDevices: {
- EXPECT_EQ(criterionValue.getTag(), TypeTag::availableDevicesType);
+ const auto& values =
+ criterionValue.get<AudioHalCapCriterionV2::availableOutputDevices>()
+ .values;
+ ASSERT_FALSE(values.empty());
validateAudioHalCapRule(
matchingCriterion.get<AudioHalCapCriterionV2::availableOutputDevices>(),
- criterionValue.get<TypeTag::availableDevicesType>(), matchesWhen);
+ values[0], matchesWhen);
break;
}
case AudioHalCapCriterionV2::availableInputDevicesAddresses: {
- EXPECT_EQ(criterionValue.getTag(), TypeTag::availableDevicesAddressesType);
+ const auto& values =
+ criterionValue
+ .get<AudioHalCapCriterionV2::availableInputDevicesAddresses>()
+ .values;
+ ASSERT_FALSE(values.empty());
validateAudioHalCapRule(
matchingCriterion
.get<AudioHalCapCriterionV2::availableInputDevicesAddresses>(),
- criterionValue.get<TypeTag::availableDevicesAddressesType>(),
- matchesWhen);
+ values[0], matchesWhen);
break;
}
case AudioHalCapCriterionV2::availableOutputDevicesAddresses: {
- EXPECT_EQ(criterionValue.getTag(), TypeTag::availableDevicesAddressesType);
+ const auto& values =
+ criterionValue
+ .get<AudioHalCapCriterionV2::availableOutputDevicesAddresses>()
+ .values;
+ ASSERT_FALSE(values.empty());
validateAudioHalCapRule(
matchingCriterion
.get<AudioHalCapCriterionV2::availableOutputDevicesAddresses>(),
- criterionValue.get<TypeTag::availableDevicesAddressesType>(),
- matchesWhen);
+ values[0], matchesWhen);
break;
}
case AudioHalCapCriterionV2::telephonyMode: {
- EXPECT_EQ(criterionValue.getTag(), TypeTag::telephonyModeType);
+ const auto& values =
+ criterionValue.get<AudioHalCapCriterionV2::telephonyMode>().values;
+ ASSERT_FALSE(values.empty());
validateAudioHalCapRule(
matchingCriterion.get<AudioHalCapCriterionV2::telephonyMode>(),
- criterionValue.get<TypeTag::telephonyModeType>(), matchesWhen);
+ values[0], matchesWhen);
break;
}
case AudioHalCapCriterionV2::forceConfigForUse: {
- EXPECT_EQ(criterionValue.getTag(), TypeTag::forcedConfigType);
+ const auto& values =
+ criterionValue.get<AudioHalCapCriterionV2::forceConfigForUse>().values;
+ ASSERT_FALSE(values.empty());
validateAudioHalCapRule(
- matchingCriterion
- .get<AudioHalCapCriterionV2::forceConfigForUse>(),
- criterionValue.get<TypeTag::forcedConfigType>(), matchesWhen);
+ matchingCriterion.get<AudioHalCapCriterionV2::forceConfigForUse>(),
+ values[0], matchesWhen);
break;
}
default: