# Bluetooth Audio - Audio Stream Control configuration options
#
# Copyright (c) 2020 Intel Corporation
# Copyright (c) 2022 Nordic Semiconductor ASA

# SPDX-License-Identifier: Apache-2.0
#

config BT_ASCS
	bool "Audio Stream Control Service Support"
	help
	  This option enables support for Audio Stream Control Service.

if BT_ASCS
config BT_ASCS_ASE_SNK_COUNT
	int "Number of Audio Stream Endpoint Sink Characteristics"
	default 2
	range 0 255
	help
	  An ASE Sink characteristic represents the state of an ASE, which is
	  coupled to a single direction of a unicast Audio Stream.

config BT_ASCS_ASE_SRC_COUNT
	int "Number of Audio Stream Endpoint Source Characteristics"
	default 2
	range 0 255
	help
	  An ASE Source characteristic represents the state of an ASE, which is
	  coupled to a single direction of a unicast Audio Stream.

config BT_ASCS_ASE_SNK
	def_bool BT_ASCS_ASE_SNK_COUNT > 0
	select BT_PAC_SNK

config BT_ASCS_ASE_SRC
	def_bool BT_ASCS_ASE_SRC_COUNT > 0
	select BT_PAC_SRC

config BT_ASCS_MAX_ACTIVE_ASES
	int "Number of simultaneously supported ASE sessions"
	default BT_ISO_MAX_CHAN
	range 1 65535
	help
	  The number of simultanesouly supported active ASEs, in particular
	  meaning the number of ASEs that are allowed to be in a non-idle state at
	  a single time.
endif # BT_ASCS
