# Copyright (c) 2017 Linaro Limited
# SPDX-License-Identifier: Apache-2.0

menuconfig CONSOLE_SUBSYS
	bool "Console subsystem/support routines [EXPERIMENTAL]"
	help
	  Console subsystem and helper functions

if CONSOLE_SUBSYS

choice
	prompt "Console 'get' function selection"
	optional

config CONSOLE_GETCHAR
	bool "Character by character input and output"
	select UART_CONSOLE_DEBUG_SERVER_HOOKS
	select CONSOLE_HANDLER

config CONSOLE_GETLINE
	bool "Line by line input"
	select CONSOLE_HANDLER

endchoice

if CONSOLE_GETCHAR

config CONSOLE_GETCHAR_BUFSIZE
	int "console_getchar() buffer size"
	default 16
	help
	  Buffer size for console_getchar(). The default is optimized
	  to save RAM. You may need to increase it e.g. to support
	  large host-side clipboard pastes. Set to 0 to disable
	  interrupt-driven operation and use busy-polling.

config CONSOLE_PUTCHAR_BUFSIZE
	int "console_putchar() buffer size"
	default 16
	help
	  Buffer size for console_putchar().  The default is optimized
	  to save RAM. You may need to increase it e.g. to support
	  large host-side clipboard pastes. Set to 0 to disable
	  interrupt-driven operation and use busy-polling.

endif # CONSOLE_GETCHAR

endif # CONSOLE_SUBSYS
