audio: Set connectedProfiles for non-attached device ports.

For external (non-attached) device ports that have dynamic
profiles, 'connectedProfiles' must be provided. They are
used when 'ModuleDebug.simulateDeviceConnections' is enabled.

Bug: 205884982
Test: atest VtsHalAudioCoreTargetTest
Change-Id: Ic82e47abc50e2958ed93f5d4d18082b569ecb67b
This commit is contained in:
Lorena Torres-Huerta
2023-01-14 02:49:41 +00:00
committed by Mikhail Naganov
parent dc9d1a4b42
commit a29393db39
4 changed files with 41 additions and 2 deletions

View File

@@ -185,6 +185,11 @@ std::ostream& operator<<(std::ostream& os, Module::Type t) {
return os;
}
Module::Module(Type type, std::unique_ptr<Configuration>&& config)
: mType(type), mConfig(std::move(config)) {
populateConnectedProfiles();
}
void Module::cleanUpPatch(int32_t patchId) {
erase_all_values(mPatches, std::set<int32_t>{patchId});
}
@@ -320,6 +325,22 @@ ndk::ScopedAStatus Module::findPortIdForNewStream(int32_t in_portConfigId, Audio
return ndk::ScopedAStatus::ok();
}
void Module::populateConnectedProfiles() {
Configuration& config = getConfig();
for (const AudioPort& port : config.ports) {
if (port.ext.getTag() == AudioPortExt::device) {
if (auto devicePort = port.ext.get<AudioPortExt::device>();
!devicePort.device.type.connection.empty() && port.profiles.empty()) {
if (auto connIt = config.connectedProfiles.find(port.id);
connIt == config.connectedProfiles.end()) {
config.connectedProfiles.emplace(
port.id, internal::getStandard16And24BitPcmAudioProfiles());
}
}
}
}
}
template <typename C>
std::set<int32_t> Module::portIdsFromPortConfigIds(C portConfigIds) {
std::set<int32_t> result;