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

menu "IEEE 802.15.4 Radio protocol"

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.

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.

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.

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.

endif # NET_L2_IEEE802154_RADIO_CSMA_CA

endmenu
