# Bluetooth Audio - Common Audio Profile (CAP) options
#
# Copyright (c) 2022 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0
#

config BT_CAP
	def_bool BT_CAP_ACCEPTOR || BT_CAP_INITIATOR

config BT_CAP_ACCEPTOR
	bool "Common Audio Profile Acceptor Role Support [EXPERIMENTAL]"
	depends on BT_AUDIO_UNICAST_SERVER || (BT_AUDIO_BROADCAST_SINK && BT_BAP_SCAN_DELEGATOR)
	select EXPERIMENTAL
	help
	  Enabling this will enable the CAP Acceptor role. This instantiates the
	  common audio service (CAS).

config BT_CAP_ACCEPTOR_SET_MEMBER
	bool "Common Audio Profile Acceptor Role Set Member support"
	depends on BT_CAP_ACCEPTOR
	depends on BT_CSIP
	help
	  Enabling this will allow a CAP acceptor to be a set member.
	  Enabling this will require a manual register of the CAS service.
	  Enabling will take one of the allocated CSIS instances
	  (BT_CSIP_MAX_INSTANCE_COUNT).

config BT_DEBUG_CAP_ACCEPTOR
	bool "Common Audio Profile debug"
	depends on BT_CAP_ACCEPTOR
	help
	  Use this option to enable CAP debug logs for the
	  Bluetooth Audio functionality.

config BT_CAP_INITIATOR
	bool "Common Audio Profile Initiator Role Support [EXPERIMENTAL]"
	depends on (BT_AUDIO_UNICAST_CLIENT && BT_CSIP_SET_COORDINATOR) || BT_AUDIO_BROADCAST_SOURCE
	select EXPERIMENTAL
	help
	  Enabling this will enable the CAP Initiator role.

config BT_DEBUG_CAP_INITIATOR
	bool "Common Audio Profile Initiator debug"
	depends on BT_CAP_INITIATOR
	help
	  Use this option to enable CAP Initiator debug logs for the
	  Bluetooth Audio functionality.
