# Bluetooth Audio configuration options

#
# Copyright (c) 2020 Intel Corporation
# Copyright (c) 2022 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0
#

menuconfig BT_AUDIO
	bool "Bluetooth Audio support [EXPERIMENTAL]"
	select EXPERIMENTAL
	help
	  This option enables Bluetooth Audio support. The specific
	  features that are available may depend on other features
	  that have been enabled in the stack, such as Periodic
	  Advertisement for Broadcast and L2CAP Dynamic Channel
	  for Unicast.

if BT_AUDIO

config BT_AUDIO_RX
	bool
	help
	  This hidden option is enabled when any of the profiles/services
	  enables support for receiving of audio data.

config BT_AUDIO_TX
	bool
	help
	  This hidden option is enabled when any of the profiles/services
	  enables support for transmitting of audio data.

config BT_CCID
	bool
	help
	  This hidden option is enabled when any of the content control
	  features are enabled.

rsource "Kconfig.bap"
rsource "Kconfig.vocs"
rsource "Kconfig.aics"
rsource "Kconfig.vcp"
rsource "Kconfig.micp"
rsource "Kconfig.csip"
rsource "Kconfig.tbs"
rsource "Kconfig.mcs"
rsource "Kconfig.bass"
rsource "Kconfig.has"
rsource "Kconfig.mpl"
rsource "Kconfig.mctl"
rsource "Kconfig.cap"
rsource "Kconfig.tmap"

module = BT_AUDIO
module-str = "Bluetooth Audio"
source "subsys/logging/Kconfig.template.log_config"

endif # BT_AUDIO
