1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/sys/net/gnrc/link_layer/gomach/Kconfig
Leandro Lanzieri d25fc243c4
treewide: change prefix for generated Kconfig symbols.
This changes the prefixes of the symbols generated from USEMODULE and
USEPKG variables. The changes are as follow:

   KCONFIG_MODULE_ => KCONFIG_USEMODULE_
   KCONFIG_PKG_ => KCONFIG_USEPKG_
   MODULE_ => USEMODULE_
   PKG_ => USEPKG_
2020-08-31 09:37:09 +02:00

228 lines
11 KiB
Plaintext

# Copyright (c) 2020 Freie Universitaet Berlin
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
menuconfig KCONFIG_USEMODULE_GNRC_GOMACH
bool "Configure GNRC GOMACH"
depends on USEMODULE_GNRC_GOMACH
help
Configure the GNRC GOMACH using Kconfig.
if KCONFIG_USEMODULE_GNRC_GOMACH
config GNRC_GOMACH_CP_DURATION_US
int "Wake-up period (WP) duration in microseconds"
default 10000
help
Configure 'CONFIG_GNRC_GOMACH_CP_DURATION_US'. GoMacH adopts the
duty-cycle scheme that, by default, a node only wakes up for a short
period of 'CONFIG_GNRC_GOMACH_CP_DURATION_US' in each cycle. In the
rest of the cycle (except vTDMA), the node turns off the radio to
conserve power. 'CONFIG_GNRC_GOMACH_CP_DURATION_US' should be at least
longer than 'CONFIG_GNRC_GOMACH_MAX_PREAM_INTERVAL_US', thus to
guarantee that the receiver will not miss the preamble packet.
config GNRC_GOMACH_SUPERFRAME_DURATION_US
int "Duration of superframe in microseconds"
default 300000
help
Configure 'CONFIG_GNRC_GOMACH_SUPERFRAME_DURATION_US' ,superframe
duration, i.e , time between two consecutive wake-ups.
The configurations should not be shorter than 10 times of
'CONFIG_GNRC_GOMACH_CP_DURATION_US' and not shorter than the RTT tickle
interval.This configuration governs power consumption and GoMacH's
reactiveness to traffic loads.In GoMacH, nodes adopt duty-cycle scheme
to conserve power. That is, time is divided into repeated cycles
(superframes), and in each cycle, a node only wakes up for a short
period of time for receiving potential incoming packets for itself.
This configuration defines the wake-up interval, or, in other words,
defines the cycle duration used in GoMacH. For more information refer
file 'gomach.h' in sys/include/net/gnrc.
config GNRC_GOMACH_CP_RANDOM_END_US
int "Duration of random period at the end of WP in microseconds"
default 1000
help
Configure 'CONFIG_GNRC_GOMACH_CP_RANDOM_END_US', the maximum duration
of the random period at the end of GoMacH's wake-up period (WP).
Currently, GoMacH's WP is composed of
'CONFIG_GNRC_GOMACH_CP_DURATION_US' and (+)
'CONFIG_GNRC_GOMACH_CP_RANDOM_END_US'. This random was introduced
to avoid beacon collision among neighbor nodes. This configuration may
be removed in the future.
config GNRC_GOMACH_CP_MIN_GAP_US
int "Time interval between neighbor nodes' Wake-up phases in microseconds"
default 25000
help
Configure 'CONFIG_GNRC_GOMACH_CP_MIN_GAP_US', the minimum gap between
neighbor nodes' wake-up phases in GoMacH.To reduce beacon collisions
and transmission collisions, GoMacH intends to avoid neighbor nodes'
phases being too close to each other. This configuration defines the
minimum gap between two nodes's wake-up phases. If the sender finds its
wake-up phase too closed to its receiver's, it will randomly select a
new phase for itself.
config GNRC_GOMACH_WAIT_RX_END_US
int "Timeout for 'NETDEV_EVENT_RX_COMPLETE' in GoMacH in microseconds"
default 6000
help
Configure 'CONFIG_GNRC_GOMACH_WAIT_RX_END_US', the timeout duration for
waiting 'NETDEV_EVENT_RX_COMPLETE' event in GoMacH. Sometimes in
GoMacH, if a node finds RX ongoing when it is just about to enter the
next MAC state, it will set up a timeout for waiting this packet
reception complete with a timeout of this
'CONFIG_GNRC_GOMACH_WAIT_RX_END_US' duration.
config GNRC_GOMACH_NO_TX_ISR_US
int "Timeout duration for confirming TX-No-ISR event in microseconds"
default 50000
help
Configure 'CONFIG_GNRC_GOMACH_NO_TX_ISR_US',the timeout duration for
confirming TX-No-ISR event in GoMacH. This configuration is used to
confirm/catch a case that a transmission doesn't have its
'NETDEV_EVENT_TX_COMPLETE' interrupt event, which is considered as a
hardware abnormal event. Upon this timeout expiration, GoMach will
accordingly take actions to maintain its state-machine.
config GNRC_GOMACH_MAX_PREAM_INTERVAL_US
int "Maximum time interval between two preamble packets in microseconds"
default 6000
help
Configure 'CONFIG_GNRC_GOMACH_MAX_PREAM_INTERVAL_US',the maximum time
interval between two consecutive preamble packets in GoMacH. In GoMacH,
a sender first uses preamble stream to track the receiver's wake-up
phase (WP), if the receiver's WP is unknown. This configuration defines
the maximum time interval between twoconsecutive preamble packets.
config GNRC_GOMACH_PREAMBLE_INTERVAL_US
int "Time interval between two preamble packets in microseconds"
default 2000
help
Configure 'CONFIG_GNRC_GOMACH_PREAMBLE_INTERVAL_US', the time interval
between two consecutive preamble packets in GoMacH. In GoMacH, after a
preamble is sent, the sender sets a timeout with
'CONFIG_GNRC_GOMACH_PREAMBLE_INTERVAL_US' duration for waiting to send
the next preamble. Notably, this configuration is with a very small
value. In GoMacH, for receiving the preamble-ACK packet, the sender
doesn't wait for the whole reception of the preamble-ACK. Instead, it
only waits for the 'NETDEV_EVENT_RX_STARTED' event which leads to
shorter time interval between two consecutive preamble transmissions.
config GNRC_GOMACH_BCAST_INTERVAL_US
int "Time interval between two broadcast packets in microseconds"
default 1000
help
Configure 'CONFIG_GNRC_GOMACH_BCAST_INTERVAL_US', the time interval
between two consecutive broadcast packets in GoMacH. In GoMacH, when
sending a broadcast packet, the sender broadcasts the same packet frame
on its two public channels simultaneously, with a total duration of
'CONFIG_GNRC_GOMACH_SUPERFRAME_DURATION_US' to guarantee that all
neighbors will get a copy. This configuration defines the time interval
between ending two consecutive broadcast copies.
config GNRC_GOMACH_VTDMA_SLOT_SIZE_US
int "Transmission slot size in microseconds **Should not be changed**"
default 5000
help
Configure 'CONFIG_GNRC_GOMACH_VTDMA_SLOT_SIZE_US', the transmission slot
size in GoMacH. GoMacH adopts dynamic slots allocation scheme to
allocate transmission slots to senders that have pending packets. Each
slot is for one data packet with ACK transmission.
'CONFIG_GNRC_GOMACH_VTDMA_SLOT_SIZE_US' is right sufficient for the
transmission of the longest packet in IEEE 802.15.4 with ACK. Should
not be changed.
config GNRC_GOMACH_TX_BUSY_THRESHOLD
int "Maximum number of CSMA TX attempts under busy-indication in the WP"
default 5
help
Configure 'CONFIG_GNRC_GOMACH_TX_BUSY_THRESHOLD', maximum number of
CSMA TX attempts under busy-indication in the WP period of the receiver.
Senders in GoMacH adopt CSMA scheme to send data packets in the WP
period of the receiver. In case of having medium-busy feedback in WP
and the TX failure count (due to busy) is below
'CONFIG_GNRC_GOMACH_TX_BUSY_THRESHOLD', the sender continue to send the
packet with CSMAin the receiver's WP, with the consideration that there
may be multi-senders simultaneously competing in WP and the WP will be
continuously extended (thus the packet can be received).
config GNRC_GOMACH_CP_EXTEND_THRESHOLD
int "Maximum WP period extension number"
default 5
help
Configure 'CONFIG_GNRC_GOMACH_CP_EXTEND_THRESHOLD', maximum WP period
extension number in GoMacH. The WP period of a receiver will be
extended upon each successful packet reception (except receiving
broadcast or preamble packet) to receive more potential incoming
packets.
config GNRC_GOMACH_RX_DUPCHK_UNIT_LIFE
int "Life time of check-duplicate-packet in cycle count"
default 30
help
Configure 'CONFIG_GNRC_GOMACH_RX_DUPCHK_UNIT_LIFE', GoMacH's
check-duplicate-packet unit life time in cycle count. In GoMacH, to
avoid receiving duplicate-packet, we currently introduce a data type of
'gnrc_gomach_dupchk_unit_t' to record the recent senders' information
(especially MAC TX sequence). This configuration defines the
check-duplicate-packet data unit's life time in cycle count. Once
expired, the related data unit will be reset. This configuration maybe
removed in the future.
config GNRC_GOMACH_MAX_ALLOC_SENDER_NUM
int "Maximum number of senders allowed to be allocated slots in one cycle"
default 11
help
Configure 'CONFIG_GNRC_GOMACH_MAX_ALLOC_SENDER_NUM', maximum number of
senders allowed to be allocated slots in one cycle. Exclude the static
GoMacH MAC header payload in the beacon, which is 20 bytes, we have 107
bytes left for constructing the sender-ID list and the related
slots-number list. A combined slots allocation information pair (sender
ID with its corresponded allocate slots number) will cost 9 (8+1)
bytes, thus we can hold a maximum of 11 i.e., ((127 - 20) / 9), sender
IDs in the beacon.
config GNRC_GOMACH_REPHASELOCK_THRESHOLD
int "Maximum number of t2k attempts before t2u"
default 4
help
Configure 'CONFIG_GNRC_GOMACH_REPHASELOCK_THRESHOLD', maximum t2k
attempts before going to t2u in GoMacH.After phase-locked with the
receiver, a sender runs a t2k (transmit-to-known) procedure to transmit
packet to the phase-known device. However, due to factors like timer
driftor busy-channel, a transmission attempt may fail in t2k. If the
t2k failure count has reached this
'CONFIG_GNRC_GOMACH_REPHASELOCK_THRESHOLD', the sender regards
phase-locked failed due to timer drift. In this case, it will adopt t2u
(transmit-to-unknown) procedure to get re-phase-locked with the
receiver.
config GNRC_GOMACH_T2U_RETYR_THRESHOLD
int "Maximum number of t2u attempts before dropping data packet"
default 2
help
Configure 'CONFIG_GNRC_GOMACH_T2U_RETYR_THRESHOLD', maximum number of
t2u attempts before dropping data packet in GoMacH. In case the
receiver's phase is unknown to the sender, the sender adopts the t2u
(transmit-to-unknown) procedure to get phase-locked with the receiver.
This configuration defines the maximum t2u attempts before dropping the
data packet in GoMacH.
config GNRC_GOMACH_MAX_T2U_RETYR_THRESHOLD
int "Maximum t2u attempts before re-initiating radio"
default 10
help
Configure 'CONFIG_GNRC_GOMACH_MAX_T2U_RETYR_THRESHOLD', maximum number
of t2u attempts before re-initiaing radio in GoMacH. After a long
period of run time, a radio may be in wrong condition which needs to be
re-calibrated. This is indicated by having a series of continuous t2u
failures (no preambleACK) in GoMacH. In case we have
'CONFIG_GNRC_GOMACH_MAX_T2U_RETYR_THRESHOLD' number of t2u failures,
then we re-initiate the radio, trying to re-calibrate the radio for
bringing it back to normal condition.
endif # KCONFIG_USEMODULE_GNRC_GOMACH