# 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 "Enable Backbone Router functionality"

config OPENTHREAD_BORDER_AGENT
	bool "Enable Border Agent support"

config OPENTHREAD_BORDER_ROUTER
	bool "Enable Border Router support"

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

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

config OPENTHREAD_COAP_BLOCK
	bool "Enable CoAP Block-wise option support"

config OPENTHREAD_COAP_OBSERVE
	bool "Enable CoAP Observe option support"

config OPENTHREAD_COMMISSIONER
	bool "Enable 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 "Enable channel manager support"
	depends on OPENTHREAD_CHANNEL_MONITOR

config OPENTHREAD_CHANNEL_MONITOR
	bool "Enable channel monitor support"

config OPENTHREAD_CHILD_SUPERVISION
	bool "Enable child supervision support"

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

config OPENTHREAD_DHCP6_CLIENT
	bool "Enable DHCPv6 client support"

config OPENTHREAD_DHCP6_SERVER
	bool "Enable DHCPv6 server support"

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

config OPENTHREAD_DNS_CLIENT
	bool "Enable DNS client support"

config OPENTHREAD_DNSSD_SERVER
	bool "Enable DNS-SD server support"

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

config OPENTHREAD_LOG_LEVEL_DYNAMIC
	bool "Enable dynamic log level control"

config OPENTHREAD_ECDSA
	bool "Enable ECDSA support"

config OPENTHREAD_EXTERNAL_HEAP
	bool "Enable external heap support"

config OPENTHREAD_IP6_FRAGM
	bool "Enable IPv6 fragmentation support"

config OPENTHREAD_JAM_DETECTION
	bool "Enable Jam detection support"

config OPENTHREAD_JOINER
	bool "Enable 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 "Enable legacy network support"

config OPENTHREAD_RAW
	bool "Enable raw Link support"

config OPENTHREAD_MAC_FILTER
	bool "Enable MAC filter support"

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

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

config OPENTHREAD_MTD_NETDIAG
	bool "Enable TMF network diagnostics on MTDs"

config OPENTHREAD_MULTIPLE_INSTANCE
	bool "Enable OpenThread multiple instances"

config OPENTHREAD_NEIGHBOR_DISCOVERY_AGENT
	bool "Enable neighbor discovery agent support"

config OPENTHREAD_NETDATA_PUBLISHER
	bool "Enable Thread Network Data publisher"

config OPENTHREAD_PING_SENDER
	bool "Enable ping sender support"

config OPENTHREAD_PLATFORM_UDP
	bool "Enable platform UDP support"

config OPENTHREAD_PLATFORM_NETIF
	bool "Enable platform netif support"

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

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

config OPENTHREAD_SLAAC
	bool "Enable SLAAC support"

config OPENTHREAD_SNTP_CLIENT
	bool "Enable SNTP Client support"

config OPENTHREAD_TIME_SYNC
	bool "Enable the time synchronization service feature"

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

config OPENTHREAD_UDP_FORWARD
	bool "Enable UDP forward support"

config OPENTHREAD_SETTINGS_RAM
	bool "Enable volatile-only storage of settings"

config OPENTHREAD_OTNS
	bool "Enable OTNS support"

config OPENTHREAD_FULL_LOGS
	bool "Enable OpenThread full logs"

config OPENTHREAD_LINK_METRICS_INITIATOR
	bool "Enable Link Metrics initiator"

config OPENTHREAD_LINK_METRICS_SUBJECT
	bool "Enable Link Metrics subject"

config OPENTHREAD_SRP_CLIENT
	bool "Enable SRP Client support"
	select OPENTHREAD_ECDSA

config OPENTHREAD_SRP_SERVER
	bool "Enable SRP Server support"
	select OPENTHREAD_ECDSA
