1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/drivers/dose/Kconfig
Marian Buschsieweke 276ad5716a
sys/net/gnrc/netif: allow checking if a netdev is legacy or new API
A if `netdev_driver_t::confirm_send()` is provided, it provides the
new netdev API. However, detecting the API at runtime and handling
both API styles comes at a cost. This can be optimized in case only
new or only old style netdevs are in use.

To do so, this adds the pseudo modules `netdev_legacy_api` and
`netdev_new_api`. As right now no netdev actually implements the new
API, all netdevs pull in `netdev_legacy_api`. If `netdev_legacy_api` is
in used but `netdev_new_api` is not, we can safely assume at compile
time that only legacy netdevs are in use. Similar, if only
`netdev_new_api` is used, only support for the new API is needed. Only
when both are in use, run time checks are needed.

This provides two helper function to check for a netif if the
corresponding netdev implements the old or the new API. (With one
being the inverse of the other.) They are suitable for constant folding
when only new or only legacy devices are in use. Consequently, dead
branches should be eliminated by the optimizer.
2022-08-17 12:56:07 +02:00

67 lines
2.1 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_DOSE
bool "Configure DOSE driver"
depends on USEMODULE_DOSE
help
Configure the Differentially Operated Serial Ethernet (DOSE)
driver using Kconfig.
if KCONFIG_USEMODULE_DOSE
config DOSE_TIMEOUT_BYTES
int "Transaction timeout in bytes"
default 50
help
Timeout, in bytes at the set baudrate, to bring the driver back into idle state if
the remote side died within a transaction.
endif # KCONFIG_USEMODULE_DOSE
menuconfig MODULE_DOSE
bool "Differentially Operated Serial Ethernet (DOSE)"
depends on TEST_KCONFIG
depends on HAS_PERIPH_GPIO
depends on HAS_PERIPH_GPIO_IRQ
depends on HAS_PERIPH_UART
select MODULE_CHUNKED_RINGBUFFER
select MODULE_EUI_PROVIDER
select MODULE_IOLIST
select MODULE_NETDEV_ETH
select MODULE_NETDEV_LEGACY_API
select MODULE_PERIPH_GPIO
select MODULE_PERIPH_GPIO_IRQ
select MODULE_PERIPH_UART
select MODULE_PERIPH_UART_COLLISION if HAS_PERIPH_UART_COLLISION
select MODULE_PERIPH_UART_RXSTART_IRQ if HAS_PERIPH_UART_RXSTART_IRQ
select MODULE_RANDOM
select MODULE_ZTIMER
select ZTIMER_USEC
help
Allows RIOT nodes to communicate by Ethernet over a serial bus.
if MODULE_DOSE
config MODULE_DOSE_WATCHDOG
bool "Use a watchdog timer"
depends on HAS_PERIPH_TIMER_PERIODIC
select MODULE_PERIPH_TIMER_PERIODIC
help
Say y to utilize a dedicated hardware timer (DOSE_TIMER_DEV which should
be configured in board.h) to periodically check if any interface does
not make progress receiving a frame and abort the RX process. This
speeds up the more critical RX path.
config DOSE_TIMEOUT_BYTES
int "Transaction timeout in bytes"
default 50
help
Timeout, in bytes at the set baudrate, to bring the driver back into idle state if
the remote side died within a transaction.
endif # MODULE_DOSE