diff --git a/pkg/lwip/init_devs/auto_init_kw2xrf.c b/pkg/lwip/init_devs/auto_init_kw2xrf.c new file mode 100644 index 0000000000000..0fe4415172785 --- /dev/null +++ b/pkg/lwip/init_devs/auto_init_kw2xrf.c @@ -0,0 +1,55 @@ +/* +* Copyright (C) 2022 HAW Hamburg +* +* 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 sys_auto_init_lwip_netif + * @{ + * + * @file + * @brief Auto initialization for KW2XRF network interfaces + * + * @author José I. Álamos + */ + +#include "kw2xrf.h" +#include "kw2xrf_params.h" + +#include "lwip_init_devs.h" + +#include "bhp/msg.h" +#include "net/netdev/ieee802154_submac.h" + +#define ENABLE_DEBUG 0 +#include "debug.h" + +#define NETIF_KW2XRF_NUMOF ARRAY_SIZE(kw2xrf_params) + +static lwip_netif_t netif[NETIF_KW2XRF_NUMOF]; +static kw2xrf_t kw2xrf_devs[NETIF_KW2XRF_NUMOF]; +static netdev_ieee802154_submac_t kw2xrf_netdev[NETIF_KW2XRF_NUMOF]; + +static void auto_init_kw2xrf(void) +{ + for (unsigned i = 0; i < NETIF_KW2XRF_NUMOF; i++) { + bhp_msg_init(&netif[i].bhp, &kw2xrf_radio_hal_irq_handler, &kw2xrf_netdev[i].submac.dev); + kw2xrf_init(&kw2xrf_devs[i], &kw2xrf_params[i], &kw2xrf_netdev[i].submac.dev, + bhp_msg_isr_cb, &netif[i].bhp); + + netdev_register(&kw2xrf_netdev[i].dev.netdev, NETDEV_KW2XRF, i); + netdev_ieee802154_submac_init(&kw2xrf_netdev[i]); + + if (lwip_add_6lowpan(&netif[i], &kw2xrf_netdev[i].dev.netdev) == NULL) { + DEBUG("Could not add kw2xrf device\n"); + return; + } + } +} + +LWIP_INIT_6LOWPAN_NETIF(auto_init_kw2xrf); +/** @} */