# Bluetooth Audio - Volume Offset Control Service options
#
# Copyright (c) 2020 Bose Corporation
#
# SPDX-License-Identifier: Apache-2.0
#

##################### Volume Offset Control Service #####################

config BT_VOCS_MAX_INSTANCE_COUNT
	int "Volume Offset Control Service max instance count [EXPERIMENTAL]"
	default 0
	range 0 15
	help
	  This option sets the maximum number of instances of Volume Offset
	  Control Services.

config BT_VOCS
	bool # hidden
	default y if BT_VOCS_MAX_INSTANCE_COUNT > 0
	select EXPERIMENTAL
	help
	  This hidden option enables support for Volume Control Service.

if BT_VOCS

config BT_VOCS_MAX_OUTPUT_DESCRIPTION_SIZE
	int "Volume Offset Control Service max output description size"
	default 32
	range 0 512
	help
	  This option sets the maximum output description size in octets.

############# DEBUG #############

config BT_DEBUG_VOCS
	bool "Volume Offset Control Service debug"
	select DEPRECATED
	help
	  Use this option to enable Volume Offset Control Service debug logs for
	  the Bluetooth Audio functionality.

module = BT_VOCS
legacy-debug-sym = BT_DEBUG_VOCS
module-str = "Volume Offset Control Service"
source "subsys/bluetooth/common/Kconfig.template.log_config_bt"

endif # BT_VOCS

##################### Volume Offset Control Service Client #####################

config BT_VOCS_CLIENT_MAX_INSTANCE_COUNT
	int "Volume Offset Control Service client max instance count [EXPERIMENTAL]"
	default 0
	range 0 15
	help
	  This option sets the maximum number of instances of Volume Offset
	  Control Service clients.

config BT_VOCS_CLIENT
	bool # hidden
	default y if BT_VOCS_CLIENT_MAX_INSTANCE_COUNT > 0
	select EXPERIMENTAL
	help
	  This hidden option enables support for Volume Offset Control Service.

if BT_VOCS_CLIENT

############# DEBUG #############

config BT_DEBUG_VOCS_CLIENT
	bool "Volume Offset Control Service client debug"
	select DEPRECATED
	help
	  Use this option to enable Volume Offset Control Service client debug
	  logs for the Bluetooth Audio functionality.

module = BT_VOCS_CLIENT
legacy-debug-sym = BT_DEBUG_VOCS_CLIENT
module-str = "Volume Offset Control Service client"
source "subsys/bluetooth/common/Kconfig.template.log_config_bt"

endif # BT_VOCS_CLIENT
