# OpenThread stack features selection

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

choice
	prompt "OpenThread stack version"
	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"
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 "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"
