mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
276ad5716a
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.
114 lines
3.2 KiB
Plaintext
114 lines
3.2 KiB
Plaintext
# Copyright (c) 2022 Otto-von-Guericke-Universität Magdeburg
|
|
# 2022 HAW Hamburg
|
|
#
|
|
# 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.
|
|
|
|
if TEST_KCONFIG
|
|
|
|
config MODULE_NETDEV_DEFAULT
|
|
bool "Enable default network devices on the platform"
|
|
help
|
|
Say y to enable the drivers for the default network devices present on
|
|
your platform.
|
|
|
|
config MODULE_NETDEV
|
|
bool
|
|
prompt "Use netdev interface for networking devices" if HAVE_NON_NETDEV_INTERFACE
|
|
select MODULE_EUI_PROVIDER
|
|
help
|
|
Network device driver API. Netdev is a generic low-level network
|
|
interface that provides a uniform API for network stacks to interact
|
|
with network device drivers.
|
|
|
|
config MODULE_NETDEV_ETH
|
|
bool
|
|
select MODULE_NETDEV
|
|
select MODULE_NETDEV_REGISTER
|
|
help
|
|
Common code for netdev ethernet drivers.
|
|
|
|
if MODULE_NETDEV
|
|
|
|
config NETDEV_REGISTER_SIGNAL
|
|
bool "Signal when a network device is registered"
|
|
|
|
menu "IEEE 802.15.4 Device Drivers"
|
|
visible if MODULE_NETDEV_IEEE802154
|
|
|
|
config MODULE_NETDEV_IEEE802154_RX_TIMESTAMP
|
|
bool "Timestamp received frames"
|
|
|
|
endmenu # IEEE 802.15.4 Device Drivers
|
|
|
|
config MODULE_NETDEV_IEEE802154
|
|
bool
|
|
select MODULE_NETDEV_REGISTER
|
|
select MODULE_IEEE802154
|
|
select MODULE_RANDOM
|
|
help
|
|
Common code for netdev IEEE 802.15.4 drivers.
|
|
|
|
config MODULE_NETDEV_IEEE802154_OQPSK
|
|
bool
|
|
help
|
|
Support for OQPSK modulation in netdev IEEE 802.15.4.
|
|
|
|
config MODULE_NETDEV_IEEE802154_MR_FSK
|
|
bool
|
|
help
|
|
Support for MR-FSK modulation in netdev IEEE 802.15.4.
|
|
|
|
config MODULE_NETDEV_IEEE802154_MR_OFDM
|
|
bool
|
|
help
|
|
Support for MR-OFDM modulation in netdev IEEE 802.15.4.
|
|
|
|
config MODULE_NETDEV_IEEE802154_MR_OQPSK
|
|
bool
|
|
help
|
|
Support for MR-OQPSK modulation in netdev IEEE 802.15.4.
|
|
|
|
config MODULE_NETDEV_IEEE802154_MULTIMODE
|
|
bool
|
|
help
|
|
Allow for multiple physical layer modes.
|
|
|
|
config MODULE_NETDEV_REGISTER
|
|
bool
|
|
help
|
|
Network device registration.
|
|
|
|
endif # MODULE_NETDEV
|
|
|
|
# This does not depend on MODULE_NETDEV, as it is merely a flag to say if a
|
|
# given network driver is used via the netdev API, it provides the new netdev
|
|
# API. However, the driver may also provide a API other than netdev that might
|
|
# be used directly.
|
|
config MODULE_NETDEV_NEW_API
|
|
bool
|
|
help
|
|
Support for new API (non-blocking send). With this, netdev
|
|
drivers implementing `netdev_driver_t::confirm_send()` can be used.
|
|
|
|
# Comment above MODULE_NETDEV_NEW_API also applies here.
|
|
config MODULE_NETDEV_LEGACY_API
|
|
bool
|
|
help
|
|
Support for legacy netdev API (blocking send). With this, netdev drivers
|
|
**NOT** implementing `netdev_driver_t::confirm_send()` can be used.
|
|
|
|
endif # TEST_KCONFIG
|
|
|
|
config HAVE_NON_NETDEV_INTERFACE
|
|
bool
|
|
help
|
|
Indicates that a non-netdev interface is exposed by selected drivers.
|
|
|
|
config HAVE_IEEE802154_RADIO_HAL_INTERFACE
|
|
bool
|
|
select HAVE_NON_NETDEV_INTERFACE
|
|
help
|
|
Indicates that a device driver implements the IEEE 802.15.4 radio HAL interface.
|