# IEEE 802.15.4 driver configuration options

# Copyright (c) 2015 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

#
# IEEE 802.15.4 options
#
menuconfig IEEE802154
	bool "IEEE 802.15.4 drivers options"
	default y if NET_L2_IEEE802154 || NET_L2_OPENTHREAD

if IEEE802154

config IEEE802154_RAW_MODE
	bool "Use IEEE 802.15.4 driver without the MAC stack"
	select NET_RAW_MODE
	help
	  This option enables using the drivers in a so-called "raw" mode,
	  i.e. without a MAC stack (the net L2 layer for 802.15.4 will not
	  be built). Used only for very specific cases, such as wpan_serial
	  and wpanusb samples.

config IEEE802154_RDEV
	bool
	help
	  PHY is a ranging-capable device (RDEV)

source "drivers/ieee802154/Kconfig.cc2520"

source "drivers/ieee802154/Kconfig.kw41z"

source "drivers/ieee802154/Kconfig.mcr20a"

source "drivers/ieee802154/Kconfig.nrf5"

source "drivers/ieee802154/Kconfig.cc1200"

source "drivers/ieee802154/Kconfig.cc13xx_cc26xx"

source "drivers/ieee802154/Kconfig.rf2xx"

source "drivers/ieee802154/Kconfig.dw1000"

menuconfig IEEE802154_UPIPE
	bool "UART PIPE fake radio driver support for QEMU"
	depends on (BOARD_QEMU_X86 || BOARD_QEMU_CORTEX_M3) && NETWORKING
	select UART_PIPE

if IEEE802154_UPIPE

config IEEE802154_UPIPE_DRV_NAME
	string "UART PIPE Driver name"
	default "IEEE802154_UPIPE"

config IEEE802154_UPIPE_HW_FILTER
	bool "Hw Filtering"
	default y
	help
	  This option assure the driver will process just frames addressed to him.

config IEEE802154_UPIPE_RANDOM_MAC
	bool "Random MAC address"
	default y
	help
	  Generate a random MAC address dynamically.

if ! IEEE802154_UPIPE_RANDOM_MAC

config IEEE802154_UPIPE_MAC4
	hex "MAC Address Byte 4"
	default 0
	range 0 0xff
	help
	  This is the byte 4 of the MAC address.

config IEEE802154_UPIPE_MAC5
	hex "MAC Address Byte 5"
	default 0
	range 0 0xff
	help
	  This is the byte 5 of the MAC address.

config IEEE802154_UPIPE_MAC6
	hex "MAC Address Byte 6"
	default 0
	range 0 0xff
	help
	  This is the byte 6 of the MAC address.

config IEEE802154_UPIPE_MAC7
	hex "MAC Address Byte 7"
	default 0
	range 0 0xff
	help
	  This is the byte 7 of the MAC address.

endif # IEEE802154_UPIPE_RANDOM_MAC

endif # IEEE802154_UPIPE

module = IEEE802154_DRIVER
module-str = IEEE 802.15.4 driver
module-help = Sets log level for IEEE 802.15.4 Device Drivers.
source "subsys/logging/Kconfig.template.log_config"

endif # IEEE802154
