# 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"
config OPENTHREAD_THREAD_VERSION_1_3_1
	bool "Version 1.3.1"
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 "1.3.1" if OPENTHREAD_THREAD_VERSION_1_3_1
	default "unknown"

config OPENTHREAD_ANYCAST_LOCATOR
	bool "Anycast locator support"

config OPENTHREAD_BACKBONE_ROUTER
	bool "Backbone Router functionality"

config OPENTHREAD_BACKBONE_ROUTER_DUA_NDPROXYING
	bool "BBR DUA ND Proxy support"

config OPENTHREAD_BACKBONE_ROUTER_MULTICAST_ROUTING
	bool "BBR MR support"

config OPENTHREAD_BORDER_AGENT
	bool "Border Agent support"

config OPENTHREAD_BORDER_ROUTER
	bool "Border Router support"

config OPENTHREAD_BORDER_ROUTING
	bool "Border routing support"

config OPENTHREAD_BORDER_ROUTING_COUNTERS
	bool "Border routing counters support"

config OPENTHREAD_CHANNEL_MONITOR
	bool "Channel monitor support"

config OPENTHREAD_CHANNEL_MANAGER
	bool "Channel manager support"
	depends on OPENTHREAD_CHANNEL_MONITOR

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

config OPENTHREAD_COAP_BLOCK
	bool "CoAP Block-wise option support"

config OPENTHREAD_COAP_OBSERVE
	bool "CoAP Observe option support"

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

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_CSL_DEBUG
	bool "CSL debugging"

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

config OPENTHREAD_DATASET_UPDATER
	bool "Dataset updater"

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_CLIENT_OVER_TCP
	bool "DNS query over tcp"

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

config OPENTHREAD_DNS_UPSTREAM_QUERY
	bool "Forwarding DNS queries to upstream"
	help
	  Enable forwarding DNS queries to platform DNS upstream API

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_ECDSA
	bool "ECDSA support"

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

config OPENTHREAD_EXTERNAL_HEAP
	bool "External heap support"

config OPENTHREAD_FIREWALL
	bool "Firewall support"

config OPENTHREAD_FULL_LOGS
	bool "OpenThread full logs"

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_LINK_METRICS_INITIATOR
	bool "Link Metrics initiator"

config OPENTHREAD_LINK_METRICS_SUBJECT
	bool "Link Metrics subject"

config OPENTHREAD_LOG_LEVEL_DYNAMIC
	bool "Dynamic log level control"

config OPENTHREAD_MAC_FILTER
	bool "MAC filter support"

config OPENTHREAD_MESH_DIAG
	bool "Mesh Diagnostics"
	depends on OPENTHREAD_FTD
	help
	  Enable Mesh Diagnostics

config OPENTHREAD_MESSAGE_USE_HEAP
	bool "Heap allocator for message buffers"

config OPENTHREAD_MLE_LONG_ROUTES
	bool "MLE long routes extension (experimental)"
	select 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_MULTIPLE_INSTANCE
	bool "OpenThread multiple instances"

config OPENTHREAD_NAT64_BORDER_ROUTING
	bool "Border routing NAT64 support"

config OPENTHREAD_NAT64_TRANSLATOR
	bool "NAT64 translator support"

config OPENTHREAD_NETDIAG_CLIENT
	bool "TMF network diagnostics on client"

config OPENTHREAD_NEIGHBOR_DISCOVERY_AGENT
	bool "Neighbor discovery agent support"

config OPENTHREAD_NETDATA_PUBLISHER
	bool "Thread Network Data publisher"

config OPENTHREAD_OTNS
	bool "OTNS support"

config OPENTHREAD_PING_SENDER
	bool "Ping sender support"

config OPENTHREAD_PLATFORM_NETIF
	bool "Platform netif support"

config OPENTHREAD_PLATFORM_UDP
	bool "Platform UDP support"

choice OPENTHREAD_POWER_SUPPLY_CHOICE
	prompt "Power supply configuration"
	default OPENTHREAD_POWER_SUPPLY_EXTERNAL

config OPENTHREAD_POWER_SUPPLY_BATTERY
	bool "OT_POWER_SUPPLY_BATTERY"

config OPENTHREAD_POWER_SUPPLY_EXTERNAL
	bool "OT_POWER_SUPPLY_EXTERNAL"

config OPENTHREAD_POWER_SUPPLY_EXTERNAL_STABLE
	bool "OT_POWER_SUPPLY_EXTERNAL_STABLE"

config OPENTHREAD_POWER_SUPPLY_EXTERNAL_UNSTABLE
	bool "OT_POWER_SUPPLY_EXTERNAL_UNSTABLE"
endchoice

config OPENTHREAD_POWER_SUPPLY
	string
	prompt "Power supply configuration"
	default "BATTERY" if OPENTHREAD_POWER_SUPPLY_BATTERY
	default "EXTERNAL" if OPENTHREAD_POWER_SUPPLY_EXTERNAL
	default "EXTERNAL_STABLE" if OPENTHREAD_POWER_SUPPLY_EXTERNAL_STABLE
	default "EXTERNAL_UNSTABLE" if OPENTHREAD_POWER_SUPPLY_EXTERNAL_UNSTABLE
	default ""

config OPENTHREAD_RAW
	bool "Raw Link support"

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

config OPENTHREAD_SETTINGS_RAM
	bool "Volatile-only storage of settings"

config OPENTHREAD_SLAAC
	bool "SLAAC support"

config OPENTHREAD_SNTP_CLIENT
	bool "SNTP Client support"

config OPENTHREAD_SRP_CLIENT
	bool "SRP Client support"
	select OPENTHREAD_ECDSA

config OPENTHREAD_SRP_SERVER
	bool "SRP Server support"
	select OPENTHREAD_NETDATA_PUBLISHER
	select OPENTHREAD_ECDSA

config OPENTHREAD_TIME_SYNC
	bool "The time synchronization service feature"

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

config OPENTHREAD_TX_BEACON_PAYLOAD
	bool "TX beacon payload support"

config OPENTHREAD_UDP_FORWARD
	bool "UDP forward support"

config OPENTHREAD_UPTIME
	bool "Openthread uptime counter"
