# 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_NET_IF_NO_AUTO_START
	bool "Disable 802.15.4 interface auto-start"
	help
	  This option allows user to set any configuration and/or filter before
	  the radio becomes operational. For instance, the EUI-64 value can be
	  configured using net_if_set_link_addr(iface, mac, 8,
	  NET_LINK_IEEE802154).
	  When all configurations are done net_if_up() has to be invoked to
	  bring the interface up.

	  This option can be useful when using OpenThread or Zigbee. If you
	  have any doubt about this option leave it as default value.

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)

config IEEE802154_VENDOR_OUI_ENABLE
	bool "Enables setting Vendor Organizationally Unique Identifier"
	help
	  This option enables setting custom vendor
	  OUI using IEEE802154_VENDOR_OUI. After enabling,
	  user is obliged to set IEEE802154_VENDOR_OUI value,
	  as this option has no default value.

if IEEE802154_VENDOR_OUI_ENABLE

config IEEE802154_VENDOR_OUI
	int "Vendor Organizationally Unique Identifier"
	help
	  Custom vendor OUI, which makes 24 most-significant
	  bits of MAC address

endif # IEEE802154_VENDOR_OUI_ENABLE

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
