# Kconfig.nrf5 - Nordic Semiconductor nRF5 802.15.4 configuration options
#
#
# Copyright (c) 2017 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0
#

choice IEEE802154_NRF5_DRIVER_SUPPORT
	prompt "nRF52 series IEEE 802.15.4 Driver support"
	depends on NETWORKING && SOC_NRF52840
	default IEEE802154_NRF5_DISABLED

config IEEE802154_NRF5_DISABLED
	bool "Driver disabled"

config IEEE802154_NRF5
	bool "Regular mode"
	select NET_L2_IEEE802154
	select HAS_NORDIC_DRIVERS

config IEEE802154_NRF5_RAW
	bool "RAW mode"
	select NET_L2_RAW_CHANNEL
	select HAS_NORDIC_DRIVERS
	help
	Enable IEEE802154_CC2520 driver with RAW channel

	The CC2520 driver with RAW channel allows to export radio interface
	over USB making an USB 802.15.4 dongle.

endchoice

if IEEE802154_NRF5 || IEEE802154_NRF5_RAW

config IEEE802154_NRF5_DRV_NAME
	string "nRF52 IEEE 802.15.4 Driver's name"
	default "IEEE802154_nrf5"
	help
	This option sets the driver name

config IEEE802154_NRF5_RX_STACK_SIZE
	int "Driver's internal RX thread stack size"
	default 800
	help
	This option sets the driver's stack size for its internal RX thread.
	The default value should be sufficient, but in case it proves to be
	a too little one, this option makes it easy to play with the size.

config IEEE802154_NRF5_INIT_PRIO
	int "nRF52 IEEE 802.15.4 initialization priority"
	default 80
	help
	Set the initialization priority number. Do not mess with it unless
	you know what you are doing.

choice IEEE802154_NRF5_CCA_MODE
	prompt "nRF52 IEEE 802.15.4 CCA mode"
	default IEEE802154_NRF5_CCA_MODE_ED
	help
	CCA mode

config IEEE802154_NRF5_CCA_MODE_ED
	bool "Energy Above Threshold"

config IEEE802154_NRF5_CCA_MODE_CARRIER
	bool "Carrier Seen"

config IEEE802154_NRF5_CCA_MODE_CARRIER_AND_ED
	bool "Energy Above Threshold AND Carrier Seen"

config IEEE802154_NRF5_CCA_MODE_CARRIER_OR_ED
	bool "Energy Above Threshold OR Carrier Seen"

endchoice

config IEEE802154_NRF5_CCA_ED_THRESHOLD
	int "nRF52 IEEE 802.15.4 CCA Energy Detection threshold"
	default 45
	help
	If energy detected in a given channel is above the value then the channel
	is deemed busy. The unit is defined as per 802.15.4-2006 spec.

config IEEE802154_NRF5_CCA_CORR_THRESHOLD
	int "nRF52 IEEE 802.15.4 CCA Correlator threshold"
	default 45

config IEEE802154_NRF5_CCA_CORR_LIMIT
	int "nRF52 IEEE 802.15.4 CCA Correlator limit"
	default 2
	help
	Limit for occurrences above correlator threshold. When not equal to zero the
	correlator based signal detect is enabled.

endif
