mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 16:50:18 +00:00
audio: Clarify profiles management for external devices
Clarify what should happen to mix port profiles after connection of an external device. Add a test to verify this behavior. Also, add an XML file for the test runner for VtsHalAudioCoreTargetTest. Bug: 273252382 Test: atest VtsHalAudioCoreTargetTest Change-Id: I3381dd29c5922bf31fa3a8ae6fa273597e8333a1 Merged-In: I3381dd29c5922bf31fa3a8ae6fa273597e8333a1
This commit is contained in:
@@ -1780,6 +1780,42 @@ TEST_P(AudioCoreModule, ExternalDevicePortRoutes) {
|
||||
}
|
||||
}
|
||||
|
||||
// Note: This test relies on simulation of external device connections by the HAL module.
|
||||
TEST_P(AudioCoreModule, ExternalDeviceMixPortConfigs) {
|
||||
// After an external device has been connected, all mix ports that can be routed
|
||||
// to the device port for the connected device must have non-empty profiles.
|
||||
ASSERT_NO_FATAL_FAILURE(SetUpModuleConfig());
|
||||
std::vector<AudioPort> externalDevicePorts = moduleConfig->getExternalDevicePorts();
|
||||
if (externalDevicePorts.empty()) {
|
||||
GTEST_SKIP() << "No external devices in the module.";
|
||||
}
|
||||
for (const auto& port : externalDevicePorts) {
|
||||
WithDevicePortConnectedState portConnected(GenerateUniqueDeviceAddress(port));
|
||||
ASSERT_NO_FATAL_FAILURE(portConnected.SetUp(module.get()));
|
||||
std::vector<AudioRoute> routes;
|
||||
ASSERT_IS_OK(module->getAudioRoutesForAudioPort(portConnected.getId(), &routes));
|
||||
std::vector<AudioPort> allPorts;
|
||||
ASSERT_IS_OK(module->getAudioPorts(&allPorts));
|
||||
for (const auto& r : routes) {
|
||||
if (r.sinkPortId == portConnected.getId()) {
|
||||
for (const auto& srcPortId : r.sourcePortIds) {
|
||||
const auto srcPortIt = findById(allPorts, srcPortId);
|
||||
ASSERT_NE(allPorts.end(), srcPortIt) << "port ID " << srcPortId;
|
||||
EXPECT_NE(0UL, srcPortIt->profiles.size())
|
||||
<< " source port " << srcPortIt->toString() << " must have its profiles"
|
||||
<< " populated following external device connection";
|
||||
}
|
||||
} else {
|
||||
const auto sinkPortIt = findById(allPorts, r.sinkPortId);
|
||||
ASSERT_NE(allPorts.end(), sinkPortIt) << "port ID " << r.sinkPortId;
|
||||
EXPECT_NE(0UL, sinkPortIt->profiles.size())
|
||||
<< " source port " << sinkPortIt->toString() << " must have its"
|
||||
<< " profiles populated following external device connection";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST_P(AudioCoreModule, MasterMute) {
|
||||
bool isSupported = false;
|
||||
EXPECT_NO_FATAL_FAILURE(TestAccessors<bool>(module.get(), &IModule::getMasterMute,
|
||||
|
||||
Reference in New Issue
Block a user