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

Commit 790cd128 authored by chenxin20's avatar chenxin20
Browse files

audio: fix aidl strategy name mapping error



When getDevicesForProductStrategy, the strategy is obtained from mLegacyStrategyMap,
mLegacyStrategyMap will compare the strategy name from aidl with the predefined
getLegacyStrategy through getProductStrategyByName.
legacy.name in aidl2legacy_AudioHalProductStrategy_ProductStrategy and
getLegacyStrategy definition cannot match.

Change-Id: I9689e05fb7dfc8418d2aef599c856cd2cba54763
Signed-off-by: default avatarchenxin20 <chenxin20@xiaomi.com>
parent b56deb05
Loading
Loading
Loading
Loading
+24 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
#include <string>
#include <string>
#include <vector>
#include <unordered_map>

#define LOG_TAG "APM::AudioPolicyEngine/Config"
//#define LOG_NDEBUG 0
@@ -51,6 +52,27 @@ static const char *const gReferenceAttributeName = "name";

namespace {

ConversionResult<std::string> aidl2legacy_AudioHalProductStrategy_ProductStrategyType(int id) {
    using AudioProductStrategyType = media::audio::common::AudioProductStrategyType;

#define STRATEGY_ENTRY(name) {static_cast<int>(AudioProductStrategyType::name), "STRATEGY_" #name}
    static const std::unordered_map<int, std::string> productStrategyMap = {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

    auto it = productStrategyMap.find(id);
    if (it == productStrategyMap.end()) {
        return base::unexpected(BAD_VALUE);
    }
    return it->second;
}

ConversionResult<AttributesGroup> aidl2legacy_AudioHalAttributeGroup_AttributesGroup(
        const media::audio::common::AudioHalAttributesGroup& aidl) {
    AttributesGroup legacy;
@@ -65,7 +87,8 @@ ConversionResult<AttributesGroup> aidl2legacy_AudioHalAttributeGroup_AttributesG
ConversionResult<ProductStrategy> aidl2legacy_AudioHalProductStrategy_ProductStrategy(
        const media::audio::common::AudioHalProductStrategy& aidl) {
    ProductStrategy legacy;
    legacy.name = "strategy_" + std::to_string(aidl.id);
    legacy.name = VALUE_OR_RETURN(
                    aidl2legacy_AudioHalProductStrategy_ProductStrategyType(aidl.id));
    legacy.attributesGroups = VALUE_OR_RETURN(convertContainer<AttributesGroups>(
                    aidl.attributesGroups,
                    aidl2legacy_AudioHalAttributeGroup_AttributesGroup));