mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-02 06:22:53 +00:00
audio: Improve testing of point-to-point connections
Point-to-point connections (analog, HDMI, SPDIF) do not use a device address. Reflect that in `GenerateUniqueDeviceAddress`. Add an analog headset into the test configuration. Bug: 300648357 Test: atest VtsHalAudioCoreTargetTest (cherry picked from https://android-review.googlesource.com/q/commit:fe47b00628a5a9092455d370709ed63cc6b9305a) Merged-In: Id1d0b1b60df40c2474fe3151067152b8e0a261c3 Change-Id: Id1d0b1b60df40c2474fe3151067152b8e0a261c3
This commit is contained in:
committed by
Cherrypicker Worker
parent
1f8c3b6f3f
commit
426b876266
@@ -144,28 +144,36 @@ AudioDeviceAddress::Tag suggestDeviceAddressTag(const AudioDeviceDescription& de
|
||||
}
|
||||
|
||||
AudioPort GenerateUniqueDeviceAddress(const AudioPort& port) {
|
||||
// Point-to-point connections do not use addresses.
|
||||
static const std::set<std::string> kPointToPointConnections = {
|
||||
AudioDeviceDescription::CONNECTION_ANALOG, AudioDeviceDescription::CONNECTION_HDMI,
|
||||
AudioDeviceDescription::CONNECTION_HDMI_ARC,
|
||||
AudioDeviceDescription::CONNECTION_HDMI_EARC, AudioDeviceDescription::CONNECTION_SPDIF};
|
||||
static int nextId = 0;
|
||||
using Tag = AudioDeviceAddress::Tag;
|
||||
const auto& deviceDescription = port.ext.get<AudioPortExt::Tag::device>().device.type;
|
||||
AudioDeviceAddress address;
|
||||
switch (suggestDeviceAddressTag(port.ext.get<AudioPortExt::Tag::device>().device.type)) {
|
||||
case Tag::id:
|
||||
address = AudioDeviceAddress::make<Tag::id>(std::to_string(++nextId));
|
||||
break;
|
||||
case Tag::mac:
|
||||
address = AudioDeviceAddress::make<Tag::mac>(
|
||||
std::vector<uint8_t>{1, 2, 3, 4, 5, static_cast<uint8_t>(++nextId & 0xff)});
|
||||
break;
|
||||
case Tag::ipv4:
|
||||
address = AudioDeviceAddress::make<Tag::ipv4>(
|
||||
std::vector<uint8_t>{192, 168, 0, static_cast<uint8_t>(++nextId & 0xff)});
|
||||
break;
|
||||
case Tag::ipv6:
|
||||
address = AudioDeviceAddress::make<Tag::ipv6>(std::vector<int32_t>{
|
||||
0xfc00, 0x0123, 0x4567, 0x89ab, 0xcdef, 0, 0, ++nextId & 0xffff});
|
||||
break;
|
||||
case Tag::alsa:
|
||||
address = AudioDeviceAddress::make<Tag::alsa>(std::vector<int32_t>{1, ++nextId});
|
||||
break;
|
||||
if (kPointToPointConnections.count(deviceDescription.connection) == 0) {
|
||||
switch (suggestDeviceAddressTag(deviceDescription)) {
|
||||
case Tag::id:
|
||||
address = AudioDeviceAddress::make<Tag::id>(std::to_string(++nextId));
|
||||
break;
|
||||
case Tag::mac:
|
||||
address = AudioDeviceAddress::make<Tag::mac>(
|
||||
std::vector<uint8_t>{1, 2, 3, 4, 5, static_cast<uint8_t>(++nextId & 0xff)});
|
||||
break;
|
||||
case Tag::ipv4:
|
||||
address = AudioDeviceAddress::make<Tag::ipv4>(
|
||||
std::vector<uint8_t>{192, 168, 0, static_cast<uint8_t>(++nextId & 0xff)});
|
||||
break;
|
||||
case Tag::ipv6:
|
||||
address = AudioDeviceAddress::make<Tag::ipv6>(std::vector<int32_t>{
|
||||
0xfc00, 0x0123, 0x4567, 0x89ab, 0xcdef, 0, 0, ++nextId & 0xffff});
|
||||
break;
|
||||
case Tag::alsa:
|
||||
address = AudioDeviceAddress::make<Tag::alsa>(std::vector<int32_t>{1, ++nextId});
|
||||
break;
|
||||
}
|
||||
}
|
||||
AudioPort result = port;
|
||||
result.ext.get<AudioPortExt::Tag::device>().device.address = std::move(address);
|
||||
|
||||
Reference in New Issue
Block a user