diff --git a/subsys/CMakeLists.txt b/subsys/CMakeLists.txt index cde373ef01e..4172db50fc8 100644 --- a/subsys/CMakeLists.txt +++ b/subsys/CMakeLists.txt @@ -6,9 +6,9 @@ add_subdirectory_ifdef(CONFIG_CONSOLE_SHELL shell) add_subdirectory_ifdef(CONFIG_CPLUSPLUS cpp) add_subdirectory_ifdef(CONFIG_DISK_ACCESS disk) add_subdirectory(fs) +add_subdirectory_ifdef(CONFIG_MCUMGR mgmt) add_subdirectory_ifdef(CONFIG_MCUBOOT_IMG_MANAGER dfu) add_subdirectory_ifdef(CONFIG_NET_BUF net) add_subdirectory_ifdef(CONFIG_USB usb) -add_subdirectory(mgmt) add_subdirectory(random) add_subdirectory(storage) diff --git a/subsys/Kconfig b/subsys/Kconfig index 39e389838f8..e0bf53771e6 100644 --- a/subsys/Kconfig +++ b/subsys/Kconfig @@ -19,6 +19,8 @@ source "subsys/fs/Kconfig" source "subsys/logging/Kconfig" +source "subsys/mgmt/Kconfig" + source "subsys/net/Kconfig" source "subsys/shell/Kconfig" diff --git a/subsys/mgmt/CMakeLists.txt b/subsys/mgmt/CMakeLists.txt new file mode 100644 index 00000000000..6ec59691abc --- /dev/null +++ b/subsys/mgmt/CMakeLists.txt @@ -0,0 +1,11 @@ +zephyr_library() +zephyr_library_sources(buf.c) +zephyr_library_sources(smp.c) +zephyr_library_sources_ifdef(CONFIG_MCUMGR_SMP_BT smp_bt.c) +zephyr_library_sources_ifdef(CONFIG_MCUMGR_SMP_SHELL smp_shell.c) +zephyr_library_sources_ifdef(CONFIG_MCUMGR_SMP_UART smp_uart.c) +zephyr_library_link_libraries(MCUMGR) + +if (CONFIG_MCUMGR_SMP_SHELL OR CONFIG_MCUMGR_SMP_UART) + zephyr_library_sources(serial_util.c) +endif () diff --git a/subsys/mgmt/Kconfig b/subsys/mgmt/Kconfig new file mode 100644 index 00000000000..36f0bd715d6 --- /dev/null +++ b/subsys/mgmt/Kconfig @@ -0,0 +1,96 @@ +# Kconfig - mcumgr configuration options + +# +# Copyright Runtime.io 2018. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 +# + +menu "Management" + +config MCUMGR_SMP_BT + bool + prompt "Bluetooth mcumgr SMP transport" + select MCUMGR + select BT + select BT_PERIPHERAL + default n + help + Enables handling of SMP commands received over Bluetooth. + +config MCUMGR_SMP_SHELL + bool + prompt "Shell mcumgr SMP transport" + select MCUMGR + select UART_CONSOLE_MCUMGR + select CONSOLE_SHELL + select MBEDTLS + default n + help + Enables handling of SMP commands received over shell. This allows + the shell to be use for both mcumgr commands and shell commands. + +if MCUMGR_SMP_SHELL +config MCUMGR_SMP_SHELL_MTU + int + prompt "Shell SMP MTU" + default 256 + help + Maximum size of SMP frames sent and received over shell. This value + must satisfy the following relation: + MCUMGR_SMP_SHELL_MTU <= MCUMGR_BUF_SIZE + 2 +endif + + +config MCUMGR_SMP_UART + bool + prompt "UART mcumgr SMP transport" + select MCUMGR + select UART_MCUMGR + select MBEDTLS + default n + 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 MCUMGR_SMP_UART +config MCUMGR_SMP_UART_MTU + int + prompt "UART SMP MTU" + default 256 + 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 + +endif + +config MCUMGR_BUF_COUNT + int + prompt "Number of mcumgr buffers" + default 4 + help + The number of net_bufs to allocate for mcumgr. These buffers are + used for both requests and responses. + +config MCUMGR_BUF_SIZE + int + prompt "Size of each mcumgr buffer" + default 384 + help + The size, in bytes, of each mcumgr buffer. This value must satisfy + the following relation: + MCUMGR_BUF_SIZE >= transport-specific-MTU + transport-overhead + +config MCUMGR_BUF_USER_DATA_SIZE + int + prompt "Size of mcumgr buffer user data" + default 7 + help + The size, in bytes, of user data to allocate for each mcumgr buffer. + Different mcumgr transports impose different requirements for this + setting. A value of 7 is sufficient for UART, shell, and bluetooth. + +endmenu