# Kconfig - 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 n
	default y if NET_L2_IEEE802154 || NET_L2_OPENTHREAD

if IEEE802154

config SYS_LOG_IEEE802154_DRIVER_LEVEL
	int "IEEE802154 driver log level"
	depends on SYS_LOG
	default 0
	help
	  Sets log level for 802.15.4 drivers.

	  Levels are:

	  - 0 OFF, do not write

	  - 1 ERROR, only write SYS_LOG_ERR

	  - 2 WARNING, write SYS_LOG_WRN in addition to previous level

	  - 3 INFO, write SYS_LOG_INF in addition to previous levels

	  - 4 DEBUG, write SYS_LOG_DBG in addition to previous levels

config IEEE802154_RAW_MODE
	bool "Use IEEE 802.15.4 driver without the MAC stack"
	default n if NET_L2_IEEE802154
	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"

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
	default n

config IEEE802154_UPIPE_DRV_NAME
	string "UART PIPE Driver name"
	default "IEEE802154_UPIPE"
	depends on 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 ff
	help
	  This is the byte 4 of the MAC address.

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

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

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

endif # IEEE802154_UPIPE_RANDOM_MAC

endif # IEEE802154
