# Shell backends configuration options # Copyright (c) 2018 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 menuconfig SHELL_BACKENDS bool "Shell backends" default y help Enable shell backends. if SHELL_BACKENDS # Workaround for not being able to have commas in macro arguments DT_CHOSEN_Z_SHELL_UART := zephyr,shell-uart config SHELL_BACKEND_SERIAL bool "Serial backend" default "$(dt_chosen_enabled,$(DT_CHOSEN_Z_SHELL_UART))" select SERIAL select RING_BUFFER help Enable serial backend. if SHELL_BACKEND_SERIAL config SHELL_BACKEND_SERIAL_INIT_PRIORITY int "Initialization priority" default APPLICATION_INIT_PRIORITY range 0 99 help Initialization priority for UART backend. This must be bigger than the initialization priority of the used serial device. config SHELL_PROMPT_UART string "Displayed prompt name" default "uart:~$ " help Displayed prompt name for UART backend. If prompt is set, the shell will send two newlines during initialization. config SHELL_BACKEND_SERIAL_INTERRUPT_DRIVEN bool "Interrupt driven" default y depends on SERIAL_SUPPORT_INTERRUPT config SHELL_ASYNC_API bool "Asynchronous shell API" default n depends on UART_ASYNC_API help This option enables asynchronous shell API. choice SHELL_BACKEND_SERIAL_API prompt "Mode" default SHELL_BACKEND_SERIAL_API_ASYNC if SHELL_ASYNC_API default SHELL_BACKEND_SERIAL_API_INTERRUPT_DRIVEN if SHELL_BACKEND_SERIAL_INTERRUPT_DRIVEN default SHELL_BACKEND_SERIAL_API_POLLING config SHELL_BACKEND_SERIAL_API_POLLING prompt "Polling" config SHELL_BACKEND_SERIAL_API_INTERRUPT_DRIVEN bool "Interrupt driven" depends on SERIAL_SUPPORT_INTERRUPT select UART_INTERRUPT_DRIVEN config SHELL_BACKEND_SERIAL_API_ASYNC bool "Asynchronous" depends on SERIAL_SUPPORT_ASYNC select UART_ASYNC_RX_HELPER endchoice config SHELL_BACKEND_SERIAL_FORCE_TX_BLOCKING_MODE bool "Force blocking mode for TX" help Force blocking mode for TX. config SHELL_BACKEND_SERIAL_TX_RING_BUFFER_SIZE int "Set TX ring buffer size" default 8 depends on SHELL_BACKEND_SERIAL_API_INTERRUPT_DRIVEN help If UART is utilizing DMA transfers then increasing ring buffer size increases transfers length and reduces number of interrupts. config SHELL_BACKEND_SERIAL_RX_RING_BUFFER_SIZE int "Set RX ring buffer size" depends on SHELL_BACKEND_SERIAL_API_INTERRUPT_DRIVEN || SHELL_BACKEND_SERIAL_API_POLLING default 256 if MCUMGR_TRANSPORT_SHELL default 64 help RX ring buffer size impacts accepted latency of handling incoming bytes by shell. If shell input is coming from the keyboard then it is usually enough if ring buffer is few bytes (more than one due to escape sequences). However, if bulk data is transferred it may be required to increase it. if SHELL_BACKEND_SERIAL_API_ASYNC config SHELL_BACKEND_SERIAL_ASYNC_RX_TIMEOUT int "RX inactivity timeout (in microseconds)" default 10000 help Inactivity timeout after which received data is reported. config SHELL_BACKEND_SERIAL_ASYNC_RX_BUFFER_COUNT int "Number of RX buffers" default 4 range 2 64 help Number of RX buffers. Some UART driver implementations changes buffers on timeout so this number should be big enough to cover handling on time incoming data. 4 should be enough for almost all the cases unless CPU load is high and there is very high shell thread latency. config SHELL_BACKEND_SERIAL_ASYNC_RX_BUFFER_SIZE int "Size of the RX buffer" default 16 help Size of a single RX buffer. Together with buffer count it defines the space that can hold RX data. It may be decreased if shell input is slow and may need to be increased if long messages are pasted directly to the shell prompt. endif # SHELL_BACKEND_SERIAL_API_ASYNC config SHELL_BACKEND_SERIAL_RX_POLL_PERIOD int "RX polling period (in milliseconds)" default 10 depends on SHELL_BACKEND_SERIAL_API_POLLING help Determines how often UART is polled for RX byte. config SHELL_BACKEND_SERIAL_CHECK_DTR bool "Check DTR signal before TX" depends on SHELL_BACKEND_SERIAL_API_INTERRUPT_DRIVEN depends on UART_LINE_CTRL help Check DTR signal before TX. module = SHELL_BACKEND_SERIAL default-timeout = 100 source "subsys/shell/Kconfig.template.shell_log_queue_timeout" default-size = 512 source "subsys/shell/Kconfig.template.shell_log_queue_size" choice prompt "Initial log level limit" default SHELL_BACKEND_SERIAL_LOG_LEVEL_DEFAULT config SHELL_BACKEND_SERIAL_LOG_LEVEL_DEFAULT bool "System limit (LOG_MAX_LEVEL)" config SHELL_BACKEND_SERIAL_LOG_LEVEL_DBG bool "Debug" config SHELL_BACKEND_SERIAL_LOG_LEVEL_INF bool "Info" config SHELL_BACKEND_SERIAL_LOG_LEVEL_WRN bool "Warning" config SHELL_BACKEND_SERIAL_LOG_LEVEL_ERR bool "Error" config SHELL_BACKEND_SERIAL_LOG_LEVEL_NONE bool "None" endchoice config SHELL_BACKEND_SERIAL_LOG_LEVEL int default 0 if SHELL_BACKEND_SERIAL_LOG_LEVEL_NONE default 1 if SHELL_BACKEND_SERIAL_LOG_LEVEL_ERR default 2 if SHELL_BACKEND_SERIAL_LOG_LEVEL_WRN default 3 if SHELL_BACKEND_SERIAL_LOG_LEVEL_INF default 4 if SHELL_BACKEND_SERIAL_LOG_LEVEL_DBG default 5 if SHELL_BACKEND_SERIAL_LOG_LEVEL_DEFAULT endif # SHELL_BACKEND_SERIAL config SHELL_BACKEND_RTT bool "RTT backend" select CONSOLE select RTT_CONSOLE select SEGGER_RTT_CUSTOM_LOCKING depends on USE_SEGGER_RTT # RTT backend can only be called from thread context. depends on !(SHELL_LOG_BACKEND && LOG_MODE_IMMEDIATE) help Enable RTT backend. if SHELL_BACKEND_RTT config SHELL_PROMPT_RTT string "Displayed prompt name" default "rtt:~$ " help Displayed prompt name for RTT backend. If prompt is set, the shell will send two newlines during initialization. config SHELL_BACKEND_RTT_BUFFER int "Buffer number used for shell input and output." range 0 SEGGER_RTT_MAX_NUM_UP_BUFFERS default 0 help Select index of up-buffer used for shell output, by default it uses terminal up-buffer and its settings. config SHELL_BACKEND_RTT_RETRY_CNT int "Number of retries" default 4 help Number of TX retries before dropping the data and assuming that RTT session is inactive. config SHELL_BACKEND_RTT_RETRY_DELAY_MS int "Delay between TX retries in milliseconds" default 5 help Sleep period between TX retry attempts. During RTT session, host pulls data periodically. Period starts from 1-2 milliseconds and can be increased if traffic on RTT increases (also from host to device). In case of heavy traffic data can be lost and it may be necessary to increase delay or number of retries. config SHELL_RTT_RX_POLL_PERIOD int "RX polling period (in milliseconds)" default 10 help Determines how often RTT is polled for RX byte. module = SHELL_BACKEND_RTT default-timeout = 100 source "subsys/shell/Kconfig.template.shell_log_queue_timeout" default-size = 512 source "subsys/shell/Kconfig.template.shell_log_queue_size" choice prompt "Initial log level limit" default SHELL_RTT_INIT_LOG_LEVEL_DEFAULT config SHELL_RTT_INIT_LOG_LEVEL_DEFAULT bool "System limit (LOG_MAX_LEVEL)" config SHELL_RTT_INIT_LOG_LEVEL_DBG bool "Debug" config SHELL_RTT_INIT_LOG_LEVEL_INF bool "Info" config SHELL_RTT_INIT_LOG_LEVEL_WRN bool "Warning" config SHELL_RTT_INIT_LOG_LEVEL_ERR bool "Error" config SHELL_RTT_INIT_LOG_LEVEL_NONE bool "None" endchoice config SHELL_RTT_INIT_LOG_LEVEL int default 0 if SHELL_RTT_INIT_LOG_LEVEL_NONE default 1 if SHELL_RTT_INIT_LOG_LEVEL_ERR default 2 if SHELL_RTT_INIT_LOG_LEVEL_WRN default 3 if SHELL_RTT_INIT_LOG_LEVEL_INF default 4 if SHELL_RTT_INIT_LOG_LEVEL_DBG default 5 if SHELL_RTT_INIT_LOG_LEVEL_DEFAULT module = SHELL_RTT module-str = RTT shell backend source "subsys/logging/Kconfig.template.log_config" endif # SHELL_BACKEND_RTT config SHELL_BACKEND_MQTT bool "MQTT backend" depends on NET_TCP depends on NET_IPV4 depends on NETWORKING select DNS_RESOLVER select HWINFO select MQTT_LIB select NET_MGMT select NET_MGMT_EVENT help Enable MQTT backend. if SHELL_BACKEND_MQTT config SHELL_MQTT_SERVER_ADDR string "MQTT server address" default "192.168.0.100" help MQTT server address. config SHELL_MQTT_SERVER_PORT int "MQTT server port" default 1883 help MQTT server port. config SHELL_MQTT_SERVER_USERNAME string "MQTT server username" help MQTT server username. config SHELL_MQTT_SERVER_PASSWORD string "MQTT server password" help MQTT server password. config SHELL_MQTT_RX_BUF_SIZE int "RX buffer size" default 256 help Buffer size for the MQTT data reception. config SHELL_MQTT_TX_BUF_SIZE int "TX buffer size" range 32 $(UINT16_MAX) default 256 help Buffer size for the MQTT data transmission. module = SHELL_BACKEND_MQTT default-timeout = 100 source "subsys/shell/Kconfig.template.shell_log_queue_timeout" default-size = 512 source "subsys/shell/Kconfig.template.shell_log_queue_size" choice prompt "Initial log level limit" default SHELL_MQTT_INIT_LOG_LEVEL_DEFAULT config SHELL_MQTT_INIT_LOG_LEVEL_DEFAULT bool "System limit (LOG_MAX_LEVEL)" config SHELL_MQTT_INIT_LOG_LEVEL_DBG bool "Debug" config SHELL_MQTT_INIT_LOG_LEVEL_INF bool "Info" config SHELL_MQTT_INIT_LOG_LEVEL_WRN bool "Warning" config SHELL_MQTT_INIT_LOG_LEVEL_ERR bool "Error" config SHELL_MQTT_INIT_LOG_LEVEL_NONE bool "None" endchoice # SHELL_MQTT_INIT_LOG_LEVEL config SHELL_MQTT_INIT_LOG_LEVEL int default 0 if SHELL_MQTT_INIT_LOG_LEVEL_NONE default 1 if SHELL_MQTT_INIT_LOG_LEVEL_ERR default 2 if SHELL_MQTT_INIT_LOG_LEVEL_WRN default 3 if SHELL_MQTT_INIT_LOG_LEVEL_INF default 4 if SHELL_MQTT_INIT_LOG_LEVEL_DBG default 5 if SHELL_MQTT_INIT_LOG_LEVEL_DEFAULT module = SHELL_MQTT module-str = MQTT shell backend source "subsys/logging/Kconfig.template.log_config" endif # SHELL_BACKEND_MQTT config SHELL_BACKEND_RPMSG bool "RPMsg backend." depends on OPENAMP help Enable RPMsg backend. if SHELL_BACKEND_RPMSG config SHELL_PROMPT_RPMSG string "Displayed prompt name" default "ipc:~$ " help Displayed prompt name for RPMsg backend. If prompt is set, the shell will send two newlines during initialization. config SHELL_RPMSG_SERVICE_NAME string "Service name" default "rpmsg-tty" help The service name associated with the RPMsg endpoint. config SHELL_RPMSG_SRC_ADDR hex "Local address" default 0xffffffff # The ANY address help Local address of the RPMsg endpoint. config SHELL_RPMSG_DST_ADDR hex "Remote address" default 0xffffffff # The ANY address help Target address of the RPMsg endpoint. config SHELL_RPMSG_MAX_RX int "Receive buffer size" default 10 help The maximum number of received messages to be queued. module = SHELL_BACKEND_RPMSG default-timeout = 100 source "subsys/shell/Kconfig.template.shell_log_queue_timeout" default-size = 512 source "subsys/shell/Kconfig.template.shell_log_queue_size" choice prompt "Initial log level limit" default SHELL_RPMSG_INIT_LOG_LEVEL_DEFAULT config SHELL_RPMSG_INIT_LOG_LEVEL_DEFAULT bool "System limit (LOG_MAX_LEVEL)" config SHELL_RPMSG_INIT_LOG_LEVEL_DBG bool "Debug" config SHELL_RPMSG_INIT_LOG_LEVEL_INF bool "Info" config SHELL_RPMSG_INIT_LOG_LEVEL_WRN bool "Warning" config SHELL_RPMSG_INIT_LOG_LEVEL_ERR bool "Error" config SHELL_RPMSG_INIT_LOG_LEVEL_NONE bool "None" endchoice # SHELL_RPMSG_INIT_LOG_LEVEL config SHELL_RPMSG_INIT_LOG_LEVEL int default 0 if SHELL_RPMSG_INIT_LOG_LEVEL_NONE default 1 if SHELL_RPMSG_INIT_LOG_LEVEL_ERR default 2 if SHELL_RPMSG_INIT_LOG_LEVEL_WRN default 3 if SHELL_RPMSG_INIT_LOG_LEVEL_INF default 4 if SHELL_RPMSG_INIT_LOG_LEVEL_DBG default 5 if SHELL_RPMSG_INIT_LOG_LEVEL_DEFAULT module = SHELL_RPMSG module-str = RPMsg shell backend source "subsys/logging/Kconfig.template.log_config" endif # SHELL_BACKEND_RPMSG config SHELL_BACKEND_TELNET bool "TELNET backend." depends on NET_TCP depends on NET_IPV4 || NET_IPV6 select NET_SOCKETS_SERVICE select NET_SOCKETS help Enable TELNET backend. if SHELL_BACKEND_TELNET config SHELL_TELNET_INIT_PRIORITY int "Initialization priority" default 95 range 0 99 help Initialization priority for telnet shell backend. This must be higher than socket service initialization priority, as socket service has to be initialized earlier. config SHELL_PROMPT_TELNET string "Displayed prompt name" default "~$ " help Displayed prompt name for TELNET backend. If prompt is set, the shell will send two newlines during initialization. config SHELL_TELNET_PORT int "Telnet port number" default 23 help This option is used to configure on which port telnet is going to be bound. config SHELL_TELNET_LINE_BUF_SIZE int "Telnet line buffer size" default 80 help This option can be used to modify the size of the buffer storing shell output line, prior to sending it through the network. Of course an output line can be longer than such size, it just means sending it will start as soon as it reaches this size. It really depends on what type of output is expected. A lot of short lines: better reduce this value. On the contrary, raise it. config SHELL_TELNET_SEND_TIMEOUT int "Telnet line send timeout" default 100 help This option can be used to modify the duration of the timer that kick in when a line buffer is not empty but did not yet meet the line feed. config SHELL_TELNET_SUPPORT_COMMAND bool "Add support for telnet commands (IAC) [EXPERIMENTAL]" select EXPERIMENTAL help Current support is so limited it's not interesting to enable it. However, if proven to be needed at some point, it will be possible to extend such support. It does have support for echo and "character at a time" mode, which enable the history and line-editing features of the shell. IMPORTANT: This will increase network usage as a TCP packet will be sent each time a character is typed in the telnet client. module = SHELL_TELNET default-timeout = 100 source "subsys/shell/Kconfig.template.shell_log_queue_timeout" default-size = 512 source "subsys/shell/Kconfig.template.shell_log_queue_size" choice prompt "Initial log level limit" default SHELL_TELNET_INIT_LOG_LEVEL_DEFAULT config SHELL_TELNET_INIT_LOG_LEVEL_DEFAULT bool "System limit (LOG_MAX_LEVEL)" config SHELL_TELNET_INIT_LOG_LEVEL_DBG bool "Debug" config SHELL_TELNET_INIT_LOG_LEVEL_INF bool "Info" config SHELL_TELNET_INIT_LOG_LEVEL_WRN bool "Warning" config SHELL_TELNET_INIT_LOG_LEVEL_ERR bool "Error" config SHELL_TELNET_INIT_LOG_LEVEL_NONE bool "None" endchoice config SHELL_TELNET_INIT_LOG_LEVEL int default 0 if SHELL_TELNET_INIT_LOG_LEVEL_NONE default 1 if SHELL_TELNET_INIT_LOG_LEVEL_ERR default 2 if SHELL_TELNET_INIT_LOG_LEVEL_WRN default 3 if SHELL_TELNET_INIT_LOG_LEVEL_INF default 4 if SHELL_TELNET_INIT_LOG_LEVEL_DBG default 5 if SHELL_TELNET_INIT_LOG_LEVEL_DEFAULT module = SHELL_TELNET module-str = TELNET shell backend source "subsys/logging/Kconfig.template.log_config" endif # SHELL_TELNET_BACKEND config SHELL_BACKEND_WEBSOCKET bool "Websocket backend." depends on HTTP_SERVER_WEBSOCKET depends on NET_NATIVE_IP select NET_SOCKETS_SERVICE select NET_SOCKETS help Enable Websocket backend. if SHELL_BACKEND_WEBSOCKET config SHELL_WEBSOCKET_BACKEND_COUNT int "How many Webconsole sessions are supported" default 2 range 1 8 help Each connection consumes memory so select the value according to your needs. Also note that each console session needs unique HTTP endpoint configured. Note that if you have only one HTTP endpoint for the websocket console, setting the this value to 2, allows latter console session to kick out the previous one. If set this value to 1, then the latter connecting webconsole session will fail. If you have multiple HTTP endpoints, then This value should be increased accordingly. config SHELL_WEBSOCKET_PROMPT string "Displayed prompt name" default "" help Displayed prompt name for Websocket backend. If prompt is set, the shell will send two newlines during initialization. config SHELL_WEBSOCKET_ENDPOINT_URL string "Websocket endpoint URL" default "console" help What is the HTTP endpoint URL where the client should connect to. config SHELL_WEBSOCKET_IP_ADDR string "Websocket IP listen address" default "" help This option is used to configure on which IP address and network interface the HTTP server is listening. If left empty, then all network interfaces are listened. config SHELL_WEBSOCKET_PORT int "Websocket port number" default 443 if NET_SOCKETS_SOCKOPT_TLS default 80 help This option is used to configure on which port websocket is going to be bound. config SHELL_WEBSOCKET_LINE_BUF_SIZE int "Websocket line buffer size" default 100 help This option can be used to modify the size of the buffer storing shell output line, prior to sending it through the network. Of course an output line can be longer than such size, it just means sending it will start as soon as it reaches this size. It really depends on what type of output is expected. A lot of short lines: better reduce this value. On the contrary, raise it. config SHELL_WEBSOCKET_SEND_TIMEOUT int "Websocket line send timeout" default 100 help This option can be used to modify the duration of the timer that kick in when a line buffer is not empty but did not yet meet the line feed. module = SHELL_WEBSOCKET default-timeout = 100 source "subsys/shell/Kconfig.template.shell_log_queue_timeout" default-size = 512 source "subsys/shell/Kconfig.template.shell_log_queue_size" choice prompt "Initial log level limit" default SHELL_WEBSOCKET_INIT_LOG_LEVEL_DEFAULT config SHELL_WEBSOCKET_INIT_LOG_LEVEL_DEFAULT bool "System limit (LOG_MAX_LEVEL)" config SHELL_WEBSOCKET_INIT_LOG_LEVEL_DBG bool "Debug" config SHELL_WEBSOCKET_INIT_LOG_LEVEL_INF bool "Info" config SHELL_WEBSOCKET_INIT_LOG_LEVEL_WRN bool "Warning" config SHELL_WEBSOCKET_INIT_LOG_LEVEL_ERR bool "Error" config SHELL_WEBSOCKET_INIT_LOG_LEVEL_NONE bool "None" endchoice config SHELL_WEBSOCKET_INIT_LOG_LEVEL int default 0 if SHELL_WEBSOCKET_INIT_LOG_LEVEL_NONE default 1 if SHELL_WEBSOCKET_INIT_LOG_LEVEL_ERR default 2 if SHELL_WEBSOCKET_INIT_LOG_LEVEL_WRN default 3 if SHELL_WEBSOCKET_INIT_LOG_LEVEL_INF default 4 if SHELL_WEBSOCKET_INIT_LOG_LEVEL_DBG default 5 if SHELL_WEBSOCKET_INIT_LOG_LEVEL_DEFAULT module = SHELL_WEBSOCKET module-str = Websocket shell backend source "subsys/logging/Kconfig.template.log_config" endif # SHELL_WEBSOCKET_BACKEND config SHELL_BACKEND_DUMMY bool "Dummy backend." help Enable dummy backend which can be used to execute commands with no need for physical transport interface. if SHELL_BACKEND_DUMMY config SHELL_PROMPT_DUMMY string "Displayed prompt name" default "~$ " help Displayed prompt name for DUMMY backend. If prompt is set, the shell will send two newlines during initialization. config SHELL_BACKEND_DUMMY_BUF_SIZE int "Size of dummy buffer size" default 400 if LOG_PRINTK default 300 help This is size of output buffer that will be used by dummy backend, this limits number of characters that will be captured from command output. choice prompt "Initial log level limit" default SHELL_DUMMY_INIT_LOG_LEVEL_INF config SHELL_DUMMY_INIT_LOG_LEVEL_DEFAULT bool "System limit (LOG_MAX_LEVEL)" config SHELL_DUMMY_INIT_LOG_LEVEL_DBG bool "Debug" config SHELL_DUMMY_INIT_LOG_LEVEL_INF bool "Info" config SHELL_DUMMY_INIT_LOG_LEVEL_WRN bool "Warning" config SHELL_DUMMY_INIT_LOG_LEVEL_ERR bool "Error" config SHELL_DUMMY_INIT_LOG_LEVEL_NONE bool "None" endchoice config SHELL_DUMMY_INIT_LOG_LEVEL int default 0 if SHELL_DUMMY_INIT_LOG_LEVEL_NONE default 1 if SHELL_DUMMY_INIT_LOG_LEVEL_ERR default 2 if SHELL_DUMMY_INIT_LOG_LEVEL_WRN default 3 if SHELL_DUMMY_INIT_LOG_LEVEL_INF default 4 if SHELL_DUMMY_INIT_LOG_LEVEL_DBG default 5 if SHELL_DUMMY_INIT_LOG_LEVEL_DEFAULT endif # SHELL_BACKEND_DUMMY config SHELL_BACKEND_ADSP_MEMORY_WINDOW bool "Shell backend implemented over mapped memory window." depends on SOC_FAMILY_INTEL_ADSP help Enable ADSP memory window backend which can be used to execute commands from remote host processor that has access to the same memory window. if SHELL_BACKEND_ADSP_MEMORY_WINDOW config SHELL_BACKEND_ADSP_MEMORY_WINDOW_PROMPT string "Displayed prompt name" default "~$ " help Displayed prompt name for ADSP memory window backend. If prompt is set, the shell will send two newlines during initialization. config SHELL_BACKEND_ADSP_MEMORY_WINDOW_POLL_INTERVAL int "Poll interval (in microseconds)" default 100 help This option can be used to modify the poll interval the backend uses to check for new commands. endif # SHELL_BACKEND_ADSP_MEMORY_WINDOW endif # SHELL_BACKENDS