# Copyright (c) 2024 Croxel, Inc.
# SPDX-License-Identifier: Apache-2.0

menuconfig BT_NUS
	bool "GATT Nordic UART Service"

if BT_NUS

config BT_NUS_DEFAULT_INSTANCE
	bool "Use default NUS Service instance"
	default y if !UART_BT
	help
	  Enable default Nordic UART Service Instance. Allows using the NUS as
	  the other services, where the Service is hosted by the subsystem itself.
	  If the user wishes to declare NUS instances externally by using
	  BT_NUS_INST_DEFINE(), it may not be beneficial having an internal
	  instance as well.

config BT_NUS_AUTO_START_BLUETOOTH
	bool "Auto-enable Bluetooth stack and start LE advertisements"
	help
	  Auto-Enable the Bluetooth stack and start advertising with the NUS
	  UUID. Useful to run applications that inherently do not deal with
	  Bluetooth (e.g: Non-Bluetooth samples using UART over Bluetooth LE).

endif # BT_NUS
