audio: Add VTS for configurable engine
This CL adds VTS tests for engine configuration. Test: atest VtsHalAudioPolicyV1_0TargetTest Bug: 141989952 Change-Id: Ied37edc5bba29ef461f6b68fa21781d5721b75bf Signed-off-by: François Gaffie <francois.gaffie@renault.com> Signed-off-by: Mikhail Naganov <mnaganov@google.com>
This commit is contained in:
parent
4060d8d7ae
commit
5958d576ed
10 changed files with 811 additions and 0 deletions
2
audio/policy/1.0/vts/OWNERS
Normal file
2
audio/policy/1.0/vts/OWNERS
Normal file
|
@ -0,0 +1,2 @@
|
|||
elaurent@google.com
|
||||
mnaganov@google.com
|
31
audio/policy/1.0/vts/functional/Android.bp
Normal file
31
audio/policy/1.0/vts/functional/Android.bp
Normal file
|
@ -0,0 +1,31 @@
|
|||
cc_test {
|
||||
name: "VtsHalAudioPolicyV1_0TargetTest",
|
||||
defaults: ["vts_target_tests_defaults"],
|
||||
srcs: [
|
||||
"ValidateEngineConfiguration.cpp",
|
||||
],
|
||||
static_libs: [
|
||||
"android.hardware.audio.common.test.utility",
|
||||
"libxml2",
|
||||
"liblog",
|
||||
],
|
||||
// Use test_config for vts-core suite.
|
||||
// TODO(b/146104851): Add auto-gen rules and remove it.
|
||||
test_config: "VtsHalAudioPolicyV1_0TargetTest.xml",
|
||||
cflags: [
|
||||
"-DXSD_DIR=\"/data/local/tmp\"",
|
||||
"-Wall",
|
||||
"-Werror",
|
||||
"-Wno-unused-function",
|
||||
"-O0",
|
||||
"-g",
|
||||
],
|
||||
data: [
|
||||
":audio_policy_engine_conf_V1_0",
|
||||
],
|
||||
gtest: true,
|
||||
test_suites: [
|
||||
"general-tests",
|
||||
"vts-core",
|
||||
],
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include <unistd.h>
|
||||
#include <string>
|
||||
#include "utility/ValidateXml.h"
|
||||
|
||||
static const std::vector<const char*> locations = {"/odm/etc", "/vendor/etc", "/system/etc"};
|
||||
static const std::string config = "audio_policy_engine_configuration.xml";
|
||||
static const std::string schema =
|
||||
std::string(XSD_DIR) + "/audio_policy_engine_configuration_V1_0.xsd";
|
||||
|
||||
/**
|
||||
* @brief TEST to ensure the audio policy engine configuration file is validating schemas.
|
||||
* Note: this configuration file is not mandatory, an hardcoded fallback is provided, so
|
||||
* it does not fail if not found.
|
||||
*/
|
||||
TEST(ValidateConfiguration, audioPolicyEngineConfiguration) {
|
||||
RecordProperty("description",
|
||||
"Verify that the audio policy engine configuration file "
|
||||
"is valid according to the schemas");
|
||||
EXPECT_VALID_XML_MULTIPLE_LOCATIONS(config.c_str(), locations, schema.c_str());
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2020 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<configuration description="Runs VtsHalAudioPolicyV1_0TargetTest.">
|
||||
<option name="test-suite-tag" value="apct" />
|
||||
<option name="test-suite-tag" value="apct-native" />
|
||||
|
||||
<target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer">
|
||||
</target_preparer>
|
||||
|
||||
<target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
|
||||
</target_preparer>
|
||||
|
||||
<target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
|
||||
<option name="cleanup" value="true" />
|
||||
<option name="push" value="VtsHalAudioPolicyV1_0TargetTest->/data/local/tmp/VtsHalAudioPolicyV1_0TargetTest" />
|
||||
<option name="push" value="audio_policy_engine_conf_V1_0.xsd->/data/local/tmp/audio_policy_engine_configuration_V1_0.xsd" />
|
||||
</target_preparer>
|
||||
|
||||
<test class="com.android.tradefed.testtype.GTest" >
|
||||
<option name="native-test-device-path" value="/data/local/tmp" />
|
||||
<option name="module-name" value="VtsHalAudioPolicyV1_0TargetTest" />
|
||||
</test>
|
||||
</configuration>
|
5
audio/policy/1.0/xml/Android.bp
Normal file
5
audio/policy/1.0/xml/Android.bp
Normal file
|
@ -0,0 +1,5 @@
|
|||
xsd_config {
|
||||
name: "audio_policy_engine_conf_V1_0",
|
||||
srcs: ["audio_policy_engine_configuration.xsd"],
|
||||
package_name: "audio.policy.V1_0",
|
||||
}
|
296
audio/policy/1.0/xml/api/current.txt
Normal file
296
audio/policy/1.0/xml/api/current.txt
Normal file
|
@ -0,0 +1,296 @@
|
|||
// Signature format: 2.0
|
||||
package audio.policy.V1_0 {
|
||||
|
||||
public class AttributesGroup {
|
||||
ctor public AttributesGroup();
|
||||
method public java.util.List<audio.policy.V1_0.AttributesType> getAttributes_optional();
|
||||
method public audio.policy.V1_0.BundleType getBundle_optional();
|
||||
method public audio.policy.V1_0.ContentTypeType getContentType_optional();
|
||||
method public audio.policy.V1_0.FlagsType getFlags_optional();
|
||||
method public audio.policy.V1_0.SourceType getSource_optional();
|
||||
method public audio.policy.V1_0.Stream getStreamType();
|
||||
method public audio.policy.V1_0.UsageType getUsage_optional();
|
||||
method public String getVolumeGroup();
|
||||
method public void setBundle_optional(audio.policy.V1_0.BundleType);
|
||||
method public void setContentType_optional(audio.policy.V1_0.ContentTypeType);
|
||||
method public void setFlags_optional(audio.policy.V1_0.FlagsType);
|
||||
method public void setSource_optional(audio.policy.V1_0.SourceType);
|
||||
method public void setStreamType(audio.policy.V1_0.Stream);
|
||||
method public void setUsage_optional(audio.policy.V1_0.UsageType);
|
||||
method public void setVolumeGroup(String);
|
||||
}
|
||||
|
||||
public class AttributesRef {
|
||||
ctor public AttributesRef();
|
||||
method public java.util.List<audio.policy.V1_0.AttributesRefType> getReference();
|
||||
}
|
||||
|
||||
public class AttributesRefType {
|
||||
ctor public AttributesRefType();
|
||||
method public audio.policy.V1_0.AttributesType getAttributes();
|
||||
method public String getName();
|
||||
method public void setAttributes(audio.policy.V1_0.AttributesType);
|
||||
method public void setName(String);
|
||||
}
|
||||
|
||||
public class AttributesType {
|
||||
ctor public AttributesType();
|
||||
method public String getAttributesRef();
|
||||
method public audio.policy.V1_0.BundleType getBundle();
|
||||
method public audio.policy.V1_0.ContentTypeType getContentType();
|
||||
method public audio.policy.V1_0.FlagsType getFlags();
|
||||
method public audio.policy.V1_0.SourceType getSource();
|
||||
method public audio.policy.V1_0.UsageType getUsage();
|
||||
method public void setAttributesRef(String);
|
||||
method public void setBundle(audio.policy.V1_0.BundleType);
|
||||
method public void setContentType(audio.policy.V1_0.ContentTypeType);
|
||||
method public void setFlags(audio.policy.V1_0.FlagsType);
|
||||
method public void setSource(audio.policy.V1_0.SourceType);
|
||||
method public void setUsage(audio.policy.V1_0.UsageType);
|
||||
}
|
||||
|
||||
public class BundleType {
|
||||
ctor public BundleType();
|
||||
method public String getKey();
|
||||
method public String getValue();
|
||||
method public void setKey(String);
|
||||
method public void setValue(String);
|
||||
}
|
||||
|
||||
public class Configuration {
|
||||
ctor public Configuration();
|
||||
method public java.util.List<audio.policy.V1_0.AttributesRef> getAttributesRef();
|
||||
method public java.util.List<audio.policy.V1_0.CriteriaType> getCriteria();
|
||||
method public java.util.List<audio.policy.V1_0.CriterionTypesType> getCriterion_types();
|
||||
method public java.util.List<audio.policy.V1_0.ProductStrategies> getProductStrategies();
|
||||
method public audio.policy.V1_0.Version getVersion();
|
||||
method public java.util.List<audio.policy.V1_0.VolumeGroupsType> getVolumeGroups();
|
||||
method public java.util.List<audio.policy.V1_0.VolumesType> getVolumes();
|
||||
method public void setVersion(audio.policy.V1_0.Version);
|
||||
}
|
||||
|
||||
public enum ContentType {
|
||||
method public String getRawName();
|
||||
enum_constant public static final audio.policy.V1_0.ContentType AUDIO_CONTENT_TYPE_MOVIE;
|
||||
enum_constant public static final audio.policy.V1_0.ContentType AUDIO_CONTENT_TYPE_MUSIC;
|
||||
enum_constant public static final audio.policy.V1_0.ContentType AUDIO_CONTENT_TYPE_SONIFICATION;
|
||||
enum_constant public static final audio.policy.V1_0.ContentType AUDIO_CONTENT_TYPE_SPEECH;
|
||||
enum_constant public static final audio.policy.V1_0.ContentType AUDIO_CONTENT_TYPE_UNKNOWN;
|
||||
}
|
||||
|
||||
public class ContentTypeType {
|
||||
ctor public ContentTypeType();
|
||||
method public audio.policy.V1_0.ContentType getValue();
|
||||
method public void setValue(audio.policy.V1_0.ContentType);
|
||||
}
|
||||
|
||||
public class CriteriaType {
|
||||
ctor public CriteriaType();
|
||||
method public java.util.List<audio.policy.V1_0.CriterionType> getCriterion();
|
||||
}
|
||||
|
||||
public class CriterionType {
|
||||
ctor public CriterionType();
|
||||
method public String getName();
|
||||
method public String getType();
|
||||
method public String get_default();
|
||||
method public void setName(String);
|
||||
method public void setType(String);
|
||||
method public void set_default(String);
|
||||
}
|
||||
|
||||
public class CriterionTypeType {
|
||||
ctor public CriterionTypeType();
|
||||
method public String getName();
|
||||
method public audio.policy.V1_0.PfwCriterionTypeEnum getType();
|
||||
method public audio.policy.V1_0.ValuesType getValues();
|
||||
method public void setName(String);
|
||||
method public void setType(audio.policy.V1_0.PfwCriterionTypeEnum);
|
||||
method public void setValues(audio.policy.V1_0.ValuesType);
|
||||
}
|
||||
|
||||
public class CriterionTypesType {
|
||||
ctor public CriterionTypesType();
|
||||
method public java.util.List<audio.policy.V1_0.CriterionTypeType> getCriterion_type();
|
||||
}
|
||||
|
||||
public enum DeviceCategory {
|
||||
method public String getRawName();
|
||||
enum_constant public static final audio.policy.V1_0.DeviceCategory DEVICE_CATEGORY_EARPIECE;
|
||||
enum_constant public static final audio.policy.V1_0.DeviceCategory DEVICE_CATEGORY_EXT_MEDIA;
|
||||
enum_constant public static final audio.policy.V1_0.DeviceCategory DEVICE_CATEGORY_HEADSET;
|
||||
enum_constant public static final audio.policy.V1_0.DeviceCategory DEVICE_CATEGORY_HEARING_AID;
|
||||
enum_constant public static final audio.policy.V1_0.DeviceCategory DEVICE_CATEGORY_SPEAKER;
|
||||
}
|
||||
|
||||
public enum FlagType {
|
||||
method public String getRawName();
|
||||
enum_constant public static final audio.policy.V1_0.FlagType AUDIO_FLAG_AUDIBILITY_ENFORCED;
|
||||
enum_constant public static final audio.policy.V1_0.FlagType AUDIO_FLAG_BEACON;
|
||||
enum_constant public static final audio.policy.V1_0.FlagType AUDIO_FLAG_BYPASS_INTERRUPTION_POLICY;
|
||||
enum_constant public static final audio.policy.V1_0.FlagType AUDIO_FLAG_BYPASS_MUTE;
|
||||
enum_constant public static final audio.policy.V1_0.FlagType AUDIO_FLAG_CAPTURE_PRIVATE;
|
||||
enum_constant public static final audio.policy.V1_0.FlagType AUDIO_FLAG_DEEP_BUFFER;
|
||||
enum_constant public static final audio.policy.V1_0.FlagType AUDIO_FLAG_HW_AV_SYNC;
|
||||
enum_constant public static final audio.policy.V1_0.FlagType AUDIO_FLAG_HW_HOTWORD;
|
||||
enum_constant public static final audio.policy.V1_0.FlagType AUDIO_FLAG_LOW_LATENCY;
|
||||
enum_constant public static final audio.policy.V1_0.FlagType AUDIO_FLAG_MUTE_HAPTIC;
|
||||
enum_constant public static final audio.policy.V1_0.FlagType AUDIO_FLAG_NONE;
|
||||
enum_constant public static final audio.policy.V1_0.FlagType AUDIO_FLAG_NO_MEDIA_PROJECTION;
|
||||
enum_constant public static final audio.policy.V1_0.FlagType AUDIO_FLAG_NO_SYSTEM_CAPTURE;
|
||||
enum_constant public static final audio.policy.V1_0.FlagType AUDIO_FLAG_SCO;
|
||||
enum_constant public static final audio.policy.V1_0.FlagType AUDIO_FLAG_SECURE;
|
||||
}
|
||||
|
||||
public class FlagsType {
|
||||
ctor public FlagsType();
|
||||
method public java.util.List<audio.policy.V1_0.FlagType> getValue();
|
||||
method public void setValue(java.util.List<audio.policy.V1_0.FlagType>);
|
||||
}
|
||||
|
||||
public enum PfwCriterionTypeEnum {
|
||||
method public String getRawName();
|
||||
enum_constant public static final audio.policy.V1_0.PfwCriterionTypeEnum exclusive;
|
||||
enum_constant public static final audio.policy.V1_0.PfwCriterionTypeEnum inclusive;
|
||||
}
|
||||
|
||||
public class ProductStrategies {
|
||||
ctor public ProductStrategies();
|
||||
method public java.util.List<audio.policy.V1_0.ProductStrategies.ProductStrategy> getProductStrategy();
|
||||
}
|
||||
|
||||
public static class ProductStrategies.ProductStrategy {
|
||||
ctor public ProductStrategies.ProductStrategy();
|
||||
method public java.util.List<audio.policy.V1_0.AttributesGroup> getAttributesGroup();
|
||||
method public String getName();
|
||||
method public void setName(String);
|
||||
}
|
||||
|
||||
public enum SourceEnumType {
|
||||
method public String getRawName();
|
||||
enum_constant public static final audio.policy.V1_0.SourceEnumType AUDIO_SOURCE_CAMCORDER;
|
||||
enum_constant public static final audio.policy.V1_0.SourceEnumType AUDIO_SOURCE_DEFAULT;
|
||||
enum_constant public static final audio.policy.V1_0.SourceEnumType AUDIO_SOURCE_ECHO_REFERENCE;
|
||||
enum_constant public static final audio.policy.V1_0.SourceEnumType AUDIO_SOURCE_FM_TUNER;
|
||||
enum_constant public static final audio.policy.V1_0.SourceEnumType AUDIO_SOURCE_MIC;
|
||||
enum_constant public static final audio.policy.V1_0.SourceEnumType AUDIO_SOURCE_REMOTE_SUBMIX;
|
||||
enum_constant public static final audio.policy.V1_0.SourceEnumType AUDIO_SOURCE_UNPROCESSED;
|
||||
enum_constant public static final audio.policy.V1_0.SourceEnumType AUDIO_SOURCE_VOICE_CALL;
|
||||
enum_constant public static final audio.policy.V1_0.SourceEnumType AUDIO_SOURCE_VOICE_COMMUNICATION;
|
||||
enum_constant public static final audio.policy.V1_0.SourceEnumType AUDIO_SOURCE_VOICE_DOWNLINK;
|
||||
enum_constant public static final audio.policy.V1_0.SourceEnumType AUDIO_SOURCE_VOICE_PERFORMANCE;
|
||||
enum_constant public static final audio.policy.V1_0.SourceEnumType AUDIO_SOURCE_VOICE_RECOGNITION;
|
||||
enum_constant public static final audio.policy.V1_0.SourceEnumType AUDIO_SOURCE_VOICE_UPLINK;
|
||||
}
|
||||
|
||||
public class SourceType {
|
||||
ctor public SourceType();
|
||||
method public audio.policy.V1_0.SourceEnumType getValue();
|
||||
method public void setValue(audio.policy.V1_0.SourceEnumType);
|
||||
}
|
||||
|
||||
public enum Stream {
|
||||
method public String getRawName();
|
||||
enum_constant public static final audio.policy.V1_0.Stream AUDIO_STREAM_ACCESSIBILITY;
|
||||
enum_constant public static final audio.policy.V1_0.Stream AUDIO_STREAM_ALARM;
|
||||
enum_constant public static final audio.policy.V1_0.Stream AUDIO_STREAM_ASSISTANT;
|
||||
enum_constant public static final audio.policy.V1_0.Stream AUDIO_STREAM_BLUETOOTH_SCO;
|
||||
enum_constant public static final audio.policy.V1_0.Stream AUDIO_STREAM_DEFAULT;
|
||||
enum_constant public static final audio.policy.V1_0.Stream AUDIO_STREAM_DTMF;
|
||||
enum_constant public static final audio.policy.V1_0.Stream AUDIO_STREAM_ENFORCED_AUDIBLE;
|
||||
enum_constant public static final audio.policy.V1_0.Stream AUDIO_STREAM_MUSIC;
|
||||
enum_constant public static final audio.policy.V1_0.Stream AUDIO_STREAM_NOTIFICATION;
|
||||
enum_constant public static final audio.policy.V1_0.Stream AUDIO_STREAM_RING;
|
||||
enum_constant public static final audio.policy.V1_0.Stream AUDIO_STREAM_SYSTEM;
|
||||
enum_constant public static final audio.policy.V1_0.Stream AUDIO_STREAM_TTS;
|
||||
enum_constant public static final audio.policy.V1_0.Stream AUDIO_STREAM_VOICE_CALL;
|
||||
}
|
||||
|
||||
public enum UsageEnumType {
|
||||
method public String getRawName();
|
||||
enum_constant public static final audio.policy.V1_0.UsageEnumType AUDIO_USAGE_ALARM;
|
||||
enum_constant public static final audio.policy.V1_0.UsageEnumType AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY;
|
||||
enum_constant public static final audio.policy.V1_0.UsageEnumType AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE;
|
||||
enum_constant public static final audio.policy.V1_0.UsageEnumType AUDIO_USAGE_ASSISTANCE_SONIFICATION;
|
||||
enum_constant public static final audio.policy.V1_0.UsageEnumType AUDIO_USAGE_ASSISTANT;
|
||||
enum_constant public static final audio.policy.V1_0.UsageEnumType AUDIO_USAGE_CALL_ASSISTANT;
|
||||
enum_constant public static final audio.policy.V1_0.UsageEnumType AUDIO_USAGE_GAME;
|
||||
enum_constant public static final audio.policy.V1_0.UsageEnumType AUDIO_USAGE_MEDIA;
|
||||
enum_constant public static final audio.policy.V1_0.UsageEnumType AUDIO_USAGE_NOTIFICATION;
|
||||
enum_constant public static final audio.policy.V1_0.UsageEnumType AUDIO_USAGE_NOTIFICATION_TELEPHONY_RINGTONE;
|
||||
enum_constant public static final audio.policy.V1_0.UsageEnumType AUDIO_USAGE_UNKNOWN;
|
||||
enum_constant public static final audio.policy.V1_0.UsageEnumType AUDIO_USAGE_VIRTUAL_SOURCE;
|
||||
enum_constant public static final audio.policy.V1_0.UsageEnumType AUDIO_USAGE_VOICE_COMMUNICATION;
|
||||
enum_constant public static final audio.policy.V1_0.UsageEnumType AUDIO_USAGE_VOICE_COMMUNICATION_SIGNALLING;
|
||||
}
|
||||
|
||||
public class UsageType {
|
||||
ctor public UsageType();
|
||||
method public audio.policy.V1_0.UsageEnumType getValue();
|
||||
method public void setValue(audio.policy.V1_0.UsageEnumType);
|
||||
}
|
||||
|
||||
public class ValueType {
|
||||
ctor public ValueType();
|
||||
method public String getLiteral();
|
||||
method public int getNumerical();
|
||||
method public void setLiteral(String);
|
||||
method public void setNumerical(int);
|
||||
}
|
||||
|
||||
public class ValuesType {
|
||||
ctor public ValuesType();
|
||||
method public java.util.List<audio.policy.V1_0.ValueType> getValue();
|
||||
}
|
||||
|
||||
public enum Version {
|
||||
method public String getRawName();
|
||||
enum_constant public static final audio.policy.V1_0.Version _1_0;
|
||||
}
|
||||
|
||||
public class Volume {
|
||||
ctor public Volume();
|
||||
method public audio.policy.V1_0.DeviceCategory getDeviceCategory();
|
||||
method public java.util.List<java.lang.String> getPoint();
|
||||
method public String getRef();
|
||||
method public void setDeviceCategory(audio.policy.V1_0.DeviceCategory);
|
||||
method public void setRef(String);
|
||||
}
|
||||
|
||||
public class VolumeGroupsType {
|
||||
ctor public VolumeGroupsType();
|
||||
method public java.util.List<audio.policy.V1_0.VolumeGroupsType.VolumeGroup> getVolumeGroup();
|
||||
}
|
||||
|
||||
public static class VolumeGroupsType.VolumeGroup {
|
||||
ctor public VolumeGroupsType.VolumeGroup();
|
||||
method public int getIndexMax();
|
||||
method public int getIndexMin();
|
||||
method public String getName();
|
||||
method public java.util.List<audio.policy.V1_0.Volume> getVolume();
|
||||
method public void setIndexMax(int);
|
||||
method public void setIndexMin(int);
|
||||
method public void setName(String);
|
||||
}
|
||||
|
||||
public class VolumeRef {
|
||||
ctor public VolumeRef();
|
||||
method public String getName();
|
||||
method public java.util.List<java.lang.String> getPoint();
|
||||
method public void setName(String);
|
||||
}
|
||||
|
||||
public class VolumesType {
|
||||
ctor public VolumesType();
|
||||
method public java.util.List<audio.policy.V1_0.VolumeRef> getReference();
|
||||
}
|
||||
|
||||
public class XmlParser {
|
||||
ctor public XmlParser();
|
||||
method public static audio.policy.V1_0.Configuration read(java.io.InputStream) throws javax.xml.datatype.DatatypeConfigurationException, java.io.IOException, org.xmlpull.v1.XmlPullParserException;
|
||||
method public static String readText(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
|
||||
method public static void skip(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
|
||||
}
|
||||
|
||||
}
|
||||
|
0
audio/policy/1.0/xml/api/last_current.txt
Normal file
0
audio/policy/1.0/xml/api/last_current.txt
Normal file
0
audio/policy/1.0/xml/api/last_removed.txt
Normal file
0
audio/policy/1.0/xml/api/last_removed.txt
Normal file
1
audio/policy/1.0/xml/api/removed.txt
Normal file
1
audio/policy/1.0/xml/api/removed.txt
Normal file
|
@ -0,0 +1 @@
|
|||
// Signature format: 2.0
|
402
audio/policy/1.0/xml/audio_policy_engine_configuration.xsd
Normal file
402
audio/policy/1.0/xml/audio_policy_engine_configuration.xsd
Normal file
|
@ -0,0 +1,402 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<!-- Copyright (C) 2019 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<xs:schema version="2.0"
|
||||
elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<!-- List the config versions supported by audio policy engine. -->
|
||||
<xs:simpleType name="version">
|
||||
<xs:restriction base="xs:decimal">
|
||||
<xs:enumeration value="1.0"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:element name="configuration">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="ProductStrategies" type="ProductStrategies" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="criterion_types" type="criterionTypesType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="criteria" type="criteriaType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="volumeGroups" type="volumeGroupsType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="volumes" type="volumesType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element name="attributesRef" type="attributesRef" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="version" type="version" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:key name="volumeCurveNameKey">
|
||||
<xs:selector xpath="volumes/reference"/>
|
||||
<xs:field xpath="@name"/>
|
||||
</xs:key>
|
||||
<xs:keyref name="volumeCurveRef" refer="volumeCurveNameKey">
|
||||
<xs:selector xpath="volumeGroups/volumeGroup"/>
|
||||
<xs:field xpath="@ref"/>
|
||||
</xs:keyref>
|
||||
|
||||
<xs:key name="attributesRefNameKey">
|
||||
<xs:selector xpath="attributesRef/reference"/>
|
||||
<xs:field xpath="@name"/>
|
||||
</xs:key>
|
||||
<xs:keyref name="volumeGroupAttributesRef" refer="attributesRefNameKey">
|
||||
<xs:selector xpath="volumeGroups/volumeGroup/volume"/>
|
||||
<xs:field xpath="@attributesRef"/>
|
||||
</xs:keyref>
|
||||
<xs:keyref name="ProductStrategyAttributesRef" refer="attributesRefNameKey">
|
||||
<xs:selector xpath="ProductStrategies/ProductStrategy/Attributes"/>
|
||||
<xs:field xpath="@attributesRef"/>
|
||||
</xs:keyref>
|
||||
|
||||
<xs:unique name="productStrategyNameUniqueness">
|
||||
<xs:selector xpath="ProductStrategies/ProductStrategy"/>
|
||||
<xs:field xpath="@name"/>
|
||||
</xs:unique>
|
||||
|
||||
<!-- ensure validity of volume group referred in product strategy-->
|
||||
<xs:key name="volumeGroupKey">
|
||||
<xs:selector xpath="volumeGroups/volumeGroup/name"/>
|
||||
<xs:field xpath="."/>
|
||||
</xs:key>
|
||||
<xs:keyref name="volumeGroupRef" refer="volumeGroupKey">
|
||||
<xs:selector xpath="ProductStrategies/ProductStrategy/AttributesGroup"/>
|
||||
<xs:field xpath="@volumeGroup"/>
|
||||
</xs:keyref>
|
||||
|
||||
<xs:unique name="volumeTargetUniqueness">
|
||||
<xs:selector xpath="volumeGroups/volumeGroup"/>
|
||||
<xs:field xpath="@name"/>
|
||||
<xs:field xpath="@deviceCategory"/>
|
||||
</xs:unique>
|
||||
|
||||
<!-- ensure validity of criterion type referred in criterion-->
|
||||
<xs:key name="criterionTypeKey">
|
||||
<xs:selector xpath="criterion_types/criterion_type"/>
|
||||
<xs:field xpath="@name"/>
|
||||
</xs:key>
|
||||
<xs:keyref name="criterionTypeKeyRef" refer="criterionTypeKey">
|
||||
<xs:selector xpath="criteria/criterion"/>
|
||||
<xs:field xpath="@type"/>
|
||||
</xs:keyref>
|
||||
|
||||
</xs:element>
|
||||
|
||||
<xs:complexType name="ProductStrategies">
|
||||
<xs:annotation>
|
||||
<xs:documentation xml:lang="en">
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:sequence>
|
||||
<xs:element name="ProductStrategy" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="AttributesGroup" type="AttributesGroup" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="xs:string" use="required"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="AttributesGroup">
|
||||
<xs:sequence>
|
||||
<xs:choice minOccurs="0">
|
||||
<xs:element name="Attributes" type="AttributesType" minOccurs="1" maxOccurs="unbounded"/>
|
||||
<xs:sequence>
|
||||
<xs:element name="ContentType" type="ContentTypeType" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="Usage" type="UsageType" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="Source" type="SourceType" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="Flags" type="FlagsType" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="Bundle" type="BundleType" minOccurs="0" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="streamType" type="stream" use="optional"/>
|
||||
<xs:attribute name="volumeGroup" type="xs:string" use="optional"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="volumeGroupsType">
|
||||
<xs:sequence>
|
||||
<xs:element name="volumeGroup" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="name" type="xs:token"/>
|
||||
<xs:element name="indexMin" type="xs:int" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="indexMax" type="xs:int" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="volume" type="volume" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:unique name="volumeAttributesUniqueness">
|
||||
<xs:selector xpath="volume"/>
|
||||
<xs:field xpath="deviceCategory"/>
|
||||
</xs:unique>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="volumesType">
|
||||
<xs:sequence>
|
||||
<xs:element name="reference" type="volumeRef" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="attributesRef">
|
||||
<xs:sequence>
|
||||
<xs:element name="reference" type="attributesRefType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="criteriaType">
|
||||
<xs:sequence>
|
||||
<xs:element name="criterion" type="criterionType" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="criterionType">
|
||||
<xs:attribute name="name" type="xs:string" use="required"/>
|
||||
<xs:attribute name="type" type="xs:string" use="required"/>
|
||||
<xs:attribute name="default" type="xs:string" use="optional"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="criterionTypesType">
|
||||
<xs:sequence>
|
||||
<xs:element name="criterion_type" type="criterionTypeType" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="criterionTypeType">
|
||||
<xs:sequence>
|
||||
<xs:element name="values" type="valuesType" minOccurs="0" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="xs:token" use="required"/>
|
||||
<xs:attribute name="type" type="pfwCriterionTypeEnum" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="valuesType">
|
||||
<xs:sequence>
|
||||
<xs:element name="value" type="valueType" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="valueType">
|
||||
<xs:attribute name="literal" type="xs:string" use="required"/>
|
||||
<xs:attribute name="numerical" type="xs:int" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="attributesRefType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Attributes" type="AttributesType" minOccurs="1" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="xs:token" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="AttributesType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ContentType" type="ContentTypeType" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="Usage" type="UsageType" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="Source" type="SourceType" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="Flags" type="FlagsType" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element name="Bundle" type="BundleType" minOccurs="0" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="attributesRef" type="xs:token" use="optional"/>
|
||||
<!-- with xsd 1.1, it is impossible to make choice on either attributes or element...-->
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="ContentTypeType">
|
||||
<xs:attribute name="value" type="contentType" use="required"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="UsageType">
|
||||
<xs:attribute name="value" type="usageEnumType" use="required"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SourceType">
|
||||
<xs:attribute name="value" type="sourceEnumType" use="required"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="FlagsType">
|
||||
<xs:attribute name="value" type="flagsEnumType" use="required"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="BundleType">
|
||||
<xs:attribute name="key" type="xs:string" use="required"/>
|
||||
<xs:attribute name="value" type="xs:string" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="volume">
|
||||
<xs:annotation>
|
||||
<xs:documentation xml:lang="en">
|
||||
Volume section defines a volume curve for a given use case and device category.
|
||||
It contains a list of points of this curve expressing the attenuation in Millibels
|
||||
for a given volume index from 0 to 100.
|
||||
<volume deviceCategory="DEVICE_CATEGORY_SPEAKER">
|
||||
<point>0,-9600</point>
|
||||
<point>100,0</point>
|
||||
</volume>
|
||||
|
||||
It may also reference a reference/@name to avoid duplicating curves.
|
||||
<volume deviceCategory="DEVICE_CATEGORY_SPEAKER" ref="DEFAULT_MEDIA_VOLUME_CURVE"/>
|
||||
<reference name="DEFAULT_MEDIA_VOLUME_CURVE">
|
||||
<point>0,-9600</point>
|
||||
<point>100,0</point>
|
||||
</reference>
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:sequence>
|
||||
<xs:element name="point" type="volumePoint" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="deviceCategory" type="deviceCategory"/>
|
||||
<xs:attribute name="ref" type="xs:token" use="optional"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="volumeRef">
|
||||
<xs:sequence>
|
||||
<xs:element name="point" type="volumePoint" minOccurs="2" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="xs:token" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:simpleType name="volumePoint">
|
||||
<xs:annotation>
|
||||
<xs:documentation xml:lang="en">
|
||||
Comma separated pair of number.
|
||||
The fist one is the framework level (between 0 and 100).
|
||||
The second one is the volume to send to the HAL.
|
||||
The framework will interpolate volumes not specified.
|
||||
Their MUST be at least 2 points specified.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="([0-9]{1,2}|100),-?[0-9]+"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
|
||||
<xs:simpleType name="streamsCsv">
|
||||
<xs:list>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="stream">
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:list>
|
||||
</xs:simpleType>
|
||||
|
||||
<!-- Enum values of audio_stream_type_t in audio-base.h
|
||||
TODO: avoid manual sync. -->
|
||||
<xs:simpleType name="stream">
|
||||
<xs:restriction base="xs:NMTOKEN">
|
||||
<!--xs:pattern value="\c+(,\c+)*"/-->
|
||||
<xs:enumeration value="AUDIO_STREAM_DEFAULT"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_VOICE_CALL"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_SYSTEM"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_RING"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_MUSIC"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_ALARM"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_NOTIFICATION"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_BLUETOOTH_SCO"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_ENFORCED_AUDIBLE"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_DTMF"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_TTS"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_ACCESSIBILITY"/>
|
||||
<xs:enumeration value="AUDIO_STREAM_ASSISTANT"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="deviceCategory">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="DEVICE_CATEGORY_HEADSET"/>
|
||||
<xs:enumeration value="DEVICE_CATEGORY_SPEAKER"/>
|
||||
<xs:enumeration value="DEVICE_CATEGORY_EARPIECE"/>
|
||||
<xs:enumeration value="DEVICE_CATEGORY_EXT_MEDIA"/>
|
||||
<xs:enumeration value="DEVICE_CATEGORY_HEARING_AID"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="contentType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="AUDIO_CONTENT_TYPE_UNKNOWN"/>
|
||||
<xs:enumeration value="AUDIO_CONTENT_TYPE_SPEECH"/>
|
||||
<xs:enumeration value="AUDIO_CONTENT_TYPE_MUSIC"/>
|
||||
<xs:enumeration value="AUDIO_CONTENT_TYPE_MOVIE"/>
|
||||
<xs:enumeration value="AUDIO_CONTENT_TYPE_SONIFICATION"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="usageEnumType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="AUDIO_USAGE_UNKNOWN"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_MEDIA"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_VOICE_COMMUNICATION"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_VOICE_COMMUNICATION_SIGNALLING"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_ALARM"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_NOTIFICATION"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_NOTIFICATION_TELEPHONY_RINGTONE"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_ASSISTANCE_SONIFICATION"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_GAME"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_VIRTUAL_SOURCE"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_ASSISTANT"/>
|
||||
<xs:enumeration value="AUDIO_USAGE_CALL_ASSISTANT"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="flagsEnumType">
|
||||
<xs:list>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="flagType">
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:list>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="flagType">
|
||||
<xs:restriction base="xs:NMTOKEN">
|
||||
<xs:enumeration value="AUDIO_FLAG_NONE"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_AUDIBILITY_ENFORCED"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_SECURE"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_SCO"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_BEACON"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_HW_AV_SYNC"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_HW_HOTWORD"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_BYPASS_INTERRUPTION_POLICY"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_BYPASS_MUTE"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_LOW_LATENCY"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_DEEP_BUFFER"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_NO_MEDIA_PROJECTION"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_MUTE_HAPTIC"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_NO_SYSTEM_CAPTURE"/>
|
||||
<xs:enumeration value="AUDIO_FLAG_CAPTURE_PRIVATE"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="sourceEnumType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="AUDIO_SOURCE_DEFAULT"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_MIC"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_VOICE_UPLINK"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_VOICE_DOWNLINK"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_VOICE_CALL"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_CAMCORDER"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_VOICE_RECOGNITION"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_VOICE_COMMUNICATION"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_REMOTE_SUBMIX"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_UNPROCESSED"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_VOICE_PERFORMANCE"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_ECHO_REFERENCE"/>
|
||||
<xs:enumeration value="AUDIO_SOURCE_FM_TUNER"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="pfwCriterionTypeEnum">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="inclusive"/>
|
||||
<xs:enumeration value="exclusive"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
Loading…
Reference in a new issue