# 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"
config OPENTHREAD_THREAD_VERSION_1_4
	bool "Version 1.4"
endchoice # OPENTHREAD_STACK_VERSION

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 "1.4" if OPENTHREAD_THREAD_VERSION_1_4
	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_BLE_TCAT
	bool "BLE TCAT support"
	select EXPERIMENTAL

config OPENTHREAD_BORDER_AGENT
	bool "Border Agent support"

config OPENTHREAD_BORDER_AGENT_EPHEMERAL_KEY_ENABLE
	bool "Border agent ephemeral PSKc"

config OPENTHREAD_BORDER_AGENT_ID
	bool "Create and save border agent ID"

config OPENTHREAD_BORDER_AGENT_MESHCOP_SERVICE
	bool "Border agent meshcop service"

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_BORDER_ROUTING_DHCP6_PD
	bool "DHCPv6-PD support in border routing"

config OPENTHREAD_BORDER_ROUTING_DHCP6_PD_CLIENT
	bool "DHCPv6-PD client support in border routing"

config OPENTHREAD_CHANNEL_MONITOR
	bool "Channel monitor support"

config OPENTHREAD_CHANNEL_MONITOR_AUTO_START
	bool "Start channel monitor with interface"

config OPENTHREAD_CHANNEL_MANAGER
	bool "Channel manager support"
	depends on OPENTHREAD_CHANNEL_MONITOR

config OPENTHREAD_CHANNEL_MANAGER_CSL
	bool "Channel manager for CSL channel"

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_CSL_RECEIVER_LOCAL_TIME_SYNC
	bool "Use local time for CSL synchronization"
	help
	  Use host time rather than radio platform time to track elapsed time
	  since last CSL synchronization. This reduces the usage of radio API
	  calls, and it is useful for platforms in which those are costly.

config OPENTHREAD_DEVICE_PROP_LEADER_WEIGHT
	bool "Device props for leader weight"
	default n if (OPENTHREAD_THREAD_VERSION_1_1 || \
		      OPENTHREAD_THREAD_VERSION_1_2 || \
		      OPENTHREAD_THREAD_VERSION_1_3)
	default y
	help
	  Enable the device properties which are then used to determine and set
	  the Leader Weight.

config OPENTHREAD_DATASET_UPDATER
	bool "Dataset updater"

config OPENTHREAD_WAKEUP_COORDINATOR
	bool "Wake-up Coordinator support"
	select OPENTHREAD_CSL_RECEIVER

config OPENTHREAD_WAKEUP_END_DEVICE
	bool "Wake-up End Device support"
	imply OPENTHREAD_CSL_RECEIVER

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_DISCOVERY_PROXY
	bool "DNS-SD discovery proxy 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_DYNAMIC_STORE_FRAME_AHEAD_COUNTER
	bool "Dynamic store frame ahead counter"

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_MANAGER
	bool "Link Metrics manager"

config OPENTHREAD_LINK_METRICS_SUBJECT
	bool "Link Metrics subject"

config OPENTHREAD_PLATFORM_LOG_CRASH_DUMP
	bool "Platform log crash dump"

config OPENTHREAD_LOG_LEVEL_DYNAMIC
	bool "Dynamic log level control"

config OPENTHREAD_MAC_FILTER
	bool "MAC filter support"

config OPENTHREAD_MAC_BEACON_PAYLOAD_PARSING
	bool "MAC beacon payload parsing support"

config OPENTHREAD_MULTICAST_DNS
	bool "Multicast DNS (mDNS)"

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_MULTIPAN_RCP
	bool "OpenThread multipan rcp"

config OPENTHREAD_MULTIPLE_INSTANCE
	bool "OpenThread multiple instances"

config OPENTHREAD_MULTIPLE_INSTANCE_NUM
	int "OpenThread number of instances"
	depends on OPENTHREAD_MULTIPLE_INSTANCE
	default 3

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_NETDIAG_VENDOR_INFO
	bool "Allow setting vendor info at runtime"

config OPENTHREAD_NEIGHBOR_DISCOVERY_AGENT
	bool "Neighbor discovery agent support"

config OPENTHREAD_NETDATA_PUBLISHER
	bool "Thread Network Data publisher"

config OPENTHREAD_OPERATIONAL_DATASET_AUTO_INIT
	bool "Operational dataset auto init"
	default y

config OPENTHREAD_OTNS
	bool "OTNS support"

config OPENTHREAD_PING_SENDER
	bool "Ping sender support"

config OPENTHREAD_PLATFORM_RADIO_COEX_ENABLE
	bool "Platform radio coexistence support"
	help
	  Enable radio coexistence support in the platform.

config OPENTHREAD_PLATFORM_KEY_REF
	bool "Platform cryptographic key reference support"
	help
	  Enable usage of cryptographic key references instead of literal keys.
	  This requires a crypto backend library that supports key references.

choice OPENTHREAD_PLATFORM_BOOTLOADER_MODE_CHOICE
	prompt "Platform bootloader mode configuration"
	optional

config OPENTHREAD_PLATFORM_BOOTLOADER_MODE_RETENTION
	bool "Bootloader mode support with boot mode retention API"
	depends on RETENTION_BOOT_MODE && REBOOT
	select OPENTHREAD_PLATFORM_BOOTLOADER_MODE

config OPENTHREAD_PLATFORM_BOOTLOADER_MODE_GPIO
	bool "Bootloader mode support with GPIO pin trigger"
	select OPENTHREAD_PLATFORM_BOOTLOADER_MODE
endchoice # OPENTHREAD_PLATFORM_BOOTLOADER_MODE

config OPENTHREAD_PLATFORM_BOOTLOADER_MODE
	bool
	help
	  Platform bootloader mode 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 # OPENTHREAD_POWER_SUPPLY_CHOICE

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_RADIO_STATS
	bool "Support for Radio Statistics"

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_ADV_PROXY
	bool "SRP Server Advertising Proxy support"
	depends on OPENTHREAD_SRP_SERVER
	depends on OPENTHREAD_BORDER_ROUTING

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_SRP_SERVER_FAST_START
	bool "SRP server fast start"

config OPENTHREAD_TIME_SYNC
	bool "The time synchronization service feature [EXPERIMENTAL]"
	select EXPERIMENTAL

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

config OPENTHREAD_TREL_MANAGE_DNSSD
	bool "TREL to manage DNSSD and peer discovery"

config OPENTHREAD_TX_BEACON_PAYLOAD
	bool "TX beacon payload support"

config OPENTHREAD_TX_QUEUE_STATISTICS
	bool "TX queue statistics support"

config OPENTHREAD_UDP_FORWARD
	bool "UDP forward support"

config OPENTHREAD_UPTIME
	bool "Openthread uptime counter"
	default y if OPENTHREAD_FTD

config OPENTHREAD_VERHOEFF_CHECKSUM
	bool "Verhoeff checksum"

config OPENTHREAD_CLI_VENDOR_EXTENSION
	string "Path to CMake file to define and link Openthread CLI vendor extension"
