Merge "Add AIDL API feedback" into main

This commit is contained in:
Oscar Azucena
2024-12-09 19:28:06 +00:00
committed by Android (Google) Code Review
7 changed files with 32 additions and 23 deletions

View File

@@ -35,11 +35,10 @@ package android.hardware.automotive.audiocontrol;
@JavaDerive(equals=true, toString=true) @VintfStability
parcelable AudioZone {
String name;
int id;
int id = android.media.audio.common.AudioHalProductStrategy.ZoneId.DEFAULT /* 0 */;
int occupantZoneId = UNASSIGNED_OCCUPANT /* -1 */;
android.hardware.automotive.audiocontrol.AudioZoneContext audioZoneContext;
List<android.hardware.automotive.audiocontrol.AudioZoneConfig> audioZoneConfigs;
List<android.media.audio.common.AudioPort> inputAudioDevices;
const int PRIMARY_AUDIO_ZONE = 0;
const int UNASSIGNED_OCCUPANT = (-1) /* -1 */;
}

View File

@@ -73,6 +73,10 @@ parcelable AudioFadeConfiguration {
/**
* Fade in delayed duration for audio focus offender in milliseconds
*
* <p>Fade offender are defined as audio players that do not stop playback after audio focus
* lost. This timeout serves to continue to fadeout the offender until audio is stopped or the
* timeout expires.
*/
long fadeInDelayedForOffendersMs = DEFAULT_DELAY_FADE_IN_OFFENDERS_MS;

View File

@@ -18,6 +18,7 @@ package android.hardware.automotive.audiocontrol;
import android.hardware.automotive.audiocontrol.AudioZoneConfig;
import android.hardware.automotive.audiocontrol.AudioZoneContext;
import android.media.audio.common.AudioHalProductStrategy;
import android.media.audio.common.AudioPort;
/**
@@ -26,11 +27,6 @@ import android.media.audio.common.AudioPort;
@JavaDerive(equals=true, toString=true)
@VintfStability
parcelable AudioZone {
/**
* Value indicating the primary audio zone
*/
const int PRIMARY_AUDIO_ZONE = 0;
/**
* Value indicating the occupant zone is not assigned.
*/
@@ -47,8 +43,11 @@ parcelable AudioZone {
/**
* Audio zone id use to distiguish between the different audio zones for
* volume management, fade, and min/max activation management.
*
* <p>Value must start at {@link AudioHalProductStrategy#ZoneId#DEFAULT} for the primary zone
* and increase for each different zone. Zone id must also not repeat for different zones.
*/
int id;
int id = AudioHalProductStrategy.ZoneId.DEFAULT;
/**
* Occupant zone id that should be mapped to this audio zone.

View File

@@ -33,8 +33,9 @@ parcelable VolumeGroupConfig {
/**
* Audio zone group name.
*
* <p>Must be non-empty if using configurable audio policy engine volume management, see
* {@code AudioDeviceConfiguration#useCoreAudioVolume} for details.
* <p>Must be non-empty if using configurable audio policy engine volume management,
* {@see AudioDeviceConfiguration#useCoreAudioVolume} for details. For non-core volume group
* management this can be left empty or use for debugging purposes.
*/
String name;

View File

@@ -49,6 +49,7 @@ using aidl::android::media::audio::common::AudioDevice;
using aidl::android::media::audio::common::AudioDeviceAddress;
using aidl::android::media::audio::common::AudioDeviceDescription;
using aidl::android::media::audio::common::AudioDeviceType;
using aidl::android::media::audio::common::AudioHalProductStrategy;
using aidl::android::media::audio::common::AudioPort;
using aidl::android::media::audio::common::AudioPortDeviceExt;
using aidl::android::media::audio::common::AudioPortExt;
@@ -537,6 +538,7 @@ void parseInputDevices(const xsd::InputDevicesType* xsdInputDevices,
bool parseAudioZone(const xsd::ZoneType& zone, const ActivationMap& activations,
const FadeConfigurationMap& fadeConfigurations, api::AudioZone& audioZone) {
static int kPrimaryZoneId = static_cast<int>(AudioHalProductStrategy::ZoneId::DEFAULT);
if (zone.hasName()) {
audioZone.name = zone.getName();
}
@@ -558,7 +560,7 @@ bool parseAudioZone(const xsd::ZoneType& zone, const ActivationMap& activations,
bool isPrimary = zone.hasIsPrimary() && zone.getIsPrimary();
if (isPrimary) {
audioZone.id = api::AudioZone::PRIMARY_AUDIO_ZONE;
audioZone.id = kPrimaryZoneId;
}
// ID not required in XML for primary zone
@@ -569,10 +571,10 @@ bool parseAudioZone(const xsd::ZoneType& zone, const ActivationMap& activations,
return false;
}
if (isPrimary && audioZone.id != api::AudioZone::PRIMARY_AUDIO_ZONE) {
if (isPrimary && audioZone.id != kPrimaryZoneId) {
LOG(ERROR) << __func__ << " Audio zone is primary but has zone id "
<< std::to_string(audioZone.id) << " instead of primary zone id "
<< std::to_string(api::AudioZone::PRIMARY_AUDIO_ZONE);
<< std::to_string(kPrimaryZoneId);
return false;
}

View File

@@ -38,6 +38,7 @@ using ::aidl::android::media::audio::common::AudioDevice;
using ::aidl::android::media::audio::common::AudioDeviceAddress;
using ::aidl::android::media::audio::common::AudioDeviceDescription;
using ::aidl::android::media::audio::common::AudioDeviceType;
using ::aidl::android::media::audio::common::AudioHalProductStrategy;
using ::aidl::android::media::audio::common::AudioPort;
using ::aidl::android::media::audio::common::AudioPortDeviceExt;
using ::aidl::android::media::audio::common::AudioPortExt;
@@ -476,7 +477,7 @@ const api::AudioZoneConfig kDriverZoneConfig = createAudioZoneConfig(
{kBusMediaVolumeGroup, kBusNavVolumeGroup, kBusCallVolumeGroup, kBusSysVolumeGroup}, true);
const api::AudioZone kDriverZone =
createAudioZone("driver zone", api::AudioZone::PRIMARY_AUDIO_ZONE,
createAudioZone("driver zone", static_cast<int>(AudioHalProductStrategy::ZoneId::DEFAULT),
kSimpleCarAudioConfigurationContext, {kDriverZoneConfig});
const api::AudioZoneFadeConfiguration kZoneAudioConfigFading = createAudioZoneFadeConfiguration(
@@ -491,9 +492,9 @@ const api::VolumeGroupConfig kFrontVolumeGroup = createVolumeGroup(
"oem_system_sound", "oem_notification"})});
const api::AudioZoneConfig kFrontZoneConfig = createAudioZoneConfig(
"front passenger config 0", kZoneAudioConfigFading, {kFrontVolumeGroup}, true);
const api::AudioZone kFrontZone =
createAudioZone("front passenger zone", api::AudioZone::PRIMARY_AUDIO_ZONE + 1,
kSimpleCarAudioConfigurationContext, {kFrontZoneConfig});
const api::AudioZone kFrontZone = createAudioZone(
"front passenger zone", static_cast<int>(AudioHalProductStrategy::ZoneId::DEFAULT) + 1,
kSimpleCarAudioConfigurationContext, {kFrontZoneConfig});
const AudioPort kBusRearDevice = createAudioPort("BUS_REAR", AudioDeviceType::OUT_BUS);
const api::VolumeGroupConfig kRearVolumeGroup =
@@ -503,9 +504,9 @@ const api::VolumeGroupConfig kRearVolumeGroup =
"oem_system_sound", "oem_notification"})});
const api::AudioZoneConfig kRearZoneConfig = createAudioZoneConfig(
"rear seat config 0", kZoneAudioConfigFading, {kRearVolumeGroup}, true);
const api::AudioZone kRearZone =
createAudioZone("rear seat zone", api::AudioZone::PRIMARY_AUDIO_ZONE + 2,
kSimpleCarAudioConfigurationContext, {kRearZoneConfig});
const api::AudioZone kRearZone = createAudioZone(
"rear seat zone", static_cast<int>(AudioHalProductStrategy::ZoneId::DEFAULT) + 2,
kSimpleCarAudioConfigurationContext, {kRearZoneConfig});
std::vector<api::AudioZone> kMultiZones = {kDriverZone, kFrontZone, kRearZone};
@@ -624,7 +625,7 @@ TEST_F(SimpleCarAudioConfigurationTest, TestLoadSimpleConfiguration) {
EXPECT_EQ(zones.size(), 1);
const auto& zone = zones.front();
EXPECT_EQ(zone.id, api::AudioZone::PRIMARY_AUDIO_ZONE);
EXPECT_EQ(zone.id, static_cast<int>(AudioHalProductStrategy::ZoneId::DEFAULT));
EXPECT_EQ(zone.occupantZoneId, 0);
EXPECT_EQ(zone.name, "primary zone");
@@ -685,7 +686,7 @@ TEST_F(TypeDeviceCarAudioConfigurationTest, TestLoadConfigurationWithDeviceType)
EXPECT_EQ(zones.size(), 1);
const auto& zone = zones.front();
EXPECT_EQ(zone.id, api::AudioZone::PRIMARY_AUDIO_ZONE);
EXPECT_EQ(zone.id, static_cast<int>(AudioHalProductStrategy::ZoneId::DEFAULT));
EXPECT_EQ(zone.occupantZoneId, 0);
EXPECT_EQ(zone.name, "primary zone");

View File

@@ -26,6 +26,7 @@
#include <android/hardware/automotive/audiocontrol/BnModuleChangeCallback.h>
#include <android/hardware/automotive/audiocontrol/IAudioControl.h>
#include <android/log.h>
#include <android/media/audio/common/AudioHalProductStrategy.h>
#include <binder/IServiceManager.h>
#include <binder/ProcessState.h>
#include <include/AudioControlTestUtils.h>
@@ -63,6 +64,8 @@ using android::hardware::automotive::audiocontrol::VolumeActivationConfiguration
DEFAULT_MAX_ACTIVATION_VALUE;
using android::hardware::automotive::audiocontrol::VolumeActivationConfigurationEntry::
DEFAULT_MIN_ACTIVATION_VALUE;
using android::media::audio::common::AudioHalProductStrategy;
using ::testing::AnyOf;
using ::testing::Eq;
@@ -628,7 +631,7 @@ TEST_P(AudioControlWithAudioZoneInfo, AudioZonesRequirements) {
std::set<android::String16> zoneNames;
std::set<std::string> deviceAddresses;
for (const auto& zone : audioZones) {
if (zone.id == AudioZone::PRIMARY_AUDIO_ZONE) {
if (zone.id == static_cast<int>(AudioHalProductStrategy::ZoneId::DEFAULT)) {
EXPECT_FALSE(primaryZoneFound) << "There can only be one primary zone";
primaryZoneFound = true;
}