# Copyright (c) 2021 Telink Semiconductor
# SPDX-License-Identifier: Apache-2.0

# Telink B91 RF configuration options

menuconfig IEEE802154_TELINK_B91
	bool "Telink B91 RF driver"
	depends on NETWORKING

if IEEE802154_TELINK_B91

config IEEE802154_B91_DRV_NAME
	string "b91 IEEE 802.15.4 Driver's name"
	default "IEEE802154_b91"
	help
	  This option sets the driver name

config IEEE802154_B91_INIT_PRIO
	int "Telink B91 IEEE 802.15.4 initialization priority"
	default 80
	help
	  Set the initialization priority number. Do not mess with it unless
	  you know what you are doing.

config IEEE802154_B91_SET_TXRX_DELAY_US
	int "Tx/Rx modes switching delay time (us)"
	default 120
	help
	  Delay time needed for PLL stabilization during Tx/Rx modes switching.

config IEEE802154_B91_CCA_RSSI_THRESHOLD
	int "CCA procedure RSSI threshold"
	default -50
	help
	  CCA procedure returns true if the current RSSI value is less than
	  this parameter.

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

if ! IEEE802154_B91_RANDOM_MAC

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

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

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

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

endif # ! IEEE802154_B91_RANDOM_MAC
endif # IEEE802154_TELINK_B91
