Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9604dae9 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Audio CAP: Address ANAPIC comments, Part 2." into main

parents c008dd44 802a1dab
Loading
Loading
Loading
Loading
+24 −17
Original line number Diff line number Diff line
@@ -69,29 +69,36 @@ ConversionResult<AudioHalCapRule::CriterionRule> convertCriterionRuleToAidl(
    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);
+33 −19
Original line number Diff line number Diff line
@@ -355,7 +355,6 @@ class AudioCoreConfig : public testing::TestWithParam<std::string> {
            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 @@ class AudioCoreConfig : public testing::TestWithParam<std::string> {
            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 @@ class AudioCoreConfig : public testing::TestWithParam<std::string> {
            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: