# Bluetooth Audio - Microphone Input Control Service options
#
# Copyright (c) 2020 Bose Corporation
# Copyright (c) 2020-2021 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0
#

if BT_AUDIO

##################### Microphone Input Control Service #####################

config BT_MICS
	bool "Microphone Input Control Service Support"
	default n
	help
	  This option enables support for Microphone Input Control Service.

if BT_MICS

config BT_MICS_AICS_INSTANCE_COUNT
	int "Audio Input Control Service instance count for Microphone Input Control Service"
	default 0
	range 0 BT_AICS_MAX_INSTANCE_COUNT
	help
	  This option sets the number of instances of Audio Input Control
	  Services for MICS.

config BT_MICS_AICS
	bool # Hidden
	default y if BT_MICS_AICS_INSTANCE_COUNT > 0
	help
	  This hidden option makes it possible to easily check if AICS is
	  enabled for MICS.

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

config BT_DEBUG_MICS
	bool "Microphone Input Control Service debug"
	depends on BT_AUDIO_DEBUG
	help
	  Use this option to enable Microphone Input Control Service debug logs
	  for the Bluetooth Audio functionality.

endif # BT_MICS

##################### Microphone Control Profile Client #####################

config BT_MICS_CLIENT
	bool "Microphone Control Profile Support"
	select BT_GATT_CLIENT
	select BT_GATT_AUTO_DISCOVER_CCC
	help
	  This option enables support for Microphone Control Profile.

if BT_MICS_CLIENT

config BT_MICS_CLIENT_MAX_AICS_INST
	int "Maximum number of Audio Input Control Service instances to setup"
	default 0
	range 0 3
	help
	  Sets the maximum number of Audio Input Control Service (AICS)
	  instances to setup and use.

config BT_MICS_CLIENT_AICS
	bool # Hidden
	default y if BT_MICS_CLIENT_MAX_AICS_INST > 0
	help
	  This hidden option makes it possible to easily check if AICS is
	  enabled for MICS client.

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

config BT_DEBUG_MICS_CLIENT
	bool "Microphone Control Profile debug"
	depends on BT_AUDIO_DEBUG
	help
	  Use this option to enable Microphone Control Profile debug logs for
	  the Bluetooth Audio functionality.

endif # BT_MICS_CLIENT

endif # BT_AUDIO
