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

menu "IEEE 802.15.4 Radio"

config NET_L2_IEEE802154_RADIO_DFLT_TX_POWER
	int "Default radio transmission power"
	default 0
	help
	  TX power in dbm. Valid setting are: -18, -7, -4, -2, 0, 1, 2, 3, 5
	  If wrongly set, it will silently fail.

config NET_L2_IEEE802154_RADIO_TX_RETRIES
	int "Radio Transmission attempts"
	default 3
	range 1 7
	help
	  Number of transmission attempts radio driver should do, before
	  replying it could not send the packet (MAC PIB attribute:
	  macMaxFrameRetries).

choice
	prompt "Radio protocol"
	default NET_L2_IEEE802154_RADIO_CSMA_CA
	help
	  Select which radio protocol to use.

config NET_L2_IEEE802154_RADIO_CSMA_CA
	bool "IEEE 802.15.4 CSMA-CA radio protocol"
	help
	  Use CSMA-CA mechanism to transmit packets. This is the most common
	  way of transmitting packets and fits most of all the usage.
	  At least until the version 2011 of the specification.

config NET_L2_IEEE802154_RADIO_ALOHA
	bool "IEEE 802.15.4 Aloha radio protocol"
	help
	  Use Aloha mechanism to transmit packets. This is a simplistic
	  way of transmitting packets and fits contexts where radio spectrum
	  is not too heavily loaded.
endchoice

if NET_L2_IEEE802154_RADIO_CSMA_CA

config NET_L2_IEEE802154_RADIO_CSMA_CA_MAX_BO
	int "CSMA maximum backoffs"
	default 4
	range 1 5
	help
	  The maximum number of backoffs the CSMA-CA algorithm will attempt
	  before declaring a channel access failure (MAC PIB attribute:
	  maxMaxCSMABackoffs).

config NET_L2_IEEE802154_RADIO_CSMA_CA_MIN_BE
	int "CSMA MAC minimum backoff exponent"
	default 3
	range 1 8
	help
	  The minimum value of the backoff exponent (BE) in the CSMA-CA
	  algorithm (MAC PIB attribute: macMinBe).

config NET_L2_IEEE802154_RADIO_CSMA_CA_MAX_BE
	int "CSMA MAC maximum backoff exponent"
	default 5
	range 1 8
	help
	  The maximum value of the backoff exponent (BE) in the CSMA-CA
	  algorithm (MAC PIB attribute: macMaxBe).

endif # NET_L2_IEEE802154_RADIO_CSMA_CA

endmenu
