diff --git a/drivers/at86rf2xx/at86rf2xx.c b/drivers/at86rf2xx/at86rf2xx.c index 8ec4a9f12e..e51ed6e8a5 100644 --- a/drivers/at86rf2xx/at86rf2xx.c +++ b/drivers/at86rf2xx/at86rf2xx.c @@ -37,7 +37,7 @@ #include "debug.h" -void at86rf2xx_setup(at86rf2xx_t *dev, const at86rf2xx_params_t *params) +void at86rf2xx_setup(at86rf2xx_t *dev, const at86rf2xx_params_t *params, uint8_t index) { netdev_t *netdev = (netdev_t *)dev; @@ -56,6 +56,8 @@ void at86rf2xx_setup(at86rf2xx_t *dev, const at86rf2xx_params_t *params) /* initialize device descriptor */ dev->params = *params; #endif + + netdev_register(netdev, NETDEV_AT86RF2XX, index); } static void at86rf2xx_disable_clock_output(at86rf2xx_t *dev) diff --git a/drivers/include/at86rf2xx.h b/drivers/include/at86rf2xx.h index aefad4cd4a..6632119f71 100644 --- a/drivers/include/at86rf2xx.h +++ b/drivers/include/at86rf2xx.h @@ -294,8 +294,10 @@ typedef struct { * * @param[out] dev device descriptor * @param[in] params parameters for device initialization + * @param[in] index index of @p params in a global parameter struct array. + * If initialized manually, pass a unique identifier instead. */ -void at86rf2xx_setup(at86rf2xx_t *dev, const at86rf2xx_params_t *params); +void at86rf2xx_setup(at86rf2xx_t *dev, const at86rf2xx_params_t *params, uint8_t index); /** * @brief Trigger a hardware reset and configure radio with default values diff --git a/pkg/lwip/contrib/lwip.c b/pkg/lwip/contrib/lwip.c index d1f6c2c950..a345bffe58 100644 --- a/pkg/lwip/contrib/lwip.c +++ b/pkg/lwip/contrib/lwip.c @@ -200,7 +200,7 @@ void lwip_bootstrap(void) } #elif defined(MODULE_AT86RF2XX) for (unsigned i = 0; i < LWIP_NETIF_NUMOF; i++) { - at86rf2xx_setup(&at86rf2xx_devs[i], &at86rf2xx_params[i]); + at86rf2xx_setup(&at86rf2xx_devs[i], &at86rf2xx_params[i], i); if (netif_add(&netif[i], &at86rf2xx_devs[i], lwip_netdev_init, tcpip_6lowpan_input) == NULL) { DEBUG("Could not add at86rf2xx device\n"); diff --git a/pkg/openthread/contrib/openthread.c b/pkg/openthread/contrib/openthread.c index c6b23b465c..3dc83fea79 100644 --- a/pkg/openthread/contrib/openthread.c +++ b/pkg/openthread/contrib/openthread.c @@ -64,7 +64,7 @@ void openthread_bootstrap(void) /* setup netdev modules */ #ifdef MODULE_AT86RF2XX - at86rf2xx_setup(&at86rf2xx_dev, &at86rf2xx_params[0]); + at86rf2xx_setup(&at86rf2xx_dev, &at86rf2xx_params[0], 0); netdev_t *netdev = (netdev_t *) &at86rf2xx_dev; #endif #ifdef MODULE_KW41ZRF diff --git a/pkg/openwsn/contrib/openwsn.c b/pkg/openwsn/contrib/openwsn.c index 4f9c578b41..5fc7bf1c62 100644 --- a/pkg/openwsn/contrib/openwsn.c +++ b/pkg/openwsn/contrib/openwsn.c @@ -71,7 +71,7 @@ int openwsn_bootstrap(void) #ifdef MODULE_AT86RF2XX netdev_t *netdev = (netdev_t *)&at86rf2xx_dev.netdev.netdev; - at86rf2xx_setup(&at86rf2xx_dev, &at86rf2xx_params[0]); + at86rf2xx_setup(&at86rf2xx_dev, &at86rf2xx_params[0], 0); (void) netdev; #endif diff --git a/sys/net/gnrc/netif/init_devs/auto_init_at86rf2xx.c b/sys/net/gnrc/netif/init_devs/auto_init_at86rf2xx.c index 4e00f2806c..a108a56838 100644 --- a/sys/net/gnrc/netif/init_devs/auto_init_at86rf2xx.c +++ b/sys/net/gnrc/netif/init_devs/auto_init_at86rf2xx.c @@ -51,7 +51,7 @@ void auto_init_at86rf2xx(void) for (unsigned i = 0; i < AT86RF2XX_NUM; i++) { LOG_DEBUG("[auto_init_netif] initializing at86rf2xx #%u\n", i); - at86rf2xx_setup(&at86rf2xx_devs[i], &at86rf2xx_params[i]); + at86rf2xx_setup(&at86rf2xx_devs[i], &at86rf2xx_params[i], i); #if defined(MODULE_GNRC_GOMACH) gnrc_netif_gomach_create(&_netif[i], _at86rf2xx_stacks[i], AT86RF2XX_MAC_STACKSIZE, diff --git a/tests/driver_at86rf2xx/main.c b/tests/driver_at86rf2xx/main.c index 7edab95bb5..41a7d67d88 100644 --- a/tests/driver_at86rf2xx/main.c +++ b/tests/driver_at86rf2xx/main.c @@ -96,7 +96,7 @@ int main(void) netdev_t *dev = (netdev_t *)(&devs[i]); printf("Initializing AT86RF2xx radio at SPI_%d\n", p->spi); - at86rf2xx_setup(&devs[i], p); + at86rf2xx_setup(&devs[i], p, i); dev->event_callback = _event_cb; if (dev->driver->init(dev) < 0) { continue; diff --git a/tests/driver_at86rf2xx_aes/main.c b/tests/driver_at86rf2xx_aes/main.c index b51eeddf20..55fe4f5cb3 100644 --- a/tests/driver_at86rf2xx_aes/main.c +++ b/tests/driver_at86rf2xx_aes/main.c @@ -141,7 +141,7 @@ int main(void) { at86rf2xx_t dev; bool success = true; - at86rf2xx_setup(&dev, &at86rf2xx_params[0]); + at86rf2xx_setup(&dev, &at86rf2xx_params[0], 0); dev.netdev.netdev.event_callback = _event_cb; if (dev.netdev.netdev.driver->init(&dev.netdev.netdev) != 0) { return EXIT_FAILURE;