# 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_MAX_ASE_SNK_COUNT
	int "Maximum number of Audio Stream Endpoint Sink Characteristics"
	default 2
	range 0 $(UINT8_MAX)
	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_MAX_ASE_SRC_COUNT
	int "Maximum number of Audio Stream Endpoint Source Characteristics"
	default 2
	range 0 $(UINT8_MAX)
	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_MAX_ASE_SNK_COUNT > 0
	select BT_PAC_SNK
	select BT_AUDIO_RX

config BT_ASCS_ASE_SRC
	def_bool BT_ASCS_MAX_ASE_SRC_COUNT > 0
	select BT_PAC_SRC
	select BT_AUDIO_TX

config BT_ASCS_MAX_ACTIVE_ASES
	int "Number of simultaneously supported ASE sessions"
	default BT_ISO_MAX_CHAN
	range 1 $(UINT16_MAX)
	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.

config BT_ASCS_ISO_DISCONNECT_DELAY
	int "Milliseconds of delay before ASCS disconnects ISO after stream stop"
	range 0 5000
	default 500
	help
	  The number of milliseconds ASCS will wait before disconnecting the ISO
	  of a stopped stream. The delay is added as it is the Unicast Client's
	  responsibility, but this is a failsafe to ensure that ISO channel is
	  being properly disconnected.

config BT_ASCS_ASE_BUF_TIMEOUT
	int "Milliseconds of timeout when handle concurrent access to the long read ASE buffer"
	range 0 1000
	default 50
	help
	  The number of milliseconds that the ASCS implementation will maximum wait before rejecting
	  an ASE read or dropping a notification if the ASE state is being accessed by another
	  thread.


endif # BT_ASCS
