Merge pull request #5440 from cgundogan/pr/auto_init/rpl
auto_init: initialize gnrc_rpl
This commit is contained in:
commit
a10151d5f0
@ -1,3 +1,4 @@
|
|||||||
|
PSEUDOMODULES += auto_init_gnrc_rpl
|
||||||
PSEUDOMODULES += conn
|
PSEUDOMODULES += conn
|
||||||
PSEUDOMODULES += conn_ip
|
PSEUDOMODULES += conn_ip
|
||||||
PSEUDOMODULES += conn_tcp
|
PSEUDOMODULES += conn_tcp
|
||||||
|
|||||||
@ -21,6 +21,7 @@ USEMODULE += gnrc_ipv6_router_default
|
|||||||
USEMODULE += gnrc_udp
|
USEMODULE += gnrc_udp
|
||||||
# Add a routing protocol
|
# Add a routing protocol
|
||||||
USEMODULE += gnrc_rpl
|
USEMODULE += gnrc_rpl
|
||||||
|
USEMODULE += auto_init_gnrc_rpl
|
||||||
# This application dumps received packets to STDIO using the pktdump module
|
# This application dumps received packets to STDIO using the pktdump module
|
||||||
USEMODULE += gnrc_pktdump
|
USEMODULE += gnrc_pktdump
|
||||||
# Additional networking modules that can be dropped if not needed
|
# Additional networking modules that can be dropped if not needed
|
||||||
|
|||||||
@ -256,4 +256,13 @@ void auto_init(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* MODULE_AUTO_INIT_SAUL */
|
#endif /* MODULE_AUTO_INIT_SAUL */
|
||||||
|
|
||||||
|
#ifdef MODULE_AUTO_INIT_GNRC_RPL
|
||||||
|
|
||||||
|
#ifdef MODULE_GNRC_RPL
|
||||||
|
extern void auto_init_gnrc_rpl(void);
|
||||||
|
auto_init_gnrc_rpl();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* MODULE_AUTO_INIT_GNRC_RPL */
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,6 +24,25 @@
|
|||||||
* USEMODULE += gnrc_rpl
|
* USEMODULE += gnrc_rpl
|
||||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
*
|
*
|
||||||
|
* - RPL auto-initialization on interface
|
||||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ {.mk}
|
||||||
|
* USEMODULE += auto_init_gnrc_rpl
|
||||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
*
|
||||||
|
* Auto-Initialization
|
||||||
|
* -------------------
|
||||||
|
*
|
||||||
|
* If the application defines only one interface (`GNRC_NETIF_NUMOF == 1`),
|
||||||
|
* then RPL will be initialized on this interface.
|
||||||
|
*
|
||||||
|
* If the application defines several interfaces (`GNRC_NETIF_NUMOF > 1`),
|
||||||
|
* then RPL will be initialized on the interface `GNRC_RPL_DEFAULT_NETIF`.
|
||||||
|
* Your application is responsible for setting `GNRC_RPL_DEFAULT_NETIF` to a
|
||||||
|
* valid interface PID, e.g. via `CFLAGS`.
|
||||||
|
*
|
||||||
|
* Initializing RPL on multiple interfaces automatically is currently not supported.
|
||||||
|
* Call `gnrc_rpl_init()` manually from your application for the desired interfaces in this case.
|
||||||
|
*
|
||||||
* CFLAGS
|
* CFLAGS
|
||||||
* ------
|
* ------
|
||||||
*
|
*
|
||||||
@ -49,6 +68,12 @@
|
|||||||
* CFLAGS += -DGNRC_RPL_DODAG_CONF_OPTIONAL_ON_JOIN
|
* CFLAGS += -DGNRC_RPL_DODAG_CONF_OPTIONAL_ON_JOIN
|
||||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
*
|
*
|
||||||
|
* - Set interface for auto-initialization if more than one
|
||||||
|
* interface exists (`GNRC_NETIF_NUMOF > 1`)
|
||||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ {.mk}
|
||||||
|
* CFLAGS += -DGNRC_RPL_DEFAULT_NETIF=6
|
||||||
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
*
|
||||||
* @{
|
* @{
|
||||||
*
|
*
|
||||||
* @file
|
* @file
|
||||||
|
|||||||
54
sys/net/gnrc/routing/rpl/gnrc_rpl_auto_init.c
Normal file
54
sys/net/gnrc/routing/rpl/gnrc_rpl_auto_init.c
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2016 Cenk Gündoğan <mail@cgundogan.de>
|
||||||
|
*
|
||||||
|
* 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 gnrc_rpl
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* @file
|
||||||
|
* @brief Auto initialization for gnrc_rpl
|
||||||
|
*
|
||||||
|
* @author Cenk Gündoğan <mail@cgundogan.de>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef MODULE_AUTO_INIT_GNRC_RPL
|
||||||
|
|
||||||
|
#include "net/gnrc.h"
|
||||||
|
#include "net/gnrc/rpl.h"
|
||||||
|
|
||||||
|
#define ENABLE_DEBUG (0)
|
||||||
|
#include "debug.h"
|
||||||
|
|
||||||
|
void auto_init_gnrc_rpl(void)
|
||||||
|
{
|
||||||
|
#if (GNRC_NETIF_NUMOF == 1)
|
||||||
|
kernel_pid_t ifs[GNRC_NETIF_NUMOF];
|
||||||
|
gnrc_netif_get(ifs);
|
||||||
|
DEBUG("auto_init_gnrc_rpl: initializing RPL on interface %" PRIkernel_pid "\n", ifs[0]);
|
||||||
|
gnrc_rpl_init(ifs[0]);
|
||||||
|
return;
|
||||||
|
#elif defined(GNRC_RPL_DEFAULT_NETIF)
|
||||||
|
if (gnrc_netif_exist(GNRC_RPL_DEFAULT_NETIF)) {
|
||||||
|
DEBUG("auto_init_gnrc_rpl: initializing RPL on interface %" PRIkernel_pid "\n",
|
||||||
|
GNRC_RPL_DEFAULT_NETIF);
|
||||||
|
gnrc_rpl_init(GNRC_RPL_DEFAULT_NETIF);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DEBUG("auto_init_gnrc_rpl: could not initialize RPL on interface %" PRIkernel_pid" - "
|
||||||
|
"interface does not exist\n", GNRC_RPL_DEFAULT_NETIF);
|
||||||
|
return;
|
||||||
|
#else
|
||||||
|
DEBUG("auto_init_gnrc_rpl: please specify an interface by setting GNRC_RPL_DEFAULT_NETIF\n");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
typedef int dont_be_pedantic;
|
||||||
|
#endif /* MODULE_AUTO_INIT_GNRC_RPL */
|
||||||
|
|
||||||
|
/** @} */
|
||||||
Loading…
x
Reference in New Issue
Block a user