diff --git a/cpu/native/include/socket_zep.h b/cpu/native/include/socket_zep.h index 7529e7d8ef..4731cb0a6a 100644 --- a/cpu/native/include/socket_zep.h +++ b/cpu/native/include/socket_zep.h @@ -98,8 +98,10 @@ typedef struct { * * @param[in] dev the preallocated socket_zep_t device handle to setup * @param[in] params initialization parameters + * @param[in] index index of @p params in a global parameter struct array. + * If initialized manually, pass a unique identifier instead. */ -void socket_zep_setup(socket_zep_t *dev, const socket_zep_params_t *params); +void socket_zep_setup(socket_zep_t *dev, const socket_zep_params_t *params, uint8_t index); /** * @brief Cleanup socket resources diff --git a/cpu/native/socket_zep/socket_zep.c b/cpu/native/socket_zep/socket_zep.c index 1291961a05..9d1ae2f0e9 100644 --- a/cpu/native/socket_zep/socket_zep.c +++ b/cpu/native/socket_zep/socket_zep.c @@ -408,7 +408,7 @@ static void _send_zep_hello(socket_zep_t *dev) } } -void socket_zep_setup(socket_zep_t *dev, const socket_zep_params_t *params) +void socket_zep_setup(socket_zep_t *dev, const socket_zep_params_t *params, uint8_t index) { int res; @@ -418,6 +418,8 @@ void socket_zep_setup(socket_zep_t *dev, const socket_zep_params_t *params) memset(dev, 0, sizeof(socket_zep_t)); dev->netdev.netdev.driver = &socket_zep_driver; + netdev_register(&dev->netdev.netdev, NETDEV_SOCKET_ZEP, index); + res = _bind_local(params); if (res < 0) { diff --git a/drivers/include/net/netdev.h b/drivers/include/net/netdev.h index e5d3623d6a..2a1b2b040d 100644 --- a/drivers/include/net/netdev.h +++ b/drivers/include/net/netdev.h @@ -317,6 +317,7 @@ typedef enum { NETDEV_SAM0_ETH, NETDEV_ESP_NOW, NETDEV_NRF24L01P_NG, + NETDEV_SOCKET_ZEP, /* add more if needed */ } netdev_type_t; /** @} */ diff --git a/pkg/lwip/contrib/lwip.c b/pkg/lwip/contrib/lwip.c index 3d6d3da994..a2d8eac3da 100644 --- a/pkg/lwip/contrib/lwip.c +++ b/pkg/lwip/contrib/lwip.c @@ -227,7 +227,7 @@ void lwip_bootstrap(void) } #elif defined(MODULE_SOCKET_ZEP) for (unsigned i = 0; i < LWIP_NETIF_NUMOF; i++) { - socket_zep_setup(&socket_zep_devs[i], &socket_zep_params[i]); + socket_zep_setup(&socket_zep_devs[i], &socket_zep_params[i], i); if (netif_add(&netif[i], &socket_zep_devs[i], lwip_netdev_init, tcpip_6lowpan_input) == NULL) { DEBUG("Could not add socket_zep device\n"); diff --git a/sys/net/gnrc/netif/init_devs/auto_init_socket_zep.c b/sys/net/gnrc/netif/init_devs/auto_init_socket_zep.c index b509bb0bdb..c57ba7de33 100644 --- a/sys/net/gnrc/netif/init_devs/auto_init_socket_zep.c +++ b/sys/net/gnrc/netif/init_devs/auto_init_socket_zep.c @@ -46,7 +46,7 @@ void auto_init_socket_zep(void) for (int i = 0; i < SOCKET_ZEP_MAX; i++) { LOG_DEBUG("[auto_init_netif: initializing socket ZEP device #%u\n", i); /* setup netdev device */ - socket_zep_setup(&_socket_zeps[i], &socket_zep_params[i]); + socket_zep_setup(&_socket_zeps[i], &socket_zep_params[i], i); gnrc_netif_ieee802154_create(&_netif[i], _socket_zep_stacks[i], SOCKET_ZEP_MAC_STACKSIZE, SOCKET_ZEP_MAC_PRIO, "socket_zep", diff --git a/tests/socket_zep/main.c b/tests/socket_zep/main.c index 4f0ef80084..3243584525 100644 --- a/tests/socket_zep/main.c +++ b/tests/socket_zep/main.c @@ -52,7 +52,7 @@ static void test_init(void) printf("Initializing socket ZEP with (local: [%s]:%s, remote: [%s]:%s)\n", p->local_addr, p->local_port, p->remote_addr, p->remote_port); - socket_zep_setup(&_dev, p); + socket_zep_setup(&_dev, p, 0); netdev->event_callback = _event_cb; expect(netdev->driver->init(netdev) >= 0); _print_info(netdev);