mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
sys/auto_init: allow delayed initialisation of gnrc_netif
Co-authored-by: Martine S. Lenders <m.lenders@fu-berlin.de>
This commit is contained in:
parent
698f313f6f
commit
d765098d72
@ -30,6 +30,10 @@ ifneq (,$(filter mpu_stack_guard,$(USEMODULE)))
|
|||||||
FEATURES_REQUIRED += cortexm_mpu
|
FEATURES_REQUIRED += cortexm_mpu
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifneq (,$(filter auto_init_gnrc_netif,$(USEMODULE)))
|
||||||
|
USEMODULE += gnrc_netif_init_devs
|
||||||
|
endif
|
||||||
|
|
||||||
ifneq (,$(filter csma_sender,$(USEMODULE)))
|
ifneq (,$(filter csma_sender,$(USEMODULE)))
|
||||||
USEMODULE += random
|
USEMODULE += random
|
||||||
USEMODULE += xtimer
|
USEMODULE += xtimer
|
||||||
|
@ -210,7 +210,6 @@ PSEUDOMODULES += crypto_aes_unroll
|
|||||||
PSEUDOMODULES += auto_init_%
|
PSEUDOMODULES += auto_init_%
|
||||||
NO_PSEUDOMODULES += auto_init_can
|
NO_PSEUDOMODULES += auto_init_can
|
||||||
NO_PSEUDOMODULES += auto_init_loramac
|
NO_PSEUDOMODULES += auto_init_loramac
|
||||||
NO_PSEUDOMODULES += auto_init_gnrc_netif
|
|
||||||
NO_PSEUDOMODULES += auto_init_saul
|
NO_PSEUDOMODULES += auto_init_saul
|
||||||
NO_PSEUDOMODULES += auto_init_security
|
NO_PSEUDOMODULES += auto_init_security
|
||||||
NO_PSEUDOMODULES += auto_init_storage
|
NO_PSEUDOMODULES += auto_init_storage
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
ifneq (,$(filter auto_init_gnrc_netif,$(USEMODULE)))
|
ifneq (,$(filter gnrc_netif_init,$(USEMODULE)))
|
||||||
DIRS += netif
|
DIRS += netif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -26,134 +26,6 @@
|
|||||||
#include "kernel_defines.h"
|
#include "kernel_defines.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Initializes network devices
|
|
||||||
*/
|
|
||||||
static void _auto_init_gnrc_netif(void)
|
|
||||||
{
|
|
||||||
if (IS_USED(MODULE_STM32_ETH)) {
|
|
||||||
extern void auto_init_stm32_eth(void);
|
|
||||||
auto_init_stm32_eth();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_AUTO_INIT_AT86RF2XX)) {
|
|
||||||
extern void auto_init_at86rf2xx(void);
|
|
||||||
auto_init_at86rf2xx();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_MRF24J40)) {
|
|
||||||
extern void auto_init_mrf24j40(void);
|
|
||||||
auto_init_mrf24j40();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_CC110X)) {
|
|
||||||
extern void auto_init_cc110x(void);
|
|
||||||
auto_init_cc110x();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_CC2420)) {
|
|
||||||
extern void auto_init_cc2420(void);
|
|
||||||
auto_init_cc2420();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_ENCX24J600)) {
|
|
||||||
extern void auto_init_encx24j600(void);
|
|
||||||
auto_init_encx24j600();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_ENC28J60)) {
|
|
||||||
extern void auto_init_enc28j60(void);
|
|
||||||
auto_init_enc28j60();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_ESP_ETH)) {
|
|
||||||
extern void auto_init_esp_eth(void);
|
|
||||||
auto_init_esp_eth();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* don't change the order of auto_init_esp_now and auto_init_esp_wifi */
|
|
||||||
if (IS_USED(MODULE_ESP_NOW)) {
|
|
||||||
extern void auto_init_esp_now(void);
|
|
||||||
auto_init_esp_now();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* don't change the order of auto_init_esp_now and auto_init_esp_wifi */
|
|
||||||
if (IS_USED(MODULE_ESP_WIFI)) {
|
|
||||||
extern void auto_init_esp_wifi(void);
|
|
||||||
auto_init_esp_wifi();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_ETHOS)) {
|
|
||||||
extern void auto_init_ethos(void);
|
|
||||||
auto_init_ethos();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_DOSE)) {
|
|
||||||
extern void auto_init_dose(void);
|
|
||||||
auto_init_dose();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_SLIPDEV)) {
|
|
||||||
extern void auto_init_slipdev(void);
|
|
||||||
auto_init_slipdev();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_CC2538_RF)) {
|
|
||||||
extern void auto_init_cc2538_rf(void);
|
|
||||||
auto_init_cc2538_rf();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_XBEE)) {
|
|
||||||
extern void auto_init_xbee(void);
|
|
||||||
auto_init_xbee();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_KW2XRF)) {
|
|
||||||
extern void auto_init_kw2xrf(void);
|
|
||||||
auto_init_kw2xrf();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_USBUS_CDC_ECM)) {
|
|
||||||
extern void auto_init_netdev_cdcecm(void);
|
|
||||||
auto_init_netdev_cdcecm();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_NETDEV_TAP)) {
|
|
||||||
extern void auto_init_netdev_tap(void);
|
|
||||||
auto_init_netdev_tap();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_SOCKET_ZEP)) {
|
|
||||||
extern void auto_init_socket_zep(void);
|
|
||||||
auto_init_socket_zep();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_NORDIC_SOFTDEVICE_BLE)) {
|
|
||||||
extern void gnrc_nordic_ble_6lowpan_init(void);
|
|
||||||
gnrc_nordic_ble_6lowpan_init();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_NRFMIN)) {
|
|
||||||
extern void gnrc_nrfmin_init(void);
|
|
||||||
gnrc_nrfmin_init();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_W5100)) {
|
|
||||||
extern void auto_init_w5100(void);
|
|
||||||
auto_init_w5100();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_SX127X) && !IS_USED(MODULE_SEMTECH_LORAMAC)) {
|
|
||||||
extern void auto_init_sx127x(void);
|
|
||||||
auto_init_sx127x();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_USED(MODULE_NRF802154)) {
|
|
||||||
extern void auto_init_nrf802154(void);
|
|
||||||
auto_init_nrf802154();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Initializes sensors and actuators for SAUL
|
* @brief Initializes sensors and actuators for SAUL
|
||||||
*/
|
*/
|
||||||
@ -519,7 +391,8 @@ void auto_init(void)
|
|||||||
/* initialize network devices */
|
/* initialize network devices */
|
||||||
if (IS_USED(MODULE_AUTO_INIT_GNRC_NETIF)) {
|
if (IS_USED(MODULE_AUTO_INIT_GNRC_NETIF)) {
|
||||||
LOG_DEBUG("Auto init gnrc_netif.\n");
|
LOG_DEBUG("Auto init gnrc_netif.\n");
|
||||||
_auto_init_gnrc_netif();
|
extern void gnrc_netif_init_devs(void);
|
||||||
|
gnrc_netif_init_devs();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_USED(MODULE_AUTO_INIT_GNRC_UHCPC)) {
|
if (IS_USED(MODULE_AUTO_INIT_GNRC_UHCPC)) {
|
||||||
|
@ -233,6 +233,16 @@ struct gnrc_netif_ops {
|
|||||||
void (*msg_handler)(gnrc_netif_t *netif, msg_t *msg);
|
void (*msg_handler)(gnrc_netif_t *netif, msg_t *msg);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Initialize all available network interfaces.
|
||||||
|
* This function is called automatically if the auto_init_gnrc_netif
|
||||||
|
* module is used.
|
||||||
|
* If only the gnrc_netif_init module is used instead, you can call
|
||||||
|
* this function to manually set up the network interfaces at a later
|
||||||
|
* time.
|
||||||
|
*/
|
||||||
|
void gnrc_netif_init_devs(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Creates a network interface
|
* @brief Creates a network interface
|
||||||
*
|
*
|
||||||
|
@ -6,6 +6,9 @@ endif
|
|||||||
ifneq (,$(filter gnrc_netif_ieee802154,$(USEMODULE)))
|
ifneq (,$(filter gnrc_netif_ieee802154,$(USEMODULE)))
|
||||||
DIRS += ieee802154
|
DIRS += ieee802154
|
||||||
endif
|
endif
|
||||||
|
ifneq (,$(filter gnrc_netif_init_devs,$(USEMODULE)))
|
||||||
|
DIRS += init_devs
|
||||||
|
endif
|
||||||
ifneq (,$(filter gnrc_netif_hdr,$(USEMODULE)))
|
ifneq (,$(filter gnrc_netif_hdr,$(USEMODULE)))
|
||||||
DIRS += hdr
|
DIRS += hdr
|
||||||
endif
|
endif
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
MODULE = auto_init_gnrc_netif
|
MODULE = gnrc_netif_init_devs
|
||||||
|
|
||||||
include $(RIOTBASE)/Makefile.base
|
include $(RIOTBASE)/Makefile.base
|
151
sys/net/gnrc/netif/init_devs/init.c
Normal file
151
sys/net/gnrc/netif/init_devs/init.c
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
/**
|
||||||
|
* Auto initialization for network devices
|
||||||
|
*
|
||||||
|
* Copyright (C) 2020 Freie Universität Berlin
|
||||||
|
* 2020 Kaspar Schleiser <kaspar@schleiser.de>
|
||||||
|
* 2013 INRIA.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* @ingroup sys_auto_init
|
||||||
|
* @{
|
||||||
|
* @file
|
||||||
|
* @brief initializes any used network interface that has a trivial init function
|
||||||
|
* @author Oliver Hahm <oliver.hahm@inria.fr>
|
||||||
|
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
|
||||||
|
* @author Kaspar Schleiser <kaspar@schleiser.de>
|
||||||
|
* @author Martine S. Lenders <m.lenders@fu-berlin.de>
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "kernel_defines.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Initializes network devices
|
||||||
|
*/
|
||||||
|
void gnrc_netif_init_devs(void)
|
||||||
|
{
|
||||||
|
if (IS_USED(MODULE_STM32_ETH)) {
|
||||||
|
extern void auto_init_stm32_eth(void);
|
||||||
|
auto_init_stm32_eth();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_AUTO_INIT_AT86RF2XX)) {
|
||||||
|
extern void auto_init_at86rf2xx(void);
|
||||||
|
auto_init_at86rf2xx();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_MRF24J40)) {
|
||||||
|
extern void auto_init_mrf24j40(void);
|
||||||
|
auto_init_mrf24j40();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_CC110X)) {
|
||||||
|
extern void auto_init_cc110x(void);
|
||||||
|
auto_init_cc110x();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_CC2420)) {
|
||||||
|
extern void auto_init_cc2420(void);
|
||||||
|
auto_init_cc2420();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_ENCX24J600)) {
|
||||||
|
extern void auto_init_encx24j600(void);
|
||||||
|
auto_init_encx24j600();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_ENC28J60)) {
|
||||||
|
extern void auto_init_enc28j60(void);
|
||||||
|
auto_init_enc28j60();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_ESP_ETH)) {
|
||||||
|
extern void auto_init_esp_eth(void);
|
||||||
|
auto_init_esp_eth();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* don't change the order of auto_init_esp_now and auto_init_esp_wifi */
|
||||||
|
if (IS_USED(MODULE_ESP_NOW)) {
|
||||||
|
extern void auto_init_esp_now(void);
|
||||||
|
auto_init_esp_now();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* don't change the order of auto_init_esp_now and auto_init_esp_wifi */
|
||||||
|
if (IS_USED(MODULE_ESP_WIFI)) {
|
||||||
|
extern void auto_init_esp_wifi(void);
|
||||||
|
auto_init_esp_wifi();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_ETHOS)) {
|
||||||
|
extern void auto_init_ethos(void);
|
||||||
|
auto_init_ethos();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_DOSE)) {
|
||||||
|
extern void auto_init_dose(void);
|
||||||
|
auto_init_dose();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_SLIPDEV)) {
|
||||||
|
extern void auto_init_slipdev(void);
|
||||||
|
auto_init_slipdev();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_CC2538_RF)) {
|
||||||
|
extern void auto_init_cc2538_rf(void);
|
||||||
|
auto_init_cc2538_rf();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_XBEE)) {
|
||||||
|
extern void auto_init_xbee(void);
|
||||||
|
auto_init_xbee();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_KW2XRF)) {
|
||||||
|
extern void auto_init_kw2xrf(void);
|
||||||
|
auto_init_kw2xrf();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_USBUS_CDC_ECM)) {
|
||||||
|
extern void auto_init_netdev_cdcecm(void);
|
||||||
|
auto_init_netdev_cdcecm();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_NETDEV_TAP)) {
|
||||||
|
extern void auto_init_netdev_tap(void);
|
||||||
|
auto_init_netdev_tap();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_SOCKET_ZEP)) {
|
||||||
|
extern void auto_init_socket_zep(void);
|
||||||
|
auto_init_socket_zep();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_NORDIC_SOFTDEVICE_BLE)) {
|
||||||
|
extern void gnrc_nordic_ble_6lowpan_init(void);
|
||||||
|
gnrc_nordic_ble_6lowpan_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_NRFMIN)) {
|
||||||
|
extern void gnrc_nrfmin_init(void);
|
||||||
|
gnrc_nrfmin_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_W5100)) {
|
||||||
|
extern void auto_init_w5100(void);
|
||||||
|
auto_init_w5100();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_SX127X) && !IS_USED(MODULE_SEMTECH_LORAMAC)) {
|
||||||
|
extern void auto_init_sx127x(void);
|
||||||
|
auto_init_sx127x();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_USED(MODULE_NRF802154)) {
|
||||||
|
extern void auto_init_nrf802154(void);
|
||||||
|
auto_init_nrf802154();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user