diff options
Diffstat (limited to 'services/audiopolicy/engineconfigurable/parameter-framework')
37 files changed, 5908 insertions, 0 deletions
diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/Android.mk b/services/audiopolicy/engineconfigurable/parameter-framework/Android.mk new file mode 100644 index 0000000..c402fd5 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/Android.mk @@ -0,0 +1,7 @@ +LOCAL_PATH := $(call my-dir) + +####################################################################### +# Recursive call sub-folder Android.mk +####################################################################### + +include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Android.mk b/services/audiopolicy/engineconfigurable/parameter-framework/example/Android.mk new file mode 100644 index 0000000..98b7152 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Android.mk @@ -0,0 +1,104 @@ +################################################################################################ +# +# @NOTE: +# Audio Policy Engine configurable example for generic device build +# +# Any vendor shall have its own configuration within the corresponding device folder +# +################################################################################################ + + +LOCAL_PATH := $(call my-dir) + +################################################################## +# CONFIGURATION FILES +################################################################## +######### Policy PFW top level file ######### + +include $(CLEAR_VARS) +LOCAL_MODULE := ParameterFrameworkConfigurationPolicy.xml +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/parameter-framework +LOCAL_SRC_FILES := $(LOCAL_MODULE) +include $(BUILD_PREBUILT) + + +########## Policy PFW Structures ######### + +include $(CLEAR_VARS) +LOCAL_MODULE := PolicyClass.xml +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/parameter-framework/Structure/Policy +LOCAL_SRC_FILES := Structure/$(LOCAL_MODULE) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := PolicySubsystem.xml +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_REQUIRED_MODULES := \ + PolicySubsystem-CommonTypes.xml \ + PolicySubsystem-Volume.xml \ + libpolicy-subsystem \ + +LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/parameter-framework/Structure/Policy +LOCAL_SRC_FILES := Structure/$(LOCAL_MODULE) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := PolicySubsystem-CommonTypes.xml +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/parameter-framework/Structure/Policy +LOCAL_SRC_FILES := Structure/$(LOCAL_MODULE) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := PolicySubsystem-Volume.xml +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/parameter-framework/Structure/Policy +LOCAL_SRC_FILES := Structure/$(LOCAL_MODULE) +include $(BUILD_PREBUILT) + +######### Policy PFW Settings ######### + +######## Generate routing domains file ######## +include $(CLEAR_VARS) +LOCAL_MODULE := parameter-framework.policy +LOCAL_MODULE_STEM := PolicyConfigurableDomains.xml +LOCAL_MODULE_TAGS := optional +LOCAL_REQUIRED_MODULES := \ + PolicyClass.xml \ + PolicySubsystem.xml \ + ParameterFrameworkConfigurationPolicy.xml + +LOCAL_MODULE_CLASS := ETC +LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/parameter-framework/Settings/Policy +include $(BUILD_SYSTEM)/base_rules.mk + +$(LOCAL_BUILT_MODULE): MY_TOOL := $(HOST_OUT_EXECUTABLES)/hostDomainGenerator.sh +$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/hostDomainGenerator.sh +$(LOCAL_BUILT_MODULE): MY_SRC_FILES := \ + $(TARGET_OUT_ETC)/parameter-framework/ParameterFrameworkConfigurationPolicy.xml \ + $(LOCAL_PATH)/policy_criteria.txt \ + /dev/null \ + $(LOCAL_PATH)/Settings/device_for_strategy_media.pfw \ + $(LOCAL_PATH)/Settings/device_for_strategy_phone.pfw \ + $(LOCAL_PATH)/Settings/device_for_strategy_sonification.pfw \ + $(LOCAL_PATH)/Settings/device_for_strategy_sonification_respectful.pfw \ + $(LOCAL_PATH)/Settings/device_for_strategy_dtmf.pfw \ + $(LOCAL_PATH)/Settings/device_for_strategy_enforced_audible.pfw \ + $(LOCAL_PATH)/Settings/device_for_strategy_transmitted_through_speaker.pfw \ + $(LOCAL_PATH)/Settings/device_for_strategy_accessibility.pfw \ + $(LOCAL_PATH)/Settings/device_for_strategy_rerouting.pfw \ + $(LOCAL_PATH)/Settings/strategy_for_stream.pfw \ + $(LOCAL_PATH)/Settings/strategy_for_usage.pfw \ + $(LOCAL_PATH)/Settings/device_for_input_source.pfw \ + $(LOCAL_PATH)/Settings/volumes.pfw \ + +$(LOCAL_BUILT_MODULE): $(LOCAL_REQUIRED_MODULES) + $(hide) mkdir -p $(dir $@) + bash --debug $(MY_TOOL) --nonverbose --validate $(MY_SRC_FILES) > $@ diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/ParameterFrameworkConfigurationPolicy.xml b/services/audiopolicy/engineconfigurable/parameter-framework/example/ParameterFrameworkConfigurationPolicy.xml new file mode 100755 index 0000000..6905201 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/ParameterFrameworkConfigurationPolicy.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ParameterFrameworkConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="Schemas/ParameterFrameworkConfiguration.xsd" + SystemClassName="Policy" ServerPort="5019" TuningAllowed="true"> + + <SubsystemPlugins> + <Location Folder=""> + <Plugin Name="libpolicy-subsystem.so"/> + </Location> + </SubsystemPlugins> + <StructureDescriptionFileLocation Path="Structure/Policy/PolicyClass.xml"/> + <SettingsConfiguration> + <ConfigurableDomainsFileLocation Path="Settings/Policy/PolicyConfigurableDomains.xml"/> + </SettingsConfiguration> +</ParameterFrameworkConfiguration> diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/README.md b/services/audiopolicy/engineconfigurable/parameter-framework/example/README.md new file mode 100644 index 0000000..92668e1 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/README.md @@ -0,0 +1,11 @@ +Configurable Policy Engine Example +================================ + +This folder exposes a generic functional configurable policy engine configuration files +to provide to have a product following the nexus experience. + +A vendor wishing to customize the behavior shall provides its own set of configuration files +within the device folder for the product to customize. + +For any question about the parameter framework and configuration files, +See [the wiki on github](https://github.com/01org/parameter-framework/wiki). diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_input_source.pfw b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_input_source.pfw new file mode 100644 index 0000000..d4bc370 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_input_source.pfw @@ -0,0 +1,515 @@ +supDomain: DeviceForInputSource + domain: Calibration + conf: Calibration + # + # Note that ALL input devices must have the sign bit set to 1. + # As the devices is a mask, use the "in" bit as a direction indicator. + # + component: /Policy/policy/input_sources/default/applicable_input_device/mask + in = 1 + communication = 0 + ambient = 0 + hdmi = 0 + telephony_rx = 0 + back_mic = 0 + remote_submix = 0 + anlg_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + fm_tuner = 0 + tv_tuner = 0 + line = 0 + spdif = 0 + loopback = 0 + component: /Policy/policy/input_sources/mic/applicable_input_device/mask + in = 1 + communication = 0 + ambient = 0 + hdmi = 0 + telephony_rx = 0 + back_mic = 0 + remote_submix = 0 + anlg_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + fm_tuner = 0 + tv_tuner = 0 + line = 0 + spdif = 0 + loopback = 0 + component: /Policy/policy/input_sources/voice_downlink/applicable_input_device/mask + in = 1 + communication = 0 + ambient = 0 + builtin_mic = 0 + bluetooth_sco_headset = 0 + wired_headset = 0 + hdmi = 0 + back_mic = 0 + remote_submix = 0 + anlg_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + fm_tuner = 0 + tv_tuner = 0 + line = 0 + spdif = 0 + bluetooth_a2dp = 0 + loopback = 0 + component: /Policy/policy/input_sources/voice_call/applicable_input_device/mask + in = 1 + communication = 0 + ambient = 0 + builtin_mic = 0 + bluetooth_sco_headset = 0 + wired_headset = 0 + hdmi = 0 + back_mic = 0 + remote_submix = 0 + anlg_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + fm_tuner = 0 + tv_tuner = 0 + line = 0 + spdif = 0 + bluetooth_a2dp = 0 + loopback = 0 + component: /Policy/policy/input_sources/voice_uplink/applicable_input_device/mask + in = 1 + communication = 0 + ambient = 0 + builtin_mic = 0 + bluetooth_sco_headset = 0 + wired_headset = 0 + hdmi = 0 + back_mic = 0 + remote_submix = 0 + anlg_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + fm_tuner = 0 + tv_tuner = 0 + line = 0 + spdif = 0 + bluetooth_a2dp = 0 + loopback = 0 + component: /Policy/policy/input_sources/camcorder/applicable_input_device/mask + in = 1 + communication = 0 + ambient = 0 + bluetooth_sco_headset = 0 + wired_headset = 0 + hdmi = 0 + telephony_rx = 0 + remote_submix = 0 + anlg_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + fm_tuner = 0 + tv_tuner = 0 + line = 0 + spdif = 0 + bluetooth_a2dp = 0 + loopback = 0 + component: /Policy/policy/input_sources/voice_recognition/applicable_input_device/mask + in = 1 + communication = 0 + ambient = 0 + hdmi = 0 + telephony_rx = 0 + back_mic = 0 + remote_submix = 0 + anlg_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + fm_tuner = 0 + tv_tuner = 0 + line = 0 + spdif = 0 + bluetooth_a2dp = 0 + loopback = 0 + component: /Policy/policy/input_sources/voice_communication/applicable_input_device/mask + in = 1 + communication = 0 + ambient = 0 + hdmi = 0 + telephony_rx = 0 + remote_submix = 0 + anlg_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + fm_tuner = 0 + tv_tuner = 0 + line = 0 + spdif = 0 + bluetooth_a2dp = 0 + loopback = 0 + component: /Policy/policy/input_sources/remote_submix/applicable_input_device/mask + in = 1 + communication = 0 + ambient = 0 + builtin_mic = 0 + bluetooth_sco_headset = 0 + wired_headset = 0 + hdmi = 0 + telephony_rx = 0 + back_mic = 0 + anlg_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + fm_tuner = 0 + tv_tuner = 0 + line = 0 + spdif = 0 + bluetooth_a2dp = 0 + loopback = 0 + component: /Policy/policy/input_sources/hotword/applicable_input_device/mask + in = 1 + communication = 0 + ambient = 0 + hdmi = 0 + telephony_rx = 0 + back_mic = 0 + remote_submix = 0 + anlg_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + fm_tuner = 0 + tv_tuner = 0 + line = 0 + spdif = 0 + bluetooth_a2dp = 0 + loopback = 0 + component: /Policy/policy/input_sources/fm_tuner/applicable_input_device/mask + in = 1 + communication = 0 + ambient = 0 + bluetooth_sco_headset = 0 + hdmi = 0 + telephony_rx = 0 + builtin_mic = 0 + wired_headset = 0 + back_mic = 0 + remote_submix = 0 + anlg_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + fm_tuner = 0 + tv_tuner = 0 + line = 0 + spdif = 0 + bluetooth_a2dp = 0 + loopback = 0 + + domain: DefaultAndMic + conf: A2dp + AvailableInputDevices Includes BluetoothA2dp + + component: /Policy/policy/input_sources + component: default/applicable_input_device/mask/ + bluetooth_a2dp = 1 + wired_headset = 0 + usb_device = 0 + builtin_mic = 0 + bluetooth_sco_headset = 0 + component: mic/applicable_input_device/mask/ + bluetooth_a2dp = 1 + wired_headset = 0 + usb_device = 0 + builtin_mic = 0 + bluetooth_sco_headset = 0 + + conf: Sco + AvailableInputDevices Includes BluetoothScoHeadset + ForceUseForRecord Is ForceBtSco + + component: /Policy/policy/input_sources + component: default/applicable_input_device/mask/ + bluetooth_a2dp = 0 + wired_headset = 0 + usb_device = 0 + builtin_mic = 0 + bluetooth_sco_headset = 1 + component: mic/applicable_input_device/mask/ + bluetooth_a2dp = 0 + wired_headset = 1 + usb_device = 0 + builtin_mic = 0 + bluetooth_sco_headset = 1 + + conf: WiredHeadset + AvailableInputDevices Includes WiredHeadset + + component: /Policy/policy/input_sources + component: default/applicable_input_device/mask/ + bluetooth_a2dp = 0 + wired_headset = 1 + usb_device = 0 + builtin_mic = 0 + bluetooth_sco_headset = 0 + component: mic/applicable_input_device/mask/ + bluetooth_a2dp = 0 + wired_headset = 1 + usb_device = 0 + builtin_mic = 0 + bluetooth_sco_headset = 0 + + conf: UsbDevice + AvailableInputDevices Includes UsbDevice + + component: /Policy/policy/input_sources + component: default/applicable_input_device/mask/ + bluetooth_a2dp = 0 + wired_headset = 0 + usb_device = 1 + builtin_mic = 0 + bluetooth_sco_headset = 0 + component: mic/applicable_input_device/mask/ + bluetooth_a2dp = 0 + wired_headset = 0 + usb_device = 1 + builtin_mic = 0 + bluetooth_sco_headset = 0 + + conf: BuiltinMic + AvailableInputDevices Includes BuiltinMic + + component: /Policy/policy/input_sources + component: default/applicable_input_device/mask/ + bluetooth_a2dp = 0 + wired_headset = 0 + usb_device = 0 + builtin_mic = 1 + bluetooth_sco_headset = 0 + component: mic/applicable_input_device/mask/ + bluetooth_a2dp = 0 + wired_headset = 0 + usb_device = 0 + builtin_mic = 1 + bluetooth_sco_headset = 0 + + conf: Default + component: /Policy/policy/input_sources + component: default/applicable_input_device/mask/ + bluetooth_a2dp = 0 + wired_headset = 0 + usb_device = 0 + builtin_mic = 0 + bluetooth_sco_headset = 0 + component: mic/applicable_input_device/mask/ + bluetooth_a2dp = 0 + wired_headset = 0 + usb_device = 0 + builtin_mic = 0 + bluetooth_sco_headset = 0 + + domain: VoiceUplinkAndVoiceDownlinkAndVoiceCall + conf: VoiceCall + AvailableInputDevices Includes TelephonyRx + + component: /Policy/policy/input_sources + voice_downlink/applicable_input_device/mask/telephony_rx = 1 + voice_call/applicable_input_device/mask/telephony_rx = 1 + voice_uplink/applicable_input_device/mask/telephony_rx = 1 + + conf: Default + component: /Policy/policy/input_sources + voice_downlink/applicable_input_device/mask/telephony_rx = 0 + voice_call/applicable_input_device/mask/telephony_rx = 0 + voice_uplink/applicable_input_device/mask/telephony_rx = 0 + + domain: Camcorder + conf: BackMic + AvailableInputDevices Includes BackMic + + component: /Policy/policy/input_sources/camcorder/applicable_input_device/mask + back_mic = 1 + builtin_mic = 0 + + conf: BuiltinMic + AvailableInputDevices Includes BuiltinMic + + component: /Policy/policy/input_sources/camcorder/applicable_input_device/mask + back_mic = 0 + builtin_mic = 1 + + conf: Default + component: /Policy/policy/input_sources/camcorder/applicable_input_device/mask + back_mic = 0 + builtin_mic = 0 + + domain: VoiceRecognitionAndHotword + conf: ScoHeadset + ForceUseForRecord Is ForceBtSco + AvailableInputDevices Includes BluetoothScoHeadset + + component: /Policy/policy/input_sources + component: voice_recognition/applicable_input_device/mask + bluetooth_sco_headset = 1 + wired_headset = 0 + usb_device = 0 + builtin_mic = 0 + component: hotword/applicable_input_device/mask + bluetooth_sco_headset = 1 + wired_headset = 0 + usb_device = 0 + builtin_mic = 0 + + conf: WiredHeadset + AvailableInputDevices Includes WiredHeadset + + component: /Policy/policy/input_sources + component: voice_recognition/applicable_input_device/mask + bluetooth_sco_headset = 0 + wired_headset = 1 + usb_device = 0 + builtin_mic = 0 + component: hotword/applicable_input_device/mask + bluetooth_sco_headset = 0 + wired_headset = 1 + usb_device = 0 + builtin_mic = 0 + + conf: UsbDevice + AvailableInputDevices Includes UsbDevice + + component: /Policy/policy/input_sources + component: voice_recognition/applicable_input_device/mask + bluetooth_sco_headset = 0 + wired_headset = 0 + usb_device = 1 + builtin_mic = 0 + component: hotword/applicable_input_device/mask + bluetooth_sco_headset = 0 + wired_headset = 0 + usb_device = 1 + builtin_mic = 0 + + conf: BuiltinMic + AvailableInputDevices Includes BuiltinMic + + component: /Policy/policy/input_sources + component: voice_recognition/applicable_input_device/mask + bluetooth_sco_headset = 0 + wired_headset = 0 + usb_device = 0 + builtin_mic = 1 + component: hotword/applicable_input_device/mask + bluetooth_sco_headset = 0 + wired_headset = 0 + usb_device = 0 + builtin_mic = 1 + + conf: Default + component: /Policy/policy/input_sources + component: voice_recognition/applicable_input_device/mask + bluetooth_sco_headset = 0 + wired_headset = 0 + usb_device = 0 + builtin_mic = 0 + component: hotword/applicable_input_device/mask + bluetooth_sco_headset = 0 + wired_headset = 0 + usb_device = 0 + builtin_mic = 0 + + domain: VoiceCommunication + conf: ScoHeadset + # + # SCO device may be requested but no SCO device is available + # + ForceUseForCommunication Is ForceBtSco + AvailableInputDevices Includes BluetoothScoHeadset + + component: /Policy/policy/input_sources/voice_communication/applicable_input_device/mask + bluetooth_sco_headset = 1 + wired_headset = 0 + usb_device = 0 + builtin_mic = 0 + back_mic = 0 + + conf: WiredHeadset + ForceUseForCommunication Is ForceNone + AvailableInputDevices Includes WiredHeadset + + component: /Policy/policy/input_sources/voice_communication/applicable_input_device/mask + bluetooth_sco_headset = 0 + wired_headset = 1 + usb_device = 0 + builtin_mic = 0 + back_mic = 0 + + conf: UsbDevice + ForceUseForCommunication Is ForceNone + AvailableInputDevices Includes UsbDevice + + component: /Policy/policy/input_sources/voice_communication/applicable_input_device/mask + bluetooth_sco_headset = 0 + wired_headset = 0 + usb_device = 1 + builtin_mic = 0 + back_mic = 0 + + conf: BuiltinMic + AvailableInputDevices Includes BuiltinMic + ANY + ForceUseForCommunication Is ForceNone + ALL + ForceUseForCommunication Is ForceSpeaker + AvailableInputDevices Excludes BackMic + + component: /Policy/policy/input_sources/voice_communication/applicable_input_device/mask + bluetooth_sco_headset = 0 + wired_headset = 0 + usb_device = 0 + builtin_mic = 1 + back_mic = 0 + + conf: BackMic + ForceUseForCommunication Is ForceSpeaker + AvailableInputDevices Includes BackMic + + component: /Policy/policy/input_sources/voice_communication/applicable_input_device/mask + bluetooth_sco_headset = 0 + wired_headset = 0 + usb_device = 0 + builtin_mic = 0 + back_mic = 1 + + conf: Default + component: /Policy/policy/input_sources/voice_communication/applicable_input_device/mask + bluetooth_sco_headset = 0 + wired_headset = 0 + usb_device = 0 + builtin_mic = 0 + back_mic = 0 + + domain: RemoteSubmix + conf: RemoteSubmix + AvailableInputDevices Includes RemoteSubmix + + component: /Policy/policy/input_sources/remote_submix/applicable_input_device/mask + remote_submix = 1 + + conf: Default + component: /Policy/policy/input_sources/remote_submix/applicable_input_device/mask + remote_submix = 0 + + domain: FmTuner + conf: FmTuner + AvailableInputDevices Includes FmTuner + + component: /Policy/policy/input_sources/fm_tuner/applicable_input_device/mask + fm_tuner = 1 + + conf: Default + component: /Policy/policy/input_sources/fm_tuner/applicable_input_device/mask + fm_tuner = 0 + diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_accessibility.pfw b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_accessibility.pfw new file mode 100644 index 0000000..e8ab33b --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_accessibility.pfw @@ -0,0 +1,302 @@ +supDomain: DeviceForStrategy + + supDomain: Accessibility + # + # @FIXME: STRATEGY_ACCESSIBILITY follows STRATEGY_MEDIA for now + # + # @FIXME: How to disable HDMI if !audio_is_linear_pcm other than programmatically??? + # + domain: UnreachableDevices + conf: Calibration + component: /Policy/policy/strategies/accessibility/selected_output_devices/mask + hdmi_arc = 0 + spdif = 0 + aux_line = 0 + fm = 0 + speaker_safe = 0 + earpiece = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + telephony_tx = 0 + + domain: Device2 + conf: RemoteSubmix + AvailableOutputDevices Includes RemoteSubmix + + component: /Policy/policy/strategies/accessibility/selected_output_devices/mask + remote_submix = 1 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: BluetoothA2dp + ForceUseForMedia IsNot ForceNoBtA2dp + AvailableOutputDevices Includes BluetoothA2dp + + component: /Policy/policy/strategies/accessibility/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 1 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: BluetoothA2dpHeadphone + ForceUseForMedia IsNot ForceNoBtA2dp + AvailableOutputDevices Includes BluetoothA2dpHeadphones + + component: /Policy/policy/strategies/accessibility/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 1 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: BluetoothA2dpSpeaker + ForceUseForMedia IsNot ForceNoBtA2dp + AvailableOutputDevices Includes BluetoothA2dpSpeaker + + component: /Policy/policy/strategies/accessibility/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 1 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: ForceSpeaker + ForceUseForMedia Is ForceSpeaker + AvailableOutputDevices Includes Speaker + + component: /Policy/policy/strategies/accessibility/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 1 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: WiredHeadphone + AvailableOutputDevices Includes WiredHeadphone + + component: /Policy/policy/strategies/accessibility/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 1 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: Line + AvailableOutputDevices Includes Line + + component: /Policy/policy/strategies/accessibility/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 1 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: WiredHeadset + AvailableOutputDevices Includes WiredHeadset + + component: /Policy/policy/strategies/accessibility/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 1 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: UsbAccessory + AvailableOutputDevices Includes UsbAccessory + + component: /Policy/policy/strategies/accessibility/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 1 + usb_device = 0 + hdmi = 0 + + conf: UsbDevice + AvailableOutputDevices Includes UsbDevice + + component: /Policy/policy/strategies/accessibility/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 1 + hdmi = 0 + + conf: DgtlDockHeadset + AvailableOutputDevices Includes DgtlDockHeadset + + component: /Policy/policy/strategies/accessibility/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 1 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: AuxDigital + # + # Do not route accessibility prompts to a digital output currently configured with a + # compressed format as they would likely not be mixed and dropped. + # + # @TODO How to translate the following condition(???) + # desc->isActive() && !audio_is_linear_pcm(desc->mFormat) && devices != AUDIO_DEVICE_NONE + # + AvailableOutputDevices Includes Hdmi + + component: /Policy/policy/strategies/accessibility/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 1 + + conf: AnlgDockHeadset + AvailableOutputDevices Includes AnlgDockHeadset + ForceUseForDock Is ForceAnalogDock + + component: /Policy/policy/strategies/accessibility/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 1 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: Speaker + AvailableOutputDevices Includes Speaker + + component: /Policy/policy/strategies/accessibility/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 1 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: Default + component: /Policy/policy/strategies/accessibility/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_dtmf.pfw b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_dtmf.pfw new file mode 100644 index 0000000..85273b2 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_dtmf.pfw @@ -0,0 +1,637 @@ +supDomain: DeviceForStrategy + + supDomain: Dtmf + + domain: UnreachableDevices + conf: Calibration + component: /Policy/policy/strategies/dtmf/selected_output_devices/mask + fm = 0 + speaker_safe = 0 + bluetooth_sco_carkit = 0 + + domain: Device2 + conf: RemoteSubmix + # + # DTMF follows Media strategy if not in call + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + AvailableOutputDevices Includes RemoteSubmix + + component: /Policy/policy/strategies/dtmf/selected_output_devices/mask + remote_submix = 1 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: BluetoothA2dp + # + # DTMF follows Media strategy if not in call + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceNoBtA2dp + AvailableOutputDevices Includes BluetoothA2dp + + component: /Policy/policy/strategies/dtmf/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_a2dp = 1 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: BluetoothA2dpHeadphones + # + # DTMF follows Media strategy if not in call + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceNoBtA2dp + AvailableOutputDevices Includes BluetoothA2dpHeadphones + + component: /Policy/policy/strategies/dtmf/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 1 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: BluetoothA2dpSpeaker + # + # DTMF follows Media strategy if not in call + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceNoBtA2dp + AvailableOutputDevices Includes BluetoothA2dpSpeaker + + component: /Policy/policy/strategies/dtmf/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 1 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: ForceSpeakerWhenNotInCall + # + # DTMF follows Media strategy if not in call + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia Is ForceSpeaker + ForceUseForHdmiSystemAudio IsNot ForceHdmiSystemEnforced + AvailableOutputDevices Includes Speaker + + component: /Policy/policy/strategies/dtmf/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 1 + + conf: BluetoothScoHeadset + # + # DTMF falls through Phone strategy if in call + # + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + AvailableOutputDevices Includes BluetoothScoHeadset + ForceUseForCommunication Is ForceBtSco + + component: /Policy/policy/strategies/dtmf/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 1 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: BluetoothSco + # + # DTMF falls through Phone strategy if in call + # + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + AvailableOutputDevices Includes BluetoothSco + ForceUseForCommunication Is ForceBtSco + + component: /Policy/policy/strategies/dtmf/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 1 + bluetooth_sco_headset = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: WiredHeadphone + ANY + # + # DTMF falls through Phone strategy if in call + # + ALL + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + ForceUseForCommunication IsNot ForceSpeaker + # + # DTMF follows Media strategy if not in call + # + ALL + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + AvailableOutputDevices Includes WiredHeadphone + + component: /Policy/policy/strategies/dtmf/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 1 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: LineWhenFollowingMedia + # + # DTMF follows Media strategy if not in call + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + AvailableOutputDevices Includes Line + + component: /Policy/policy/strategies/dtmf/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 1 + speaker = 0 + + conf: WiredHeadset + ANY + # + # DTMF falls through Phone strategy if in call + # + ALL + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + ForceUseForCommunication IsNot ForceSpeaker + # + # DTMF follows Media strategy if not in call + # + ALL + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + AvailableOutputDevices Includes WiredHeadset + + component: /Policy/policy/strategies/dtmf/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 1 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: UsbDevice + ANY + # + # DTMF falls through Phone strategy if in call (widely speaking) + # + ALL + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + ForceUseForCommunication IsNot ForceSpeaker + # + # DTMF follows Media strategy if not in call + # Media strategy inverts the priority of USB device vs accessory + # + ALL + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + AvailableOutputDevices Excludes UsbAccessory + ForceUseForCommunication Is ForceSpeaker + AvailableOutputDevices Includes UsbDevice + + component: /Policy/policy/strategies/dtmf/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 1 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: UsbAccessory + # + # DTMF falls through Phone strategy if in call (widely speaking) + # but USB accessory not reachable in call + # + # DTMF follows Media strategy if not in call + # Media strategy inverts the priority of USB device vs accessory + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + AvailableOutputDevices Includes UsbAccessory + + component: /Policy/policy/strategies/dtmf/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 1 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: DgtlDockHeadset + # + # DTMF falls through Phone strategy if in call (widely speaking) + # but DgtlDockHeadset not reachable in call + # + # DTMF follows Media strategy if not in call + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + AvailableOutputDevices Includes DgtlDockHeadset + + component: /Policy/policy/strategies/dtmf/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 1 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: Hdmi + # + # DTMF falls through Phone strategy if in call (widely speaking) + # but Hdmi not reachable in call + # + # DTMF follows Media strategy if not in call + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + AvailableOutputDevices Includes Hdmi + + component: /Policy/policy/strategies/dtmf/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 1 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: AnlgDockHeadset + # + # DTMF falls through Phone strategy if in call (widely speaking) + # but AnlgDockHeadset not reachable in call + # + # DTMF follows Media strategy if not in call + # Media strategy inverts the priority of USB device vs accessory + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForDock Is ForceAnalogDock + AvailableOutputDevices Includes AnlgDockHeadset + + component: /Policy/policy/strategies/dtmf/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 1 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: Earpiece + # + # DTMF falls through Phone strategy if in call + # + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + AvailableOutputDevices Includes Earpiece + ForceUseForCommunication IsNot ForceSpeaker + + component: /Policy/policy/strategies/dtmf/selected_output_devices/mask + remote_submix = 0 + earpiece = 1 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: LineWhenFallThroughPhone + # + # DTMF falls through Phone strategy if in call + # + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + AvailableOutputDevices Includes Line + ForceUseForCommunication Is ForceSpeaker + + component: /Policy/policy/strategies/dtmf/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 1 + speaker = 0 + + conf: Speaker + ANY + # + # DTMF falls through Phone strategy if in call + # + ALL + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + ForceUseForCommunication Is ForceSpeaker + # + # DTMF follows Media strategy if not in call + # + ALL + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForHdmiSystemAudio IsNot ForceHdmiSystemEnforced + AvailableOutputDevices Includes Speaker + + component: /Policy/policy/strategies/dtmf/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 1 + + conf: Default + component: /Policy/policy/strategies/dtmf/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + domain: Arc + # + # DTMF strategy follows media strategy if not in call + # these following domains consists in device(s) that can co-exist with others + # e.g. ARC, SPDIF, AUX_LINE + # + conf: Selected + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + AvailableOutputDevices Includes HdmiArc + + /Policy/policy/strategies/media/selected_output_devices/mask/hdmi_arc = 1 + + conf: NotSelected + /Policy/policy/strategies/media/selected_output_devices/mask/hdmi_arc = 0 + + domain: Spdif + # + # DTMF strategy follows media strategy if not in call + # these following domains consists in device(s) that can co-exist with others + # e.g. ARC, SPDIF, AUX_LINE + # + conf: Selected + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + AvailableOutputDevices Includes Spdif + + /Policy/policy/strategies/media/selected_output_devices/mask/spdif = 1 + + conf: NotSelected + /Policy/policy/strategies/media/selected_output_devices/mask/spdif = 0 + + domain: AuxLine + # + # DTMF strategy follows media strategy if not in call + # these following domains consists in device(s) that can co-exist with others + # e.g. ARC, SPDIF, AUX_LINE + # + conf: Selected + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + AvailableOutputDevices Includes AuxLine + + /Policy/policy/strategies/media/selected_output_devices/mask/aux_line = 1 + + conf: NotSelected + /Policy/policy/strategies/media/selected_output_devices/mask/aux_line = 0 diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_enforced_audible.pfw b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_enforced_audible.pfw new file mode 100644 index 0000000..d714743 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_enforced_audible.pfw @@ -0,0 +1,358 @@ +supDomain: DeviceForStrategy + + supDomain: EnforcedAudible + + domain: UnreachableDevices + conf: Calibration + component: /Policy/policy/strategies/enforced_audible/selected_output_devices/mask + # no enforced_audible on remote submix (e.g. WFD) + remote_submix = 0 + hdmi_arc = 0 + spdif = 0 + aux_line = 0 + speaker_safe = 0 + + domain: Speaker + conf: Selected + # + # strategy STRATEGY_ENFORCED_AUDIBLE uses same routing policy as STRATEGY_SONIFICATION + # except: + # - when in call where it doesn't default to STRATEGY_PHONE behavior + # - in countries where not enforced in which case it follows STRATEGY_MEDIA + # + AvailableOutputDevices Includes Speaker + ANY + ForceUseForSystem Is ForceSystemEnforced + ALL + ForceUseForMedia Is ForceSpeaker + AvailableOutputDevices Excludes RemoteSubmix + ANY + ForceUseForMedia IsNot ForceNoBtA2dp + AvailableOutputDevices Excludes BluetoothA2dp + AvailableOutputDevices Excludes BluetoothA2dpHeadphones + AvailableOutputDevices Excludes BluetoothA2dpSpeaker + # + # Speaker is also the fallback device if any of the device from Device2 domain + # is selected. + # + ALL + AvailableOutputDevices Excludes RemoteSubmix + AvailableOutputDevices Excludes WiredHeadphone + AvailableOutputDevices Excludes Line + AvailableOutputDevices Excludes WiredHeadset + AvailableOutputDevices Excludes UsbAccessory + AvailableOutputDevices Excludes UsbDevice + AvailableOutputDevices Excludes DgtlDockHeadset + AvailableOutputDevices Excludes Hdmi + ANY + AvailableOutputDevices Excludes AnlgDockHeadset + ForceUseForDock IsNot ForceAnalogDock + + component: /Policy/policy/strategies/enforced_audible/selected_output_devices/mask + speaker = 1 + + conf: NotSelected + component: /Policy/policy/strategies/enforced_audible/selected_output_devices/mask + speaker = 0 + + domain: Device2 + conf: RemoteSubmix + AvailableOutputDevices Includes RemoteSubmix + + component: /Policy/policy/strategies/enforced_audible/selected_output_devices/mask + remote_submix = 1 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + fm = 0 + speaker_safe = 0 + + conf: BluetoothA2dp + AvailableOutputDevices Includes BluetoothA2dp + ForceUseForMedia IsNot ForceNoBtA2dp + + component: /Policy/policy/strategies/enforced_audible/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 1 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + fm = 0 + speaker_safe = 0 + + conf: BluetoothA2dpHeadphones + AvailableOutputDevices Includes BluetoothA2dpHeadphones + ForceUseForMedia IsNot ForceNoBtA2dp + + component: /Policy/policy/strategies/enforced_audible/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 1 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + fm = 0 + speaker_safe = 0 + + conf: BluetoothA2dpSpeaker + AvailableOutputDevices Includes BluetoothA2dpSpeaker + ForceUseForMedia IsNot ForceNoBtA2dp + + component: /Policy/policy/strategies/enforced_audible/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 1 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + fm = 0 + speaker_safe = 0 + + conf: WiredHeadphone + ForceUseForMedia IsNot ForceSpeaker + AvailableOutputDevices Includes WiredHeadphone + + component: /Policy/policy/strategies/enforced_audible/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 1 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + fm = 0 + speaker_safe = 0 + + conf: Line + ForceUseForMedia IsNot ForceSpeaker + AvailableOutputDevices Includes Line + + component: /Policy/policy/strategies/enforced_audible/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 1 + fm = 0 + speaker_safe = 0 + + conf: WiredHeadset + ForceUseForMedia IsNot ForceSpeaker + AvailableOutputDevices Includes WiredHeadset + + component: /Policy/policy/strategies/enforced_audible/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 1 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + fm = 0 + speaker_safe = 0 + + conf: UsbAccessory + ForceUseForMedia IsNot ForceSpeaker + AvailableOutputDevices Includes UsbAccessory + + component: /Policy/policy/strategies/enforced_audible/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 1 + usb_device = 0 + telephony_tx = 0 + line = 0 + fm = 0 + speaker_safe = 0 + + conf: UsbDevice + ForceUseForMedia IsNot ForceSpeaker + AvailableOutputDevices Includes UsbDevice + + component: /Policy/policy/strategies/enforced_audible/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 1 + telephony_tx = 0 + line = 0 + fm = 0 + speaker_safe = 0 + + conf: DgtlDockHeadset + ForceUseForMedia IsNot ForceSpeaker + AvailableOutputDevices Includes DgtlDockHeadset + + component: /Policy/policy/strategies/enforced_audible/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 1 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + fm = 0 + speaker_safe = 0 + + conf: Hdmi + ForceUseForMedia IsNot ForceSpeaker + AvailableOutputDevices Includes Hdmi + + component: /Policy/policy/strategies/enforced_audible/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 1 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + fm = 0 + speaker_safe = 0 + + conf: AnlgDockHeadset + ForceUseForMedia IsNot ForceSpeaker + ForceUseForDock Is ForceAnalogDock + AvailableOutputDevices Includes AnlgDockHeadset + + component: /Policy/policy/strategies/enforced_audible/selected_output_devices/mask + remote_submix = 0 + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 1 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + fm = 0 + speaker_safe = 0 + diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_media.pfw b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_media.pfw new file mode 100644 index 0000000..38bede5 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_media.pfw @@ -0,0 +1,331 @@ +domainGroup: DeviceForStrategy + + domainGroup: Media + + domain: UnreachableDevices + conf: Calibration + component: /Policy/policy/strategies/media/selected_output_devices/mask + fm = 0 + speaker_safe = 0 + earpiece = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + telephony_tx = 0 + + domain: Device2 + conf: RemoteSubmix + AvailableOutputDevices Includes RemoteSubmix + + component: /Policy/policy/strategies/media/selected_output_devices/mask + speaker = 0 + hdmi = 0 + dgtl_dock_headset = 0 + angl_dock_headset = 0 + usb_device = 0 + usb_accessory = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp = 0 + remote_submix = 1 + line = 0 + + conf: BluetoothA2dp + ForceUseForMedia IsNot ForceNoBtA2dp + AvailableOutputDevices Includes BluetoothA2dp + + component: /Policy/policy/strategies/media/selected_output_devices/mask + speaker = 0 + hdmi = 0 + dgtl_dock_headset = 0 + angl_dock_headset = 0 + usb_device = 0 + usb_accessory = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp = 1 + remote_submix = 0 + line = 0 + + conf: BluetoothA2dpHeadphone + ForceUseForMedia IsNot ForceNoBtA2dp + AvailableOutputDevices Includes BluetoothA2dpHeadphones + + component: /Policy/policy/strategies/media/selected_output_devices/mask + speaker = 0 + hdmi = 0 + dgtl_dock_headset = 0 + angl_dock_headset = 0 + usb_device = 0 + usb_accessory = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp_headphones = 1 + bluetooth_a2dp = 0 + remote_submix = 0 + line = 0 + + conf: BluetoothA2dpSpeaker + ForceUseForMedia IsNot ForceNoBtA2dp + AvailableOutputDevices Includes BluetoothA2dpSpeaker + + component: /Policy/policy/strategies/media/selected_output_devices/mask + speaker = 0 + hdmi = 0 + dgtl_dock_headset = 0 + angl_dock_headset = 0 + usb_device = 0 + usb_accessory = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_a2dp_speaker = 1 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp = 0 + remote_submix = 0 + line = 0 + + conf: ForceSpeaker + ForceUseForMedia Is ForceSpeaker + AvailableOutputDevices Includes Speaker + # + # If hdmi system audio mode is on, remove speaker out of output list. + # + ForceUseForHdmiSystemAudio IsNot ForceHdmiSystemEnforced + + component: /Policy/policy/strategies/media/selected_output_devices/mask + speaker = 1 + hdmi = 0 + dgtl_dock_headset = 0 + angl_dock_headset = 0 + usb_device = 0 + usb_accessory = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp = 0 + remote_submix = 0 + line = 0 + + conf: WiredHeadphone + AvailableOutputDevices Includes WiredHeadphone + + component: /Policy/policy/strategies/media/selected_output_devices/mask + speaker = 0 + hdmi = 0 + dgtl_dock_headset = 0 + angl_dock_headset = 0 + usb_device = 0 + usb_accessory = 0 + wired_headset = 0 + wired_headphone = 1 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp = 0 + remote_submix = 0 + line = 0 + + conf: Line + AvailableOutputDevices Includes Line + + component: /Policy/policy/strategies/media/selected_output_devices/mask + speaker = 0 + hdmi = 0 + dgtl_dock_headset = 0 + angl_dock_headset = 0 + usb_device = 0 + usb_accessory = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp = 0 + remote_submix = 0 + line = 1 + + conf: WiredHeadset + AvailableOutputDevices Includes WiredHeadset + + component: /Policy/policy/strategies/media/selected_output_devices/mask + speaker = 0 + hdmi = 0 + dgtl_dock_headset = 0 + angl_dock_headset = 0 + usb_device = 0 + usb_accessory = 0 + wired_headset = 1 + wired_headphone = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp = 0 + remote_submix = 0 + line = 0 + + conf: UsbAccessory + AvailableOutputDevices Includes UsbAccessory + + component: /Policy/policy/strategies/media/selected_output_devices/mask + speaker = 0 + hdmi = 0 + dgtl_dock_headset = 0 + angl_dock_headset = 0 + usb_device = 0 + usb_accessory = 1 + wired_headset = 0 + wired_headphone = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp = 0 + remote_submix = 0 + line = 0 + + conf: UsbDevice + AvailableOutputDevices Includes UsbDevice + + component: /Policy/policy/strategies/media/selected_output_devices/mask + speaker = 0 + hdmi = 0 + dgtl_dock_headset = 0 + angl_dock_headset = 0 + usb_device = 1 + usb_accessory = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp = 0 + remote_submix = 0 + line = 0 + + conf: DgtlDockHeadset + AvailableOutputDevices Includes DgtlDockHeadset + + component: /Policy/policy/strategies/media/selected_output_devices/mask + speaker = 0 + hdmi = 0 + dgtl_dock_headset = 1 + angl_dock_headset = 0 + usb_device = 0 + usb_accessory = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp = 0 + remote_submix = 0 + line = 0 + + conf: AuxDigital + AvailableOutputDevices Includes Hdmi + + component: /Policy/policy/strategies/media/selected_output_devices/mask + speaker = 0 + hdmi = 1 + dgtl_dock_headset = 0 + angl_dock_headset = 0 + usb_device = 0 + usb_accessory = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp = 0 + remote_submix = 0 + line = 0 + + conf: AnlgDockHeadset + AvailableOutputDevices Includes AnlgDockHeadset + ForceUseForDock Is ForceAnalogDock + + component: /Policy/policy/strategies/media/selected_output_devices/mask + speaker = 0 + hdmi = 0 + dgtl_dock_headset = 0 + angl_dock_headset = 1 + usb_device = 0 + usb_accessory = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp = 0 + remote_submix = 0 + line = 0 + + conf: Speaker + AvailableOutputDevices Includes Speaker + # + # If hdmi system audio mode is on, remove speaker out of output list. + # + ForceUseForHdmiSystemAudio IsNot ForceHdmiSystemEnforced + + component: /Policy/policy/strategies/media/selected_output_devices/mask + speaker = 1 + hdmi = 0 + dgtl_dock_headset = 0 + angl_dock_headset = 0 + usb_device = 0 + usb_accessory = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp = 0 + remote_submix = 0 + line = 0 + + conf: Default + component: /Policy/policy/strategies/media/selected_output_devices/mask + speaker = 0 + hdmi = 0 + dgtl_dock_headset = 0 + angl_dock_headset = 0 + usb_device = 0 + usb_accessory = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp = 0 + remote_submix = 0 + line = 0 + + domain: Arc + # + # these following domains consists in device(s) that can co-exist with others + # e.g. ARC, SPDIF, AUX_LINE + # + conf: Selected + AvailableOutputDevices Includes HdmiArc + + /Policy/policy/strategies/media/selected_output_devices/mask/hdmi_arc = 1 + + conf: NotSelected + /Policy/policy/strategies/media/selected_output_devices/mask/hdmi_arc = 0 + + domain: Spdif + # + # these following domains consists in device(s) that can co-exist with others + # e.g. ARC, SPDIF, AUX_LINE + # + conf: Selected + AvailableOutputDevices Includes Spdif + + /Policy/policy/strategies/media/selected_output_devices/mask/spdif = 1 + + conf: NotSelected + /Policy/policy/strategies/media/selected_output_devices/mask/spdif = 0 + + domain: AuxLine + conf: Selected + AvailableOutputDevices Includes AuxLine + + /Policy/policy/strategies/media/selected_output_devices/mask/aux_line = 1 + + conf: NotSelected + /Policy/policy/strategies/media/selected_output_devices/mask/aux_line = 0 diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_phone.pfw b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_phone.pfw new file mode 100644 index 0000000..7b01491 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_phone.pfw @@ -0,0 +1,485 @@ +supDomain: DeviceForStrategy + + supDomain: Phone + + domain: UnreachableDevices + conf: Calibration + component: /Policy/policy/strategies/phone/selected_output_devices/mask + # no sonification on remote submix (e.g. WFD) + remote_submix = 0 + hdmi_arc = 0 + aux_line = 0 + spdif = 0 + fm = 0 + speaker_safe = 0 + + domain: Device + conf: ScoCarkit + AvailableOutputDevices Includes BluetoothScoCarkit + ForceUseForCommunication Is ForceBtSco + + component: /Policy/policy/strategies/phone/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 1 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: BluetoothScoHeadset + AvailableOutputDevices Includes BluetoothScoHeadset + ForceUseForCommunication Is ForceBtSco + + component: /Policy/policy/strategies/phone/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 1 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: BluetoothSco + AvailableOutputDevices Includes BluetoothSco + ForceUseForCommunication Is ForceBtSco + + component: /Policy/policy/strategies/phone/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 1 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: BluetoothA2dp + # + # Fallback BT Sco devices in case of FORCE_BT_SCO + # or FORCE_NONE + # + AvailableOutputDevices Includes BluetoothA2dp + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceNoBtA2dp + ANY + ForceUseForCommunication Is ForceBtSco + ForceUseForCommunication Is ForceNone + + component: /Policy/policy/strategies/phone/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 1 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: BluetoothA2dpHeadphones + # + # Fallback BT Sco devices in case of FORCE_BT_SCO + # or FORCE_NONE + # + AvailableOutputDevices Includes BluetoothA2dpHeadphones + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceNoBtA2dp + ANY + ForceUseForCommunication Is ForceBtSco + ForceUseForCommunication Is ForceNone + + component: /Policy/policy/strategies/phone/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 1 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: BluetoothA2dpSpeaker + # + # Fallback BT Sco devices in case of FORCE_BT_SCO + # or FORCE_NONE + # + AvailableOutputDevices Includes BluetoothA2dpSpeaker + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceNoBtA2dp + ForceUseForCommunication Is ForceSpeaker + + component: /Policy/policy/strategies/phone/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 1 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: WiredHeadphone + # + # Fallback BT Sco devices in case of FORCE_BT_SCO + # or FORCE_NONE + # + AvailableOutputDevices Includes WiredHeadphone + ForceUseForCommunication IsNot ForceSpeaker + + component: /Policy/policy/strategies/phone/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 1 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: WiredHeadset + # + # Fallback BT Sco devices in case of FORCE_BT_SCO + # or FORCE_NONE + # + AvailableOutputDevices Includes WiredHeadset + ForceUseForCommunication IsNot ForceSpeaker + + component: /Policy/policy/strategies/phone/selected_output_devices/mask + earpiece = 0 + wired_headset = 1 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: UsbDevice + # + # Fallback BT Sco devices in case of FORCE_BT_SCO + # or FORCE_NONE + # + AvailableOutputDevices Includes UsbDevice + ANY + ForceUseForCommunication Is ForceBtSco + ForceUseForCommunication Is ForceNone + ALL + ForceUseForCommunication Is ForceSpeaker + # + # In case of Force Speaker, priority between device and accessory are + # inverted compared to Force None or Bt Sco + # + AvailableOutputDevices Excludes UsbAccessory + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + + component: /Policy/policy/strategies/phone/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 1 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: UsbAccessory + # + # Fallback BT Sco devices in case of FORCE_BT_SCO + # or FORCE_NONE + # + AvailableOutputDevices Includes UsbAccessory + TelephonyMode IsNot InCommunication + TelephonyMode IsNot InCall + + component: /Policy/policy/strategies/phone/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 1 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: DgtlDockHeadset + # + # Fallback BT Sco devices in case of FORCE_BT_SCO + # or FORCE_NONE + # + AvailableOutputDevices Includes DgtlDockHeadset + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + + component: /Policy/policy/strategies/phone/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 1 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: Hdmi + # + # Fallback BT Sco devices in case of FORCE_BT_SCO + # or FORCE_NONE + # + AvailableOutputDevices Includes Hdmi + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + + component: /Policy/policy/strategies/phone/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 1 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: AnlgDockHeadset + # + # Fallback BT Sco devices in case of FORCE_BT_SCO + # or FORCE_NONE + # + AvailableOutputDevices Includes AnlgDockHeadset + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + + component: /Policy/policy/strategies/phone/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 1 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: Earpiece + # + # Fallback BT Sco devices in case of FORCE_BT_SCO + # or FORCE_NONE + # + AvailableOutputDevices Includes Earpiece + ForceUseForCommunication IsNot ForceSpeaker + + component: /Policy/policy/strategies/phone/selected_output_devices/mask + earpiece = 1 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + conf: Line + # + # Fallback BT Sco devices in case of FORCE_BT_SCO + # or FORCE_NONE + # + AvailableOutputDevices Includes Line + ForceUseForCommunication Is ForceSpeaker + + component: /Policy/policy/strategies/phone/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 1 + speaker = 0 + + conf: Speaker + # + # Fallback BT Sco devices in case of FORCE_BT_SCO + # or FORCE_NONE + # + AvailableOutputDevices Includes Speaker + ForceUseForCommunication Is ForceSpeaker + + component: /Policy/policy/strategies/phone/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 1 + + conf: Default + component: /Policy/policy/strategies/phone/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + speaker = 0 + + diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_rerouting.pfw b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_rerouting.pfw new file mode 100644 index 0000000..d390a33 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_rerouting.pfw @@ -0,0 +1,297 @@ +domainGroup: DeviceForStrategy + + domainGroup: Rerouting + # + # Falls through media strategy + # + domain: UnreachableDevices + conf: Calibration + component: /Policy/policy/strategies/rerouting/selected_output_devices/mask + hdmi_arc = 0 + spdif = 0 + aux_line = 0 + fm = 0 + speaker_safe = 0 + earpiece = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + telephony_tx = 0 + + domain: Device2 + conf: RemoteSubmix + AvailableOutputDevices Includes RemoteSubmix + + component: /Policy/policy/strategies/rerouting/selected_output_devices/mask + remote_submix = 1 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: BluetoothA2dp + ForceUseForMedia IsNot ForceNoBtA2dp + AvailableOutputDevices Includes BluetoothA2dp + + component: /Policy/policy/strategies/rerouting/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 1 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: BluetoothA2dpHeadphone + ForceUseForMedia IsNot ForceNoBtA2dp + AvailableOutputDevices Includes BluetoothA2dpHeadphones + + component: /Policy/policy/strategies/rerouting/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 1 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: BluetoothA2dpSpeaker + ForceUseForMedia IsNot ForceNoBtA2dp + AvailableOutputDevices Includes BluetoothA2dpSpeaker + + component: /Policy/policy/strategies/rerouting/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 1 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: ForceSpeaker + ForceUseForMedia Is ForceSpeaker + AvailableOutputDevices Includes Speaker + + component: /Policy/policy/strategies/rerouting/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 1 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: WiredHeadphone + AvailableOutputDevices Includes WiredHeadphone + + component: /Policy/policy/strategies/rerouting/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 1 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: Line + AvailableOutputDevices Includes Line + + component: /Policy/policy/strategies/rerouting/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 1 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: WiredHeadset + AvailableOutputDevices Includes WiredHeadset + + component: /Policy/policy/strategies/rerouting/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 1 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: UsbAccessory + AvailableOutputDevices Includes UsbAccessory + + component: /Policy/policy/strategies/rerouting/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 1 + usb_device = 0 + hdmi = 0 + + conf: UsbDevice + AvailableOutputDevices Includes UsbDevice + + component: /Policy/policy/strategies/rerouting/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 1 + hdmi = 0 + + conf: DgtlDockHeadset + AvailableOutputDevices Includes DgtlDockHeadset + + component: /Policy/policy/strategies/rerouting/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 1 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: AuxDigital + # + # Rerouting is similar to media and sonification (exept here: sonification is not allowed on HDMI) + # + AvailableOutputDevices Includes Hdmi + + component: /Policy/policy/strategies/rerouting/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 1 + + conf: AnlgDockHeadset + AvailableOutputDevices Includes AnlgDockHeadset + ForceUseForDock Is ForceAnalogDock + + component: /Policy/policy/strategies/rerouting/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 1 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: Speaker + AvailableOutputDevices Includes Speaker + + component: /Policy/policy/strategies/rerouting/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 1 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: Default + component: /Policy/policy/strategies/rerouting/selected_output_devices/mask + remote_submix = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + speaker = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_sonification.pfw b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_sonification.pfw new file mode 100644 index 0000000..71101f8 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_sonification.pfw @@ -0,0 +1,485 @@ +supDomain: DeviceForStrategy + + supDomain: Sonification + + domain: UnreachableDevices + conf: Calibration + component: /Policy/policy/strategies/sonification/selected_output_devices/mask + # no sonification on remote submix (e.g. WFD) + remote_submix = 0 + hdmi_arc = 0 + spdif = 0 + fm = 0 + speaker_safe = 0 + aux_line = 0 + # + # Sonification follows phone strategy if in call but HDMI is not reachable + # + hdmi = 0 + + domain: Speaker + + conf: Selected + AvailableOutputDevices Includes Speaker + ANY + # + # Sonification falls through ENFORCED_AUDIBLE if not in call (widely speaking) + # + ALL + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ALL + # + # Sonification follows phone strategy if in call (widely speaking) + # + ForceUseForCommunication Is ForceSpeaker + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + AvailableOutputDevices Excludes Line + + component: /Policy/policy/strategies/sonification/selected_output_devices/mask + speaker = 1 + + conf: NotSelected + component: /Policy/policy/strategies/sonification/selected_output_devices/mask + speaker = 0 + + domain: Device2 + + conf: BluetoothA2dp + # + # Sonification falls through media strategy if not in call (widely speaking) + # + AvailableOutputDevices Includes BluetoothA2dp + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceNoBtA2dp + + component: /Policy/policy/strategies/sonification/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 1 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + + conf: BluetoothA2dpHeadphones + # + # Sonification falls through media strategy if not in call (widely speaking) + # + AvailableOutputDevices Includes BluetoothA2dpHeadphones + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceNoBtA2dp + + component: /Policy/policy/strategies/sonification/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 1 + bluetooth_a2dp_speaker = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + + conf: BluetoothA2dpSpeaker + # + # Sonification falls through media strategy if not in call (widely speaking) + # + AvailableOutputDevices Includes BluetoothA2dpSpeaker + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceNoBtA2dp + + component: /Policy/policy/strategies/sonification/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 1 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + + conf: ScoCarkit + # + # Sonification follows phone strategy if in call (widely speaking) + # + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + ForceUseForCommunication Is ForceBtSco + AvailableOutputDevices Includes BluetoothScoCarkit + + component: /Policy/policy/strategies/sonification/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 1 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + + conf: ScoHeadset + # + # Sonification follows phone strategy if in call (widely speaking) + # + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + ForceUseForCommunication Is ForceBtSco + AvailableOutputDevices Includes BluetoothScoHeadset + + component: /Policy/policy/strategies/sonification/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 1 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + + conf: Sco + # + # Sonification follows phone strategy if in call (widely speaking) + # + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + ForceUseForCommunication Is ForceBtSco + AvailableOutputDevices Includes BluetoothSco + + component: /Policy/policy/strategies/sonification/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 1 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + + conf: WiredHeadphone + AvailableOutputDevices Includes WiredHeadphone + ANY + # + # Sonification falls through media strategy if not in call (widely speaking) + # + ALL + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceSpeaker + # + # Sonification follows Phone strategy if in call (widely speaking) + # + ALL + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + ForceUseForCommunication IsNot ForceSpeaker + + component: /Policy/policy/strategies/sonification/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 1 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + + conf: Line + AvailableOutputDevices Includes Line + ANY + # + # Sonification follows Phone strategy if in call (widely speaking) + # + ALL + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + ForceUseForCommunication Is ForceSpeaker + # + # Sonification falls through media strategy if not in call (widely speaking) + # + ALL + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceSpeaker + + component: /Policy/policy/strategies/sonification/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 1 + + conf: WiredHeadset + AvailableOutputDevices Includes WiredHeadset + ANY + # + # Sonification falls through media strategy if not in call (widely speaking) + # + ALL + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceSpeaker + ALL + # + # Sonification Follows Phone Strategy if in call (widely speaking) + # + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + ForceUseForCommunication IsNot ForceSpeaker + + component: /Policy/policy/strategies/sonification/selected_output_devices/mask + earpiece = 0 + wired_headset = 1 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + + conf: UsbDevice + AvailableOutputDevices Includes UsbDevice + ANY + # + # Sonification falls through media strategy if not in call (widely speaking) + # + ALL + AvailableOutputDevices Excludes UsbAccessory + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceSpeaker + ALL + # + # Sonification Follows Phone Strategy if in call (widely speaking) + # + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + ForceUseForCommunication IsNot ForceSpeaker + + component: /Policy/policy/strategies/sonification/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 1 + telephony_tx = 0 + line = 0 + + conf: UsbAccessory + AvailableOutputDevices Includes UsbAccessory + # + # Sonification falls through media strategy if not in call (widely speaking) + # + # Sonification Follows Phone Strategy if in call (widely speaking) + # but USB Accessory not reachable in call. + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceSpeaker + + component: /Policy/policy/strategies/sonification/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 1 + usb_device = 0 + telephony_tx = 0 + line = 0 + + conf: DgtlDockHeadset + AvailableOutputDevices Includes DgtlDockHeadset + # + # Sonification falls through media strategy if not in call + # + # Sonification Follows Phone Strategy if in call (widely speaking) + # but DgtlDockHeadset not reachable in call. + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceSpeaker + + component: /Policy/policy/strategies/sonification/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 1 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + + conf: AnlgDockHeadset + AvailableOutputDevices Includes AnlgDockHeadset + # + # Sonification falls through media strategy if not in call + # + # Sonification Follows Phone Strategy if in call (widely speaking) + # but AnlgDockHeadset not reachable in call. + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceSpeaker + ForceUseForDock Is ForceAnalogDock + + component: /Policy/policy/strategies/sonification/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + angl_dock_headset = 1 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + + conf: Earpiece + # + # Sonification Follows Phone Strategy if in call + # + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + ForceUseForCommunication IsNot ForceSpeaker + AvailableOutputDevices Includes Earpiece + + component: /Policy/policy/strategies/sonification/selected_output_devices/mask + earpiece = 1 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + + conf: None + component: /Policy/policy/strategies/sonification/selected_output_devices/mask + earpiece = 0 + wired_headset = 0 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_sonification_respectful.pfw b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_sonification_respectful.pfw new file mode 100644 index 0000000..f66674c --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_sonification_respectful.pfw @@ -0,0 +1,545 @@ +domainGroup: DeviceForStrategy + + domainGroup: SonificationRespectful + # + # Sonificiation Respectful follows: + # - If in call: Strategy sonification (that follows phone strategy in call also...) + # - If not in call AND a music stream is active remotely: Strategy sonification (that + # follows enforced audible, which follows media) + # - if not in call and no music stream active remotely and music stream active): strategy + # media + # - Otherwise follows sonification by replacing speaker with speaker safe if speaker is + # selected. + # + # Case of stream active handled programmatically + + domain: UnreachableDevices + conf: Calibration + component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask + remote_submix = 0 + hdmi_arc = 0 + aux_line = 0 + spdif = 0 + fm = 0 + telephony_tx = 0 + + domain: Speakers + + conf: SpeakerSafe + AvailableOutputDevices Includes Speaker + AvailableOutputDevices Includes SpeakerSafe + # + # Follows sonification strategy if not in call and replace speaker by speaker safe + # if and only if speaker only selected + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + + component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask + speaker_safe = 1 + speaker = 0 + + conf: Speaker + AvailableOutputDevices Includes Speaker + ANY + # + # Follows sonification strategy if not in call + # + ALL + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ALL + # + # Follows Phone Strategy if call + # + ForceUseForCommunication Is ForceSpeaker + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + AvailableOutputDevices Excludes Line + + component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask + speaker_safe = 0 + speaker = 1 + + conf: None + component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask + speaker_safe = 0 + speaker = 0 + + domain: Device2 + conf: BluetoothA2dp + # + # SonificationRespectful Follows Sonification that falls through Media strategy if not in call + # SonificationRespectful follows media if music stream is active + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia Is ForceNoBtA2dp + AvailableOutputDevices Includes BluetoothA2dp + + component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask + earpiece = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp = 1 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: BluetoothA2dpHeadphones + # + # SonificationRespectful Follows Sonification that falls through Media strategy if not in call + # SonificationRespectful follows media if music stream is active + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia Is ForceNoBtA2dp + AvailableOutputDevices Includes BluetoothA2dpHeadphones + + component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask + earpiece = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp_headphones = 1 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: BluetoothA2dpSpeaker + # + # SonificationRespectful Follows Sonification that falls through Media strategy if not in call + # SonificationRespectful follows media if music stream is active + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia Is ForceNoBtA2dp + AvailableOutputDevices Includes BluetoothA2dpSpeaker + + component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask + earpiece = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 1 + bluetooth_a2dp = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: BluetoothScoCarkit + # + # SonificationRespectful Follows Phone strategy if in call + # + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + ForceUseForCommunication Is ForceBtSco + AvailableOutputDevices Includes BluetoothScoCarkit + + component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask + earpiece = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 1 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: BluetoothScoHeadset + # + # SonificationRespectful Follows Phone strategy if in call + # + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + ForceUseForCommunication Is ForceBtSco + AvailableOutputDevices Includes BluetoothScoHeadset + + component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask + earpiece = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 1 + bluetooth_sco_carkit = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: BluetoothSco + # + # SonificationRespectful Follows Phone strategy if in call + # + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + ForceUseForCommunication Is ForceBtSco + AvailableOutputDevices Includes BluetoothSco + + component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask + earpiece = 0 + bluetooth_sco = 1 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: WiredHeadphone + ANY + ALL + # + # SonificationRespectful Follows Phone strategy if in call + # + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + ForceUseForCommunication IsNot ForceSpeaker + ALL + # + # SonificationRespectful Follows Sonification that falls through Media strategy if not in call + # SonificationRespectful follows media if music stream is active + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceSpeaker + AvailableOutputDevices Includes WiredHeadphone + + component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask + earpiece = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp = 0 + wired_headset = 0 + wired_headphone = 1 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: LineWhenFollowMediaStrategy + # + # SonificationRespectful Follows Sonification that falls through Media strategy if not in call + # SonificationRespectful follows media if music stream is active + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + AvailableOutputDevices Includes WiredHeadphone + ForceUseForMedia IsNot ForceSpeaker + + component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask + earpiece = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp = 0 + wired_headset = 0 + wired_headphone = 0 + line = 1 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: WiredHeadset + ANY + ALL + # + # SonificationRespectful Follows Phone strategy if in call + # + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + ForceUseForCommunication IsNot ForceSpeaker + ALL + # + # SonificationRespectful Follows Sonification that falls through Media strategy if not in call + # SonificationRespectful follows media if music stream is active + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceSpeaker + AvailableOutputDevices Includes WiredHeadset + + component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask + earpiece = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp = 0 + wired_headset = 1 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: UsbDevice + ANY + ALL + # + # SonificationRespectful Follows Phone strategy if in call + # + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + ForceUseForCommunication IsNot ForceSpeaker + ALL + # + # SonificationRespectful Follows Sonification that falls through Media strategy if not in call + # SonificationRespectful follows media if music stream is active + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceSpeaker + AvailableOutputDevices Excludes UsbAccessory + AvailableOutputDevices Includes UsbDevice + + component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask + earpiece = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 1 + hdmi = 0 + + conf: UsbAccessory + # + # SonificationRespectful Follows Phone strategy if in call (widely speaking) + # but UsbAccessory not reachable in call. + # + # SonificationRespectful Follows Sonification that falls through Media strategy if not in call + # SonificationRespectful follows media if music stream is active + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceSpeaker + AvailableOutputDevices Includes UsbAccessory + + component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask + earpiece = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 1 + usb_device = 0 + hdmi = 0 + + conf: DgtlDockHeadset + # + # SonificationRespectful Follows Phone strategy if in call (widely speaking) + # but DgtlDockHeadset not reachable in call. + # + # SonificationRespectful Follows Sonification that falls through Media strategy if not in call + # SonificationRespectful follows media if music stream is active + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceSpeaker + AvailableOutputDevices Includes DgtlDockHeadset + + component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask + earpiece = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 1 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: AuxDigital + # + # SonificationRespectful Follows Phone strategy if in call (widely speaking) + # but HDMI not reachable in call. + # + # SonificationRespectful Follows Sonification that falls through Media strategy if not in call + # SonificationRespectful follows media if music stream is active + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceSpeaker + AvailableOutputDevices Includes Hdmi + + component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask + earpiece = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 1 + + conf: AnlgDockHeadset + # + # SonificationRespectful Follows Phone strategy if in call (widely speaking) + # but AnlgDockHeadset not reachable in call. + # + # SonificationRespectful Follows Sonification that falls through Media strategy if not in call + # SonificationRespectful follows media if music stream is active + # + TelephonyMode IsNot InCall + TelephonyMode IsNot InCommunication + ForceUseForMedia IsNot ForceSpeaker + ForceUseForDock Is ForceAnalogDock + AvailableOutputDevices Includes AnlgDockHeadset + + component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask + earpiece = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 1 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: Earpiece + # + # SonificationRespectful Follows Phone strategy if in call + # + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + ForceUseForCommunication IsNot ForceSpeaker + AvailableOutputDevices Includes Earpiece + + component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask + earpiece = 1 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp = 0 + wired_headset = 0 + wired_headphone = 0 + line = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 + + conf: Line + # + # SonificationRespectful Follows Phone strategy if in call + # + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + ForceUseForCommunication Is ForceSpeaker + AvailableOutputDevices Includes Line + + component: /Policy/policy/strategies/sonification_respectful/selected_output_devices/mask + earpiece = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + bluetooth_a2dp = 0 + wired_headset = 0 + wired_headphone = 0 + line = 1 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + hdmi = 0 diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_transmitted_through_speaker.pfw b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_transmitted_through_speaker.pfw new file mode 100644 index 0000000..e5ae9d9 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/device_for_strategy_transmitted_through_speaker.pfw @@ -0,0 +1,40 @@ +supDomain: DeviceForStrategy + + supDomain: TransmittedThroughSpeaker + domain: UnreacheableDevices + conf: Calibration + component: /Policy/policy/strategies/transmitted_through_speaker/selected_output_devices/mask + remote_submix = 0 + hdmi_arc = 0 + spdif = 0 + aux_line = 0 + fm = 0 + speaker_safe = 0 + earpiece = 0 + wired_headset = 1 + wired_headphone = 0 + bluetooth_sco = 0 + bluetooth_sco_headset = 0 + bluetooth_sco_carkit = 0 + bluetooth_a2dp = 0 + bluetooth_a2dp_headphones = 0 + bluetooth_a2dp_speaker = 0 + hdmi = 0 + angl_dock_headset = 0 + dgtl_dock_headset = 0 + usb_accessory = 0 + usb_device = 0 + telephony_tx = 0 + line = 0 + + domain: Speaker + conf: Selected + AvailableOutputDevices Includes Speaker + + component: /Policy/policy/strategies/transmitted_through_speaker/selected_output_devices/mask + speaker = 1 + + conf: NotSelected + component: /Policy/policy/strategies/transmitted_through_speaker/selected_output_devices/mask + speaker = 0 + diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/strategy_for_stream.pfw b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/strategy_for_stream.pfw new file mode 100755 index 0000000..3940b9d --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/strategy_for_stream.pfw @@ -0,0 +1,20 @@ +domain: StrategyForStream + + conf: Calibration + /Policy/policy/streams/voice_call/applicable_strategy/strategy = phone + # + # NOTE: SYSTEM stream uses MEDIA strategy because muting music and switching outputs + # while key clicks are played produces a poor result + # + /Policy/policy/streams/system/applicable_strategy/strategy = media + /Policy/policy/streams/ring/applicable_strategy/strategy = sonification + /Policy/policy/streams/music/applicable_strategy/strategy = media + /Policy/policy/streams/alarm/applicable_strategy/strategy = sonification + /Policy/policy/streams/notification/applicable_strategy/strategy = sonification_respectful + /Policy/policy/streams/bluetooth_sco/applicable_strategy/strategy = phone + /Policy/policy/streams/enforced_audible/applicable_strategy/strategy = enforced_audible + /Policy/policy/streams/dtmf/applicable_strategy/strategy = dtmf + /Policy/policy/streams/tts/applicable_strategy/strategy = transmitted_through_speaker + /Policy/policy/streams/accessibility/applicable_strategy/strategy = accessibility + /Policy/policy/streams/rerouting/applicable_strategy/strategy = rerouting + diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/strategy_for_usage.pfw b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/strategy_for_usage.pfw new file mode 100644 index 0000000..3f5da13 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/strategy_for_usage.pfw @@ -0,0 +1,39 @@ +supDomain: SelectedStrategyForUsages + + domain: Calibration + conf: Calibration + /Policy/policy/usages/unknown/applicable_strategy/strategy = media + /Policy/policy/usages/media/applicable_strategy/strategy = media + /Policy/policy/usages/voice_communication/applicable_strategy/strategy = phone + /Policy/policy/usages/voice_communication_signalling/applicable_strategy/strategy = dtmf + /Policy/policy/usages/alarm/applicable_strategy/strategy = sonification + /Policy/policy/usages/notification/applicable_strategy/strategy = sonification_respectful + /Policy/policy/usages/notification_telephony_ringtone/applicable_strategy/strategy = sonification + /Policy/policy/usages/notification_communication_request/applicable_strategy/strategy = sonification_respectful + /Policy/policy/usages/notification_communication_instant/applicable_strategy/strategy = sonification_respectful + /Policy/policy/usages/notification_communication_delayed/applicable_strategy/strategy = sonification_respectful + /Policy/policy/usages/notification_event/applicable_strategy/strategy = sonification_respectful + /Policy/policy/usages/assistance_navigation_guidance/applicable_strategy/strategy = media + /Policy/policy/usages/assistance_sonification/applicable_strategy/strategy = media + /Policy/policy/usages/game/applicable_strategy/strategy = media + + domain: AssistanceAccessibility + conf: Sonification + # + # In case of Ring or Alarm stream type active, switching to sonification + # @todo: handle this dynamic case. As a WA, using Ringtone mode... + # + TelephonyMode Is RingTone + + /Policy/policy/usages/assistance_accessibility/applicable_strategy/strategy = sonification + + conf: Phone + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + + /Policy/policy/usages/assistance_accessibility/applicable_strategy/strategy = phone + + conf: Accessibility + /Policy/policy/usages/assistance_accessibility/applicable_strategy/strategy = accessibility + diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/volumes.pfw b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/volumes.pfw new file mode 100644 index 0000000..1049564 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/volumes.pfw @@ -0,0 +1,545 @@ +supDomain: VolumeProfilesForStream + domain: Calibration + conf: Calibration + component: /Policy/policy/streams + component: voice_call/volume_profiles + component: headset_device_category/curve_points + 0/index = 0 + 0/db_attenuation = -24.0 + 1/index = 33 + 1/db_attenuation = -18.0 + 2/index = 66 + 2/db_attenuation = -12.0 + 3/index = 100 + 3/db_attenuation = -6.0 + component: speaker_device_category/curve_points + 0/index = 0 + 0/db_attenuation = -24.0 + 1/index = 33 + 1/db_attenuation = -16.0 + 2/index = 66 + 2/db_attenuation = -8.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: earpiece_device_category/curve_points + 0/index = 0 + 0/db_attenuation = -24.0 + 1/index = 33 + 1/db_attenuation = -18.0 + 2/index = 66 + 2/db_attenuation = -12.0 + 3/index = 100 + 3/db_attenuation = -6.0 + component: extmedia_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -58.0 + 1/index = 33 + 1/db_attenuation = -40.0 + 2/index = 66 + 2/db_attenuation = -17.0 + 3/index = 100 + 3/db_attenuation = 0.0 + + component: system/volume_profiles + component: headset_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -30.0 + 1/index = 33 + 1/db_attenuation = -26.0 + 2/index = 66 + 2/db_attenuation = -22.0 + 3/index = 100 + 3/db_attenuation = -18.0 + component: speaker_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -24.0 + 1/index = 33 + 1/db_attenuation = -18.0 + 2/index = 66 + 2/db_attenuation = -12.0 + 3/index = 100 + 3/db_attenuation = -6.0 + component: earpiece_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -24.0 + 1/index = 33 + 1/db_attenuation = -18.0 + 2/index = 66 + 2/db_attenuation = -12.0 + 3/index = 100 + 3/db_attenuation = -6.0 + component: extmedia_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -58.0 + 1/index = 33 + 1/db_attenuation = -40.0 + 2/index = 66 + 2/db_attenuation = -21.0 + 3/index = 100 + 3/db_attenuation = -10.0 + + component: ring/volume_profiles + component: headset_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -49.5 + 1/index = 33 + 1/db_attenuation = -33.5 + 2/index = 66 + 2/db_attenuation = -17.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: speaker_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -35.7 + 1/index = 33 + 1/db_attenuation = -26.1 + 2/index = 66 + 2/db_attenuation = -13.2 + 3/index = 100 + 3/db_attenuation = 0.0 + component: earpiece_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -49.5 + 1/index = 33 + 1/db_attenuation = -33.5 + 2/index = 66 + 2/db_attenuation = -17.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: extmedia_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -58.0 + 1/index = 33 + 1/db_attenuation = -40.0 + 2/index = 66 + 2/db_attenuation = -27.0 + 3/index = 100 + 3/db_attenuation = -10.0 + + component: music/volume_profiles + component: headset_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -58.0 + 1/index = 33 + 1/db_attenuation = -40.0 + 2/index = 66 + 2/db_attenuation = -17.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: speaker_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -56.0 + 1/index = 33 + 1/db_attenuation = -34.0 + 2/index = 66 + 2/db_attenuation = -11.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: earpiece_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -58.0 + 1/index = 33 + 1/db_attenuation = -40.0 + 2/index = 66 + 2/db_attenuation = -17.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: extmedia_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -58.0 + 1/index = 33 + 1/db_attenuation = -40.0 + 2/index = 66 + 2/db_attenuation = -17.0 + 3/index = 100 + 3/db_attenuation = 0.0 + + component: alarm/volume_profiles + component: headset_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -49.5 + 1/index = 33 + 1/db_attenuation = -33.5 + 2/index = 66 + 2/db_attenuation = -17.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: speaker_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -35.7 + 1/index = 33 + 1/db_attenuation = -26.1 + 2/index = 66 + 2/db_attenuation = -13.2 + 3/index = 100 + 3/db_attenuation = 0.0 + component: earpiece_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -49.5 + 1/index = 33 + 1/db_attenuation = -33.5 + 2/index = 66 + 2/db_attenuation = -17.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: extmedia_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -58.0 + 1/index = 33 + 1/db_attenuation = -40.0 + 2/index = 66 + 2/db_attenuation = -27.0 + 3/index = 100 + 3/db_attenuation = -10.0 + + component: notification/volume_profiles + component: headset_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -49.5 + 1/index = 33 + 1/db_attenuation = -33.5 + 2/index = 66 + 2/db_attenuation = -17.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: speaker_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -35.7 + 1/index = 33 + 1/db_attenuation = -26.1 + 2/index = 66 + 2/db_attenuation = -13.2 + 3/index = 100 + 3/db_attenuation = 0.0 + component: earpiece_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -49.5 + 1/index = 33 + 1/db_attenuation = -33.5 + 2/index = 66 + 2/db_attenuation = -17.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: extmedia_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -58.0 + 1/index = 33 + 1/db_attenuation = -40.0 + 2/index = 66 + 2/db_attenuation = -27.0 + 3/index = 100 + 3/db_attenuation = -10.0 + + component: bluetooth_sco/volume_profiles + component: headset_device_category/curve_points + 0/index = 0 + 0/db_attenuation = -24.0 + 1/index = 33 + 1/db_attenuation = -18.0 + 2/index = 66 + 2/db_attenuation = -12.0 + 3/index = 100 + 3/db_attenuation = -6.0 + component: speaker_device_category/curve_points + 0/index = 0 + 0/db_attenuation = -24.0 + 1/index = 33 + 1/db_attenuation = -16.0 + 2/index = 66 + 2/db_attenuation = -8.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: earpiece_device_category/curve_points + 0/index = 0 + 0/db_attenuation = -24.0 + 1/index = 33 + 1/db_attenuation = -18.0 + 2/index = 66 + 2/db_attenuation = -12.0 + 3/index = 100 + 3/db_attenuation = -6.0 + component: extmedia_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -58.0 + 1/index = 33 + 1/db_attenuation = -40.0 + 2/index = 66 + 2/db_attenuation = -17.0 + 3/index = 100 + 3/db_attenuation = 0.0 + + component: enforced_audible/volume_profiles + component: headset_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -30.0 + 1/index = 33 + 1/db_attenuation = -26.0 + 2/index = 66 + 2/db_attenuation = -22.0 + 3/index = 100 + 3/db_attenuation = -18.0 + component: speaker_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -24.0 + 1/index = 33 + 1/db_attenuation = -18.0 + 2/index = 66 + 2/db_attenuation = -12.0 + 3/index = 100 + 3/db_attenuation = -6.0 + component: earpiece_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -24.0 + 1/index = 33 + 1/db_attenuation = -18.0 + 2/index = 66 + 2/db_attenuation = -12.0 + 3/index = 100 + 3/db_attenuation = -6.0 + component: extmedia_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -58.0 + 1/index = 33 + 1/db_attenuation = -40.0 + 2/index = 66 + 2/db_attenuation = -27.0 + 3/index = 100 + 3/db_attenuation = -10.0 + + component: tts/volume_profiles + component: headset_device_category/curve_points + 0/index = 0 + 0/db_attenuation = -96.0 + 1/index = 1 + 1/db_attenuation = -96.0 + 2/index = 2 + 2/db_attenuation = -96.0 + 3/index = 100 + 3/db_attenuation = -96.0 + component: speaker_device_category/curve_points + 0/index = 0 + 0/db_attenuation = -96.0 + 1/index = 33 + 1/db_attenuation = -68.0 + 2/index = 66 + 2/db_attenuation = -34.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: earpiece_device_category/curve_points + 0/index = 0 + 0/db_attenuation = -96.0 + 1/index = 1 + 1/db_attenuation = -96.0 + 2/index = 2 + 2/db_attenuation = -96.0 + 3/index = 100 + 3/db_attenuation = -96.0 + component: extmedia_device_category/curve_points + 0/index = 0 + 0/db_attenuation = -96.0 + 1/index = 1 + 1/db_attenuation = -96.0 + 2/index = 2 + 2/db_attenuation = -96.0 + 3/index = 100 + 3/db_attenuation = -96.0 + + component: accessibility/volume_profiles + component: headset_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -58.0 + 1/index = 33 + 1/db_attenuation = -40.0 + 2/index = 66 + 2/db_attenuation = -17.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: speaker_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -56.0 + 1/index = 33 + 1/db_attenuation = -34.0 + 2/index = 66 + 2/db_attenuation = -11.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: earpiece_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -58.0 + 1/index = 33 + 1/db_attenuation = -40.0 + 2/index = 66 + 2/db_attenuation = -17.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: extmedia_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -58.0 + 1/index = 33 + 1/db_attenuation = -40.0 + 2/index = 66 + 2/db_attenuation = -17.0 + 3/index = 100 + 3/db_attenuation = 0.0 + + component: rerouting/volume_profiles + component: headset_device_category/curve_points + 0/index = 0 + 0/db_attenuation = 0.0 + 1/index = 1 + 1/db_attenuation = 0.0 + 2/index = 2 + 2/db_attenuation = 0.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: speaker_device_category/curve_points + 0/index = 0 + 0/db_attenuation = 0.0 + 1/index = 1 + 1/db_attenuation = 0.0 + 2/index = 2 + 2/db_attenuation = 0.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: earpiece_device_category/curve_points + 0/index = 0 + 0/db_attenuation = 0.0 + 1/index = 1 + 1/db_attenuation = 0.0 + 2/index = 2 + 2/db_attenuation = 0.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: extmedia_device_category/curve_points + 0/index = 0 + 0/db_attenuation = 0.0 + 1/index = 1 + 1/db_attenuation = 0.0 + 2/index = 2 + 2/db_attenuation = 0.0 + 3/index = 100 + 3/db_attenuation = 0.0 + + component: patch/volume_profiles + component: headset_device_category/curve_points + 0/index = 0 + 0/db_attenuation = 0.0 + 1/index = 1 + 1/db_attenuation = 0.0 + 2/index = 2 + 2/db_attenuation = 0.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: speaker_device_category/curve_points + 0/index = 0 + 0/db_attenuation = 0.0 + 1/index = 1 + 1/db_attenuation = 0.0 + 2/index = 2 + 2/db_attenuation = 0.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: earpiece_device_category/curve_points + 0/index = 0 + 0/db_attenuation = 0.0 + 1/index = 1 + 1/db_attenuation = 0.0 + 2/index = 2 + 2/db_attenuation = 0.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: extmedia_device_category/curve_points + 0/index = 0 + 0/db_attenuation = 0.0 + 1/index = 1 + 1/db_attenuation = 0.0 + 2/index = 2 + 2/db_attenuation = 0.0 + 3/index = 100 + 3/db_attenuation = 0.0 + + domain: Dtmf + conf: InCall + ANY + TelephonyMode Is InCall + TelephonyMode Is InCommunication + + component: /Policy/policy/streams + component: dtmf/volume_profiles + component: headset_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -30.0 + 1/index = 33 + 1/db_attenuation = -26.0 + 2/index = 66 + 2/db_attenuation = -22.0 + 3/index = 100 + 3/db_attenuation = -18.0 + component: speaker_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -24.0 + 1/index = 33 + 1/db_attenuation = -18.0 + 2/index = 66 + 2/db_attenuation = -12.0 + 3/index = 100 + 3/db_attenuation = -6.0 + component: earpiece_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -24.0 + 1/index = 33 + 1/db_attenuation = -18.0 + 2/index = 66 + 2/db_attenuation = -12.0 + 3/index = 100 + 3/db_attenuation = -6.0 + component: extmedia_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -58.0 + 1/index = 33 + 1/db_attenuation = -40.0 + 2/index = 66 + 2/db_attenuation = -27.0 + 3/index = 100 + 3/db_attenuation = -10.0 + + conf: OutOfCall + component: /Policy/policy/streams + component: dtmf/volume_profiles + component: headset_device_category/curve_points + 0/index = 0 + 0/db_attenuation = -24.0 + 1/index = 33 + 1/db_attenuation = -18.0 + 2/index = 66 + 2/db_attenuation = -12.0 + 3/index = 100 + 3/db_attenuation = -6.0 + component: speaker_device_category/curve_points + 0/index = 0 + 0/db_attenuation = -24.0 + 1/index = 33 + 1/db_attenuation = -16.0 + 2/index = 66 + 2/db_attenuation = -8.0 + 3/index = 100 + 3/db_attenuation = 0.0 + component: earpiece_device_category/curve_points + 0/index = 0 + 0/db_attenuation = -24.0 + 1/index = 33 + 1/db_attenuation = -18.0 + 2/index = 66 + 2/db_attenuation = -12.0 + 3/index = 100 + 3/db_attenuation = -6.0 + component: extmedia_device_category/curve_points + 0/index = 1 + 0/db_attenuation = -58.0 + 1/index = 33 + 1/db_attenuation = -40.0 + 2/index = 66 + 2/db_attenuation = -17.0 + 3/index = 100 + 3/db_attenuation = 0.0 + diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Structure/PolicyClass.xml b/services/audiopolicy/engineconfigurable/parameter-framework/example/Structure/PolicyClass.xml new file mode 100755 index 0000000..296879f --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Structure/PolicyClass.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<SystemClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="../../Schemas/SystemClass.xsd" Name="Policy"> + <SubsystemInclude Path="PolicySubsystem.xml"/> +</SystemClass> diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Structure/PolicySubsystem-CommonTypes.xml b/services/audiopolicy/engineconfigurable/parameter-framework/example/Structure/PolicySubsystem-CommonTypes.xml new file mode 100755 index 0000000..821d6ad --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Structure/PolicySubsystem-CommonTypes.xml @@ -0,0 +1,170 @@ +<?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 ####################--> + <!-- Common Types defintion --> + <xi:include href="PolicySubsystem-Volume.xml"/> + + <!--#################### 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="26"/> + <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"/> + </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="in" Size="1" Pos="31"/> + </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"/> + </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"/> + </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="fm_tuner" Size="1" Pos="9"/> + <BitParameter Name="hotword" Size="1" Pos="10"/> + </BitParameterBlock> + </ComponentType> + + <!-- Routing Strategy definition as an enumeration. Numerical value must match the value + of the routing strategy in policy header file. --> + <ComponentType Name="Strategy"> + <EnumParameter Name="strategy" Size="32"> + <ValuePair Literal="media" Numerical="0"/> + <ValuePair Literal="phone" Numerical="1"/> + <ValuePair Literal="sonification" Numerical="2"/> + <ValuePair Literal="sonification_respectful" Numerical="3"/> + <ValuePair Literal="dtmf" Numerical="4"/> + <ValuePair Literal="enforced_audible" Numerical="5"/> + <ValuePair Literal="transmitted_through_speaker" Numerical="6"/> + <ValuePair Literal="accessibility" Numerical="7"/> + <ValuePair Literal="rerouting" Numerical="8"/> + </EnumParameter> + </ComponentType> + + <!--#################### STRATEGY COMMON TYPES BEGIN ####################--> + + <ComponentType Name="StrategyConfig" Mapping="Strategy:'%1'"> + <Component Name="selected_output_devices" Type="OutputDevicesMask"/> + </ComponentType> + + <!--#################### STRATEGY COMMON TYPES END ####################--> + + <!--#################### STREAM COMMON TYPES BEGIN ####################--> + + <ComponentType Name="Stream"> + <Component Name="applicable_strategy" Type="Strategy" Mapping="Stream:'%1'"/> + <Component Name="volume_profiles" Type="VolumeCurvesCategories" + Description="A volume profile is refered by the stream type."/> + </ComponentType> + + <!--#################### STREAM COMMON TYPES END ####################--> + + <!--#################### USAGE COMMON TYPES BEGIN ####################--> + + <ComponentType Name="Usage"> + <Component Name="applicable_strategy" Type="Strategy" Mapping="Usage:'%1'"/> + </ComponentType> + + <!--#################### USAGE COMMON TYPES END ####################--> + + <!--#################### INPUT SOURCE COMMON TYPES BEGIN ####################--> + + <ComponentType Name="InputSource"> + <Component Name="applicable_input_device" Type="InputDevicesMask" + Mapping="InputSource:'%1'" Description="Selected Input device"/> + </ComponentType> + + <!--#################### INPUT SOURCE COMMON TYPES END ####################--> + +</ComponentTypeSet> diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Structure/PolicySubsystem-Volume.xml b/services/audiopolicy/engineconfigurable/parameter-framework/example/Structure/PolicySubsystem-Volume.xml new file mode 100755 index 0000000..cf39cc2 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Structure/PolicySubsystem-Volume.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ComponentTypeSet xmlns:xi="http://www.w3.org/2001/XInclude" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="Schemas/ComponentTypeSet.xsd"> + <ComponentType Name="VolumeCurvePoints"> + <ParameterBlock Name="curve_points" ArrayLength="4" Mapping="VolumeProfile:'%1'" + Description="4 points to define the volume attenuation curve, each + characterized by the volume index (from 0 to 100) at which + they apply, and the attenuation in dB at that index. + We use 100 steps to avoid rounding errors when computing + the volume"> + <IntegerParameter Name="index" Size="32"/> + <FixedPointParameter Name="db_attenuation" Size="16" Integral="7" Fractional="8"/> + </ParameterBlock> + </ComponentType> + + <ComponentType Name="VolumeCurvesCategories"> + <Component Name="headset_device_category" Type="VolumeCurvePoints" Mapping="Category:0"/> + <Component Name="speaker_device_category" Type="VolumeCurvePoints" Mapping="Category:1"/> + <Component Name="earpiece_device_category" Type="VolumeCurvePoints" Mapping="Category:2"/> + <Component Name="extmedia_device_category" Type="VolumeCurvePoints" Mapping="Category:3"/> + </ComponentType> + +</ComponentTypeSet> + + diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/Structure/PolicySubsystem.xml b/services/audiopolicy/engineconfigurable/parameter-framework/example/Structure/PolicySubsystem.xml new file mode 100755 index 0000000..b21f6ae --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/Structure/PolicySubsystem.xml @@ -0,0 +1,137 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Subsystem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:xi="http://www.w3.org/2001/XInclude" + xsi:noNamespaceSchemaLocation="Schemas/Subsystem.xsd" + Name="policy" Type="Policy" Endianness="Little"> + + <ComponentLibrary> + <!--#################### GLOBAL COMPONENTS BEGIN ####################--> + <!-- Common Types defintion --> + <xi:include href="PolicySubsystem-CommonTypes.xml"/> + + <!--#################### GLOBAL COMPONENTS END ####################--> + + <!--#################### STRATEGY BEGIN ####################--> + + <ComponentType Name="Strategies" Description="Identifier must match the enum value to make + the link between the PolicyManager and PFW"> + <Component Name="media" Type="StrategyConfig" Mapping="Amend1:Media,Identifier:0"/> + <Component Name="phone" Type="StrategyConfig" Mapping="Amend1:Phone,Identifier:1"/> + <Component Name="sonification" Type="StrategyConfig" + Mapping="Amend1:Sonification,Identifier:2"/> + <Component Name="sonification_respectful" Type="StrategyConfig" + Mapping="Amend1:SonificationRespectful,Identifier:3"/> + <Component Name="dtmf" Type="StrategyConfig" Mapping="Amend1:Dtmf,Identifier:4"/> + <Component Name="enforced_audible" Type="StrategyConfig" + Mapping="Amend1:EnforcedAudible,Identifier:5"/> + <Component Name="transmitted_through_speaker" Type="StrategyConfig" + Mapping="Amend1:TransmittedThroughSpeaker,Identifier:6"/> + <Component Name="accessibility" Type="StrategyConfig" + Mapping="Amend1:Accessibility,Identifier:7"/> + <Component Name="rerouting" Type="StrategyConfig" + Mapping="Amend1:Rerouting,Identifier:8"/> + </ComponentType> + + <!--#################### STRATEGY END ####################--> + + <!--#################### STREAM BEGIN ####################--> + + <ComponentType Name="Streams" Description="associated to audio_stream_type_t definition, + identifier mapping must match the value of the enum"> + <Component Name="voice_call" Type="Stream" Mapping="Amend1:VoiceCall,Identifier:0"/> + <Component Name="system" Type="Stream" Mapping="Amend1:System,Identifier:1"/> + <Component Name="ring" Type="Stream" Mapping="Amend1:Ring,Identifier:2"/> + <Component Name="music" Type="Stream" Mapping="Amend1:Music,Identifier:3"/> + <Component Name="alarm" Type="Stream" Mapping="Amend1:Alarm,Identifier:4"/> + <Component Name="notification" Type="Stream" + Mapping="Amend1:Notification,Identifier:5"/> + <Component Name="bluetooth_sco" Type="Stream" + Mapping="Amend1:BluetoothSco,Identifier:6"/> + <Component Name="enforced_audible" Type="Stream" + Mapping="Amend1:EnforceAudible,Identifier:7" + Description="Sounds that cannot be muted by user and must + be routed to speaker"/> + <Component Name="dtmf" Type="Stream" Mapping="Amend1:Dtmf,Identifier:8"/> + <Component Name="tts" Type="Stream" Mapping="Amend1:Tts,Identifier:9" + Description="Transmitted Through Speaker. + Plays over speaker only, silent on other devices"/> + <Component Name="accessibility" Type="Stream" + Mapping="Amend1:Accessibility,Identifier:10" + Description="For accessibility talk back prompts"/> + <Component Name="rerouting" Type="Stream" Mapping="Amend1:Rerouting,Identifier:11" + Description="For dynamic policy output mixes"/> + <Component Name="patch" Type="Stream" Mapping="Amend1:Patch,Identifier:12" + Description="For internal audio flinger tracks. Fixed volume"/> + </ComponentType> + + <!--#################### STREAM END ####################--> + + <!--#################### USAGE BEGIN ####################--> + + <ComponentType Name="Usages" Description="associated to audio_stream_type_t definition, + identifier mapping must match the value of the enum"> + <Component Name="unknown" Type="Usage" Mapping="Amend1:Unknown,Identifier:0"/> + <Component Name="media" Type="Usage" Mapping="Amend1:Media,Identifier:1"/> + <Component Name="voice_communication" Type="Usage" + Mapping="Amend1:VoiceCommunication,Identifier:2"/> + <Component Name="voice_communication_signalling" Type="Usage" + Mapping="Amend1:VoiceCommunicationSignalling,Identifier:3"/> + <Component Name="alarm" Type="Usage" Mapping="Amend1:Alarm,Identifier:4"/> + <Component Name="notification" Type="Usage" Mapping="Amend1:Notification,Identifier:5"/> + <Component Name="notification_telephony_ringtone" Type="Usage" + Mapping="Amend1:NotificationTelephonyRingtone,Identifier:6"/> + <Component Name="notification_communication_request" Type="Usage" + Mapping="Amend1:NotificationCommunicationRequest,Identifier:7"/> + <Component Name="notification_communication_instant" Type="Usage" + Mapping="Amend1:NotificationCommunicationInstant,Identifier:8"/> + <Component Name="notification_communication_delayed" Type="Usage" + Mapping="Amend1:NotificationCommunicationDelated,Identifier:9"/> + <Component Name="notification_event" Type="Usage" + Mapping="Amend1:NotificationEvent,Identifier:10"/> + <Component Name="assistance_accessibility" Type="Usage" + Mapping="Amend1:AssistanceAccessibility,Identifier:11"/> + <Component Name="assistance_navigation_guidance" Type="Usage" + Mapping="Amend1:AssistanceNavigationGuidance,Identifier:12"/> + <Component Name="assistance_sonification" Type="Usage" + Mapping="Amend1:AssistanceSonification,Identifier:13"/> + <Component Name="game" Type="Usage" Mapping="Amend1:BluetoothSco,Identifier:14"/> + <Component Name="virtual_source" Type="Usage" + Mapping="Amend1:VirtualSource,Identifier:15"/> + </ComponentType> + + <!--#################### USAGE END ####################--> + + <!--#################### INPUT SOURCE BEGIN ####################--> + + <ComponentType Name="InputSources" Description="associated to audio_source_t definition, + identifier mapping must match the value of the enum"> + <Component Name="default" Type="InputSource" Mapping="Amend1:Default,Identifier:0"/> + <Component Name="mic" Type="InputSource" Mapping="Amend1:Mic,Identifier:1"/> + <Component Name="voice_uplink" Type="InputSource" + Mapping="Amend1:VoiceUplink,Identifier:2"/> + <Component Name="voice_downlink" Type="InputSource" + Mapping="Amend1:VoiceDownlink,Identifier:3"/> + <Component Name="voice_call" Type="InputSource" + Mapping="Amend1:VoiceCall,Identifier:4"/> + <Component Name="camcorder" Type="InputSource" Mapping="Amend1:Camcorder,Identifier:5"/> + <Component Name="voice_recognition" Type="InputSource" + Mapping="Amend1:VoiceRecognition,Identifier:6"/> + <Component Name="voice_communication" Type="InputSource" + Mapping="Amend1:VoiceCommunication,Identifier:7"/> + <Component Name="remote_submix" Type="InputSource" + Mapping="Amend1:RemoteSubmix,Identifier:8"/> + <Component Name="fm_tuner" Type="InputSource" Mapping="Amend1:FmTuner,Identifier:1998"/> + <Component Name="hotword" Type="InputSource" Mapping="Amend1:Hotword,Identifier:1999"/> + </ComponentType> + + <!--#################### INPUT SOURCE END ####################--> + + </ComponentLibrary> + + <InstanceDefinition> + <Component Name="streams" Type="Streams"/> + <Component Name="strategies" Type="Strategies"/> + <Component Name="input_sources" Type="InputSources"/> + <Component Name="usages" Type="Usages"/> + </InstanceDefinition> +</Subsystem> diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/example/policy_criteria.txt b/services/audiopolicy/engineconfigurable/parameter-framework/example/policy_criteria.txt new file mode 100755 index 0000000..3b3151c --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/example/policy_criteria.txt @@ -0,0 +1,14 @@ +ExclusiveCriterion TelephonyMode : Normal RingTone InCall InCommunication + +InclusiveCriterion AvailableInputDevices : Communication Ambient BuiltinMic BluetoothScoHeadset WiredHeadset Hdmi TelephonyRx BackMic RemoteSubmix AnlgDockHeadset DgtlDockHeadset UsbAccessory UsbDevice FmTuner TvTuner Line Spdif BluetoothA2dp Loopback + +InclusiveCriterion AvailableOutputDevices : Earpiece Speaker WiredSpeaker WiredHeadset WiredHeadphone BluetoothSco BluetoothScoHeadset BluetoothScoCarkit BluetoothA2dp BluetoothA2dpHeadphones BluetoothA2dpSpeaker Hdmi AnlgDockHeadset DgtlDockHeadset UsbAccessory UsbDevice RemoteSubmix TelephonyTx Line HdmiArc Spdif Fm AuxLine SpeakerSafe + +ExclusiveCriterion ForceUseForCommunication : ForceNone ForceSpeaker ForceBtSco +ExclusiveCriterion ForceUseForMedia : ForceNone ForceSpeaker ForceHeadphones ForceBtA2dp ForceWiredAccessory ForceAnalogDock ForceDigitalDock ForceNoBtA2dp ForceSystemEnforced +ExclusiveCriterion ForceUseForRecord : ForceNone ForceBtSco ForceWiredAccessory +ExclusiveCriterion ForceUseForDock : ForceNone ForceWiredAccessory ForceBtCarDock ForceBtDeskDock ForceAnalogDock ForceDigitalDock +ExclusiveCriterion ForceUseForSystem : ForceNone ForceSystemEnforced +ExclusiveCriterion ForceUseForHdmiSystemAudio : ForceNone ForceHdmiSystemEnforced + + diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Android.mk b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Android.mk new file mode 100755 index 0000000..a41e6b5 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Android.mk @@ -0,0 +1,40 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE_TAGS := optional +LOCAL_SRC_FILES := \ + PolicySubsystemBuilder.cpp \ + PolicySubsystem.cpp \ + Strategy.cpp \ + InputSource.cpp \ + VolumeProfile.cpp \ + Stream.cpp \ + Usage.cpp + +LOCAL_CFLAGS += \ + -Wall \ + -Werror \ + -Wextra \ + +LOCAL_C_INCLUDES := \ + $(TOPDIR)frameworks/av/services/audiopolicy/common/include \ + $(TOPDIR)frameworks/av/services/audiopolicy/engineconfigurable/include \ + $(TOPDIR)frameworks/av/services/audiopolicy/engineconfigurable/interface \ + +LOCAL_SHARED_LIBRARIES := \ + libaudiopolicyengineconfigurable \ + libparameter \ + liblog \ + +LOCAL_STATIC_LIBRARIES := \ + libparameter_includes \ + libxmlserializer_includes \ + libpfw_utility \ + +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE := libpolicy-subsystem + +include external/stlport/libstlport.mk +include $(BUILD_SHARED_LIBRARY) + diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/plugin/InputSource.cpp b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/InputSource.cpp new file mode 100755 index 0000000..497d555 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/InputSource.cpp @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2015 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 "InputSource.h" +#include "PolicyMappingKeys.h" +#include "PolicySubsystem.h" + +using std::string; + +InputSource::InputSource(const string &mappingValue, + CInstanceConfigurableElement *instanceConfigurableElement, + const CMappingContext &context) + : CFormattedSubsystemObject(instanceConfigurableElement, + mappingValue, + MappingKeyAmend1, + (MappingKeyAmendEnd - MappingKeyAmend1 + 1), + context), + mPolicySubsystem(static_cast<const PolicySubsystem *>( + instanceConfigurableElement->getBelongingSubsystem())), + mPolicyPluginInterface(mPolicySubsystem->getPolicyPluginInterface()), + mApplicableInputDevice(mDefaultApplicableInputDevice) +{ + mId = static_cast<audio_source_t>(context.getItemAsInteger(MappingKeyIdentifier)); + // Declares the strategy to audio policy engine + mPolicyPluginInterface->addInputSource(getFormattedMappingValue(), mId); +} + +bool InputSource::receiveFromHW(string & /*error*/) +{ + blackboardWrite(&mApplicableInputDevice, sizeof(mApplicableInputDevice)); + return true; +} + +bool InputSource::sendToHW(string & /*error*/) +{ + uint32_t applicableInputDevice; + blackboardRead(&applicableInputDevice, sizeof(applicableInputDevice)); + mApplicableInputDevice = applicableInputDevice; + return mPolicyPluginInterface->setDeviceForInputSource(mId, mApplicableInputDevice); +} diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/plugin/InputSource.h b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/InputSource.h new file mode 100755 index 0000000..67c5b50 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/InputSource.h @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2015 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. + */ + +#pragma once + +#include "FormattedSubsystemObject.h" +#include "InstanceConfigurableElement.h" +#include "MappingContext.h" +#include <AudioPolicyPluginInterface.h> +#include <string> + +class PolicySubsystem; + +class InputSource : public CFormattedSubsystemObject +{ +public: + InputSource(const std::string &mappingValue, + CInstanceConfigurableElement *instanceConfigurableElement, + const CMappingContext &context); + +protected: + virtual bool receiveFromHW(std::string &error); + virtual bool sendToHW(std::string &error); + +private: + const PolicySubsystem *mPolicySubsystem; /**< Route subsytem plugin. */ + + /** + * Interface to communicate with Audio Policy Engine. + */ + android::AudioPolicyPluginInterface *mPolicyPluginInterface; + + audio_source_t mId; /**< input source identifier to link with audio.h. */ + uint32_t mApplicableInputDevice; /**< applicable input device for this strategy. */ + static const uint32_t mDefaultApplicableInputDevice = 0; /**< default input device. */ +}; diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/plugin/PolicyMappingKeys.h b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/PolicyMappingKeys.h new file mode 100755 index 0000000..53944e9 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/PolicyMappingKeys.h @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2015 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. + */ + +#pragma once + +/** + * Mapping item types + */ +enum PolicyItemType +{ + MappingKeyName, + MappingKeyCategory, + MappingKeyIdentifier, + MappingKeyAmend1, + MappingKeyAmend2, + MappingKeyAmend3 +}; + +static const uint8_t MappingKeyAmendEnd = MappingKeyAmend3; diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/plugin/PolicySubsystem.cpp b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/PolicySubsystem.cpp new file mode 100755 index 0000000..a5dab36 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/PolicySubsystem.cpp @@ -0,0 +1,105 @@ +/* + * Copyright (C) 2015 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 "PolicySubsystem.h" +#include "SubsystemObjectFactory.h" +#include "PolicyMappingKeys.h" +#include "Strategy.h" +#include "Stream.h" +#include "InputSource.h" +#include "VolumeProfile.h" +#include "Usage.h" +#include <AudioPolicyPluginInterface.h> +#include <AudioPolicyEngineInstance.h> +#include <utils/Log.h> + +using android::audio_policy::EngineInstance; + +const char *const PolicySubsystem::mKeyName = "Name"; +const char *const PolicySubsystem::mKeyIdentifier = "Identifier"; +const char *const PolicySubsystem::mKeyCategory = "Category"; +const char *const PolicySubsystem::mKeyAmend1 = "Amend1"; +const char *const PolicySubsystem::mKeyAmend2 = "Amend2"; +const char *const PolicySubsystem::mKeyAmend3 = "Amend3"; + + +const char *const PolicySubsystem::mStreamComponentName = "Stream"; +const char *const PolicySubsystem::mStrategyComponentName = "Strategy"; +const char *const PolicySubsystem::mInputSourceComponentName = "InputSource"; +const char *const PolicySubsystem::mUsageComponentName = "Usage"; +const char *const PolicySubsystem::mVolumeProfileComponentName = "VolumeProfile"; + +PolicySubsystem::PolicySubsystem(const std::string &name) + : CSubsystem(name), + mPluginInterface(NULL) +{ + // Try to connect a Plugin Interface from Audio Policy Engine + EngineInstance *engineInstance = EngineInstance::getInstance(); + + if (engineInstance == NULL) { + ALOG_ASSERT(engineInstance != NULL, "NULL Plugin Interface"); + return; + } + // Retrieve the Route Interface + mPluginInterface = engineInstance->queryInterface<android::AudioPolicyPluginInterface>(); + if (mPluginInterface == NULL) { + // bailing out + ALOG_ASSERT(mPluginInterface != NULL, "NULL Plugin Interface"); + return; + } + + // Provide mapping keys to the core, necessary when parsing the XML Structure files. + addContextMappingKey(mKeyName); + addContextMappingKey(mKeyCategory); + addContextMappingKey(mKeyIdentifier); + addContextMappingKey(mKeyAmend1); + addContextMappingKey(mKeyAmend2); + addContextMappingKey(mKeyAmend3); + + // Provide creators to upper layer + addSubsystemObjectFactory( + new TSubsystemObjectFactory<Stream>( + mStreamComponentName, + (1 << MappingKeyAmend1) | (1 << MappingKeyIdentifier)) + ); + addSubsystemObjectFactory( + new TSubsystemObjectFactory<Strategy>( + mStrategyComponentName, + (1 << MappingKeyAmend1) | (1 << MappingKeyIdentifier)) + ); + addSubsystemObjectFactory( + new TSubsystemObjectFactory<Usage>( + mUsageComponentName, + (1 << MappingKeyAmend1) | (1 << MappingKeyIdentifier)) + ); + addSubsystemObjectFactory( + new TSubsystemObjectFactory<InputSource>( + mInputSourceComponentName, + (1 << MappingKeyAmend1) | (1 << MappingKeyIdentifier)) + ); + addSubsystemObjectFactory( + new TSubsystemObjectFactory<VolumeProfile>( + mVolumeProfileComponentName, + (1 << MappingKeyAmend1) | (1 << MappingKeyIdentifier) | (1 << MappingKeyIdentifier)) + ); +} + +// Retrieve Route interface +android::AudioPolicyPluginInterface *PolicySubsystem::getPolicyPluginInterface() const +{ + ALOG_ASSERT(mPluginInterface != NULL, "NULL Plugin Interface"); + return mPluginInterface; +} diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/plugin/PolicySubsystem.h b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/PolicySubsystem.h new file mode 100755 index 0000000..3c26fe1 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/PolicySubsystem.h @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2015 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. + */ + +#pragma once + +#include "Subsystem.h" +#include <string> + +namespace android { + +class AudioPolicyPluginInterface; + +} + +class PolicySubsystem : public CSubsystem +{ +public: + PolicySubsystem(const std::string &strName); + + /** + * Retrieve Route Manager interface. + * + * @return RouteManager interface for the route plugin. + */ + android::AudioPolicyPluginInterface *getPolicyPluginInterface() const; + +private: + /* Copy facilities are put private to disable copy. */ + PolicySubsystem(const PolicySubsystem &object); + PolicySubsystem &operator=(const PolicySubsystem &object); + + android::AudioPolicyPluginInterface *mPluginInterface; /**< Audio Policy Plugin Interface. */ + + static const char *const mKeyName; /**< name key mapping string. */ + static const char *const mKeyIdentifier; + static const char *const mKeyCategory; + + static const char *const mKeyAmend1; /**< amend1 key mapping string. */ + static const char *const mKeyAmend2; /**< amend2 key mapping string. */ + static const char *const mKeyAmend3; /**< amend3 key mapping string. */ + + static const char *const mStreamComponentName; + static const char *const mStrategyComponentName; + static const char *const mInputSourceComponentName; + static const char *const mUsageComponentName; + static const char *const mVolumeProfileComponentName; +}; diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/plugin/PolicySubsystemBuilder.cpp b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/PolicySubsystemBuilder.cpp new file mode 100755 index 0000000..b14d446 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/PolicySubsystemBuilder.cpp @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2015 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 "SubsystemLibrary.h" +#include "NamedElementBuilderTemplate.h" +#include "PolicySubsystem.h" + +static const char *const POLICY_SUBSYSTEM_NAME = "Policy"; +extern "C" +{ +void getPOLICYSubsystemBuilder(CSubsystemLibrary *subsystemLibrary) +{ + subsystemLibrary->addElementBuilder(POLICY_SUBSYSTEM_NAME, + new TNamedElementBuilderTemplate<PolicySubsystem>()); +} +} diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Strategy.cpp b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Strategy.cpp new file mode 100755 index 0000000..1848813 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Strategy.cpp @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2015 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 "Strategy.h" +#include "PolicyMappingKeys.h" +#include "PolicySubsystem.h" + +using std::string; +using android::routing_strategy; + +Strategy::Strategy(const string &mappingValue, + CInstanceConfigurableElement *instanceConfigurableElement, + const CMappingContext &context) + : CFormattedSubsystemObject(instanceConfigurableElement, + mappingValue, + MappingKeyAmend1, + (MappingKeyAmendEnd - MappingKeyAmend1 + 1), + context), + mPolicySubsystem(static_cast<const PolicySubsystem *>( + instanceConfigurableElement->getBelongingSubsystem())), + mPolicyPluginInterface(mPolicySubsystem->getPolicyPluginInterface()), + mApplicableOutputDevice(mDefaultApplicableOutputDevice) +{ + mId = static_cast<routing_strategy>(context.getItemAsInteger(MappingKeyIdentifier)); + + // Declares the strategy to audio policy engine + mPolicyPluginInterface->addStrategy(getFormattedMappingValue(), mId); +} + +bool Strategy::receiveFromHW(string & /*error*/) +{ + blackboardWrite(&mApplicableOutputDevice, sizeof(mApplicableOutputDevice)); + return true; +} + +bool Strategy::sendToHW(string & /*error*/) +{ + uint32_t applicableOutputDevice; + blackboardRead(&applicableOutputDevice, sizeof(applicableOutputDevice)); + return mPolicyPluginInterface->setDeviceForStrategy(mId, applicableOutputDevice); +} diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Strategy.h b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Strategy.h new file mode 100755 index 0000000..9a9b3e4 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Strategy.h @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2015 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. + */ + +#pragma once + +#include "FormattedSubsystemObject.h" +#include "InstanceConfigurableElement.h" +#include "MappingContext.h" +#include <AudioPolicyPluginInterface.h> +#include <string> + +class PolicySubsystem; + +class Strategy : public CFormattedSubsystemObject +{ +public: + Strategy(const std::string &mappingValue, + CInstanceConfigurableElement *instanceConfigurableElement, + const CMappingContext &context); + +protected: + virtual bool receiveFromHW(std::string &error); + virtual bool sendToHW(std::string &error); + +private: + const PolicySubsystem *mPolicySubsystem; /**< Route subsytem plugin. */ + + /** + * Interface to communicate with Audio Policy Engine. + */ + android::AudioPolicyPluginInterface *mPolicyPluginInterface; + + android::routing_strategy mId; /**< strategy identifier to link with audio.h.*/ + uint32_t mApplicableOutputDevice; /**< applicable output device for this strategy. */ + static const uint32_t mDefaultApplicableOutputDevice = 0; /**< default output device. */ +}; diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Stream.cpp b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Stream.cpp new file mode 100755 index 0000000..575b0bb --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Stream.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2015 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 "Stream.h" +#include "PolicyMappingKeys.h" +#include "PolicySubsystem.h" + +using std::string; +using android::routing_strategy; + +Stream::Stream(const string &mappingValue, + CInstanceConfigurableElement *instanceConfigurableElement, + const CMappingContext &context) + : CFormattedSubsystemObject(instanceConfigurableElement, + mappingValue, + MappingKeyAmend1, + (MappingKeyAmendEnd - MappingKeyAmend1 + 1), + context), + mPolicySubsystem(static_cast<const PolicySubsystem *>( + instanceConfigurableElement->getBelongingSubsystem())), + mPolicyPluginInterface(mPolicySubsystem->getPolicyPluginInterface()), + mApplicableStrategy(mDefaultApplicableStrategy) +{ + mId = static_cast<audio_stream_type_t>(context.getItemAsInteger(MappingKeyIdentifier)); + + // Declares the strategy to audio policy engine + mPolicyPluginInterface->addStream(getFormattedMappingValue(), mId); +} + +bool Stream::receiveFromHW(string & /*error*/) +{ + blackboardWrite(&mApplicableStrategy, sizeof(mApplicableStrategy)); + return true; +} + +bool Stream::sendToHW(string & /*error*/) +{ + uint32_t applicableStrategy; + blackboardRead(&applicableStrategy, sizeof(applicableStrategy)); + mApplicableStrategy = applicableStrategy; + return mPolicyPluginInterface->setStrategyForStream(mId, + static_cast<routing_strategy>(mApplicableStrategy)); +} diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Stream.h b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Stream.h new file mode 100755 index 0000000..7d90c36 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Stream.h @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2015 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. + */ + +#pragma once + +#include "FormattedSubsystemObject.h" +#include "InstanceConfigurableElement.h" +#include "MappingContext.h" +#include <AudioPolicyPluginInterface.h> +#include <string> + +class PolicySubsystem; + +class Stream : public CFormattedSubsystemObject +{ +public: + Stream(const std::string &mappingValue, + CInstanceConfigurableElement *instanceConfigurableElement, + const CMappingContext &context); + +protected: + virtual bool receiveFromHW(std::string &error); + virtual bool sendToHW(std::string &error); + +private: + const PolicySubsystem *mPolicySubsystem; /**< Route subsytem plugin. */ + + /** + * Interface to communicate with Audio Policy Engine. + */ + android::AudioPolicyPluginInterface *mPolicyPluginInterface; + + audio_stream_type_t mId; /**< stream type identifier to link with audio.h. */ + uint32_t mApplicableStrategy; /**< applicable strategy for this stream. */ + static const uint32_t mDefaultApplicableStrategy = 0; /**< default strategy. */ +}; diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Usage.cpp b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Usage.cpp new file mode 100755 index 0000000..1916b9b --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Usage.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2015 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 "Usage.h" +#include "PolicyMappingKeys.h" +#include "PolicySubsystem.h" + +using std::string; +using android::routing_strategy; + +Usage::Usage(const string &mappingValue, + CInstanceConfigurableElement *instanceConfigurableElement, + const CMappingContext &context) + : CFormattedSubsystemObject(instanceConfigurableElement, + mappingValue, + MappingKeyAmend1, + (MappingKeyAmendEnd - MappingKeyAmend1 + 1), + context), + mPolicySubsystem(static_cast<const PolicySubsystem *>( + instanceConfigurableElement->getBelongingSubsystem())), + mPolicyPluginInterface(mPolicySubsystem->getPolicyPluginInterface()), + mApplicableStrategy(mDefaultApplicableStrategy) +{ + mId = static_cast<audio_usage_t>(context.getItemAsInteger(MappingKeyIdentifier)); + + // Declares the strategy to audio policy engine + mPolicyPluginInterface->addUsage(getFormattedMappingValue(), mId); +} + +bool Usage::receiveFromHW(string & /*error*/) +{ + blackboardWrite(&mApplicableStrategy, sizeof(mApplicableStrategy)); + return true; +} + +bool Usage::sendToHW(string & /*error*/) +{ + uint32_t applicableStrategy; + blackboardRead(&applicableStrategy, sizeof(applicableStrategy)); + mApplicableStrategy = applicableStrategy; + return mPolicyPluginInterface->setStrategyForUsage(mId, + static_cast<routing_strategy>(mApplicableStrategy)); +} diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Usage.h b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Usage.h new file mode 100755 index 0000000..8e9b638 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/Usage.h @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2015 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. + */ + +#pragma once + +#include "FormattedSubsystemObject.h" +#include "InstanceConfigurableElement.h" +#include "MappingContext.h" +#include <AudioPolicyPluginInterface.h> +#include <string> + +class PolicySubsystem; + +class Usage : public CFormattedSubsystemObject +{ +public: + Usage(const std::string &mappingValue, + CInstanceConfigurableElement *instanceConfigurableElement, + const CMappingContext &context); + +protected: + virtual bool receiveFromHW(std::string &error); + virtual bool sendToHW(std::string &error); + +private: + const PolicySubsystem *mPolicySubsystem; /**< Route subsytem plugin. */ + + /** + * Interface to communicate with Audio Policy Engine. + */ + android::AudioPolicyPluginInterface *mPolicyPluginInterface; + + audio_usage_t mId; /**< usage identifier to link with audio.h. */ + uint32_t mApplicableStrategy; /**< applicable strategy for this usage. */ + static const uint32_t mDefaultApplicableStrategy = 0; /**< default strategy. */ +}; diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/plugin/VolumeProfile.cpp b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/VolumeProfile.cpp new file mode 100755 index 0000000..5c155c8 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/VolumeProfile.cpp @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2015 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 "VolumeProfile.h" +#include "PolicyMappingKeys.h" +#include "PolicySubsystem.h" +#include "ParameterBlockType.h" +#include <Volume.h> +#include <math.h> + +using std::string; + +VolumeProfile::VolumeProfile(const string &mappingValue, + CInstanceConfigurableElement *instanceConfigurableElement, + const CMappingContext &context) + : CFormattedSubsystemObject(instanceConfigurableElement, + mappingValue, + MappingKeyAmend1, + (MappingKeyAmendEnd - MappingKeyAmend1 + 1), + context), + mPolicySubsystem(static_cast<const PolicySubsystem *>( + instanceConfigurableElement->getBelongingSubsystem())), + mPolicyPluginInterface(mPolicySubsystem->getPolicyPluginInterface()) +{ + uint32_t categoryKey = context.getItemAsInteger(MappingKeyCategory); + if (categoryKey >= Volume::DEVICE_CATEGORY_CNT) { + mCategory = Volume::DEVICE_CATEGORY_SPEAKER; + } else { + mCategory = static_cast<Volume::device_category>(categoryKey); + } + mId = static_cast<audio_stream_type_t>(context.getItemAsInteger(MappingKeyIdentifier)); + + // (no exception support, defer the error) + if (instanceConfigurableElement->getType() != CInstanceConfigurableElement::EParameterBlock) { + return; + } + // Get actual element type + const CParameterBlockType *parameterType = static_cast<const CParameterBlockType *>( + instanceConfigurableElement->getTypeElement()); + mPoints = parameterType->getArrayLength(); +} + +bool VolumeProfile::receiveFromHW(string & /*error*/) +{ + return true; +} + +bool VolumeProfile::sendToHW(string & /*error*/) +{ + Point points[mPoints]; + blackboardRead(&points, sizeof(Point) * mPoints); + + VolumeCurvePoints pointsVector; + for (size_t i = 0; i < mPoints; i++) { + VolumeCurvePoint curvePoint; + curvePoint.mIndex = points[i].index; + curvePoint.mDBAttenuation = static_cast<float>(points[i].dbAttenuation) / + (1UL << gFractional); + pointsVector.push_back(curvePoint); + } + return mPolicyPluginInterface->setVolumeProfileForStream(mId, mCategory, pointsVector); +} diff --git a/services/audiopolicy/engineconfigurable/parameter-framework/plugin/VolumeProfile.h b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/VolumeProfile.h new file mode 100755 index 0000000..a00ae84 --- /dev/null +++ b/services/audiopolicy/engineconfigurable/parameter-framework/plugin/VolumeProfile.h @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2015 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. + */ + +#pragma once + +#include "FormattedSubsystemObject.h" +#include "InstanceConfigurableElement.h" +#include "MappingContext.h" +#include <Volume.h> +#include <AudioPolicyPluginInterface.h> +#include <string> + +class PolicySubsystem; + +class VolumeProfile : public CFormattedSubsystemObject +{ +private: + struct Point + { + int index; + /** Volume is using FixedPointParameter until float parameters are available. */ + int16_t dbAttenuation; + } __attribute__((packed)); + +public: + VolumeProfile(const std::string &mappingValue, + CInstanceConfigurableElement *instanceConfigurableElement, + const CMappingContext &context); + +protected: + virtual bool receiveFromHW(std::string &error); + virtual bool sendToHW(std::string &error); + +private: + const PolicySubsystem *mPolicySubsystem; /**< Route subsytem plugin. */ + + /** + * Interface to communicate with Audio Policy Engine. + */ + android::AudioPolicyPluginInterface *mPolicyPluginInterface; + + /** + * volume profile identifier, which is in fact a stream type to link with audio.h. + */ + audio_stream_type_t mId; + + size_t mPoints; + Volume::device_category mCategory; + + static const uint32_t gFractional = 8; /**< Beware to align with the structure. */ +}; |