# Copyright Runtime.io 2018. All rights reserved.
# Copyright Nordic Semiconductor ASA 2020. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

menuconfig MCUMGR_SMP_UART
	bool "UART mcumgr SMP transport"
	select UART_MCUMGR
	select BASE64
	help
	  Enables handling of SMP commands received over UART.  This is a
	  lightweight alternative to MCUMGR_SMP_SHELL.  It allows mcumgr
	  commands to be received over UART without requiring an additional
	  thread.

if UART_ASYNC_API && MCUMGR_SMP_UART

menuconfig MCUMGR_SMP_UART_ASYNC
	bool "Use async UART API when available"
	help
	  The option enables use of UART async API when available for selected mcumgr uart port.

if MCUMGR_SMP_UART_ASYNC

config MCUMGR_SMP_UART_ASYNC_BUFS
	int "Number of async RX UART buffers"
	range 2 8
	default 2
	help
	  The asynchronous UART API requires registering RX buffers for received data; when the RX
	  reaches the end of a buffer, it will send event requesting next buffer, to be able to
	  receive data without stopping due to running out of buffer space.  At least two buffers
	  area required for smooth RX operation.

config MCUMGR_SMP_UART_ASYNC_BUF_SIZE
	int "Size of single async RX UART buffer"
	default 64
	help
	  The size of single buffer for asynchronous RX.

endif # MCUMGR_SMP_UART_ASYNC

endif # UART_ASYNC_API

config MCUMGR_SMP_UART_MTU
	int "UART SMP MTU"
	default 256
	depends on MCUMGR_SMP_UART
	help
	  Maximum size of SMP frames sent and received over UART, in bytes.
	  This value must satisfy the following relation:
	  MCUMGR_SMP_UART_MTU <= MCUMGR_BUF_SIZE + 2
