# Copyright (c) 2022 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

mainmenu "Bluetooth: Broadcast Audio Sink"

config SCAN_OFFLOAD
	bool "Whether to wait for a Broadcast Assistant"
	default y
	# enable PAST support if we can
	select BT_PER_ADV_SYNC_TRANSFER_RECEIVER if !BT_CTLR || BT_CTLR_SYNC_TRANSFER_RECEIVER_SUPPORT
	help
	  If set to true, the sample will start advertising connectable for
	  Broadcast Assistants.

config SCAN_SELF
	bool "Whether to scan for Broadcast Sources without Broadcast Assistant"
	default y
	help
	  If set to true, the sample will start scanning for Broadcast Sources
	  without waiting for a Broadcast Assistant to connect.

config SCAN_DELAY
	int "Delay before starting scan (in seconds)"
	range 0 255
	default 10
	depends on SCAN_SELF
	help
	  Time to advertise connectable for a Broadcast Assistant to connect
	  before starting scanning for Broadcast Sources.

config TARGET_BROADCAST_NAME
	string "Target Broadcast Device Name"
	default ""
	help
	  Name of target broadcast device. If not empty string, sink device
	  will only listen to the specified broadcast source. Not case sensitive.

config ENABLE_LC3
	bool "Enable the LC3 codec"
	# By default let's enable it in the platforms we know are capable of supporting it
	default y
	depends on (ARCH_POSIX || SOC_NRF5340_CPUAPP)
	select LIBLC3
	select FPU

config USE_USB_AUDIO_OUTPUT
	bool "Use USB Audio as output"
	depends on ENABLE_LC3
	select USB_DEVICE_STACK
	select USB_DEVICE_AUDIO
	select RING_BUFFER
	help
	  Enables USB audio as output as a USB peripheral. This does not support providing USB
	  audio to e.g. speakers that are also USB peripherals, but can be connected to e.g. a
	  phone or PC as a USB-in device (such as a USB microphone).
	  USB audio only supports a single audio channel.

config TARGET_BROADCAST_CHANNEL
	int "Broadcast Channel Audio Location to sync to"
	range 0 2
	default 1
	depends on USE_USB_AUDIO_OUTPUT
	help
	  Channel Audio Location to sync to. These corresponds to the bt_audio_location,
	  supporting mono, left and right channels

source "Kconfig.zephyr"
