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

########### Microphone Control Profile Microphone Device ###########

config BT_MICP_MIC_DEV
	bool "Microphone Control Profile Microphone Device Support"
	depends on BT_GATT_DYNAMIC_DB
	depends on BT_BONDABLE
	help
	  This option enables support for Microphone Control Profile
	  Microphone Device.

if BT_MICP_MIC_DEV

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

config BT_MICP_MIC_DEV_AICS
	bool # Hidden
	default y if BT_MICP_MIC_DEV_AICS_INSTANCE_COUNT > 0
	help
	  This hidden option makes it possible to easily check if AICS is
	  enabled for Microphone Control Profile Microphone Device.

endif # BT_MICP_MIC_DEV

########### Microphone Control Profile Microphone Controller ###########

config BT_MICP_MIC_CTLR
	bool "Microphone Control Profile Microphone Controller Support"
	select BT_GATT_CLIENT
	select BT_GATT_AUTO_DISCOVER_CCC
	depends on BT_BONDABLE
	help
	  This option enables support for the Microphone Control Profile
	  Microphone Controller role

if BT_MICP_MIC_CTLR

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

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

endif # BT_MICP_MIC_CTLR
