From a4358bfdeea19f34bd459a83e9027d72b25bf204 Mon Sep 17 00:00:00 2001 From: haukepetersen <hauke.petersen@fu-berlin.de> Date: Wed, 29 Apr 2015 21:17:07 +0200 Subject: [PATCH] sys/auto-init: added mechanism to init network ifs --- sys/Makefile.include | 3 +++ sys/auto_init/Makefile | 2 ++ sys/auto_init/Makefile.include | 13 +++++++++++++ sys/auto_init/auto_init.c | 5 +++++ sys/include/auto_init.h | 22 +++++++++++++++++++++- 5 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 sys/auto_init/Makefile.include diff --git a/sys/Makefile.include b/sys/Makefile.include index ee40a88f82..ca3bce1556 100644 --- a/sys/Makefile.include +++ b/sys/Makefile.include @@ -1,3 +1,6 @@ +ifneq (,$(filter auto_init,$(USEMODULE))) + include $(RIOTBASE)/sys/auto_init/Makefile.include +endif ifneq (,$(filter nomac,$(USEMODULE))) USEMODULE_INCLUDES += $(RIOTBASE)/sys/net/include endif diff --git a/sys/auto_init/Makefile b/sys/auto_init/Makefile index 6579f361bc..68b09798d5 100644 --- a/sys/auto_init/Makefile +++ b/sys/auto_init/Makefile @@ -6,4 +6,6 @@ ifneq (,$(filter nomac,$(USEMODULE))) INCLUDES += -I$(RIOTBASE)/sys/net/include/ endif +DIRS += $(AUTO_INIT_MODULES) + include $(RIOTBASE)/Makefile.base diff --git a/sys/auto_init/Makefile.include b/sys/auto_init/Makefile.include new file mode 100644 index 0000000000..6a86833666 --- /dev/null +++ b/sys/auto_init/Makefile.include @@ -0,0 +1,13 @@ +# try to find the ng_netif auto init implementation in the application or in +# the board, respectively. If it is not found, nothing is called. +ifneq (,$(filter ng_netif,$(USEMODULE))) + ifneq (,$(wildcard $(APPDIR)/auto_init_ng_netif/*)) + export AUTO_INIT_MODULES += $(APPDIR)/auto_init_ng_netif + export USEMODULE += auto_init_ng_netif + else + ifneq (,$(wildcard $(RIOTBOARD)/$(BOARD)/auto_init_ng_netif/*)) + export AUTO_INIT_MODULES += $(RIOTBOARD)/$(BOARD)/auto_init_ng_netif + export USEMODULE += auto_init_ng_netif + endif + endif +endif diff --git a/sys/auto_init/auto_init.c b/sys/auto_init/auto_init.c index 4e9010538f..c45879dd54 100644 --- a/sys/auto_init/auto_init.c +++ b/sys/auto_init/auto_init.c @@ -12,6 +12,7 @@ * @file auto_init_c * @brief initializes any used module that has a trivial init function * @author Oliver Hahm <oliver.hahm@inria.fr> + * @author Hauke Petersen <hauke.petersen@fu-berlin.de> * @} */ #include <stdint.h> @@ -304,4 +305,8 @@ void auto_init(void) DEBUG("Auto init UDP module.\n"); ng_udp_init(); #endif +#ifdef MODULE_AUTO_INIT_NG_NETIF + DEBUG("Auto init network interfaces.\n"); + auto_init_ng_netif(); +#endif } diff --git a/sys/include/auto_init.h b/sys/include/auto_init.h index 93d4d30a82..d27e608b3a 100644 --- a/sys/include/auto_init.h +++ b/sys/include/auto_init.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Freie Universität Berlin + * Copyright (C) 2010,2015 Freie Universität Berlin * Copyright (C) 2010 Kaspar Schleiser * Copyright (C) 2013 INRIA * @@ -27,6 +27,10 @@ * @{ * * @file auto_init.h + * + * @author Kaspar Schleiser <kaspar@schleiser.de> + * @author Oliver Hahm <oliver.hahm@inria.fr> + * @author Hauke Petersen <hauke.petersen@fu-berlin.de> */ #ifndef AUTO_INIT_H @@ -45,6 +49,22 @@ extern "C" { */ void auto_init(void); +/** + * @brief Initialize network interfaces and register them with ng_netif + * + * This function must be implemented in the board or in the application, + * in a subfolder that must be named auto_init_ng_netif + * This function is called under two conditions: + * 1. the ng_netif module is used (USEMODULE contains ng_netif) + * 2. the board or the application contains a subfolder called + * auto_init_ng_netif + * If the board and the application both contain the mentioned subfolder, + * the contents from the applications subfolder have a higher priority + * and will be compiled and linked, while the board's subfolder is then + * ignored. + */ +void auto_init_ng_netif(void); + #ifdef __cplusplus } #endif -- GitLab