# Bluetooth Audio - Call control configuration options
#
# Copyright (c) 2020 Bose Corporation
#
# SPDX-License-Identifier: Apache-2.0
#

if BT_AUDIO

#####################  Telephone Bearer Service #####################

config BT_TBS
	bool "Telephone Bearer Service Support"
	select BT_CCID
	help
	  This option enables support for Telephone Bearer Service.

if BT_TBS

# TODO: BT_GTBS is mandatory if you support the call control server role.
# Need to enforce this.
config BT_GTBS
	bool "Generic Telephone Bearer Service Support"
	default y
	help
	  This option enables support for Generic Telephone Bearer Service.

config BT_TBS_PROVIDER_NAME
	string "Telephone Bearer Service Provider Name"
	default "Unknown"
	help
	  Sets the name of the service provider for the bearer.

config BT_TBS_UCI
	string "Telephone Bearer Service Uniform Caller Identifier (UCI)"
	default "un000"
	help
	  Sets the UCI of the bearer. See
		https://www.bluetooth.com/specifications/assigned-numbers/uniform-caller-identifiers/
		for a table of valid UCIs.

config BT_TBS_TECHNOLOGY
	int "Telephone Bearer Service Technology"
	range 1 10
	help
	  Sets the technology used for the bearer, e.g. GSM, LTE and 5G.
	  1 : 3G
	  2 : 4G
	  3 : LTE
	  4 : Wi-Fi
	  5 : 5G
	  6 : GSM
	  7 : CDMA
	  8 : 2G
	  9 : WCDMA
	  10: IP

config BT_TBS_URI_SCHEMES_LIST
	string "Telephone Bearer Service URI schemes Supported List"
	default "tel,skype"
	help
	  Sets a list of URI schemes that are supported by the bearer,
	  e.g. "tel" or "skype".
	  Multiple values shall be comma (,) separated, e.g. "tel,skype".

config BT_TBS_SIGNAL_STRENGTH_INTERVAL
	int "Telephone Bearer Service Signal Strength Reporting Interval"
	default 0
	range 0 255
	help
	  Sets the interval of reporting the signal strength in seconds.
		If the value is 0, the signal will not be reported.

config BT_TBS_STATUS_FLAGS
	int "Telephone Bearer Service Features and Status value"
	default 0
	range 0 3
	help
	  Bitfield to set feature and status flags.
	  	Bit 0: In-band ringtone
		Bit 1: Silent mode
		Bits 2-15: Reserved for future use

config BT_TBS_SUPPORTED_FEATURES
	int "Telephone Bearer Service Supported Features"
	default 1
	range 0 3
	help
	  Bitfield to set supported features of the bearer.
		Bit 0: Local Hold and Retrieve
		Bit 1: Join calls within Telephone Bearer Service

config BT_TBS_MAX_CALLS
	int "Telephone Bearer Service Maximum Number Of Calls Supported"
	default 3
	range 1 16
	help
	  Sets the maximum number of calls the service supports per bearer.

config BT_TBS_BEARER_COUNT
	int "How many bearer instances the device instantiates"
	default 1
	range 1 255
	help
	  Sets the number of TBS instances that are instantiated

config BT_TBS_SERVICE_COUNT
	int "Number of instantiated bearer service instances"
	default BT_TBS_BEARER_COUNT
	range 0 BT_TBS_BEARER_COUNT if BT_GTBS
	range BT_TBS_BEARER_COUNT BT_TBS_BEARER_COUNT
	help
	  Sets the number of TBS service instances that are instantiated

config BT_TBS_MAX_SCHEME_LIST_LENGTH
	int "The maximum length of the URI scheme list"
	default 30
	range 0 512
	help
	  Sets the maximum length of the URI scheme list. If BT_GTBS is enabled,
	  then the maximum length should be maximum 512 / BT_TBS_BEARER_COUNT.

config BT_TBS_AUTHORIZATION
	bool "TBS authorization requirement"
	help
	  If set to true, then any writable characteristics will require
	  authorization per connection.


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

config BT_DEBUG_TBS
	bool "Telephone Bearer Service debug"
	help
	  Use this option to enable Telephone Bearer Service debug logs for the
	  Bluetooth Audio functionality.

endif # BT_TBS


##################### Call Control Client #####################

config BT_TBS_CLIENT
	bool "Telephone Bearer Service client"
	select BT_GATT_CLIENT
	select BT_GATT_AUTO_DISCOVER_CCC
	help
	  This option enables support for Telephone Bearer Service client.

if BT_TBS_CLIENT

config BT_TBS_CLIENT_GTBS
	bool "Telephone Bearer Service client GTBS support"
	default y
	help
	  This option enables support for the generic TBS for the
	  Call Control client.

config BT_TBS_CLIENT_MAX_CALLS
	int "Maximum Number Of Calls Supported"
	default 1
	help
	  Sets the maximum number of calls the client supports per TBS instance.

config BT_TBS_CLIENT_MAX_TBS_INSTANCES
	int "Maximum number of TBS instances to setup"
	default 1
	range 1 3
	help
	  Sets the maximum number of Telephone Bearer Service (TBS)
	  instances to setup and use.

config BT_TBS_CLIENT_MINIMAL
	bool "Minimal TBS Client without optional procedures"
	default n
	help
	  This option disables all optional procedures in the TBS Client.

config BT_TBS_CLIENT_BEARER_PROVIDER_NAME
	bool "Support reading Bearer Provider Name"
	default !BT_TBS_CLIENT_MINIMAL
	help
	  This option enables support for reading Bearer Provider Name.

config BT_TBS_CLIENT_BEARER_UCI
	bool "Support reading Bearer UCI"
	default !BT_TBS_CLIENT_MINIMAL
	help
	  This option enables support for reading Bearer UCI.

config BT_TBS_CLIENT_BEARER_TECHNOLOGY
	bool "Support reading Bearer Technology"
	default !BT_TBS_CLIENT_MINIMAL
	help
	  This option enables support for reading Bearer Technology.

config BT_TBS_CLIENT_BEARER_URI_SCHEMES_SUPPORTED_LIST
	bool "Support reading Bearer URI Schemes Supported List"
	default !BT_TBS_CLIENT_MINIMAL
	help
	  This option enables support for reading Bearer URI Schemes Supported
	  List.

config BT_TBS_CLIENT_BEARER_SIGNAL_STRENGTH
	bool "Support reading Bearer Signal Strength"
	default !BT_TBS_CLIENT_MINIMAL
	help
	  This option enables support for reading Bearer Signal Strength.

config BT_TBS_CLIENT_READ_BEARER_SIGNAL_INTERVAL
	bool "Support reading Bearer Signal Strength Reporting Interval"
	default !BT_TBS_CLIENT_MINIMAL
	help
	  This option enables support for reading Bearer Signal Strength
	  Reporting Interval.

config BT_TBS_CLIENT_SET_BEARER_SIGNAL_INTERVAL
	bool "Support setting Bearer Signal Strength Reporting Interval"
	default !BT_TBS_CLIENT_MINIMAL
	help
	  This option enables support for setting Bearer Signal Strength
	  Reporting Interval.

config BT_TBS_CLIENT_BEARER_LIST_CURRENT_CALLS
	bool "Support reading Bearer List Current Calls"
	default !BT_TBS_CLIENT_MINIMAL
	help
	  This option enables support for reading Bearer List Current Calls.

config BT_TBS_CLIENT_CCID
	bool "Support reading Content Control ID"
	default !BT_TBS_CLIENT_MINIMAL
	help
	  This option enables support for reading Content Control ID.

config BT_TBS_CLIENT_INCOMING_URI
	bool "Support reading Incoming Call Target Bearer URI"
	default !BT_TBS_CLIENT_MINIMAL
	help
	  This option enables support for reading Incoming Call Target Bearer
	  URI.

config BT_TBS_CLIENT_STATUS_FLAGS
	bool "Support reading Status Flags"
	default !BT_TBS_CLIENT_MINIMAL
	help
	  This option enables support for reading Status Flags.

config BT_TBS_CLIENT_CP_PROCEDURES
	def_bool y
	depends on (BT_TBS_CLIENT_ACCEPT_CALL || \
		    BT_TBS_CLIENT_TERMINATE_CALL || \
		    BT_TBS_CLIENT_HOLD_CALL || \
		    BT_TBS_CLIENT_RETRIEVE_CALL || \
		    BT_TBS_CLIENT_ORIGINATE_CALL || \
		    BT_TBS_CLIENT_JOIN_CALLS)
	help
	  This hidden option indicates that there are at least one control
	  point procedure available.
	  When this option is disabled it indicates that the control point can
	  be optimized away.

config BT_TBS_CLIENT_ACCEPT_CALL
	bool "Support Accept Call"
	default !BT_TBS_CLIENT_MINIMAL
	help
	  This option enables support for answering an incoming call.

config BT_TBS_CLIENT_TERMINATE_CALL
	bool "Support Terminate Call"
	default !BT_TBS_CLIENT_MINIMAL
	help
	  This option enables support for terminating a call.

config BT_TBS_CLIENT_HOLD_CALL
	bool "Support Hold Call"
	default !BT_TBS_CLIENT_MINIMAL
	help
	  This option enables support for putting a call on hold.

config BT_TBS_CLIENT_RETRIEVE_CALL
	bool "Support Retrieve Call"
	default !BT_TBS_CLIENT_MINIMAL
	help
	  This option enables support for retrieving a call on hold.

config BT_TBS_CLIENT_ORIGINATE_CALL
	bool "Support Originate Call"
	default !BT_TBS_CLIENT_MINIMAL
	help
	  This option enables support for originating a call.

config BT_TBS_CLIENT_JOIN_CALLS
	bool "Support Join Calls"
	depends on BT_TBS_CLIENT_MAX_CALLS > 1
	default !BT_TBS_CLIENT_MINIMAL
	help
	  This option enables support for joining calls.

config BT_TBS_CLIENT_OPTIONAL_OPCODES
	bool "Support reading Optional Opcodes"
	default !BT_TBS_CLIENT_MINIMAL
	help
	  This option enables support for reading Optional Opcodes.

config BT_TBS_CLIENT_INCOMING_CALL
	bool "Support reading Incoming Call"
	default !BT_TBS_CLIENT_MINIMAL
	help
	  This option enables support for reading Incoming Call.

config BT_TBS_CLIENT_CALL_FRIENDLY_NAME
	bool "Support reading Call Friendly Name"
	default !BT_TBS_CLIENT_MINIMAL
	help
	  This option enables support for reading Call Friendly Name.

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

config BT_DEBUG_TBS_CLIENT
	bool "Telephone Bearer Service client debug"
	help
	  Use this option to enable Telephone Bearer Service client debug logs
	  for the Bluetooth Audio functionality.

endif # BT_TBS_CLIENT

if BT_TBS || BT_TBS_CLIENT

config BT_TBS_MAX_URI_LENGTH
	int "The maximum length of the call URI supported"
	default 30
	range 4 253
	help
	  Sets the maximum length of the call URI supported. Note that if this
	  value is lower than a call URI, the call request will be rejected.

config BT_TBS_MAX_PROVIDER_NAME_LENGTH
	int "The maximum length of the bearer provider name"
	default 30
	range 0 512
	help
	  Sets the maximum length of the bearer provider name.

endif # BT_TBS || BT_TBS_CLIENT

endif # BT_AUDIO
