If the POSIX API is selected via the POSIX_API option, don't also select the conflicting NET_SOCKETS_POSIX_NAMES and use the POSIX headers instead. Signed-off-by: Berend Ozceri <berend@recogni.com>
363 lines
10 KiB
Plaintext
363 lines
10 KiB
Plaintext
# 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 if !POSIX_API
|
|
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
|