# Thread network configuration options

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

config OPENTHREAD_PANID
	int "Default PAN ID"
	default 43981

config OPENTHREAD_CHANNEL
	int "Default Channel"
	default 11

config OPENTHREAD_NETWORK_NAME
	string "Default network name"
	default "ot_zephyr"
	help
	  Network name for OpenThread

config OPENTHREAD_XPANID
	string "Default Extended PAN ID"
	default "de:ad:00:be:ef:00:ca:fe"
	help
	  Extended PAN ID for OpenThread with
	  format "de:ad:00:be:ef:00:ca:fe"

config OPENTHREAD_JOINER_AUTOSTART
	bool "Enable automatic joiner start"
	depends on OPENTHREAD_JOINER
	depends on !OPENTHREAD_MANUAL_START

config OPENTHREAD_JOINER_PSKD
	string "Default pre shared key for the Joiner"
	depends on OPENTHREAD_JOINER_AUTOSTART
	default "J01NME"

choice
	prompt "OpenThread device type"
	help
	  This option selects Thread network device type

config OPENTHREAD_FTD
	bool "FTD - Full Thread Device"
config OPENTHREAD_MTD
	bool "MTD - Minimal Thread Device"
endchoice

config OPENTHREAD_MTD_SED
	bool "SED - Sleepy End Device"
	depends on OPENTHREAD_MTD

config OPENTHREAD_POLL_PERIOD
	int "Poll period for sleepy end devices [ms]"
	default 236000
	depends on OPENTHREAD_MTD_SED
