#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#

menuconfig WIRELESS_IEEE802154
	bool "IEEE 802.15.4 Support"
	default n
	select MM_IOB
	depends on WIRELESS
	---help---
		Enables a Media Access Controller for any IEEE802.15.4 radio
		device. This in turn can be used by higher layer entities
		such as 6lowpan.

if WIRELESS_IEEE802154

config IEEE802154_MAC_DEV
	bool "Character driver for IEEE 802.15.4 MAC layer"
	default n
	depends on WIRELESS_IEEE802154
	---help---
		Enable the device driver to expose the IEEE 802.15.4 MAC layer
		access to user space as IOCTLs

choice
	prompt "IEEE 802.15.4 work queue"
	default MAC802154_LPWORK if SCHED_LPWORK
	default MAC802154_HPWORK if !SCHED_LPWORK && SCHED_HPWORK
	depends on SCHED_WORKQUEUE
	---help---
		Work queue support is required to use the IEEE 802.15.4 MAC layer.
		If the low priority work queue is available, then it should be used by
		the driver.

config MAC802154_HPWORK
	bool "High priority"
	depends on SCHED_HPWORK

config MAC802154_LPWORK
	bool "Low priority"
	depends on SCHED_LPWORK

endchoice # Work queue

config IEEE802154_NTXDESC
	int "Number or TX descriptors"
	default 3
	---help---
		Configured number of Tx descriptors. Default: 3
		
config IEEE802154_IND_PREALLOC
	int "Number of pre-allocated meta-data structures"
	default 20
	---help---
		This specifies the total number of preallocated meta data structures
		must be allocated with each incoming packet.  These may be allocated
		from either from tasking logic or from interrupt level logic.

config IEEE802154_IND_IRQRESERVE
	int "Rserved pre-allocated meta-data structures"
	default 10
	---help---
		If meta-data structures can be allocated from interrupt handlers,
		then this specifies the number of pre-allocatd meta-data structures
		that are reserved for for use only by interrupt handlers.  This may
		be zero to reserve no meta-data structures for interrupt handlers.
		In that case, the allocation will fail if tasking logic has
		allocated them all.

		Interrupt logic will first attempt to allocate from the general,
		pre-allocated structure pool that will contain up to (size
		CONFIG_IEEE802154_IND_PREALLOC - CONFIG_IEEE802154_IND_IRQRESERVE)
		entries.  If that fails, then it will try to take a structure from
		the reserve (size CONFIG_IEEE802154_IND_IRQRESERVE).

		Non-interrupt logic will also first attempt to allocate from the
		general, pre-allocated structure pool.  If that fails, it will
		dynamically allocate the meta data structure with an additional cost in performance.

config IEEE802154_NETDEV
	bool "IEEE802154 6loWPAN Network Device"
	default n
	depends on NET_6LOWPAN && NET_IPv6
	select ARCH_HAVE_NETDEV_STATISTICS
	---help---
		Add support for the IEEE802.15.4 6loWPAN network device built on
		the common IEEE802.15.4 MAC.

if IEEE802154_NETDEV

choice
	prompt "Work queue"
	default IEEE802154_NETDEV_LPWORK if SCHED_LPWORK
	default IEEE802154_NETDEV_HPWORK if !SCHED_LPWORK && SCHED_HPWORK
	depends on SCHED_WORKQUEUE
	---help---
		Work queue support is required to use the IEEE802.15.4 network
		driver.  If the low priority work queue is available, then it shoul
		be used by the loopback driver.

config IEEE802154_NETDEV_HPWORK
	bool "High priority"
	depends on SCHED_HPWORK

config IEEE802154_NETDEV_LPWORK
	bool "Low priority"
	depends on SCHED_LPWORK

endchoice # Work queue
endif # IEEE802154_NETDEV

config IEEE802154_LOOPBACK
	bool "IEEE802154 6loWPAN Loopback"
	default n
	depends on NET_6LOWPAN && NET_IPv6
	select ARCH_HAVE_NETDEV_STATISTICS
	---help---
		Add support for the IEEE802.15.4 6loWPAN Loopback test device.

if IEEE802154_LOOPBACK

choice
	prompt "Work queue"
	default IEEE802154_LOOPBACK_LPWORK if SCHED_LPWORK
	default IEEE802154_LOOPBACK_HPWORK if !SCHED_LPWORK && SCHED_HPWORK
	depends on SCHED_WORKQUEUE
	---help---
		Work queue support is required to use the loopback driver.  If the
		low priority work queue is available, then it should be used by the
		loopback driver.

config IEEE802154_LOOPBACK_HPWORK
	bool "High priority"
	depends on SCHED_HPWORK

config IEEE802154_LOOPBACK_LPWORK
	bool "Low priority"
	depends on SCHED_LPWORK

endchoice # Work queue
endif # IEEE802154_LOOPBACK

endif # WIRELESS_IEEE802154
