# 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.

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"

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
