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

config MCUMGR_CMD_SHELL_MGMT
	bool "Mcumgr handlers for shell management"
	depends on SHELL
	select SHELL_BACKEND_DUMMY
	select MGMT_MIN_DECODING_LEVEL_2
	help
	  Enables mcumgr handlers for shell management. The handler will utilize
	  the dummy backend to execute shell commands and capture the output to
	  an internal memory buffer. This way, there is no interaction with
	  physical interfaces outside of the scope of the user.
	  It is possible to use additional shell backends in coordination
	  with this handler and they will not interfere.
	  The SHELL_BACKEND_DUMMY_BUF_SIZE will affect how many characters
	  will be returned from command output, if your output gets cut, then
	  increase the value. Remember to set MCUMGR_BUF_SIZE accordingly.
	  Note that maximum length of shell command accepted is regulated by
	  the CONFIG_SHELL_CMD_BUFF_SIZE, and a buffer for a command is allocated
	  on a stack, by the mcumgr, so enabling MCUMGR_CMD_SHELL_MGMT and
	  changes to the CONFIG_SHELL_CMD_BUFF_SIZE may increase stack size
	  requirements.
