# OpenThread stack features selection

# Copyright (c) 2020 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

choice OPENTHREAD_STACK_VERSION
	prompt "OpenThread stack version"
	default OPENTHREAD_THREAD_VERSION_1_1
	help
	  This option selects version of Thread stack

config OPENTHREAD_THREAD_VERSION_1_1
	bool "Version 1.1"
config OPENTHREAD_THREAD_VERSION_1_2
	bool "Version 1.2"
config OPENTHREAD_THREAD_VERSION_1_3
	bool "Version 1.3"
endchoice

config OPENTHREAD_THREAD_VERSION
	string
	default "1.1" if OPENTHREAD_THREAD_VERSION_1_1
	default "1.2" if OPENTHREAD_THREAD_VERSION_1_2
	default "1.3" if OPENTHREAD_THREAD_VERSION_1_3
	default "unknown"

config OPENTHREAD_BACKBONE_ROUTER
	bool "Backbone Router functionality"

config OPENTHREAD_BORDER_AGENT
	bool "Border Agent support"

config OPENTHREAD_BORDER_ROUTER
	bool "Border Router support"

config OPENTHREAD_BORDER_ROUTING_NAT64
	bool "Border routing NAT64 support"

config OPENTHREAD_COAP
	bool "OpenThread CoAP support"
	help
	  Enable CoAP API for the application with use of OpenThread stack

config OPENTHREAD_COAPS
	bool "Secure CoAP API support"
	depends on OPENTHREAD_COAP

config OPENTHREAD_COAP_BLOCK
	bool "CoAP Block-wise option support"

config OPENTHREAD_COAP_OBSERVE
	bool "CoAP Observe option support"

config OPENTHREAD_COMMISSIONER
	bool "Commissioner functions support"
	help
	  Enable commissioner capability in OpenThread stack. Note, that DTLS
	  handshake used in the commissioning procedure requires a larger
	  mbedTLS heap than the default value. A minimum recommended value of
	  CONFIG_MBEDTLS_HEAP_SIZE for the commissioning is 10KB.

config OPENTHREAD_CHANNEL_MANAGER
	bool "Channel manager support"
	depends on OPENTHREAD_CHANNEL_MONITOR

config OPENTHREAD_CHANNEL_MONITOR
	bool "Channel monitor support"

config OPENTHREAD_CHILD_SUPERVISION
	bool "Child supervision support"

config OPENTHREAD_CSL_RECEIVER
	bool "CSL Receiver support"
	help
	  Enable CSL Receiver support for Thread 1.2

config OPENTHREAD_DHCP6_CLIENT
	bool "DHCPv6 client support"

config OPENTHREAD_DHCP6_SERVER
	bool "DHCPv6 server support"

config OPENTHREAD_DIAG
	bool "Diagnostic functions support"
	help
	  Enable OpenThread CLI diagnostic commands

config OPENTHREAD_DNS_CLIENT
	bool "DNS client support"

config OPENTHREAD_DNS_DSO
	bool "DNS Stateful Operations (DSO) support"

config OPENTHREAD_DNSSD_SERVER
	bool "DNS-SD server support"

config OPENTHREAD_DUA
	bool "Domain Unicast Address support"
	help
	  Enable Domain Unicast Address feature for Thread 1.2

config OPENTHREAD_LOG_LEVEL_DYNAMIC
	bool "Dynamic log level control"

config OPENTHREAD_ECDSA
	bool "ECDSA support"

config OPENTHREAD_EXCLUDE_TCPLP_LIB
	bool "Exclude TCPlp library from build"

config OPENTHREAD_EXTERNAL_HEAP
	bool "External heap support"

config OPENTHREAD_IP6_FRAGM
	bool "IPv6 fragmentation support"

config OPENTHREAD_JAM_DETECTION
	bool "Jam detection support"

config OPENTHREAD_JOINER
	bool "Joiner functions support"
	help
	  Enable joiner capability in OpenThread stack. Note, that DTLS
	  handshake used in the commissioning procedure requires a larger
	  mbedTLS heap than the default value. A minimum recommended value of
	  CONFIG_MBEDTLS_HEAP_SIZE for the commissioning is 10KB.

config OPENTHREAD_LEGACY
	bool "Legacy network support"

config OPENTHREAD_RAW
	bool "Raw Link support"

config OPENTHREAD_MAC_FILTER
	bool "MAC filter support"

config OPENTHREAD_MLE_LONG_ROUTES
	bool "MLE long routes extension (experimental)"
	help
	  Enable MLE long routes extension (experimental, breaks Thread conformance)

config OPENTHREAD_MLR
	bool "Multicast Listener Registration support"
	help
	  Enable Multicast Listener Registration support for Thread 1.2

config OPENTHREAD_MTD_NETDIAG
	bool "TMF network diagnostics on MTDs"

config OPENTHREAD_MULTIPLE_INSTANCE
	bool "OpenThread multiple instances"

config OPENTHREAD_NEIGHBOR_DISCOVERY_AGENT
	bool "Neighbor discovery agent support"

config OPENTHREAD_NETDATA_PUBLISHER
	bool "Thread Network Data publisher"

config OPENTHREAD_PING_SENDER
	bool "Ping sender support"

config OPENTHREAD_PLATFORM_UDP
	bool "Platform UDP support"

config OPENTHREAD_PLATFORM_NETIF
	bool "Platform netif support"

config OPENTHREAD_REFERENCE_DEVICE
	bool "Reference Device support"
	help
	  Enable Thread Certification reference device support in OpenThread stack

config OPENTHREAD_ENABLE_SERVICE
	bool "Service support"
	help
	  Enable Thread Services capability in OpenThread stack

config OPENTHREAD_SLAAC
	bool "SLAAC support"

config OPENTHREAD_SNTP_CLIENT
	bool "SNTP Client support"

config OPENTHREAD_TIME_SYNC
	bool "The time synchronization service feature"

config OPENTHREAD_TREL
	bool "TREL radio link for Thread over Infrastructure feature"

config OPENTHREAD_UDP_FORWARD
	bool "UDP forward support"

config OPENTHREAD_SETTINGS_RAM
	bool "Volatile-only storage of settings"

config OPENTHREAD_OTNS
	bool "OTNS support"

config OPENTHREAD_FULL_LOGS
	bool "OpenThread full logs"

config OPENTHREAD_LINK_METRICS_INITIATOR
	bool "Link Metrics initiator"

config OPENTHREAD_LINK_METRICS_SUBJECT
	bool "Link Metrics subject"

config OPENTHREAD_SRP_CLIENT
	bool "SRP Client support"
	select OPENTHREAD_ECDSA

config OPENTHREAD_SRP_SERVER
	bool "SRP Server support"
	select OPENTHREAD_ECDSA

config OPENTHREAD_CSL_DEBUG
	bool "CSL debugging"

config OPENTHREAD_DATSET_UPDATER
	bool "Dataset updater"

config OPENTHREAD_UPTIME
	bool "Openthread uptime counter"
