# Bluetooth Audio - Media control configuration options

#
# Copyright (c) 2022 Nordic Semiconductor
#
# SPDX-License-Identifier: Apache-2.0
#

# TODO: Decide, and add, top-level namespace prefix (currently none) to symbols.
# Dependent upon where the module will be placed.

config MCTL
	bool "Support for media player control"
	select EXPERIMENTAL
	help
	  Enables support for control of local and remote media players
	  To enable support for control of a local media player, support for
	  local media player must be enabled

if MCTL

config MCTL_LOCAL_PLAYER_CONTROL
	bool "Support for control of local media player"
	help
	  This option enables support for control of a local media player

config MCTL_LOCAL_PLAYER_LOCAL_CONTROL
	bool "Support for local control of local media player"
	default y
	depends on MCTL_LOCAL_PLAYER_CONTROL
	help
	  This option enables support for local application control of local
	   media players

config MCTL_LOCAL_PLAYER_REMOTE_CONTROL
	bool "Support for remote control of local media players"
	depends on MCTL_LOCAL_PLAYER_CONTROL
	help
	  This option enables support for remote control of local media
	   players.

config MCTL_REMOTE_PLAYER_CONTROL
	bool "Support for control of remote media player"
	default y
	# TODO: Remove dependency on BT_MCC once MCC has been reworked
	depends on BT_MCC
	help
	  This options enables support for control of a remote media player.

config MCTL_REMOTE_PLAYER_CONTROL_OBJECTS
	bool "Support for accessing objects on remote player"
	depends on MCTL_REMOTE_PLAYER_CONTROL
	default y
	# TODO: Remove dependency on BT_MCC_OTS once MCC has been reworked
	depends on BT_MCC_OTS
	help
	  This options enables support for accessing objects (tracks, groups,
	  search results, ...) on a remote media player

config MCTL_DEBUG
	bool "Media control debug"
	help
	  Use this option to enable Media control debug logs

endif # MCTL
