# 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_BAP_UNICAST_SERVER || (BT_BAP_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_SET_MEMBER
	select BT_GATT_DYNAMIC_DB
	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_SET_MEMBER_MAX_INSTANCE_COUNT).

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