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

# The Kconfig file is dedicated to UDP transport of MCUmgr
# subsystem and provides Kconfig options to control aspects of
# the transport.
#
# Options defined in this file should be prefixed:
#  MCUMGR_TRANSPORT_UDP_

menuconfig MCUMGR_TRANSPORT_UDP
	bool "UDP mcumgr SMP transport"
	depends on NET_UDP
	depends on NET_SOCKETS
	select NET_SOCKETS_POSIX_NAMES if !POSIX_API
	select NET_CONNECTION_MANAGER
	help
	  Enables handling of SMP commands received over UDP.
	  Will start a thread for listening on the configured UDP port.

if MCUMGR_TRANSPORT_UDP

config MCUMGR_TRANSPORT_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_TRANSPORT_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_TRANSPORT_UDP_PORT
	int "UDP SMP port"
	default 1337
	help
	  UDP port that SMP server will listen for SMP commands on.

config MCUMGR_TRANSPORT_UDP_STACK_SIZE
	int "UDP SMP stack size"
	default 512
	help
	  Stack size of the SMP UDP listening thread

config MCUMGR_TRANSPORT_UDP_THREAD_PRIO
	int "UDP SMP thread priority"
	default 0
	help
	  Scheduling priority of the SMP UDP listening thread.

config MCUMGR_TRANSPORT_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_TRANSPORT_UDP_MTU <= MCUMGR_TRANSPORT_NETBUF_SIZE + SMP msg overhead - address size
	  where address size is determined by IPv4/IPv6 selection.

config MCUMGR_TRANSPORT_UDP_AUTOMATIC_INIT
	bool "UDP SMP autostart"
	default y
	help
	  Enable starting the UDP SMP transport at boot time without needing
	  any code in the application to do this, otherwise will need the user
	  application to manually start and stop the transport using
	  `smp_udp_open` and `smp_udp_close`.

endif # MCUMGR_TRANSPORT_UDP
