| # Copyright Runtime.io 2018. All rights reserved. |
| # Copyright Nordic Semiconductor ASA 2020. All rights reserved. |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| menuconfig MCUMGR |
| bool "mcumgr Support" |
| select NET_BUF |
| select ZCBOR |
| help |
| This option enables the mcumgr management library. |
| |
| if MCUMGR |
| |
| module = MCUMGR |
| module-str = mcumgr |
| source "subsys/logging/Kconfig.template.log_config" |
| |
| |
| config APP_LINK_WITH_MCUMGR |
| bool "Link 'app' with MCUMGR" |
| default y |
| help |
| Add MCUMGR header files to the 'app' include path. It may be |
| disabled if the include paths for MCUMGR are causing aliasing |
| issues for 'app'. |
| |
| rsource "lib/Kconfig" |
| |
| config MGMT_MAX_MAIN_MAP_ENTRIES |
| int "Number of predicted maximum entries to main response map" |
| default 15 |
| help |
| This is number of predicted entries in main response map, |
| the one that encapsulates everything within response. |
| This value is used by zcbor to predict needed map encoding, |
| and does not affect memory allocation or usage. |
| Builtin command processors rarely add large amounts of |
| data directly to main map, creating sub-maps instead so |
| the default value works fine with them. |
| If your app directly adds fields to main map, without |
| encapsulating them, you may want to increase this value |
| in case when encoding starts to fail. |
| |
| config MGMT_MIN_DECODING_LEVELS |
| int |
| help |
| Minimal decoding levels, map/list encapsulation, required |
| to be supported by zcbor decoding of SMP responses |
| is auto genereated from MGMT_MIN_DECODING_LEVEL_? options. |
| A group or command that adds additional maps/lists above the |
| base map, which is already taken into account, should |
| select one of the MGMT_MIN_DECODING_LEVEL_?. |
| default 5 if MGMT_MIN_DECODING_LEVEL_5 |
| default 4 if MGMT_MIN_DECODING_LEVEL_4 |
| default 3 if MGMT_MIN_DECODING_LEVEL_3 |
| default 2 if MGMT_MIN_DECODING_LEVEL_2 |
| default 1 if MGMT_MIN_DECODING_LEVEL_1 |
| default 0 |
| |
| |
| config MGMT_MIN_DECODING_LEVEL_1 |
| bool |
| |
| config MGMT_MIN_DECODING_LEVEL_2 |
| bool |
| |
| config MGMT_MIN_DECODING_LEVEL_3 |
| bool |
| |
| config MGMT_MIN_DECODING_LEVEL_4 |
| bool |
| |
| config MGMT_MIN_DECODING_LEVEL_5 |
| bool |
| |
| config MGMT_MAX_DECODING_LEVELS |
| int "Number of map/list encapsulations allowed by SMP encoding" |
| range MGMT_MIN_DECODING_LEVELS 15 |
| default MGMT_MIN_DECODING_LEVELS |
| help |
| This is a maximum number of levels of maps/lists that will |
| be expected to be decoded within different command groups. |
| SMP commands/groups that provide no CBOR encoded payload |
| have no requirements. |
| Commands that provide CBOR payload require at least 1 level, |
| and additional levels for each map/list encapsulation. |
| For example if command accepts payload of map of parameters |
| it will need 2 levels. |
| This number translates to zcbor backup states, it increases |
| size of cbor_nb_reader structure by zcbor_state_t size per |
| one unit selected here. |
| |
| menu "Command Handlers" |
| |
| rsource "lib/cmd/Kconfig" |
| |
| rsource "zephyr_grp/Kconfig" |
| |
| endmenu |
| |
| menu "Transports and Transport Related Configuration Options" |
| |
| config MCUMGR_SMP_REASSEMBLY |
| bool |
| help |
| Enable structures and functions needed for packet reassembly by SMP backend. |
| |
| config MCUMGR_BUF_COUNT |
| int "Number of mcumgr buffers" |
| default 2 if MCUMGR_SMP_UDP |
| 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 "Size of each mcumgr buffer" |
| default 2048 if MCUMGR_SMP_UDP |
| 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 |
| In case when MCUMGR_SMP_SHELL is enabled this value should be set to |
| at least SHELL_BACKEND_DUMMY_BUF_SIZE + 32. |
| |
| config MCUMGR_BUF_USER_DATA_SIZE |
| int "Size of mcumgr buffer user data" |
| default 24 if MCUMGR_SMP_UDP && MCUMGR_SMP_UDP_IPV6 |
| default 8 if MCUMGR_SMP_UDP && MCUMGR_SMP_UDP_IPV4 |
| default 4 |
| 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 4 is sufficient for UART, shell, and bluetooth. |
| For UDP, the userdata must be large enough to hold a IPv4/IPv6 address. |
| |
| |
| menuconfig MCUMGR_SMP_BT |
| bool "Bluetooth mcumgr SMP transport" |
| select BT |
| select BT_PERIPHERAL |
| select BT_GATT_DYNAMIC_DB |
| help |
| Enables handling of SMP commands received over Bluetooth. |
| |
| if MCUMGR_SMP_BT |
| |
| config MCUMGR_SMP_REASSEMBLY_BT |
| bool "Reassemble packets in Bluetooth SMP transport" |
| select MCUMGR_SMP_REASSEMBLY |
| help |
| When enabled, the SMP BT transport will buffer and reassemble received |
| packet fragments before passing it for further processing. |
| |
| |
| config MCUMGR_SMP_BT_AUTHEN |
| bool "Authenticated requirement for Bluetooth mcumgr SMP transport" |
| select BT_SMP |
| default y |
| help |
| Enables encrypted and authenticated connection requirement to |
| Bluetooth SMP transport. |
| |
| config MCUMGR_SMP_BT_CONN_PARAM_CONTROL |
| bool "Request specific connection parameters for SMP packet exchange" |
| depends on SYSTEM_WORKQUEUE_PRIORITY < 0 |
| depends on BT_GAP_PERIPHERAL_PREF_PARAMS |
| help |
| Enables support for requesting specific connection parameters when |
| SMP commands are handled. This option allows to speed up the command |
| exchange process. |
| Its recommended to enable this if SMP is used for DFU. |
| |
| if MCUMGR_SMP_BT_CONN_PARAM_CONTROL |
| |
| config MCUMGR_SMP_BT_CONN_PARAM_CONTROL_MIN_INT |
| int "Minimum connection interval for SMP packet exchange" |
| default 6 |
| range 6 3200 |
| help |
| Minimum connection interval in 1.25ms units used during the exchange of SMP packets. |
| |
| config MCUMGR_SMP_BT_CONN_PARAM_CONTROL_MAX_INT |
| int "Maximum connection interval for SMP packet exchange" |
| default 9 |
| range MCUMGR_SMP_BT_CONN_PARAM_CONTROL_MIN_INT 3200 |
| help |
| Maximum connection interval in 1.25ms units used during the exchange of SMP packets. |
| |
| config MCUMGR_SMP_BT_CONN_PARAM_CONTROL_LATENCY |
| int "Peripheral latency for SMP packet exchange" |
| default 0 |
| range 0 499 |
| help |
| Peripheral latency in Connection Intervals used during the exchange of SMP packets. |
| |
| config MCUMGR_SMP_BT_CONN_PARAM_CONTROL_TIMEOUT |
| int "Supervision timeout for SMP packet exchange" |
| default 42 |
| range 10 3200 |
| help |
| Supervision timeout in 10ms used during the exchange of SMP packets. |
| |
| config MCUMGR_SMP_BT_CONN_PARAM_CONTROL_RESTORE_TIME |
| int "Connection parameters restore time in milliseconds" |
| default 5000 |
| range 1000 65535 |
| help |
| The value is a time of inactivity on the SMP characteristic after which |
| connection parameters are restored to peripheral preferred values |
| (BT_GAP_PERIPHERAL_PREF_PARAMS). |
| |
| config MCUMGR_SMP_BT_CONN_PARAM_CONTROL_RETRY_TIME |
| int "Connection parameters update retry time in milliseconds" |
| default 1000 |
| range 1 5000 |
| help |
| In case connection parameters update fails due to an error, this |
| option specifies the time of the next update attempt. |
| |
| endif # MCUMGR_SMP_BT_CONN_PARAM_CONTROL |
| |
| endif # MCUMGR_SMP_BT |
| |
| menuconfig MCUMGR_SMP_SHELL |
| bool "Shell mcumgr SMP transport" |
| select SHELL |
| select SHELL_BACKEND_SERIAL |
| select BASE64 |
| 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 "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 |
| |
| config MCUMGR_SMP_SHELL_RX_BUF_COUNT |
| int "Shell SMP RX buffer count" |
| default 2 |
| help |
| Number of buffers used for receiving SMP fragments over shell. |
| |
| endif # MCUMGR_SMP_SHELL |
| |
| 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 |
| |
| |
| menuconfig MCUMGR_SMP_UDP |
| bool "UDP mcumgr SMP transport" |
| select NETWORKING |
| select NET_UDP |
| select NET_SOCKETS |
| select NET_SOCKETS_POSIX_NAMES |
| help |
| Enables handling of SMP commands received over UDP. |
| Will start a thread for listening on the configured UDP port. |
| |
| if MCUMGR_SMP_UDP |
| config MCUMGR_SMP_UDP_IPV4 |
| bool "UDP SMP using IPv4" |
| depends on NET_IPV4 |
| default y |
| help |
| Enable SMP UDP using IPv4 addressing. |
| Can be enabled alongside IPv6 addressing. |
| |
| config MCUMGR_SMP_UDP_IPV6 |
| bool "UDP SMP using IPv6" |
| depends on NET_IPV6 |
| help |
| Enable SMP UDP using IPv6 addressing. |
| Can be enabled alongside IPv4 addressing. |
| |
| config MCUMGR_SMP_UDP_PORT |
| int "UDP SMP port" |
| default 1337 |
| help |
| UDP port that SMP server will listen for SMP commands on. |
| |
| config MCUMGR_SMP_UDP_STACK_SIZE |
| int "UDP SMP stack size" |
| default 512 |
| help |
| Stack size of the SMP UDP listening thread |
| |
| config MCUMGR_SMP_UDP_THREAD_PRIO |
| int "UDP SMP thread priority" |
| default 0 |
| help |
| Scheduling priority of the SMP UDP listening thread. |
| |
| config MCUMGR_SMP_UDP_MTU |
| int "UDP SMP MTU" |
| default 1500 |
| help |
| Maximum size of SMP frames sent and received over UDP, in bytes. |
| This value must satisfy the following relation: |
| MCUMGR_SMP_UDP_MTU <= MCUMGR_BUF_SIZE + SMP msg overhead - address size |
| where address size is determined by IPv4/IPv6 selection. |
| |
| endif # MCUMGR_SMP_UDP |
| |
| endmenu |
| |
| module = MCUMGR_SMP |
| module-str = mcumgr_smp |
| source "subsys/logging/Kconfig.template.log_config" |
| |
| endif # MCUMGR |