# Kconfig - Bluetooth LE driver configuration options

#
# Copyright (c) 2015-2016 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#

#
# Bluetooth options
#

if BLUETOOTH

menu "Bluetooth Drivers"

if BLUETOOTH_HCI
source "drivers/bluetooth/hci/Kconfig"
endif

if BLUETOOTH_CUSTOM
source "drivers/bluetooth/nble/Kconfig"
endif

config BLUETOOTH_NRF51_PM
	bool "nRF51 Power Management [EXPERIMENTAL]"
	depends on BLUETOOTH_H4 || NBLE
	help
	  Power Management support for Nordic BLE nRF51 chip. Allows to enable,
	  disable the chip and handle wakeups.

config BLUETOOTH_WAIT_NOP
	bool "Wait for \"NOP\" Command Complete event during init"
	depends on BLUETOOTH_HCI
	help
	  Some controllers emit a Command Complete event for the NOP
	  opcode to indicate that they're ready to receive commands.
	  This option should be selected if the controller used
	  exhibits such behavior.

endmenu

endif # BLUETOOTH
