Merge changes from topic "apply-aosp-1209307-and-following"

* changes:
  [audiopolicy][enginebase] Fix schema verification
  Sync AUDIO_FLAG_XXX to/from string utility with enumeration
  [AudioPolicy][EngineConfigurable] Cleanup warn / error logs
  [AudioPolicy][EngineConfigurable] Fix new assistant stream regression
  [AudioPolicy][EngineConfigurable] Prevent regression on audio-base.h change
gugelfrei
Treehugger Robot 5 years ago committed by Gerrit Code Review
commit 9b7d89970a

@ -394,6 +394,7 @@ const AudioFlagConverter::Table AudioFlagConverter::mTable[] = {
MAKE_STRING_FROM_ENUM(AUDIO_FLAG_LOW_LATENCY),
MAKE_STRING_FROM_ENUM(AUDIO_FLAG_DEEP_BUFFER),
MAKE_STRING_FROM_ENUM(AUDIO_FLAG_NO_MEDIA_PROJECTION),
MAKE_STRING_FROM_ENUM(AUDIO_FLAG_MUTE_HAPTIC),
MAKE_STRING_FROM_ENUM(AUDIO_FLAG_NO_SYSTEM_CAPTURE),
TERMINATOR
};

@ -141,6 +141,15 @@ engineConfig::ParsingResult EngineBase::loadAudioPolicyEngineConfig()
result = {std::make_unique<engineConfig::Config>(config),
static_cast<size_t>(ret == NO_ERROR ? 0 : 1)};
}
// Append for internal use only strategies/volume groups (e.g. rerouting/patch)
result.parsedConfig->productStrategies.insert(
std::end(result.parsedConfig->productStrategies),
std::begin(gOrderedSystemStrategies), std::end(gOrderedSystemStrategies));
result.parsedConfig->volumeGroups.insert(
std::end(result.parsedConfig->volumeGroups),
std::begin(gSystemVolumeGroups), std::end(gSystemVolumeGroups));
ALOGE_IF(result.nbSkippedElement != 0, "skipped %zu elements", result.nbSkippedElement);
engineConfig::VolumeGroup defaultVolumeConfig;

@ -118,15 +118,22 @@ const engineConfig::ProductStrategies gOrderedStrategies = {
AUDIO_FLAG_BEACON, ""}}
}
},
},
{"STRATEGY_REROUTING",
}
};
/**
* For Internal use of respectively audio policy and audioflinger
* For compatibility reason why apm volume config file, volume group name is the stream type.
*/
const engineConfig::ProductStrategies gOrderedSystemStrategies = {
{"rerouting",
{
{"", AUDIO_STREAM_REROUTING, "AUDIO_STREAM_REROUTING",
{{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_UNKNOWN, AUDIO_SOURCE_DEFAULT, 0, ""}}
}
},
},
{"STRATEGY_PATCH",
{"patch",
{
{"", AUDIO_STREAM_PATCH, "AUDIO_STREAM_PATCH",
{{AUDIO_CONTENT_TYPE_UNKNOWN, AUDIO_USAGE_UNKNOWN, AUDIO_SOURCE_DEFAULT, 0, ""}}
@ -134,6 +141,28 @@ const engineConfig::ProductStrategies gOrderedStrategies = {
},
}
};
const engineConfig::VolumeGroups gSystemVolumeGroups = {
{"AUDIO_STREAM_REROUTING", 0, 1,
{
{"DEVICE_CATEGORY_SPEAKER", {{0,0}, {100, 0}}},
{"DEVICE_CATEGORY_HEADSET", {{0,0}, {100, 0}}},
{"DEVICE_CATEGORY_EARPIECE", {{0,0}, {100, 0}}},
{"DEVICE_CATEGORY_EXT_MEDIA", {{0,0}, {100, 0}}},
{"DEVICE_CATEGORY_HEARING_AID", {{0,0}, {100, 0}}},
}
},
{"AUDIO_STREAM_PATCH", 0, 1,
{
{"DEVICE_CATEGORY_SPEAKER", {{0,0}, {100, 0}}},
{"DEVICE_CATEGORY_HEADSET", {{0,0}, {100, 0}}},
{"DEVICE_CATEGORY_EARPIECE", {{0,0}, {100, 0}}},
{"DEVICE_CATEGORY_EXT_MEDIA", {{0,0}, {100, 0}}},
{"DEVICE_CATEGORY_HEARING_AID", {{0,0}, {100, 0}}},
}
}
};
const engineConfig::Config gDefaultEngineConfig = {
1.0,

@ -84,7 +84,7 @@ limitations under the License.
</AttributesGroup>
</ProductStrategy>
<ProductStrategy name="voice_command">
<AttributesGroup volumeGroup="speech">
<AttributesGroup volumeGroup="speech" streamType="AUDIO_STREAM_ASSISTANT">
<Attributes>
<ContentType value="AUDIO_CONTENT_TYPE_SPEECH"/>
<Usage value="AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE"/>
@ -147,10 +147,6 @@ limitations under the License.
<ProductStrategy name="notification">
<AttributesGroup streamType="AUDIO_STREAM_NOTIFICATION" volumeGroup="ring">
<Attributes> <Usage value="AUDIO_USAGE_NOTIFICATION"/> </Attributes>
<Attributes> <Usage value="AUDIO_USAGE_NOTIFICATION_COMMUNICATION_INSTANT"/> </Attributes>
<Attributes> <Usage value="AUDIO_USAGE_NOTIFICATION_COMMUNICATION_DELAYED"/> </Attributes>
<Attributes> <Usage value="AUDIO_USAGE_NOTIFICATION_COMMUNICATION_REQUEST"/> </Attributes>
<Attributes> <Usage value="AUDIO_USAGE_NOTIFICATION_EVENT"/> </Attributes>
</AttributesGroup>
</ProductStrategy>
<ProductStrategy name="system">
@ -167,19 +163,5 @@ limitations under the License.
</AttributesGroup>
</ProductStrategy>
<!-- Routing Strategy rerouting may be removed as following media??? -->
<ProductStrategy name="rerouting">
<AttributesGroup streamType="AUDIO_STREAM_REROUTING" volumeGroup="rerouting">
<Attributes></Attributes>
</AttributesGroup>
</ProductStrategy>
<!-- Patch stream needs full scale volume, define it otherwise switch to default... -->
<ProductStrategy name="patch">
<AttributesGroup streamType="AUDIO_STREAM_PATCH" volumeGroup="patch">
<Attributes></Attributes>
</AttributesGroup>
</ProductStrategy>
</ProductStrategies>

@ -189,25 +189,5 @@
</volume>
</volumeGroup>
<volumeGroup>
<name>rerouting</name>
<indexMin>0</indexMin>
<indexMax>1</indexMax>
<volume deviceCategory="DEVICE_CATEGORY_HEADSET">
<point>0,0</point>
<point>100,0</point>
</volume>
</volumeGroup>
<volumeGroup>
<name>patch</name>
<indexMin>0</indexMin>
<indexMax>1</indexMax>
<volume deviceCategory="DEVICE_CATEGORY_HEADSET">
<point>0,0</point>
<point>100,0</point>
</volume>
</volumeGroup>
</volumeGroups>

@ -84,7 +84,7 @@ limitations under the License.
</AttributesGroup>
</ProductStrategy>
<ProductStrategy name="voice_command">
<AttributesGroup volumeGroup="speech">
<AttributesGroup volumeGroup="speech" streamType="AUDIO_STREAM_ASSISTANT">
<Attributes>
<ContentType value="AUDIO_CONTENT_TYPE_SPEECH"/>
<Usage value="AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE"/>
@ -147,10 +147,6 @@ limitations under the License.
<ProductStrategy name="notification">
<AttributesGroup streamType="AUDIO_STREAM_NOTIFICATION" volumeGroup="ring">
<Attributes> <Usage value="AUDIO_USAGE_NOTIFICATION"/> </Attributes>
<Attributes> <Usage value="AUDIO_USAGE_NOTIFICATION_COMMUNICATION_INSTANT"/> </Attributes>
<Attributes> <Usage value="AUDIO_USAGE_NOTIFICATION_COMMUNICATION_DELAYED"/> </Attributes>
<Attributes> <Usage value="AUDIO_USAGE_NOTIFICATION_COMMUNICATION_REQUEST"/> </Attributes>
<Attributes> <Usage value="AUDIO_USAGE_NOTIFICATION_EVENT"/> </Attributes>
</AttributesGroup>
</ProductStrategy>
<ProductStrategy name="system">
@ -167,18 +163,5 @@ limitations under the License.
</AttributesGroup>
</ProductStrategy>
<!-- Routing Strategy rerouting may be removed as following media??? -->
<ProductStrategy name="rerouting">
<AttributesGroup streamType="AUDIO_STREAM_REROUTING" volumeGroup="rerouting">
<Attributes></Attributes>
</AttributesGroup>
</ProductStrategy>
<!-- Patch stream needs full scale volume, define it otherwise switch to default... -->
<ProductStrategy name="patch">
<AttributesGroup streamType="AUDIO_STREAM_PATCH" volumeGroup="patch">
<Attributes></Attributes>
</AttributesGroup>
</ProductStrategy>
</ProductStrategies>

@ -189,25 +189,5 @@
</volume>
</volumeGroup>
<volumeGroup>
<name>rerouting</name>
<indexMin>0</indexMin>
<indexMax>1</indexMax>
<volume deviceCategory="DEVICE_CATEGORY_HEADSET">
<point>0,0</point>
<point>100,0</point>
</volume>
</volumeGroup>
<volumeGroup>
<name>patch</name>
<indexMin>0</indexMin>
<indexMax>1</indexMax>
<volume deviceCategory="DEVICE_CATEGORY_HEADSET">
<point>0,0</point>
<point>100,0</point>
</volume>
</volumeGroup>
</volumeGroups>

@ -22,7 +22,12 @@
<value literal="0" numerical="1"/>
</values>
</criterion_type>
<criterion_type name="InputDevicesAddressesType" type="inclusive"/>
<criterion_type name="InputDevicesAddressesType" type="inclusive">
<values>
<!-- legacy remote submix -->
<value literal="0" numerical="1"/>
</values>
</criterion_type>
<criterion_type name="AndroidModeType" type="exclusive"/>
<criterion_type name="BooleanType" type="exclusive">
<values>

@ -97,20 +97,5 @@
</AttributesGroup>
</ProductStrategy>
<!-- Routing Strategy rerouting may be removed as following media??? -->
<ProductStrategy name="STRATEGY_REROUTING">
<AttributesGroup streamType="AUDIO_STREAM_REROUTING" volumeGroup="rerouting">
<Attributes></Attributes>
</AttributesGroup>
</ProductStrategy>
<!-- Default product strategy has empty attributes -->
<ProductStrategy name="STRATEGY_PATCH">
<AttributesGroup streamType="AUDIO_STREAM_PATCH" volumeGroup="patch">
<Attributes></Attributes>
</AttributesGroup>
</ProductStrategy>
</ProductStrategies>

@ -215,26 +215,6 @@ volume index from 0 to 100.
<volume deviceCategory="DEVICE_CATEGORY_EXT_MEDIA" ref="DEFAULT_MEDIA_VOLUME_CURVE"/>
<volume deviceCategory="DEVICE_CATEGORY_HEARING_AID" ref="DEFAULT_HEARING_AID_VOLUME_CURVE"/>
</volumeGroup>
<volumeGroup>
<name>rerouting</name>
<indexMin>0</indexMin>
<indexMax>1</indexMax>
<volume deviceCategory="DEVICE_CATEGORY_HEADSET" ref="FULL_SCALE_VOLUME_CURVE"/>
<volume deviceCategory="DEVICE_CATEGORY_SPEAKER" ref="FULL_SCALE_VOLUME_CURVE"/>
<volume deviceCategory="DEVICE_CATEGORY_EARPIECE" ref="FULL_SCALE_VOLUME_CURVE"/>
<volume deviceCategory="DEVICE_CATEGORY_EXT_MEDIA" ref="FULL_SCALE_VOLUME_CURVE"/>
<volume deviceCategory="DEVICE_CATEGORY_HEARING_AID" ref="FULL_SCALE_VOLUME_CURVE"/>
</volumeGroup>
<volumeGroup>
<name>patch</name>
<indexMin>0</indexMin>
<indexMax>1</indexMax>
<volume deviceCategory="DEVICE_CATEGORY_HEADSET" ref="FULL_SCALE_VOLUME_CURVE"/>
<volume deviceCategory="DEVICE_CATEGORY_SPEAKER" ref="FULL_SCALE_VOLUME_CURVE"/>
<volume deviceCategory="DEVICE_CATEGORY_EARPIECE" ref="FULL_SCALE_VOLUME_CURVE"/>
<volume deviceCategory="DEVICE_CATEGORY_EXT_MEDIA" ref="FULL_SCALE_VOLUME_CURVE"/>
<volume deviceCategory="DEVICE_CATEGORY_HEARING_AID" ref="FULL_SCALE_VOLUME_CURVE"/>
</volumeGroup>
</volumeGroups>

@ -31,9 +31,13 @@ prebuilt_etc {
prebuilt_etc {
name: "PolicySubsystem-CommonTypes.xml",
vendor: true,
src: ":PolicySubsystem-CommonTypes",
src: ":buildcommontypesstructure_gen",
sub_dir: "parameter-framework/Structure/Policy",
}
genrule {
name: "buildcommontypesstructure_gen",
defaults: ["buildcommontypesstructurerule"],
}
filegroup {
name: "product_strategies_structure_template",
@ -48,8 +52,8 @@ filegroup {
srcs: ["examples/common/Structure/PolicySubsystem-no-strategy.xml"],
}
filegroup {
name: "PolicySubsystem-CommonTypes",
srcs: ["examples/common/Structure/PolicySubsystem-CommonTypes.xml"],
name: "common_types_structure_template",
srcs: ["examples/common/Structure/PolicySubsystem-CommonTypes.xml.in"],
}
filegroup {
name: "PolicyClass",

@ -85,7 +85,7 @@ filegroup {
srcs: [
":PolicyClass",
":PolicySubsystem",
":PolicySubsystem-CommonTypes",
":buildcommontypesstructure_gen",
":buildstrategiesstructure_gen",
],
}

@ -14,7 +14,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -59,7 +59,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -106,7 +106,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -152,7 +152,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -205,7 +205,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -251,7 +251,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -304,7 +304,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -357,7 +357,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -411,7 +411,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -464,7 +464,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -517,7 +517,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -570,7 +570,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -623,7 +623,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -676,7 +676,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -729,7 +729,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0

@ -86,7 +86,7 @@ filegroup {
srcs: [
":PolicyClass",
":PolicySubsystem",
":PolicySubsystem-CommonTypes",
":buildcommontypesstructure_gen",
":buildstrategiesstructure_gen",
],
}

@ -14,7 +14,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -59,7 +59,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -106,7 +106,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -153,7 +153,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -198,7 +198,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -245,7 +245,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -291,7 +291,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -337,7 +337,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -384,7 +384,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -430,7 +430,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -476,7 +476,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -522,7 +522,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -568,7 +568,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -614,7 +614,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -659,7 +659,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0

@ -94,7 +94,7 @@ filegroup {
srcs: [
":PolicyClass",
":PolicySubsystem",
":PolicySubsystem-CommonTypes",
":buildcommontypesstructure_gen",
":buildstrategiesstructure_gen",
],
}

@ -45,7 +45,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -73,7 +73,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -101,7 +101,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -129,7 +129,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -157,7 +157,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -186,7 +186,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -215,7 +215,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -244,7 +244,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -281,7 +281,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 1
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -317,7 +317,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 1
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -354,7 +354,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 1
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -394,7 +394,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 1
@ -425,7 +425,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 1
usb_device = 0
@ -455,7 +455,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 1
usb_accessory = 0
usb_device = 0
@ -485,7 +485,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -517,7 +517,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 1
anlg_dock_headset = 1
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -546,7 +546,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -568,7 +568,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -588,7 +588,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0

@ -34,7 +34,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -62,7 +62,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -90,7 +90,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 1
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -118,7 +118,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 1
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -147,7 +147,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -176,7 +176,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -205,7 +205,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -242,7 +242,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -281,7 +281,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -318,7 +318,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -358,7 +358,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 1
@ -389,7 +389,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 1
usb_device = 0
@ -419,7 +419,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 1
usb_accessory = 0
usb_device = 0
@ -449,7 +449,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 1
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -481,7 +481,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 1
anlg_dock_headset = 1
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -510,7 +510,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -548,7 +548,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -568,7 +568,7 @@ supDomain: DeviceForProductStrategies
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0

@ -77,7 +77,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -100,7 +100,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -123,7 +123,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 1
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -146,7 +146,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 1
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -169,7 +169,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -192,7 +192,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -215,7 +215,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -238,7 +238,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 1
usb_device = 0
@ -261,7 +261,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 1
@ -284,7 +284,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 1
usb_accessory = 0
usb_device = 0
@ -307,7 +307,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 1
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -331,7 +331,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 1
anlg_dock_headset = 1
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -351,7 +351,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0

@ -26,7 +26,7 @@ supDomain: DeviceForProductStrategy
speaker = 0
hdmi = 0
dgtl_dock_headset = 0
angl_dock_headset = 0
anlg_dock_headset = 0
usb_device = 0
usb_accessory = 0
wired_headset = 0
@ -46,7 +46,7 @@ supDomain: DeviceForProductStrategy
speaker = 0
hdmi = 0
dgtl_dock_headset = 0
angl_dock_headset = 0
anlg_dock_headset = 0
usb_device = 0
usb_accessory = 0
wired_headset = 0
@ -66,7 +66,7 @@ supDomain: DeviceForProductStrategy
speaker = 0
hdmi = 0
dgtl_dock_headset = 0
angl_dock_headset = 0
anlg_dock_headset = 0
usb_device = 0
usb_accessory = 0
wired_headset = 0
@ -86,7 +86,7 @@ supDomain: DeviceForProductStrategy
speaker = 0
hdmi = 0
dgtl_dock_headset = 0
angl_dock_headset = 0
anlg_dock_headset = 0
usb_device = 0
usb_accessory = 0
wired_headset = 0
@ -109,7 +109,7 @@ supDomain: DeviceForProductStrategy
speaker = 1
hdmi = 0
dgtl_dock_headset = 0
angl_dock_headset = 0
anlg_dock_headset = 0
usb_device = 0
usb_accessory = 0
wired_headset = 0
@ -127,7 +127,7 @@ supDomain: DeviceForProductStrategy
speaker = 0
hdmi = 0
dgtl_dock_headset = 0
angl_dock_headset = 0
anlg_dock_headset = 0
usb_device = 0
usb_accessory = 0
wired_headset = 0
@ -145,7 +145,7 @@ supDomain: DeviceForProductStrategy
speaker = 0
hdmi = 0
dgtl_dock_headset = 0
angl_dock_headset = 0
anlg_dock_headset = 0
usb_device = 0
usb_accessory = 0
wired_headset = 0
@ -163,7 +163,7 @@ supDomain: DeviceForProductStrategy
speaker = 0
hdmi = 0
dgtl_dock_headset = 0
angl_dock_headset = 0
anlg_dock_headset = 0
usb_device = 0
usb_accessory = 0
wired_headset = 1
@ -181,7 +181,7 @@ supDomain: DeviceForProductStrategy
speaker = 0
hdmi = 0
dgtl_dock_headset = 0
angl_dock_headset = 0
anlg_dock_headset = 0
usb_device = 0
usb_accessory = 1
wired_headset = 0
@ -199,7 +199,7 @@ supDomain: DeviceForProductStrategy
speaker = 0
hdmi = 0
dgtl_dock_headset = 0
angl_dock_headset = 0
anlg_dock_headset = 0
usb_device = 1
usb_accessory = 0
wired_headset = 0
@ -217,7 +217,7 @@ supDomain: DeviceForProductStrategy
speaker = 0
hdmi = 0
dgtl_dock_headset = 1
angl_dock_headset = 0
anlg_dock_headset = 0
usb_device = 0
usb_accessory = 0
wired_headset = 0
@ -235,7 +235,7 @@ supDomain: DeviceForProductStrategy
speaker = 0
hdmi = 1
dgtl_dock_headset = 0
angl_dock_headset = 0
anlg_dock_headset = 0
usb_device = 0
usb_accessory = 0
wired_headset = 0
@ -254,7 +254,7 @@ supDomain: DeviceForProductStrategy
speaker = 0
hdmi = 0
dgtl_dock_headset = 0
angl_dock_headset = 1
anlg_dock_headset = 1
usb_device = 0
usb_accessory = 0
wired_headset = 0
@ -277,7 +277,7 @@ supDomain: DeviceForProductStrategy
speaker = 1
hdmi = 0
dgtl_dock_headset = 0
angl_dock_headset = 0
anlg_dock_headset = 0
usb_device = 0
usb_accessory = 0
wired_headset = 0
@ -293,7 +293,7 @@ supDomain: DeviceForProductStrategy
speaker = 0
hdmi = 0
dgtl_dock_headset = 0
angl_dock_headset = 0
anlg_dock_headset = 0
usb_device = 0
usb_accessory = 0
wired_headset = 0

@ -14,7 +14,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0

@ -32,7 +32,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -55,7 +55,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -78,7 +78,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -108,7 +108,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -138,7 +138,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 1
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -168,7 +168,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 1
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -195,7 +195,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -222,7 +222,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -245,7 +245,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -283,7 +283,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 1
@ -311,7 +311,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 1
@ -339,7 +339,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 1
usb_accessory = 0
usb_device = 0
@ -367,7 +367,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 1
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -395,7 +395,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 1
anlg_dock_headset = 1
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -422,7 +422,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -449,7 +449,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -472,7 +472,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0

@ -14,7 +14,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0

@ -69,7 +69,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp = 1
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -95,7 +95,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 1
bluetooth_a2dp_speaker = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -121,7 +121,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 1
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -148,7 +148,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -175,7 +175,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -202,7 +202,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -238,7 +238,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -276,7 +276,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -312,7 +312,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -349,7 +349,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 1
@ -378,7 +378,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 1
usb_device = 0
@ -407,7 +407,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 1
usb_accessory = 0
usb_device = 0
@ -437,7 +437,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
angl_dock_headset = 1
anlg_dock_headset = 1
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -464,7 +464,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -482,7 +482,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp = 0
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0

@ -92,7 +92,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -119,7 +119,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -146,7 +146,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -173,7 +173,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -200,7 +200,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -227,7 +227,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -264,7 +264,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 1
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -305,7 +305,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 1
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -342,7 +342,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 1
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -380,7 +380,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 1
@ -410,7 +410,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 1
usb_device = 0
@ -440,7 +440,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 1
usb_accessory = 0
usb_device = 0
@ -470,7 +470,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -501,7 +501,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 1
anlg_dock_headset = 1
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -528,7 +528,7 @@ supDomain: DeviceForProductStrategy
wired_headset = 0
wired_headphone = 0
line = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0

@ -19,7 +19,7 @@ supDomain: DeviceForProductStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0

@ -11,6 +11,7 @@ supDomain: VolumeProfilesForStream
/Policy/policy/streams/enforced_audible/applicable_volume_profile/volume_profile = enforced_audible
/Policy/policy/streams/tts/applicable_volume_profile/volume_profile = tts
/Policy/policy/streams/accessibility/applicable_volume_profile/volume_profile = accessibility
/Policy/policy/streams/assistant/applicable_volume_profile/volume_profile = assistant
/Policy/policy/streams/rerouting/applicable_volume_profile/volume_profile = rerouting
/Policy/policy/streams/patch/applicable_volume_profile/volume_profile = patch

@ -55,7 +55,7 @@ filegroup {
srcs: [
":PolicyClass",
":PolicySubsystem",
":PolicySubsystem-CommonTypes",
":buildcommontypesstructure_gen",
],
}
filegroup {

@ -54,7 +54,7 @@ filegroup {
srcs: [
":PolicyClass",
":PolicySubsystem",
":PolicySubsystem-CommonTypes",
":buildcommontypesstructure_gen",
],
}
filegroup {

@ -13,7 +13,7 @@ domain: DeviceForStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -41,7 +41,7 @@ domain: DeviceForStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -69,7 +69,7 @@ domain: DeviceForStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -97,7 +97,7 @@ domain: DeviceForStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -125,7 +125,7 @@ domain: DeviceForStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -153,7 +153,7 @@ domain: DeviceForStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -181,7 +181,7 @@ domain: DeviceForStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -209,7 +209,7 @@ domain: DeviceForStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0
@ -237,7 +237,7 @@ domain: DeviceForStrategy
bluetooth_a2dp_headphones = 0
bluetooth_a2dp_speaker = 0
hdmi = 0
angl_dock_headset = 0
anlg_dock_headset = 0
dgtl_dock_headset = 0
usb_accessory = 0
usb_device = 0

@ -1,186 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ComponentTypeSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xi="http://www.w3.org/2001/XInclude"
xsi:noNamespaceSchemaLocation="Schemas/ComponentTypeSet.xsd">
<!-- Output devices definition as a bitfield for the supported devices per output
profile. It must match with the output device enum parameter.
-->
<!--#################### GLOBAL COMPONENTS BEGIN ####################-->
<!--#################### GLOBAL COMPONENTS END ####################-->
<ComponentType Name="OutputDevicesMask" Description="32th bit is not allowed as dedicated
for input devices detection">
<BitParameterBlock Name="mask" Size="32">
<BitParameter Name="earpiece" Size="1" Pos="0"/>
<BitParameter Name="speaker" Size="1" Pos="1"/>
<BitParameter Name="wired_headset" Size="1" Pos="2"/>
<BitParameter Name="wired_headphone" Size="1" Pos="3"/>
<BitParameter Name="bluetooth_sco" Size="1" Pos="4"/>
<BitParameter Name="bluetooth_sco_headset" Size="1" Pos="5"/>
<BitParameter Name="bluetooth_sco_carkit" Size="1" Pos="6"/>
<BitParameter Name="bluetooth_a2dp" Size="1" Pos="7"/>
<BitParameter Name="bluetooth_a2dp_headphones" Size="1" Pos="8"/>
<BitParameter Name="bluetooth_a2dp_speaker" Size="1" Pos="9"/>
<BitParameter Name="hdmi" Size="1" Pos="10"/>
<BitParameter Name="angl_dock_headset" Size="1" Pos="11"/>
<BitParameter Name="dgtl_dock_headset" Size="1" Pos="12"/>
<BitParameter Name="usb_accessory" Size="1" Pos="13"/>
<BitParameter Name="usb_device" Size="1" Pos="14"/>
<BitParameter Name="remote_submix" Size="1" Pos="15"/>
<BitParameter Name="telephony_tx" Size="1" Pos="16"/>
<BitParameter Name="line" Size="1" Pos="17"/>
<BitParameter Name="hdmi_arc" Size="1" Pos="18"/>
<BitParameter Name="spdif" Size="1" Pos="19"/>
<BitParameter Name="fm" Size="1" Pos="20"/>
<BitParameter Name="aux_line" Size="1" Pos="21"/>
<BitParameter Name="speaker_safe" Size="1" Pos="22"/>
<BitParameter Name="ip" Size="1" Pos="23"/>
<BitParameter Name="bus" Size="1" Pos="24"/>
<BitParameter Name="proxy" Size="1" Pos="25"/>
<BitParameter Name="usb_headset" Size="1" Pos="26"/>
<BitParameter Name="hearing_aid" Size="1" Pos="27"/>
<BitParameter Name="echo_canceller" Size="1" Pos="28"/>
<BitParameter Name="stub" Size="1" Pos="30"/>
</BitParameterBlock>
</ComponentType>
<!-- Input devices definition as a bitfield for the supported devices per Input
profile. It must match with the Input device enum parameter.
-->
<ComponentType Name="InputDevicesMask">
<BitParameterBlock Name="mask" Size="32">
<BitParameter Name="communication" Size="1" Pos="0"/>
<BitParameter Name="ambient" Size="1" Pos="1"/>
<BitParameter Name="builtin_mic" Size="1" Pos="2"/>
<BitParameter Name="bluetooth_sco_headset" Size="1" Pos="3"/>
<BitParameter Name="wired_headset" Size="1" Pos="4"/>
<BitParameter Name="hdmi" Size="1" Pos="5"/>
<BitParameter Name="telephony_rx" Size="1" Pos="6"/>
<BitParameter Name="back_mic" Size="1" Pos="7"/>
<BitParameter Name="remote_submix" Size="1" Pos="8"/>
<BitParameter Name="anlg_dock_headset" Size="1" Pos="9"/>
<BitParameter Name="dgtl_dock_headset" Size="1" Pos="10"/>
<BitParameter Name="usb_accessory" Size="1" Pos="11"/>
<BitParameter Name="usb_device" Size="1" Pos="12"/>
<BitParameter Name="fm_tuner" Size="1" Pos="13"/>
<BitParameter Name="tv_tuner" Size="1" Pos="14"/>
<BitParameter Name="line" Size="1" Pos="15"/>
<BitParameter Name="spdif" Size="1" Pos="16"/>
<BitParameter Name="bluetooth_a2dp" Size="1" Pos="17"/>
<BitParameter Name="loopback" Size="1" Pos="18"/>
<BitParameter Name="ip" Size="1" Pos="19"/>
<BitParameter Name="bus" Size="1" Pos="20"/>
<BitParameter Name="proxy" Size="1" Pos="21"/>
<BitParameter Name="usb_headset" Size="1" Pos="22"/>
<BitParameter Name="bluetooth_ble" Size="1" Pos="23"/>
<BitParameter Name="hdmi_arc" Size="1" Pos="24"/>
<BitParameter Name="echo_reference" Size="1" Pos="25"/>
<BitParameter Name="stub" Size="1" Pos="30"/>
</BitParameterBlock>
</ComponentType>
<ComponentType Name="OutputFlags"
Description="the audio output flags serve two purposes:
- when an AudioTrack is created they indicate a wish to be connected to an
output stream with attributes corresponding to the specified flags.
- when present in an output profile descriptor listed for a particular audio
hardware module, they indicate that an output stream can be opened that
supports the attributes indicated by the flags.
The audio policy manager will try to match the flags in the request
(when getOuput() is called) to an available output stream.">
<BitParameterBlock Name="mask" Size="32">
<BitParameter Name="direct" Size="1" Pos="0"/>
<BitParameter Name="primary" Size="1" Pos="1"/>
<BitParameter Name="fast" Size="1" Pos="2"/>
<BitParameter Name="deep_buffer" Size="1" Pos="3"/>
<BitParameter Name="compress_offload" Size="1" Pos="4"/>
<BitParameter Name="non_blocking" Size="1" Pos="5"/>
<BitParameter Name="hw_av_sync" Size="1" Pos="6"/>
<BitParameter Name="tts" Size="1" Pos="7"/>
<BitParameter Name="raw" Size="1" Pos="8"/>
<BitParameter Name="sync" Size="1" Pos="9"/>
<BitParameter Name="iec958_nonaudio" Size="1" Pos="10"/>
</BitParameterBlock>
</ComponentType>
<ComponentType Name="InputFlags"
Description="The audio input flags are analogous to audio output flags.
Currently they are used only when an AudioRecord is created,
to indicate a preference to be connected to an input stream with
attributes corresponding to the specified flags.">
<BitParameterBlock Name="mask" Size="32">
<BitParameter Name="fast" Size="1" Pos="0"/>
<BitParameter Name="hw_hotword" Size="1" Pos="2"/>
<BitParameter Name="raw" Size="1" Pos="3"/>
<BitParameter Name="sync" Size="1" Pos="4"/>
</BitParameterBlock>
</ComponentType>
<ComponentType Name="InputSourcesMask" Description="The audio input source is also known
as the use case.">
<BitParameterBlock Name="mask" Size="32">
<BitParameter Name="default" Size="1" Pos="0"/>
<BitParameter Name="mic" Size="1" Pos="1"/>
<BitParameter Name="voice_uplink" Size="1" Pos="2"/>
<BitParameter Name="voice_downlink" Size="1" Pos="3"/>
<BitParameter Name="voice_call" Size="1" Pos="4"/>
<BitParameter Name="camcorder" Size="1" Pos="5"/>
<BitParameter Name="voice_recognition" Size="1" Pos="6"/>
<BitParameter Name="voice_communication" Size="1" Pos="7"/>
<BitParameter Name="remote_submix" Size="1" Pos="8"/>
<BitParameter Name="unprocessed" Size="1" Pos="9"/>
<BitParameter Name="voice_performance" Size="1" Pos="10"/>
<BitParameter Name="echo_reference" Size="1" Pos="11"/>
<BitParameter Name="fm_tuner" Size="1" Pos="12"/>
<BitParameter Name="hotword" Size="1" Pos="13"/>
</BitParameterBlock>
</ComponentType>
<!--#################### STREAM COMMON TYPES BEGIN ####################-->
<ComponentType Name="VolumeProfileType">
<EnumParameter Name="volume_profile" Size="32">
<ValuePair Literal="voice_call" Numerical="0"/>
<ValuePair Literal="system" Numerical="1"/>
<ValuePair Literal="ring" Numerical="2"/>
<ValuePair Literal="music" Numerical="3"/>
<ValuePair Literal="alarm" Numerical="4"/>
<ValuePair Literal="notification" Numerical="5"/>
<ValuePair Literal="bluetooth_sco" Numerical="6"/>
<ValuePair Literal="enforced_audible" Numerical="7"/>
<ValuePair Literal="dtmf" Numerical="8"/>
<ValuePair Literal="tts" Numerical="9"/>
<ValuePair Literal="accessibility" Numerical="10"/>
<ValuePair Literal="rerouting" Numerical="11"/>
<ValuePair Literal="patch" Numerical="12"/>
</EnumParameter>
</ComponentType>
<ComponentType Name="Stream" Mapping="Stream">
<Component Name="applicable_volume_profile" Type="VolumeProfileType"
Description="Volume profile followed by a given stream type."/>
</ComponentType>
<!--#################### STREAM COMMON TYPES END ####################-->
<!--#################### INPUT SOURCE COMMON TYPES BEGIN ####################-->
<ComponentType Name="InputSource">
<Component Name="applicable_input_device" Type="InputDevicesMask"
Mapping="InputSource" Description="Selected Input device"/>
</ComponentType>
<!--#################### INPUT SOURCE COMMON TYPES END ####################-->
<!--#################### PRODUCT STRATEGY COMMON TYPES BEGIN ####################-->
<ComponentType Name="ProductStrategy" Mapping="ProductStrategy">
<Component Name="selected_output_devices" Type="OutputDevicesMask"/>
<StringParameter Name="device_address" MaxLength="256"
Description="if any, device address associated"/>
</ComponentType>
<!--#################### PRODUCT STRATEGY COMMON TYPES END ####################-->
</ComponentTypeSet>

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<ComponentTypeSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xi="http://www.w3.org/2001/XInclude"
xsi:noNamespaceSchemaLocation="Schemas/ComponentTypeSet.xsd">
<!-- Output devices definition as a bitfield for the supported devices per output
profile. It must match with the output device enum parameter.
-->
<!--#################### GLOBAL COMPONENTS BEGIN ####################-->
<!--#################### GLOBAL COMPONENTS END ####################-->
<!-- Automatically filled from audio-base.h file -->
<ComponentType Name="OutputDevicesMask" Description="32th bit is not allowed as dedicated for input devices detection">
<BitParameterBlock Name="mask" Size="32">
</BitParameterBlock>
</ComponentType>
<!-- Input devices definition as a bitfield for the supported devices per Input
profile. It must match with the Input device enum parameter.
-->
<!-- Automatically filled from audio-base.h file -->
<ComponentType Name="InputDevicesMask">
<BitParameterBlock Name="mask" Size="32">
</BitParameterBlock>
</ComponentType>
<!--#################### STREAM COMMON TYPES BEGIN ####################-->
<!-- Automatically filled from audio-base.h file. VolumeProfileType is associated to stream type -->
<ComponentType Name="VolumeProfileType">
<EnumParameter Name="volume_profile" Size="32">
</EnumParameter>
</ComponentType>
<ComponentType Name="Stream" Mapping="Stream">
<Component Name="applicable_volume_profile" Type="VolumeProfileType"
Description="Volume profile followed by a given stream type."/>
</ComponentType>
<!--#################### STREAM COMMON TYPES END ####################-->
<!--#################### INPUT SOURCE COMMON TYPES BEGIN ####################-->
<ComponentType Name="InputSource">
<Component Name="applicable_input_device" Type="InputDevicesMask"
Mapping="InputSource" Description="Selected Input device"/>
</ComponentType>
<!--#################### INPUT SOURCE COMMON TYPES END ####################-->
<!--#################### PRODUCT STRATEGY COMMON TYPES BEGIN ####################-->
<ComponentType Name="ProductStrategy" Mapping="ProductStrategy">
<Component Name="selected_output_devices" Type="OutputDevicesMask"/>
<StringParameter Name="device_address" MaxLength="256"
Description="if any, device address associated"/>
</ComponentType>
<!--#################### PRODUCT STRATEGY COMMON TYPES END ####################-->
</ComponentTypeSet>

@ -28,6 +28,8 @@
Description="Transmitted Through Speaker. Plays over speaker only, silent on other devices"/>
<Component Name="accessibility" Type="Stream" Mapping="Name:AUDIO_STREAM_ACCESSIBILITY"
Description="For accessibility talk back prompts"/>
<Component Name="assistant" Type="Stream" Mapping="Name:AUDIO_STREAM_ASSISTANT"
Description="used by a virtual assistant like Google Assistant, Bixby, etc."/>
<Component Name="rerouting" Type="Stream" Mapping="Name:AUDIO_STREAM_REROUTING"
Description="For dynamic policy output mixes"/>
<Component Name="patch" Type="Stream" Mapping="Name:AUDIO_STREAM_PATCH"

@ -44,6 +44,8 @@
Description="Transmitted Through Speaker. Plays over speaker only, silent on other devices"/>
<Component Name="accessibility" Type="Stream" Mapping="Name:AUDIO_STREAM_ACCESSIBILITY"
Description="For accessibility talk back prompts"/>
<Component Name="assistant" Type="Stream" Mapping="Name:AUDIO_STREAM_ASSISTANT"
Description="used by a virtual assistant like Google Assistant, Bixby, etc."/>
<Component Name="rerouting" Type="Stream" Mapping="Name:AUDIO_STREAM_REROUTING"
Description="For dynamic policy output mixes"/>
<Component Name="patch" Type="Stream" Mapping="Name:AUDIO_STREAM_PATCH"

@ -129,7 +129,7 @@ bool Engine::setPropertyForKey(const Property &property, const Key &key)
Element<Key> *element = getFromCollection<Key>(key);
if (element == NULL) {
ALOGE("%s: Element not found within collection", __FUNCTION__);
return BAD_VALUE;
return false;
}
return element->template set<Property>(property) == NO_ERROR;
}

@ -30,7 +30,7 @@ status_t Element<audio_source_t>::setIdentifier(audio_source_t identifier)
return BAD_VALUE;
}
mIdentifier = identifier;
ALOGD("%s: InputSource %s identifier 0x%X", __FUNCTION__, getName().c_str(), identifier);
ALOGV("%s: InputSource %s identifier 0x%X", __FUNCTION__, getName().c_str(), identifier);
return NO_ERROR;
}
@ -46,15 +46,18 @@ status_t Element<audio_source_t>::setIdentifier(audio_source_t identifier)
template <>
status_t Element<audio_source_t>::set(audio_devices_t devices)
{
if (devices != AUDIO_DEVICE_NONE) {
devices |= AUDIO_DEVICE_BIT_IN;
if (devices == AUDIO_DEVICE_NONE) {
// Reset
mApplicableDevices = devices;
return NO_ERROR;
}
devices |= AUDIO_DEVICE_BIT_IN;
if (!audio_is_input_device(devices)) {
ALOGE("%s: trying to set an invalid device 0x%X for input source %s",
__FUNCTION__, devices, getName().c_str());
return BAD_VALUE;
}
ALOGD("%s: 0x%X for input source %s", __FUNCTION__, devices, getName().c_str());
ALOGV("%s: 0x%X for input source %s", __FUNCTION__, devices, getName().c_str());
mApplicableDevices = devices;
return NO_ERROR;
}

@ -73,10 +73,11 @@ private:
Element(const Element &object);
Element &operator=(const Element &object);
std::string mName; /**< Unique literal Identifier of a policy base element*/
audio_source_t mIdentifier; /**< Unique numerical Identifier of a policy base element*/
audio_devices_t mApplicableDevices; /**< Applicable input device for this input source. */
const std::string mName; /**< Unique literal Identifier of a policy base element*/
/** Unique numerical Identifier of a policy base element */
audio_source_t mIdentifier = AUDIO_SOURCE_DEFAULT;
/** Applicable input device for this input source. */
audio_devices_t mApplicableDevices = AUDIO_DEVICE_NONE;
};
typedef Element<audio_source_t> InputSource;

@ -30,7 +30,7 @@ status_t Element<audio_stream_type_t>::setIdentifier(audio_stream_type_t identif
return BAD_VALUE;
}
mIdentifier = identifier;
ALOGD("%s: Stream %s identifier 0x%X", __FUNCTION__, getName().c_str(), identifier);
ALOGV("%s: Stream %s identifier 0x%X", __FUNCTION__, getName().c_str(), identifier);
return NO_ERROR;
}
@ -41,7 +41,7 @@ status_t Element<audio_stream_type_t>::set<audio_stream_type_t>(audio_stream_typ
return BAD_VALUE;
}
mVolumeProfile = volumeProfile;
ALOGD("%s: 0x%X for Stream %s", __FUNCTION__, mVolumeProfile, getName().c_str());
ALOGV("%s: 0x%X for Stream %s", __FUNCTION__, mVolumeProfile, getName().c_str());
return NO_ERROR;
}

@ -133,3 +133,29 @@ genrule_defaults {
],
out: ["ProductStrategies.xml"],
}
//##################################################################################################
// Tools for policy parameter-framework common type structure file generation
//
python_binary_host {
name: "buildCommonTypesStructureFile.py",
main: "buildCommonTypesStructureFile.py",
srcs: [
"buildCommonTypesStructureFile.py",
],
defaults: ["tools_default"],
}
genrule_defaults {
name: "buildcommontypesstructurerule",
tools: ["buildCommonTypesStructureFile.py"],
cmd: "$(location buildCommonTypesStructureFile.py) " +
"--androidaudiobaseheader $(location :libaudio_system_audio_base) " +
"--commontypesstructure $(location :common_types_structure_template) " +
"--outputfile $(out)",
srcs: [
":common_types_structure_template",
":libaudio_system_audio_base",
],
out: ["PolicySubsystem-CommonTypes.xml"],
}

@ -0,0 +1,184 @@
#! /usr/bin/python3
#
# pylint: disable=line-too-long, missing-docstring, logging-format-interpolation, invalid-name
#
# 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.
import argparse
import re
import sys
import os
import logging
import xml.etree.ElementTree as ET
from collections import OrderedDict
import xml.dom.minidom as MINIDOM
def parseArgs():
argparser = argparse.ArgumentParser(description="Parameter-Framework XML \
structure file generator.\n\
Exit with the number of (recoverable or not) error that occured.")
argparser.add_argument('--androidaudiobaseheader',
help="Android Audio Base C header file, Mandatory.",
metavar="ANDROID_AUDIO_BASE_HEADER",
type=argparse.FileType('r'),
required=True)
argparser.add_argument('--commontypesstructure',
help="Structure XML base file. Mandatory.",
metavar="STRUCTURE_FILE_IN",
type=argparse.FileType('r'),
required=True)
argparser.add_argument('--outputfile',
help="Structure XML file. Mandatory.",
metavar="STRUCTURE_FILE_OUT",
type=argparse.FileType('w'),
required=True)
argparser.add_argument('--verbose',
action='store_true')
return argparser.parse_args()
def findBitPos(decimal):
pos = 0
i = 1
while i != decimal:
i = i << 1
pos = pos + 1
if pos == 32:
return -1
return pos
def generateXmlStructureFile(componentTypeDict, structureTypesFile, outputFile):
logging.info("Importing structureTypesFile {}".format(structureTypesFile))
component_types_in_tree = ET.parse(structureTypesFile)
component_types_root = component_types_in_tree.getroot()
for component_types_name, values_dict in componentTypeDict.items():
for component_type in component_types_root.findall('ComponentType'):
if component_type.get('Name') == component_types_name:
bitparameters_node = component_type.find("BitParameterBlock")
if bitparameters_node is not None:
ordered_values = OrderedDict(sorted(values_dict.items(), key=lambda x: x[1]))
for key, value in ordered_values.items():
value_node = ET.SubElement(bitparameters_node, "BitParameter")
value_node.set('Name', key)
value_node.set('Size', "1")
value_node.set('Pos', str(findBitPos(value)))
enum_parameter_node = component_type.find("EnumParameter")
if enum_parameter_node is not None:
ordered_values = OrderedDict(sorted(values_dict.items(), key=lambda x: x[1]))
for key, value in ordered_values.items():
value_node = ET.SubElement(enum_parameter_node, "ValuePair")
value_node.set('Literal', key)
value_node.set('Numerical', str(value))
xmlstr = ET.tostring(component_types_root, encoding='utf8', method='xml')
reparsed = MINIDOM.parseString(xmlstr)
prettyXmlStr = reparsed.toprettyxml(indent=" ", newl='\n')
prettyXmlStr = os.linesep.join([s for s in prettyXmlStr.splitlines() if s.strip()])
outputFile.write(prettyXmlStr)
def capitalizeLine(line):
return ' '.join((w.capitalize() for w in line.split(' ')))
def parseAndroidAudioFile(androidaudiobaseheaderFile):
#
# Adaptation table between Android Enumeration prefix and Audio PFW Criterion type names
#
component_type_mapping_table = {
'AUDIO_STREAM' : "VolumeProfileType",
'AUDIO_DEVICE_OUT' : "OutputDevicesMask",
'AUDIO_DEVICE_IN' : "InputDevicesMask"}
all_component_types = {
'VolumeProfileType' : {},
'OutputDevicesMask' : {},
'InputDevicesMask' : {}
}
#
# _CNT, _MAX, _ALL and _NONE are prohibited values as ther are just helpers for enum users.
#
ignored_values = ['CNT', 'MAX', 'ALL', 'NONE']
criteria_pattern = re.compile(
r"\s*(?P<type>(?:"+'|'.join(component_type_mapping_table.keys()) + "))_" \
r"(?P<literal>(?!" + '|'.join(ignored_values) + ")\w*)\s*=\s*" \
r"(?P<values>(?:0[xX])?[0-9a-fA-F]+)")
logging.info("Checking Android Header file {}".format(androidaudiobaseheaderFile))
for line_number, line in enumerate(androidaudiobaseheaderFile):
match = criteria_pattern.match(line)
if match:
logging.debug("The following line is VALID: {}:{}\n{}".format(
androidaudiobaseheaderFile.name, line_number, line))
component_type_name = component_type_mapping_table[match.groupdict()['type']]
component_type_literal = match.groupdict()['literal'].lower()
component_type_numerical_value = match.groupdict()['values']
# for AUDIO_DEVICE_IN: need to remove sign bit / rename default to stub
if component_type_name == "InputDevicesMask":
component_type_numerical_value = str(int(component_type_numerical_value, 0) & ~2147483648)
if component_type_literal == "default":
component_type_literal = "stub"
if component_type_name == "OutputDevicesMask":
if component_type_literal == "default":
component_type_literal = "stub"
# Remove duplicated numerical values
if int(component_type_numerical_value, 0) in all_component_types[component_type_name].values():
logging.info("The value {}:{} is duplicated for criterion {}, KEEPING LATEST".format(component_type_numerical_value, component_type_literal, component_type_name))
for key in list(all_component_types[component_type_name]):
if all_component_types[component_type_name][key] == int(component_type_numerical_value, 0):
del all_component_types[component_type_name][key]
all_component_types[component_type_name][component_type_literal] = int(component_type_numerical_value, 0)
logging.debug("type:{}, literal:{}, values:{}.".format(component_type_name, component_type_literal, component_type_numerical_value))
# Transform input source in inclusive criterion
shift = len(all_component_types['OutputDevicesMask'])
if shift > 32:
logging.critical("OutputDevicesMask incompatible with criterion representation on 32 bits")
logging.info("EXIT ON FAILURE")
exit(1)
for component_types in all_component_types:
values = ','.join('{}:{}'.format(value, key) for key, value in all_component_types[component_types].items())
logging.info("{}: <{}>".format(component_types, values))
return all_component_types
def main():
logging.root.setLevel(logging.INFO)
args = parseArgs()
route_criteria = 0
all_component_types = parseAndroidAudioFile(args.androidaudiobaseheader)
generateXmlStructureFile(all_component_types, args.commontypesstructure, args.outputfile)
# If this file is directly executed
if __name__ == "__main__":
sys.exit(main())

@ -281,7 +281,8 @@ status_t ParameterManagerWrapper::setDeviceConnectionState(
auto criterionType = criterion->getCriterionType();
int deviceAddressId;
if (not criterionType->getNumericalValue(address.c_str(), deviceAddressId)) {
ALOGW("%s: unknown device address reported (%s)", __FUNCTION__, address.c_str());
ALOGW("%s: unknown device address reported (%s) for criterion %s", __FUNCTION__,
address.c_str(), criterionName.c_str());
return BAD_TYPE;
}
int currentValueMask = criterion->getCriterionState();

@ -97,20 +97,5 @@
</AttributesGroup>
</ProductStrategy>
<!-- Routing Strategy rerouting may be removed as following media??? -->
<ProductStrategy name="STRATEGY_REROUTING">
<AttributesGroup streamType="AUDIO_STREAM_REROUTING" volumeGroup="rerouting">
<Attributes></Attributes>
</AttributesGroup>
</ProductStrategy>
<!-- Default product strategy has empty attributes -->
<ProductStrategy name="STRATEGY_PATCH">
<AttributesGroup streamType="AUDIO_STREAM_PATCH" volumeGroup="patch">
<Attributes></Attributes>
</AttributesGroup>
</ProductStrategy>
</ProductStrategies>

@ -217,26 +217,5 @@ volume index from 0 to 100.
<volume deviceCategory="DEVICE_CATEGORY_HEARING_AID" ref="DEFAULT_HEARING_AID_VOLUME_CURVE"/>
</volumeGroup>
<volumeGroup>
<name>rerouting</name>
<indexMin>0</indexMin>
<indexMax>1</indexMax>
<volume deviceCategory="DEVICE_CATEGORY_HEADSET" ref="FULL_SCALE_VOLUME_CURVE"/>
<volume deviceCategory="DEVICE_CATEGORY_SPEAKER" ref="FULL_SCALE_VOLUME_CURVE"/>
<volume deviceCategory="DEVICE_CATEGORY_EARPIECE" ref="FULL_SCALE_VOLUME_CURVE"/>
<volume deviceCategory="DEVICE_CATEGORY_EXT_MEDIA" ref="FULL_SCALE_VOLUME_CURVE"/>
<volume deviceCategory="DEVICE_CATEGORY_HEARING_AID" ref="FULL_SCALE_VOLUME_CURVE"/>
</volumeGroup>
<volumeGroup>
<name>patch</name>
<indexMin>0</indexMin>
<indexMax>1</indexMax>
<volume deviceCategory="DEVICE_CATEGORY_HEADSET" ref="FULL_SCALE_VOLUME_CURVE"/>
<volume deviceCategory="DEVICE_CATEGORY_SPEAKER" ref="FULL_SCALE_VOLUME_CURVE"/>
<volume deviceCategory="DEVICE_CATEGORY_EARPIECE" ref="FULL_SCALE_VOLUME_CURVE"/>
<volume deviceCategory="DEVICE_CATEGORY_EXT_MEDIA" ref="FULL_SCALE_VOLUME_CURVE"/>
<volume deviceCategory="DEVICE_CATEGORY_HEARING_AID" ref="FULL_SCALE_VOLUME_CURVE"/>
</volumeGroup>
</volumeGroups>

Loading…
Cancel
Save