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
					ip = 0
					bus = 0
					stub = 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: Line
				ANY
					#
					# DTMF falls through Phone strategy if in call
					# but Line has a lower priority than WiredHeadset in this case.
					#
					ALL
						ANY
							TelephonyMode Is InCall
							TelephonyMode Is InCommunication
						ForceUseForCommunication IsNot ForceSpeaker
						AvailableOutputDevices Excludes WiredHeadset
					#
					# DTMF follows Media strategy if not in call
					#
					ALL
						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: 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/dtmf/selected_output_devices/mask/hdmi_arc = 1

			conf: NotSelected
				/Policy/policy/strategies/dtmf/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/dtmf/selected_output_devices/mask/spdif = 1

			conf: NotSelected
				/Policy/policy/strategies/dtmf/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/dtmf/selected_output_devices/mask/aux_line = 1

			conf: NotSelected
				/Policy/policy/strategies/dtmf/selected_output_devices/mask/aux_line = 0
