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

Commit 6a34ae50 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "audio: capEngine: Allow built-in strategies to omit the 'id' attribute" into main

parents 7aa8a0f9 460bd6d9
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ static constexpr const char* gStreamsParameter = "streams";
static constexpr const char* gOutputDevicesParameter = "selected_output_devices";
static constexpr const char* gOutputDeviceAddressParameter = "device_address";
static constexpr const char* gStrategyPrefix = "vx_";
static constexpr const char* gLegacyStrategyPrefix = "STRATEGY_";
static constexpr const char* gLegacyOutputDevicePrefix = "AUDIO_DEVICE_OUT_";
static constexpr const char* gLegacyInputDevicePrefix = "AUDIO_DEVICE_IN_";
static constexpr const char* gLegacyStreamPrefix = "AUDIO_STREAM_";
@@ -159,6 +160,17 @@ ConversionResult<int> getAudioProductStrategyId(const std::string& path) {
            }
            return strategyId;
        }
        pos = stringToken.find(gLegacyStrategyPrefix);
        if (pos != std::string::npos) {
            std::string legacyStrategyIdLiteral = stringToken.substr(pos);
            const auto legacyStrategies = getLegacyProductStrategyMap();
            if (const auto& it = legacyStrategies.find(legacyStrategyIdLiteral);
                    it != legacyStrategies.end()) {
                return it->second;
            }
            LOG(ERROR) << "Invalid legacy strategy " << stringToken << " from path " << path;
            return unexpected(BAD_VALUE);
        }
    }
    return unexpected(BAD_VALUE);
}
+1 −15
Original line number Diff line number Diff line
@@ -59,20 +59,6 @@ namespace aidl::android::hardware::audio::core::internal {
static constexpr char kCapEngineConfigFileName[] =
        "/parameter-framework/Settings/Policy/PolicyConfigurableDomains.xml";

void EngineConfigXmlConverter::initProductStrategyMap() {
#define STRATEGY_ENTRY(name) {"STRATEGY_" #name, static_cast<int>(AudioProductStrategyType::name)}

    mProductStrategyMap = {STRATEGY_ENTRY(MEDIA),
                           STRATEGY_ENTRY(PHONE),
                           STRATEGY_ENTRY(SONIFICATION),
                           STRATEGY_ENTRY(SONIFICATION_RESPECTFUL),
                           STRATEGY_ENTRY(DTMF),
                           STRATEGY_ENTRY(ENFORCED_AUDIBLE),
                           STRATEGY_ENTRY(TRANSMITTED_THROUGH_SPEAKER),
                           STRATEGY_ENTRY(ACCESSIBILITY)};
#undef STRATEGY_ENTRY
}

ConversionResult<int> EngineConfigXmlConverter::convertProductStrategyNameToAidl(
        const std::string& xsdcProductStrategyName) {
    const auto [it, success] = mProductStrategyMap.insert(
@@ -242,7 +228,7 @@ AudioHalEngineConfig& EngineConfigXmlConverter::getAidlEngineConfig() {
}

void EngineConfigXmlConverter::init() {
    initProductStrategyMap();
    mProductStrategyMap = getLegacyProductStrategyMap();
    if (getXsdcConfig()->hasProductStrategies()) {
        mAidlEngineConfig.productStrategies = VALUE_OR_FATAL(
                (convertWrappedCollectionToAidl<eng_xsd::ProductStrategies,
+19 −0
Original line number Diff line number Diff line
@@ -816,4 +816,23 @@ ConversionResult<AudioHalVolumeCurve::CurvePoint> convertCurvePointToAidl(
    }
    return aidlCurvePoint;
}

/**
 * The hard coded id must be in sync with policy.h definition of legacy strategy ids.
 */
std::unordered_map<std::string, int> getLegacyProductStrategyMap() {
#define STRATEGY_ENTRY(name, id) {"STRATEGY_" #name, static_cast<int>(id)}

        return {STRATEGY_ENTRY(MEDIA, 5),
                STRATEGY_ENTRY(PHONE, 0),
                STRATEGY_ENTRY(SONIFICATION, 1),
                STRATEGY_ENTRY(SONIFICATION_RESPECTFUL, 4),
                STRATEGY_ENTRY(DTMF, 6),
                STRATEGY_ENTRY(ENFORCED_AUDIBLE, 2),
                STRATEGY_ENTRY(CALL_ASSISTANT, 7),
                STRATEGY_ENTRY(TRANSMITTED_THROUGH_SPEAKER,8),
                STRATEGY_ENTRY(ACCESSIBILITY, 3)};
#undef STRATEGY_ENTRY
}

}  // namespace aidl::android::hardware::audio::core::internal
+1 −0
Original line number Diff line number Diff line
@@ -64,4 +64,5 @@ ConversionResult<aidlaudiocommon::AudioStreamType> convertAudioStreamTypeToAidl(
        const engineconfiguration::Stream& xsdStreamType);
ConversionResult<int32_t> convertAudioFlagsToAidl(
        const std::vector<engineconfiguration::FlagType>& xsdcFlagTypeVec);
std::unordered_map<std::string, int> getLegacyProductStrategyMap();
}  // namespace aidl::android::hardware::audio::core::internal