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

Commit 04f549a1 authored by Oscar Azucena's avatar Oscar Azucena
Browse files

Add check volume group id uniqueness

If a volume group id is present it must be unique among all volume
groups in the same config. Future change should take into account audio
zone, zone config id, and volume group id to update the volume info.

Bug: 359686069
Bug: 379200397
Test: atest com.android.car.audio
Flag: android.car.feature.audio_control_hal_configuration
Change-Id: I3dbbfee01a78ffad0acb5d59a4594afccbd6f7ac
parent eceef35c
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -199,7 +199,7 @@ bool hadValidAudioFadeConfiguration(const AudioFadeConfiguration& fadeConfigurat
void validateVolumeGroupInfo(const AudioZoneConfig& audioZoneConfig,
                             const VolumeGroupConfig& volumeGroupConfig,
                             const AudioDeviceConfiguration& deviceConfig,
                             std::set<std::string>& groupDevices) {
                             std::set<std::string>& groupDevices, std::set<int>& groupIds) {
    std::string zoneConfigName = testutils::toAlphaNumeric(ToString(audioZoneConfig.name));
    std::string volumeGroupName = testutils::toAlphaNumeric(ToString(volumeGroupConfig.name));
    std::string volumeGroupInfo =
@@ -212,6 +212,10 @@ void validateVolumeGroupInfo(const AudioZoneConfig& audioZoneConfig,
        EXPECT_FALSE(volumeGroupConfig.name.empty())
                << volumeGroupInfo << " must have a non-empty volume name";
    }
    if (volumeGroupConfig.id != VolumeGroupConfig::UNASSIGNED_ID) {
        EXPECT_TRUE(groupIds.insert(volumeGroupConfig.id).second)
                << volumeGroupInfo << " repeats volume group id " << volumeGroupConfig.id;
    }
    for (const auto& audioRoute : volumeGroupConfig.carAudioRoutes) {
        std::string routeMessage;
        EXPECT_TRUE(hasValidAudioRoute(audioRoute, routeMessage, groupDevices))
@@ -257,6 +261,7 @@ void validateAudioZoneConfiguration(const AudioZone& carAudioZone,
    EXPECT_FALSE(audioZoneConfig.volumeGroups.empty())
            << "Volume groups for zone config " << zoneConfigName.c_str();
    std::set<std::string> groupDevices;
    std::set<int> groupIds;
    for (const auto& volumeGroup : audioZoneConfig.volumeGroups) {
        ALOGI("Zone config name %s volume group test %s", zoneConfigName.c_str(),
              ToString(volumeGroup.name).c_str());
@@ -271,7 +276,7 @@ void validateAudioZoneConfiguration(const AudioZone& carAudioZone,
        if (deviceConfig.routingConfig == CONFIGURABLE_AUDIO_ENGINE_ROUTING) {
            groupDevices.clear();
        }
        validateVolumeGroupInfo(audioZoneConfig, volumeGroup, deviceConfig, groupDevices);
        validateVolumeGroupInfo(audioZoneConfig, volumeGroup, deviceConfig, groupDevices, groupIds);
    }
    const auto& audioZoneContexts = carAudioZone.audioZoneContext.audioContextInfos;
    std::map<std::string, AudioZoneContextInfo> infoNameToInfo;