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

config TEST_USE_LEGACY_ADVERTISING
	bool "Use Legacy Connectable Advertising"
	help
	  Use legacy connectable advertising instead of extended advertising.

config TEST_CONNECT_ACL_FIRST
	bool "Connect ACLs first"
	help
	  Connect ACLs first

config TEST_MULTIPLE_PERIPERAL_CIS
	bool "Multiple Peripheral CIS"
	help
	  Multiple Peripheral CIS establishment.

config BT_CTLR_SCAN_UNRESERVED
	default y if TEST_CONNECT_ACL_FIRST
	help
	  When CIS is created first, there isn't sufficient time available for
	  scanning to overlap with advertising events hence do not use
	  unreserved scanning so that the create connection can succeed within
	  its 3 second timeout.

menu "Zephyr Kernel"
source "Kconfig.zephyr"
endmenu
