From decadc41a015d441ddf7096dfdbd19957e0d5ce5 Mon Sep 17 00:00:00 2001 From: Benjamin Valentin Date: Tue, 7 Jul 2020 20:51:43 +0200 Subject: [PATCH] drivers/dose: register driver with netdev --- drivers/dose/dose.c | 5 +++-- drivers/include/dose.h | 4 +++- drivers/include/net/netdev.h | 1 + sys/net/gnrc/netif/init_devs/auto_init_dose.c | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/dose/dose.c b/drivers/dose/dose.c index 411b2c2f20..e221bb757a 100644 --- a/drivers/dose/dose.c +++ b/drivers/dose/dose.c @@ -49,7 +49,6 @@ static int _send(netdev_t *dev, const iolist_t *iolist); static int _get(netdev_t *dev, netopt_t opt, void *value, size_t max_len); static int _set(netdev_t *dev, netopt_t opt, const void *value, size_t len); static int _init(netdev_t *dev); -void dose_setup(dose_t *ctx, const dose_params_t *params); static uint16_t crc16_update(uint16_t crc, uint8_t octet) { @@ -540,7 +539,7 @@ static const netdev_driver_t netdev_driver_dose = { .set = _set }; -void dose_setup(dose_t *ctx, const dose_params_t *params) +void dose_setup(dose_t *ctx, const dose_params_t *params, uint8_t index) { static const xtimer_ticks32_t min_timeout = {.ticks32 = XTIMER_BACKOFF}; @@ -557,6 +556,8 @@ void dose_setup(dose_t *ctx, const dose_params_t *params) gpio_irq_disable(ctx->sense_pin); } + netdev_register(&ctx->netdev, NETDEV_DOSE, index); + assert(sizeof(ctx->mac_addr.uint8) == ETHERNET_ADDR_LEN); luid_get_eui48(&ctx->mac_addr); DEBUG("dose dose_setup(): mac addr %02x:%02x:%02x:%02x:%02x:%02x\n", diff --git a/drivers/include/dose.h b/drivers/include/dose.h index 52a2befbbd..0fad35cc69 100644 --- a/drivers/include/dose.h +++ b/drivers/include/dose.h @@ -175,8 +175,10 @@ typedef struct { * @brief Setup a DOSE based device state * @param[out] dev Handle of the device to initialize * @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 dose_setup(dose_t *dev, const dose_params_t *params); +void dose_setup(dose_t *dev, const dose_params_t *params, uint8_t index); #ifdef __cplusplus } diff --git a/drivers/include/net/netdev.h b/drivers/include/net/netdev.h index 97d68196f5..2625645a61 100644 --- a/drivers/include/net/netdev.h +++ b/drivers/include/net/netdev.h @@ -280,6 +280,7 @@ typedef enum { NETDEV_ANY = 0, /**< Will match any device type */ NETDEV_AT86RF215, NETDEV_AT86RF2XX, + NETDEV_DOSE, /* add more if needed */ } netdev_type_t; /** @} */ diff --git a/sys/net/gnrc/netif/init_devs/auto_init_dose.c b/sys/net/gnrc/netif/init_devs/auto_init_dose.c index 70934c8866..11e0dc636d 100644 --- a/sys/net/gnrc/netif/init_devs/auto_init_dose.c +++ b/sys/net/gnrc/netif/init_devs/auto_init_dose.c @@ -44,7 +44,7 @@ void auto_init_dose(void) for (unsigned i = 0; i < DOSE_NUM; i++) { LOG_DEBUG("[auto_init_netif] initializing dose #%d.\n", i); - dose_setup(&dose[i], &dose_params[i]); + dose_setup(&dose[i], &dose_params[i], i); gnrc_netif_ethernet_create(&_netif[i], _netdev_eth_stack[i], DOSE_MAC_STACKSIZE, DOSE_MAC_PRIO, "dose", (netdev_t *)&dose[i]); }