Merge pull request #16577 from jia200x/pr/netdev/container_of

tree-wide: avoid explicit cast to netdev
This commit is contained in:
José Alamos 2021-07-09 13:07:32 +02:00 committed by GitHub
commit 15ff24a0c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
90 changed files with 954 additions and 455 deletions

View File

@ -214,7 +214,7 @@ void cc2538_setup(cc2538_rf_t *dev)
(void) dev; (void) dev;
#if IS_USED(MODULE_NETDEV_IEEE802154_SUBMAC) #if IS_USED(MODULE_NETDEV_IEEE802154_SUBMAC)
extern ieee802154_dev_t cc2538_rf_dev; extern ieee802154_dev_t cc2538_rf_dev;
netdev_register((netdev_t* )dev, NETDEV_CC2538, 0); netdev_register(&dev->netdev.dev.netdev, NETDEV_CC2538, 0);
netdev_ieee802154_submac_init(&dev->netdev, &cc2538_rf_dev); netdev_ieee802154_submac_init(&dev->netdev, &cc2538_rf_dev);
#endif #endif
cc2538_init(); cc2538_init();

View File

@ -37,7 +37,7 @@ void auto_init_esp_eth(void)
{ {
esp_eth_setup(&_esp_eth_dev); esp_eth_setup(&_esp_eth_dev);
gnrc_netif_ethernet_create(&_netif, _esp_eth_stack, ESP_ETH_STACKSIZE, ESP_ETH_PRIO, gnrc_netif_ethernet_create(&_netif, _esp_eth_stack, ESP_ETH_STACKSIZE, ESP_ETH_PRIO,
"netif-esp-eth", (netdev_t *)&_esp_eth_dev); "netif-esp-eth", &_esp_eth_dev.netdev);
} }
#else /* defined(MODULE_ESP_ETH) && defined(MODULE_GNRC_NETIF_ETHERNET) */ #else /* defined(MODULE_ESP_ETH) && defined(MODULE_GNRC_NETIF_ETHERNET) */

View File

@ -141,7 +141,7 @@ static int _esp_eth_init(netdev_t *netdev)
{ {
DEBUG("%s: netdev=%p\n", __func__, netdev); DEBUG("%s: netdev=%p\n", __func__, netdev);
esp_eth_netdev_t* dev = (esp_eth_netdev_t*)netdev; esp_eth_netdev_t* dev = container_of(netdev, esp_eth_netdev_t, netdev);
mutex_lock(&dev->dev_lock); mutex_lock(&dev->dev_lock);
@ -189,7 +189,7 @@ static int _esp_eth_send(netdev_t *netdev, const iolist_t *iolist)
CHECK_PARAM_RET (netdev != NULL, -ENODEV); CHECK_PARAM_RET (netdev != NULL, -ENODEV);
CHECK_PARAM_RET (iolist != NULL, -EINVAL); CHECK_PARAM_RET (iolist != NULL, -EINVAL);
esp_eth_netdev_t* dev = (esp_eth_netdev_t*)netdev; esp_eth_netdev_t* dev = container_of(netdev, esp_eth_netdev_t, netdev);
if (!_esp_eth_dev.link_up) { if (!_esp_eth_dev.link_up) {
DEBUG("%s: link is down\n", __func__); DEBUG("%s: link is down\n", __func__);
@ -238,7 +238,7 @@ static int _esp_eth_recv(netdev_t *netdev, void *buf, size_t len, void *info)
CHECK_PARAM_RET (netdev != NULL, -ENODEV); CHECK_PARAM_RET (netdev != NULL, -ENODEV);
esp_eth_netdev_t* dev = (esp_eth_netdev_t*)netdev; esp_eth_netdev_t* dev = container_of(netdev, esp_eth_netdev_t, netdev);
mutex_lock(&dev->dev_lock); mutex_lock(&dev->dev_lock);
@ -282,7 +282,7 @@ static int _esp_eth_get(netdev_t *netdev, netopt_t opt, void *val, size_t max_le
CHECK_PARAM_RET (netdev != NULL, -ENODEV); CHECK_PARAM_RET (netdev != NULL, -ENODEV);
CHECK_PARAM_RET (val != NULL, -EINVAL); CHECK_PARAM_RET (val != NULL, -EINVAL);
esp_eth_netdev_t* dev = (esp_eth_netdev_t*)netdev; esp_eth_netdev_t* dev = container_of(netdev, esp_eth_netdev_t, netdev);
switch (opt) { switch (opt) {
case NETOPT_ADDRESS: case NETOPT_ADDRESS:
@ -323,7 +323,7 @@ static void _esp_eth_isr(netdev_t *netdev)
CHECK_PARAM (netdev != NULL); CHECK_PARAM (netdev != NULL);
esp_eth_netdev_t *dev = (esp_eth_netdev_t *) netdev; esp_eth_netdev_t* dev = container_of(netdev, esp_eth_netdev_t, netdev);
switch (dev->event) { switch (dev->event) {
case SYSTEM_EVENT_ETH_RX_DONE: case SYSTEM_EVENT_ETH_RX_DONE:

View File

@ -97,7 +97,7 @@ static int _send(gnrc_netif_t *netif, gnrc_pktsnip_t *pkt)
static gnrc_pktsnip_t *_recv(gnrc_netif_t *netif) static gnrc_pktsnip_t *_recv(gnrc_netif_t *netif)
{ {
netdev_t *dev = netif->dev; netdev_t *dev = netif->dev;
esp_now_netdev_t *esp_now = (esp_now_netdev_t*)dev; esp_now_netdev_t *esp_now = container_of(dev, esp_now_netdev_t, netdev);
int bytes_expected = dev->driver->recv(dev, NULL, 0, NULL); int bytes_expected = dev->driver->recv(dev, NULL, 0, NULL);
if (bytes_expected <= 0) { if (bytes_expected <= 0) {

View File

@ -180,11 +180,12 @@ static void IRAM_ATTR esp_now_scan_peers_timer_cb(void* arg)
{ {
DEBUG("%s\n", __func__); DEBUG("%s\n", __func__);
esp_now_netdev_t* dev = (esp_now_netdev_t*)arg; netdev_t *netdev = arg;
esp_now_netdev_t *dev = container_of(netdev, esp_now_netdev_t, netdev);
if (dev->netdev.event_callback) { if (dev->netdev.event_callback) {
dev->scan_event++; dev->scan_event++;
netdev_trigger_event_isr((netdev_t*)dev); netdev_trigger_event_isr(&dev->netdev);
} }
} }
@ -245,7 +246,7 @@ static IRAM_ATTR void esp_now_recv_cb(const uint8_t *mac, const uint8_t *data, i
* `NETDEV_EVENT_ISR` first. We can call the receive function directly. * `NETDEV_EVENT_ISR` first. We can call the receive function directly.
*/ */
if (_esp_now_dev.netdev.event_callback) { if (_esp_now_dev.netdev.event_callback) {
_esp_now_dev.netdev.event_callback((netdev_t*)&_esp_now_dev, _esp_now_dev.netdev.event_callback(&_esp_now_dev.netdev,
NETDEV_EVENT_RX_COMPLETE); NETDEV_EVENT_RX_COMPLETE);
} }
@ -499,7 +500,7 @@ static int _send(netdev_t *netdev, const iolist_t *iolist)
CHECK_PARAM_RET(iolist != NULL && iolist->iol_len == ESP_NOW_ADDR_LEN, -EINVAL); CHECK_PARAM_RET(iolist != NULL && iolist->iol_len == ESP_NOW_ADDR_LEN, -EINVAL);
CHECK_PARAM_RET(iolist->iol_next != NULL, -EINVAL); CHECK_PARAM_RET(iolist->iol_next != NULL, -EINVAL);
esp_now_netdev_t *dev = (esp_now_netdev_t*)netdev; esp_now_netdev_t *dev = container_of(netdev, esp_now_netdev_t, netdev);
mutex_lock(&dev->dev_lock); mutex_lock(&dev->dev_lock);
@ -574,7 +575,7 @@ static int _recv(netdev_t *netdev, void *buf, size_t len, void *info)
CHECK_PARAM_RET(netdev != NULL, -ENODEV); CHECK_PARAM_RET(netdev != NULL, -ENODEV);
esp_now_netdev_t* dev = (esp_now_netdev_t*)netdev; esp_now_netdev_t *dev = container_of(netdev, esp_now_netdev_t, netdev);
/* we store source mac address and received data in `buf` */ /* we store source mac address and received data in `buf` */
uint16_t size = dev->rx_len ? ESP_NOW_ADDR_LEN + dev->rx_len : 0; uint16_t size = dev->rx_len ? ESP_NOW_ADDR_LEN + dev->rx_len : 0;
@ -624,7 +625,7 @@ static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len)
CHECK_PARAM_RET(netdev != NULL, -ENODEV); CHECK_PARAM_RET(netdev != NULL, -ENODEV);
CHECK_PARAM_RET(val != NULL, -EINVAL); CHECK_PARAM_RET(val != NULL, -EINVAL);
esp_now_netdev_t *dev = (esp_now_netdev_t*)netdev; esp_now_netdev_t *dev = container_of(netdev, esp_now_netdev_t, netdev);
int res = -ENOTSUP; int res = -ENOTSUP;
switch (opt) { switch (opt) {
@ -682,7 +683,7 @@ static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t max_len)
CHECK_PARAM_RET(netdev != NULL, -ENODEV); CHECK_PARAM_RET(netdev != NULL, -ENODEV);
CHECK_PARAM_RET(val != NULL, -EINVAL); CHECK_PARAM_RET(val != NULL, -EINVAL);
esp_now_netdev_t *dev = (esp_now_netdev_t *) netdev; esp_now_netdev_t *dev = container_of(netdev, esp_now_netdev_t, netdev);
int res = -ENOTSUP; int res = -ENOTSUP;
switch (opt) { switch (opt) {
@ -723,7 +724,7 @@ static void _isr(netdev_t *netdev)
CHECK_PARAM(netdev != NULL); CHECK_PARAM(netdev != NULL);
esp_now_netdev_t *dev = (esp_now_netdev_t*)netdev; esp_now_netdev_t *dev = container_of(netdev, esp_now_netdev_t, netdev);
critical_enter(); critical_enter();

View File

@ -45,7 +45,7 @@ void auto_init_esp_wifi (void)
ESP_WIFI_PRIO, ESP_WIFI_PRIO,
#endif #endif
"netif-esp-wifi", "netif-esp-wifi",
(netdev_t *)&_esp_wifi_dev); &_esp_wifi_dev.netdev);
} }
#else /* defined(MODULE_ESP_WIFI) && defined(MODULE_GNRC_NETIF_ETHERNET) */ #else /* defined(MODULE_ESP_WIFI) && defined(MODULE_GNRC_NETIF_ETHERNET) */

View File

@ -562,7 +562,7 @@ static int _esp_wifi_send(netdev_t *netdev, const iolist_t *iolist)
} }
_esp_wifi_send_is_in = true; _esp_wifi_send_is_in = true;
esp_wifi_netdev_t* dev = (esp_wifi_netdev_t*)netdev; esp_wifi_netdev_t* dev = container_of(netdev, esp_wifi_netdev_t, netdev);
#ifdef MODULE_ESP_WIFI_AP #ifdef MODULE_ESP_WIFI_AP
if (_esp_wifi_dev.sta_connected == 0) { if (_esp_wifi_dev.sta_connected == 0) {
@ -629,7 +629,7 @@ static int _esp_wifi_recv(netdev_t *netdev, void *buf, size_t len, void *info)
assert(netdev != NULL); assert(netdev != NULL);
esp_wifi_netdev_t* dev = (esp_wifi_netdev_t*)netdev; esp_wifi_netdev_t* dev = container_of(netdev, esp_wifi_netdev_t, netdev);
uint16_t size; uint16_t size;
critical_enter(); critical_enter();
@ -688,7 +688,7 @@ static int _esp_wifi_get(netdev_t *netdev, netopt_t opt, void *val, size_t max_l
assert(val != NULL); assert(val != NULL);
#ifndef MODULE_ESP_WIFI_AP #ifndef MODULE_ESP_WIFI_AP
esp_wifi_netdev_t* dev = (esp_wifi_netdev_t*)netdev; esp_wifi_netdev_t* dev = container_of(netdev, esp_wifi_netdev_t, netdev);
#endif /* MODULE_ESP_WIFI_AP */ #endif /* MODULE_ESP_WIFI_AP */
switch (opt) { switch (opt) {
@ -748,7 +748,7 @@ static void _esp_wifi_isr(netdev_t *netdev)
assert(netdev != NULL); assert(netdev != NULL);
esp_wifi_netdev_t *dev = (esp_wifi_netdev_t *) netdev; esp_wifi_netdev_t* dev = container_of(netdev, esp_wifi_netdev_t, netdev);
while (dev->event_recv) { while (dev->event_recv) {
dev->event_recv--; dev->event_recv--;

View File

@ -71,25 +71,25 @@ static int _recv(netdev_t *netdev, void *buf, size_t n, void *info);
static inline void _get_mac_addr(netdev_t *netdev, uint8_t *dst) static inline void _get_mac_addr(netdev_t *netdev, uint8_t *dst)
{ {
netdev_tap_t *dev = (netdev_tap_t*)netdev; netdev_tap_t *dev = container_of(netdev, netdev_tap_t, netdev);
memcpy(dst, dev->addr, ETHERNET_ADDR_LEN); memcpy(dst, dev->addr, ETHERNET_ADDR_LEN);
} }
static inline void _set_mac_addr(netdev_t *netdev, const uint8_t *src) static inline void _set_mac_addr(netdev_t *netdev, const uint8_t *src)
{ {
netdev_tap_t *dev = (netdev_tap_t*)netdev; netdev_tap_t *dev = container_of(netdev, netdev_tap_t, netdev);
memcpy(dev->addr, src, ETHERNET_ADDR_LEN); memcpy(dev->addr, src, ETHERNET_ADDR_LEN);
} }
static inline int _get_promiscuous(netdev_t *netdev) static inline int _get_promiscuous(netdev_t *netdev)
{ {
netdev_tap_t *dev = (netdev_tap_t*)netdev; netdev_tap_t *dev = container_of(netdev, netdev_tap_t, netdev);
return dev->promiscuous; return dev->promiscuous;
} }
static inline int _set_promiscuous(netdev_t *netdev, int value) static inline int _set_promiscuous(netdev_t *netdev, int value)
{ {
netdev_tap_t *dev = (netdev_tap_t*)netdev; netdev_tap_t *dev = container_of(netdev, netdev_tap_t, netdev);
dev->promiscuous = value; dev->promiscuous = value;
return value; return value;
} }
@ -206,7 +206,7 @@ static void _continue_reading(netdev_tap_t *dev)
static int _recv(netdev_t *netdev, void *buf, size_t len, void *info) static int _recv(netdev_t *netdev, void *buf, size_t len, void *info)
{ {
netdev_tap_t *dev = (netdev_tap_t*)netdev; netdev_tap_t *dev = container_of(netdev, netdev_tap_t, netdev);
(void)info; (void)info;
if (!buf) { if (!buf) {
@ -275,7 +275,7 @@ static int _recv(netdev_t *netdev, void *buf, size_t len, void *info)
static int _send(netdev_t *netdev, const iolist_t *iolist) static int _send(netdev_t *netdev, const iolist_t *iolist)
{ {
netdev_tap_t *dev = (netdev_tap_t*)netdev; netdev_tap_t *dev = container_of(netdev, netdev_tap_t, netdev);
struct iovec iov[iolist_count(iolist)]; struct iovec iov[iolist_count(iolist)];
@ -299,7 +299,8 @@ void netdev_tap_setup(netdev_tap_t *dev, const netdev_tap_params_t *params) {
static void _tap_isr(int fd, void *arg) { static void _tap_isr(int fd, void *arg) {
(void) fd; (void) fd;
netdev_t *netdev = (netdev_t *)arg; netdev_tap_t *dev = arg;
netdev_t *netdev = &dev->netdev;
if (netdev->event_callback) { if (netdev->event_callback) {
netdev_trigger_event_isr(netdev); netdev_trigger_event_isr(netdev);
@ -313,7 +314,7 @@ static int _init(netdev_t *netdev)
{ {
DEBUG("%s:%s:%u\n", RIOT_FILE_RELATIVE, __func__, __LINE__); DEBUG("%s:%s:%u\n", RIOT_FILE_RELATIVE, __func__, __LINE__);
netdev_tap_t *dev = (netdev_tap_t*)netdev; netdev_tap_t *dev = container_of(netdev, netdev_tap_t, netdev);
/* check device parametrs */ /* check device parametrs */
if (dev == NULL) { if (dev == NULL) {

View File

@ -104,7 +104,8 @@ static size_t _prep_vector(socket_zep_t *dev, const iolist_t *iolist,
static int _send(netdev_t *netdev, const iolist_t *iolist) static int _send(netdev_t *netdev, const iolist_t *iolist)
{ {
socket_zep_t *dev = (socket_zep_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
socket_zep_t *dev = container_of(netdev_ieee802154, socket_zep_t, netdev);
unsigned n = iolist_count(iolist); unsigned n = iolist_count(iolist);
struct iovec v[n + 2]; struct iovec v[n + 2];
int res; int res;
@ -179,7 +180,8 @@ static inline bool _dst_not_me(socket_zep_t *dev, const void *buf)
static int _recv(netdev_t *netdev, void *buf, size_t len, void *info) static int _recv(netdev_t *netdev, void *buf, size_t len, void *info)
{ {
socket_zep_t *dev = (socket_zep_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
socket_zep_t *dev = container_of(netdev_ieee802154, socket_zep_t, netdev);
int size = 0; int size = 0;
DEBUG("socket_zep::recv(%p, %p, %u, %p)\n", (void *)netdev, buf, DEBUG("socket_zep::recv(%p, %p, %u, %p)\n", (void *)netdev, buf,
@ -263,7 +265,8 @@ static int _recv(netdev_t *netdev, void *buf, size_t len, void *info)
static void _isr(netdev_t *netdev) static void _isr(netdev_t *netdev)
{ {
if (netdev->event_callback) { if (netdev->event_callback) {
socket_zep_t *dev = (socket_zep_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
socket_zep_t *dev = container_of(netdev_ieee802154, socket_zep_t, netdev);
DEBUG("socket_zep::isr: firing %u\n", (unsigned)dev->last_event); DEBUG("socket_zep::isr: firing %u\n", (unsigned)dev->last_event);
netdev->event_callback(netdev, dev->last_event); netdev->event_callback(netdev, dev->last_event);
@ -275,7 +278,7 @@ static void _socket_isr(int fd, void *arg)
{ {
(void)fd; (void)fd;
(void)arg; (void)arg;
netdev_t *netdev = (netdev_t *)arg; netdev_t *netdev = arg;
DEBUG("socket_zep::_socket_isr: %d, %p (netdev == %p)\n", DEBUG("socket_zep::_socket_isr: %d, %p (netdev == %p)\n",
fd, arg, (void *)netdev); fd, arg, (void *)netdev);
@ -283,7 +286,8 @@ static void _socket_isr(int fd, void *arg)
return; return;
} }
if (netdev->event_callback) { if (netdev->event_callback) {
socket_zep_t *dev = (socket_zep_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
socket_zep_t *dev = container_of(netdev_ieee802154, socket_zep_t, netdev);
dev->last_event = NETDEV_EVENT_RX_COMPLETE; dev->last_event = NETDEV_EVENT_RX_COMPLETE;
netdev_trigger_event_isr(netdev); netdev_trigger_event_isr(netdev);
@ -292,7 +296,8 @@ static void _socket_isr(int fd, void *arg)
static int _init(netdev_t *netdev) static int _init(netdev_t *netdev)
{ {
socket_zep_t *dev = (socket_zep_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
socket_zep_t *dev = container_of(netdev_ieee802154, socket_zep_t, netdev);
netdev_ieee802154_reset(&dev->netdev); netdev_ieee802154_reset(&dev->netdev);
@ -305,14 +310,15 @@ static int _init(netdev_t *netdev)
static int _get(netdev_t *netdev, netopt_t opt, void *value, size_t max_len) static int _get(netdev_t *netdev, netopt_t opt, void *value, size_t max_len)
{ {
assert(netdev != NULL); assert(netdev != NULL);
return netdev_ieee802154_get((netdev_ieee802154_t *)netdev, opt, value, max_len); return netdev_ieee802154_get(container_of(netdev, netdev_ieee802154_t, netdev),
opt, value, max_len);
} }
static int _set(netdev_t *netdev, netopt_t opt, const void *value, static int _set(netdev_t *netdev, netopt_t opt, const void *value,
size_t value_len) size_t value_len)
{ {
assert(netdev != NULL); assert(netdev != NULL);
return netdev_ieee802154_set((netdev_ieee802154_t *)netdev, opt, return netdev_ieee802154_set(container_of(netdev, netdev_ieee802154_t, netdev), opt,
value, value_len); value, value_len);
} }

View File

@ -784,7 +784,9 @@ void nrf802154_setup(nrf802154_t *dev)
{ {
(void) dev; (void) dev;
#if IS_USED(MODULE_NETDEV_IEEE802154_SUBMAC) #if IS_USED(MODULE_NETDEV_IEEE802154_SUBMAC)
netdev_t *netdev = (netdev_t*) dev; netdev_ieee802154_submac_t *netdev_submac = &dev->netdev;
netdev_ieee802154_t *netdev_ieee802154 = &netdev_submac->dev;
netdev_t *netdev = &netdev_ieee802154->netdev;
netdev_register(netdev, NETDEV_NRF802154, 0); netdev_register(netdev, NETDEV_NRF802154, 0);
DEBUG("[nrf802154] init submac.\n") DEBUG("[nrf802154] init submac.\n")
netdev_ieee802154_submac_init(&dev->netdev, &nrf802154_hal_dev); netdev_ieee802154_submac_init(&dev->netdev, &nrf802154_hal_dev);

View File

@ -184,5 +184,5 @@ void gnrc_nrfmin_init(void)
/* setup the NRFMIN driver */ /* setup the NRFMIN driver */
nrfmin_setup(); nrfmin_setup();
gnrc_netif_create(&_netif, stack, sizeof(stack), NRFMIN_GNRC_THREAD_PRIO, "nrfmin", gnrc_netif_create(&_netif, stack, sizeof(stack), NRFMIN_GNRC_THREAD_PRIO, "nrfmin",
(netdev_t *)&nrfmin_dev, &gnrc_nrfmin_ops); &nrfmin_dev, &gnrc_nrfmin_ops);
} }

View File

@ -310,7 +310,7 @@ static int stm32_eth_get(netdev_t *dev, netopt_t opt,
static void _timer_cb(void *arg) static void _timer_cb(void *arg)
{ {
netdev_t *dev = (netdev_t *)arg; netdev_t *dev = arg;
uint8_t state = LINK_STATE_DOWN; uint8_t state = LINK_STATE_DOWN;
if (_get_link_status()) { if (_get_link_status()) {
state = LINK_STATE_UP; state = LINK_STATE_UP;

View File

@ -31,7 +31,7 @@
static void _setup_interface(at86rf215_t *dev, const at86rf215_params_t *params, uint8_t index) static void _setup_interface(at86rf215_t *dev, const at86rf215_params_t *params, uint8_t index)
{ {
netdev_t *netdev = (netdev_t *)dev; netdev_t *netdev = &dev->netdev.netdev;
netdev->driver = &at86rf215_driver; netdev->driver = &at86rf215_driver;
dev->params = *params; dev->params = *params;
@ -256,7 +256,7 @@ static void _block_while_busy(at86rf215_t *dev)
do { do {
if (gpio_read(dev->params.int_pin) || dev->timeout) { if (gpio_read(dev->params.int_pin) || dev->timeout) {
at86rf215_driver.isr((netdev_t *) dev); at86rf215_driver.isr(&dev->netdev.netdev);
} }
/* allow the other interface to process events */ /* allow the other interface to process events */
thread_yield(); thread_yield();

View File

@ -86,7 +86,7 @@ static uint8_t _get_best_match(const uint8_t *array, uint8_t len, uint8_t val)
/* executed in the GPIO ISR context */ /* executed in the GPIO ISR context */
static void _irq_handler(void *arg) static void _irq_handler(void *arg)
{ {
netdev_t *netdev = (netdev_t *) arg; netdev_t *netdev = arg;
netdev->event_callback(netdev, NETDEV_EVENT_ISR); netdev->event_callback(netdev, NETDEV_EVENT_ISR);
} }
@ -103,7 +103,8 @@ static inline void _put_sibling_to_sleep(at86rf215_t *dev) {
static int _init(netdev_t *netdev) static int _init(netdev_t *netdev)
{ {
int res; int res;
at86rf215_t *dev = (at86rf215_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
at86rf215_t *dev = container_of(netdev_ieee802154, at86rf215_t, netdev);
/* don't call HW init for both radios */ /* don't call HW init for both radios */
if (is_subGHz(dev) || dev->sibling == NULL) { if (is_subGHz(dev) || dev->sibling == NULL) {
@ -139,7 +140,8 @@ static int _init(netdev_t *netdev)
static int _send(netdev_t *netdev, const iolist_t *iolist) static int _send(netdev_t *netdev, const iolist_t *iolist)
{ {
at86rf215_t *dev = (at86rf215_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
at86rf215_t *dev = container_of(netdev_ieee802154, at86rf215_t, netdev);
size_t len = 0; size_t len = 0;
if (at86rf215_tx_prepare(dev)) { if (at86rf215_tx_prepare(dev)) {
@ -174,7 +176,8 @@ static int _send(netdev_t *netdev, const iolist_t *iolist)
static int _recv(netdev_t *netdev, void *buf, size_t len, void *info) static int _recv(netdev_t *netdev, void *buf, size_t len, void *info)
{ {
at86rf215_t *dev = (at86rf215_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
at86rf215_t *dev = container_of(netdev_ieee802154, at86rf215_t, netdev);
int16_t pkt_len; int16_t pkt_len;
/* get the size of the received packet */ /* get the size of the received packet */
@ -265,7 +268,8 @@ static netopt_state_t _get_state(at86rf215_t *dev)
static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len) static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len)
{ {
at86rf215_t *dev = (at86rf215_t *) netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
at86rf215_t *dev = container_of(netdev_ieee802154, at86rf215_t, netdev);
if (netdev == NULL) { if (netdev == NULL) {
return -ENODEV; return -ENODEV;
@ -360,8 +364,9 @@ static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len)
int res; int res;
if (((res = netdev_ieee802154_get((netdev_ieee802154_t *)netdev, opt, val, if (((res = netdev_ieee802154_get(container_of(netdev, netdev_ieee802154_t, netdev),
max_len)) >= 0) || (res != -ENOTSUP)) { opt, val, max_len)) >= 0)
|| (res != -ENOTSUP)) {
return res; return res;
} }
@ -488,7 +493,8 @@ static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len)
static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t len) static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t len)
{ {
at86rf215_t *dev = (at86rf215_t *) netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
at86rf215_t *dev = container_of(netdev_ieee802154, at86rf215_t, netdev);
int res = -ENOTSUP; int res = -ENOTSUP;
if (dev == NULL) { if (dev == NULL) {
@ -813,7 +819,8 @@ static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t len)
} }
if (res == -ENOTSUP) { if (res == -ENOTSUP) {
res = netdev_ieee802154_set((netdev_ieee802154_t *)netdev, opt, val, len); res = netdev_ieee802154_set(container_of(netdev, netdev_ieee802154_t, netdev),
opt, val, len);
} }
return res; return res;
@ -832,7 +839,7 @@ static void _enable_tx2rx(at86rf215_t *dev)
static void _tx_end(at86rf215_t *dev, netdev_event_t event) static void _tx_end(at86rf215_t *dev, netdev_event_t event)
{ {
netdev_t *netdev = (netdev_t *)dev; netdev_t *netdev = &dev->netdev.netdev;
/* listen to non-ACK packets again */ /* listen to non-ACK packets again */
if (dev->flags & AT86RF215_OPT_ACK_REQUESTED) { if (dev->flags & AT86RF215_OPT_ACK_REQUESTED) {
@ -960,7 +967,7 @@ static inline void _clear_sibling_irq(at86rf215_t *dev) {
static void _handle_edc(at86rf215_t *dev) static void _handle_edc(at86rf215_t *dev)
{ {
netdev_t *netdev = (netdev_t *) dev; netdev_t *netdev = &dev->netdev.netdev;
/* In CCATX mode this function is only triggered if busy */ /* In CCATX mode this function is only triggered if busy */
if (!(dev->flags & AT86RF215_OPT_CCATX)) { if (!(dev->flags & AT86RF215_OPT_CCATX)) {
@ -996,7 +1003,8 @@ static void _handle_edc(at86rf215_t *dev)
/* executed in the radio thread */ /* executed in the radio thread */
static void _isr(netdev_t *netdev) static void _isr(netdev_t *netdev)
{ {
at86rf215_t *dev = (at86rf215_t *) netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
at86rf215_t *dev = container_of(netdev_ieee802154, at86rf215_t, netdev);
uint8_t bb_irq_mask, rf_irq_mask; uint8_t bb_irq_mask, rf_irq_mask;
uint8_t bb_irqs_enabled = BB_IRQ_RXFE | BB_IRQ_TXFE; uint8_t bb_irqs_enabled = BB_IRQ_RXFE | BB_IRQ_TXFE;
@ -1035,7 +1043,7 @@ static void _isr(netdev_t *netdev)
/* If the interrupt pin is still high, there was an IRQ on the other radio */ /* If the interrupt pin is still high, there was an IRQ on the other radio */
if (gpio_read(dev->params.int_pin)) { if (gpio_read(dev->params.int_pin)) {
if (dev->sibling && dev->sibling->state != AT86RF215_STATE_OFF) { if (dev->sibling && dev->sibling->state != AT86RF215_STATE_OFF) {
netdev->event_callback((netdev_t *) dev->sibling, NETDEV_EVENT_ISR); netdev->event_callback(&dev->sibling->netdev.netdev, NETDEV_EVENT_ISR);
} else { } else {
_clear_sibling_irq(dev); _clear_sibling_irq(dev);
} }

View File

@ -283,7 +283,7 @@ size_t at86rf2xx_tx_load(at86rf2xx_t *dev, const uint8_t *data,
void at86rf2xx_tx_exec(at86rf2xx_t *dev) void at86rf2xx_tx_exec(at86rf2xx_t *dev)
{ {
netdev_t *netdev = (netdev_t *)dev; netdev_t *netdev = &dev->netdev.netdev;
#if AT86RF2XX_HAVE_RETRIES #if AT86RF2XX_HAVE_RETRIES
dev->tx_retries = -1; dev->tx_retries = -1;

View File

@ -74,7 +74,9 @@ static void _irq_handler(void *arg)
static int _init(netdev_t *netdev) static int _init(netdev_t *netdev)
{ {
at86rf2xx_t *dev = (at86rf2xx_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev,
netdev_ieee802154_t, netdev);
at86rf2xx_t *dev = container_of(netdev_ieee802154, at86rf2xx_t, netdev);
#if defined(MODULE_AT86RFA1) || defined(MODULE_AT86RFR2) #if defined(MODULE_AT86RFA1) || defined(MODULE_AT86RFR2)
at86rfmega_dev = netdev; at86rfmega_dev = netdev;
@ -114,7 +116,9 @@ static int _init(netdev_t *netdev)
static int _send(netdev_t *netdev, const iolist_t *iolist) static int _send(netdev_t *netdev, const iolist_t *iolist)
{ {
at86rf2xx_t *dev = (at86rf2xx_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev,
netdev_ieee802154_t, netdev);
at86rf2xx_t *dev = container_of(netdev_ieee802154, at86rf2xx_t, netdev);
size_t len = 0; size_t len = 0;
at86rf2xx_tx_prepare(dev); at86rf2xx_tx_prepare(dev);
@ -143,7 +147,9 @@ static int _send(netdev_t *netdev, const iolist_t *iolist)
static int _recv(netdev_t *netdev, void *buf, size_t len, void *info) static int _recv(netdev_t *netdev, void *buf, size_t len, void *info)
{ {
at86rf2xx_t *dev = (at86rf2xx_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev,
netdev_ieee802154_t, netdev);
at86rf2xx_t *dev = container_of(netdev_ieee802154, at86rf2xx_t, netdev);
uint8_t phr; uint8_t phr;
size_t pkt_len; size_t pkt_len;
@ -305,7 +311,9 @@ netopt_state_t _get_state(at86rf2xx_t *dev)
static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len) static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len)
{ {
at86rf2xx_t *dev = (at86rf2xx_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev,
netdev_ieee802154_t, netdev);
at86rf2xx_t *dev = container_of(netdev_ieee802154, at86rf2xx_t, netdev);
if (netdev == NULL) { if (netdev == NULL) {
return -ENODEV; return -ENODEV;
@ -378,8 +386,9 @@ static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len)
int res; int res;
if (((res = netdev_ieee802154_get((netdev_ieee802154_t *)netdev, opt, val, if (((res = netdev_ieee802154_get(container_of(netdev, netdev_ieee802154_t, netdev),
max_len)) >= 0) || (res != -ENOTSUP)) { opt, val, max_len)) >= 0)
|| (res != -ENOTSUP)) {
return res; return res;
} }
@ -470,7 +479,9 @@ static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len)
static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t len) static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t len)
{ {
at86rf2xx_t *dev = (at86rf2xx_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev,
netdev_ieee802154_t, netdev);
at86rf2xx_t *dev = container_of(netdev_ieee802154, at86rf2xx_t, netdev);
if (dev == NULL) { if (dev == NULL) {
return -ENODEV; return -ENODEV;
} }
@ -640,7 +651,8 @@ static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t len)
} }
if (res == -ENOTSUP) { if (res == -ENOTSUP) {
res = netdev_ieee802154_set((netdev_ieee802154_t *)netdev, opt, val, len); res = netdev_ieee802154_set(container_of(netdev, netdev_ieee802154_t, netdev),
opt, val, len);
} }
return res; return res;
@ -697,7 +709,9 @@ static void _isr_send_complete(at86rf2xx_t *dev, uint8_t trac_status)
static inline void _isr_recv_complete(netdev_t *netdev) static inline void _isr_recv_complete(netdev_t *netdev)
{ {
at86rf2xx_t *dev = (at86rf2xx_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev,
netdev_ieee802154_t, netdev);
at86rf2xx_t *dev = container_of(netdev_ieee802154, at86rf2xx_t, netdev);
if (!netdev->event_callback) { if (!netdev->event_callback) {
return; return;
} }
@ -719,7 +733,9 @@ static inline void _isr_recv_complete(netdev_t *netdev)
static void _isr(netdev_t *netdev) static void _isr(netdev_t *netdev)
{ {
at86rf2xx_t *dev = (at86rf2xx_t *) netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev,
netdev_ieee802154_t, netdev);
at86rf2xx_t *dev = container_of(netdev_ieee802154, at86rf2xx_t, netdev);
uint8_t irq_mask; uint8_t irq_mask;
uint8_t state; uint8_t state;
uint8_t trac_status; uint8_t trac_status;
@ -799,7 +815,9 @@ ISR(TRX24_TX_START_vect){
/* __enter_isr(); is not necessary as there is nothing which causes a /* __enter_isr(); is not necessary as there is nothing which causes a
* thread_yield and the interrupt can not be interrupted by an other ISR */ * thread_yield and the interrupt can not be interrupted by an other ISR */
at86rf2xx_t *dev = (at86rf2xx_t *) at86rfmega_dev; netdev_ieee802154_t *netdev_ieee802154 = container_of(at86rfmega_dev,
netdev_ieee802154_t, netdev);
at86rf2xx_t *dev = container_of(netdev_ieee802154, at86rf2xx_t, netdev);
dev->tx_retries++; dev->tx_retries++;
} }
@ -817,7 +835,10 @@ ISR(TRX24_PLL_LOCK_vect, ISR_BLOCK)
avr8_enter_isr(); avr8_enter_isr();
DEBUG("TRX24_PLL_LOCK\n"); DEBUG("TRX24_PLL_LOCK\n");
((at86rf2xx_t *)at86rfmega_dev)->irq_status |= AT86RF2XX_IRQ_STATUS_MASK__PLL_LOCK; netdev_ieee802154_t *netdev_ieee802154 = container_of(at86rfmega_dev,
netdev_ieee802154_t, netdev);
at86rf2xx_t *dev = container_of(netdev_ieee802154, at86rf2xx_t, netdev);
dev->irq_status |= AT86RF2XX_IRQ_STATUS_MASK__PLL_LOCK;
avr8_exit_isr(); avr8_exit_isr();
} }
@ -834,7 +855,10 @@ ISR(TRX24_PLL_UNLOCK_vect, ISR_BLOCK)
avr8_enter_isr(); avr8_enter_isr();
DEBUG("TRX24_PLL_UNLOCK\n"); DEBUG("TRX24_PLL_UNLOCK\n");
((at86rf2xx_t *)at86rfmega_dev)->irq_status |= AT86RF2XX_IRQ_STATUS_MASK__PLL_UNLOCK; netdev_ieee802154_t *netdev_ieee802154 = container_of(at86rfmega_dev,
netdev_ieee802154_t, netdev);
at86rf2xx_t *dev = container_of(netdev_ieee802154, at86rf2xx_t, netdev);
dev->irq_status |= AT86RF2XX_IRQ_STATUS_MASK__PLL_UNLOCK;
avr8_exit_isr(); avr8_exit_isr();
} }
@ -854,7 +878,10 @@ ISR(TRX24_RX_START_vect, ISR_BLOCK)
uint8_t status = *AT86RF2XX_REG__TRX_STATE & AT86RF2XX_TRX_STATUS_MASK__TRX_STATUS; uint8_t status = *AT86RF2XX_REG__TRX_STATE & AT86RF2XX_TRX_STATUS_MASK__TRX_STATUS;
DEBUG("TRX24_RX_START 0x%x\n", status); DEBUG("TRX24_RX_START 0x%x\n", status);
((at86rf2xx_t *)at86rfmega_dev)->irq_status |= AT86RF2XX_IRQ_STATUS_MASK__RX_START; netdev_ieee802154_t *netdev_ieee802154 = container_of(at86rfmega_dev,
netdev_ieee802154_t, netdev);
at86rf2xx_t *dev = container_of(netdev_ieee802154, at86rf2xx_t, netdev);
dev->irq_status |= AT86RF2XX_IRQ_STATUS_MASK__RX_START;
/* Call upper layer to process valid PHR */ /* Call upper layer to process valid PHR */
netdev_trigger_event_isr(at86rfmega_dev); netdev_trigger_event_isr(at86rfmega_dev);
@ -876,7 +903,10 @@ ISR(TRX24_RX_END_vect, ISR_BLOCK)
uint8_t status = *AT86RF2XX_REG__TRX_STATE & AT86RF2XX_TRX_STATUS_MASK__TRX_STATUS; uint8_t status = *AT86RF2XX_REG__TRX_STATE & AT86RF2XX_TRX_STATUS_MASK__TRX_STATUS;
DEBUG("TRX24_RX_END 0x%x\n", status); DEBUG("TRX24_RX_END 0x%x\n", status);
((at86rf2xx_t *)at86rfmega_dev)->irq_status |= AT86RF2XX_IRQ_STATUS_MASK__RX_END; netdev_ieee802154_t *netdev_ieee802154 = container_of(at86rfmega_dev,
netdev_ieee802154_t, netdev);
at86rf2xx_t *dev = container_of(netdev_ieee802154, at86rf2xx_t, netdev);
dev->irq_status |= AT86RF2XX_IRQ_STATUS_MASK__RX_END;
/* Call upper layer to process received data */ /* Call upper layer to process received data */
netdev_trigger_event_isr(at86rfmega_dev); netdev_trigger_event_isr(at86rfmega_dev);
@ -895,7 +925,10 @@ ISR(TRX24_CCA_ED_DONE_vect, ISR_BLOCK)
avr8_enter_isr(); avr8_enter_isr();
DEBUG("TRX24_CCA_ED_DONE\n"); DEBUG("TRX24_CCA_ED_DONE\n");
((at86rf2xx_t *)at86rfmega_dev)->irq_status |= AT86RF2XX_IRQ_STATUS_MASK__CCA_ED_DONE; netdev_ieee802154_t *netdev_ieee802154 = container_of(at86rfmega_dev,
netdev_ieee802154_t, netdev);
at86rf2xx_t *dev = container_of(netdev_ieee802154, at86rf2xx_t, netdev);
dev->irq_status |= AT86RF2XX_IRQ_STATUS_MASK__CCA_ED_DONE;
avr8_exit_isr(); avr8_exit_isr();
} }
@ -913,7 +946,10 @@ ISR(TRX24_XAH_AMI_vect, ISR_BLOCK)
avr8_enter_isr(); avr8_enter_isr();
DEBUG("TRX24_XAH_AMI\n"); DEBUG("TRX24_XAH_AMI\n");
((at86rf2xx_t *)at86rfmega_dev)->irq_status |= AT86RF2XX_IRQ_STATUS_MASK__AMI; netdev_ieee802154_t *netdev_ieee802154 = container_of(at86rfmega_dev,
netdev_ieee802154_t, netdev);
at86rf2xx_t *dev = container_of(netdev_ieee802154, at86rf2xx_t, netdev);
dev->irq_status |= AT86RF2XX_IRQ_STATUS_MASK__AMI;
avr8_exit_isr(); avr8_exit_isr();
} }
@ -929,7 +965,9 @@ ISR(TRX24_TX_END_vect, ISR_BLOCK)
{ {
avr8_enter_isr(); avr8_enter_isr();
at86rf2xx_t *dev = (at86rf2xx_t *) at86rfmega_dev; netdev_ieee802154_t *netdev_ieee802154 = container_of(at86rfmega_dev,
netdev_ieee802154_t, netdev);
at86rf2xx_t *dev = container_of(netdev_ieee802154, at86rf2xx_t, netdev);
uint8_t status = *AT86RF2XX_REG__TRX_STATE & AT86RF2XX_TRX_STATUS_MASK__TRX_STATUS; uint8_t status = *AT86RF2XX_REG__TRX_STATE & AT86RF2XX_TRX_STATUS_MASK__TRX_STATUS;
DEBUG("TRX24_TX_END 0x%x\n", status); DEBUG("TRX24_TX_END 0x%x\n", status);
@ -959,7 +997,10 @@ ISR(TRX24_AWAKE_vect, ISR_BLOCK)
DEBUG("TRX24_AWAKE\n"); DEBUG("TRX24_AWAKE\n");
((at86rf2xx_t *)at86rfmega_dev)->irq_status |= AT86RF2XX_IRQ_STATUS_MASK__AWAKE; netdev_ieee802154_t *netdev_ieee802154 = container_of(at86rfmega_dev,
netdev_ieee802154_t, netdev);
at86rf2xx_t *dev = container_of(netdev_ieee802154, at86rf2xx_t, netdev);
dev->irq_status |= AT86RF2XX_IRQ_STATUS_MASK__AWAKE;
/* Call upper layer to process transceiver wakeup finished */ /* Call upper layer to process transceiver wakeup finished */
netdev_trigger_event_isr(at86rfmega_dev); netdev_trigger_event_isr(at86rfmega_dev);

View File

@ -56,7 +56,7 @@ const netdev_driver_t cc2420_driver = {
static void _irq_handler(void *arg) static void _irq_handler(void *arg)
{ {
netdev_t *dev = (netdev_t *)arg; netdev_t *dev = arg;
netdev_trigger_event_isr(dev); netdev_trigger_event_isr(dev);
} }
@ -96,7 +96,8 @@ static inline int opt_state(void *buf, bool cond)
static int _init(netdev_t *netdev) static int _init(netdev_t *netdev)
{ {
cc2420_t *dev = (cc2420_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
cc2420_t *dev = container_of(netdev_ieee802154, cc2420_t, netdev);
uint16_t reg; uint16_t reg;
@ -135,7 +136,7 @@ static int _init(netdev_t *netdev)
return -1; return -1;
} }
return cc2420_init((cc2420_t *)dev); return cc2420_init(dev);
} }
static void _isr(netdev_t *netdev) static void _isr(netdev_t *netdev)
@ -145,13 +146,15 @@ static void _isr(netdev_t *netdev)
static int _send(netdev_t *netdev, const iolist_t *iolist) static int _send(netdev_t *netdev, const iolist_t *iolist)
{ {
cc2420_t *dev = (cc2420_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
cc2420_t *dev = container_of(netdev_ieee802154, cc2420_t, netdev);
return (int)cc2420_send(dev, iolist); return (int)cc2420_send(dev, iolist);
} }
static int _recv(netdev_t *netdev, void *buf, size_t len, void *info) static int _recv(netdev_t *netdev, void *buf, size_t len, void *info)
{ {
cc2420_t *dev = (cc2420_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
cc2420_t *dev = container_of(netdev_ieee802154, cc2420_t, netdev);
return (int)cc2420_rx(dev, buf, len, info); return (int)cc2420_rx(dev, buf, len, info);
} }
@ -161,7 +164,8 @@ static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len)
return -ENODEV; return -ENODEV;
} }
cc2420_t *dev = (cc2420_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
cc2420_t *dev = container_of(netdev_ieee802154, cc2420_t, netdev);
int ext = netdev_ieee802154_get(&dev->netdev, opt, val, max_len); int ext = netdev_ieee802154_get(&dev->netdev, opt, val, max_len);
if (ext > 0) { if (ext > 0) {
@ -230,7 +234,8 @@ static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t val_len)
return -ENODEV; return -ENODEV;
} }
cc2420_t *dev = (cc2420_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
cc2420_t *dev = container_of(netdev_ieee802154, cc2420_t, netdev);
int ext = netdev_ieee802154_set(&dev->netdev, opt, val, val_len); int ext = netdev_ieee802154_set(&dev->netdev, opt, val, val_len);

View File

@ -70,7 +70,7 @@ static dose_signal_t state_transit_blocked(dose_t *ctx, dose_signal_t signal)
* if this frame should be processed. By queuing NETDEV_EVENT_ISR, * if this frame should be processed. By queuing NETDEV_EVENT_ISR,
* the netif thread will call _isr at some time. */ * the netif thread will call _isr at some time. */
SETBIT(ctx->flags, DOSE_FLAG_RECV_BUF_DIRTY); SETBIT(ctx->flags, DOSE_FLAG_RECV_BUF_DIRTY);
netdev_trigger_event_isr((netdev_t *) ctx); netdev_trigger_event_isr(&ctx->netdev);
} }
if (gpio_is_valid(ctx->sense_pin)) { if (gpio_is_valid(ctx->sense_pin)) {
@ -217,7 +217,7 @@ static void state(dose_t *ctx, dose_signal_t signal)
static void _isr_uart(void *arg, uint8_t c) static void _isr_uart(void *arg, uint8_t c)
{ {
dose_t *dev = (dose_t *) arg; dose_t *dev = arg;
dev->uart_octet = c; dev->uart_octet = c;
state(dev, DOSE_SIGNAL_UART); state(dev, DOSE_SIGNAL_UART);
@ -225,14 +225,14 @@ static void _isr_uart(void *arg, uint8_t c)
static void _isr_gpio(void *arg) static void _isr_gpio(void *arg)
{ {
dose_t *dev = (dose_t *) arg; dose_t *dev = arg;
state(dev, DOSE_SIGNAL_GPIO); state(dev, DOSE_SIGNAL_GPIO);
} }
static void _isr_xtimer(void *arg) static void _isr_xtimer(void *arg)
{ {
dose_t *dev = (dose_t *) arg; dose_t *dev = arg;
state(dev, DOSE_SIGNAL_XTIMER); state(dev, DOSE_SIGNAL_XTIMER);
} }
@ -250,7 +250,7 @@ static void clear_recv_buf(dose_t *ctx)
static void _isr(netdev_t *netdev) static void _isr(netdev_t *netdev)
{ {
dose_t *ctx = (dose_t *) netdev; dose_t *ctx = container_of(netdev, dose_t, netdev);
unsigned irq_state; unsigned irq_state;
int dirty, end; int dirty, end;
@ -307,12 +307,12 @@ static void _isr(netdev_t *netdev)
/* Finally schedule a _recv method call */ /* Finally schedule a _recv method call */
DEBUG("dose _isr(): NETDEV_EVENT_RX_COMPLETE\n"); DEBUG("dose _isr(): NETDEV_EVENT_RX_COMPLETE\n");
ctx->netdev.event_callback((netdev_t *) ctx, NETDEV_EVENT_RX_COMPLETE); ctx->netdev.event_callback(&ctx->netdev, NETDEV_EVENT_RX_COMPLETE);
} }
static int _recv(netdev_t *dev, void *buf, size_t len, void *info) static int _recv(netdev_t *dev, void *buf, size_t len, void *info)
{ {
dose_t *ctx = (dose_t *) dev; dose_t *ctx = container_of(dev, dose_t, netdev);
(void)info; (void)info;
@ -390,7 +390,7 @@ static int send_data_octet(dose_t *ctx, uint8_t c)
static int _send(netdev_t *dev, const iolist_t *iolist) static int _send(netdev_t *dev, const iolist_t *iolist)
{ {
dose_t *ctx = (dose_t *) dev; dose_t *ctx = container_of(dev, dose_t, netdev);
int8_t retries = 3; int8_t retries = 3;
size_t pktlen; size_t pktlen;
uint16_t crc; uint16_t crc;
@ -438,7 +438,7 @@ send:
} }
/* We probably sent the whole packet?! */ /* We probably sent the whole packet?! */
ctx->netdev.event_callback((netdev_t *) ctx, NETDEV_EVENT_TX_COMPLETE); dev->event_callback(dev, NETDEV_EVENT_TX_COMPLETE);
/* Get out of the SEND state */ /* Get out of the SEND state */
state(ctx, DOSE_SIGNAL_END); state(ctx, DOSE_SIGNAL_END);
@ -448,7 +448,7 @@ send:
collision: collision:
DEBUG("dose _send(): collision!\n"); DEBUG("dose _send(): collision!\n");
if (--retries < 0) { if (--retries < 0) {
ctx->netdev.event_callback((netdev_t *) ctx, NETDEV_EVENT_TX_MEDIUM_BUSY); dev->event_callback(dev, NETDEV_EVENT_TX_MEDIUM_BUSY);
return -EBUSY; return -EBUSY;
} }
goto send; goto send;
@ -456,7 +456,7 @@ collision:
static int _get(netdev_t *dev, netopt_t opt, void *value, size_t max_len) static int _get(netdev_t *dev, netopt_t opt, void *value, size_t max_len)
{ {
dose_t *ctx = (dose_t *) dev; dose_t *ctx = container_of(dev, dose_t, netdev);
switch (opt) { switch (opt) {
case NETOPT_ADDRESS: case NETOPT_ADDRESS:
@ -485,7 +485,7 @@ 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 _set(netdev_t *dev, netopt_t opt, const void *value, size_t len)
{ {
dose_t *ctx = (dose_t *) dev; dose_t *ctx = container_of(dev, dose_t, netdev);
switch (opt) { switch (opt) {
case NETOPT_ADDRESS: case NETOPT_ADDRESS:
@ -514,7 +514,7 @@ static int _set(netdev_t *dev, netopt_t opt, const void *value, size_t len)
static int _init(netdev_t *dev) static int _init(netdev_t *dev)
{ {
dose_t *ctx = (dose_t *) dev; dose_t *ctx = container_of(dev, dose_t, netdev);
unsigned irq_state; unsigned irq_state;
/* Set state machine to defaults */ /* Set state machine to defaults */

View File

@ -92,13 +92,13 @@ void encx24j600_setup(encx24j600_t *dev, const encx24j600_params_t *params)
static void encx24j600_isr(void *arg) static void encx24j600_isr(void *arg)
{ {
encx24j600_t *dev = (encx24j600_t *) arg; encx24j600_t *dev = arg;
/* disable interrupt line */ /* disable interrupt line */
gpio_irq_disable(dev->int_pin); gpio_irq_disable(dev->int_pin);
/* call netdev hook */ /* call netdev hook */
netdev_trigger_event_isr((netdev_t*) dev); netdev_trigger_event_isr(&dev->netdev);
} }
static void _isr(netdev_t *netdev) static void _isr(netdev_t *netdev)

View File

@ -118,7 +118,7 @@ static void _end_of_frame(ethos_t *dev)
if (dev->framesize) { if (dev->framesize) {
assert(dev->last_framesize == 0); assert(dev->last_framesize == 0);
dev->last_framesize = dev->framesize; dev->last_framesize = dev->framesize;
netdev_trigger_event_isr((netdev_t*) dev); netdev_trigger_event_isr(&dev->netdev);
} }
break; break;
@ -187,14 +187,12 @@ static void ethos_isr(void *arg, uint8_t c)
static void _isr(netdev_t *netdev) static void _isr(netdev_t *netdev)
{ {
ethos_t *dev = (ethos_t *) netdev; netdev->event_callback(netdev, NETDEV_EVENT_RX_COMPLETE);
dev->netdev.event_callback((netdev_t*) dev, NETDEV_EVENT_RX_COMPLETE);
} }
static int _init(netdev_t *encdev) static int _init(netdev_t *encdev)
{ {
ethos_t *dev = (ethos_t *) encdev; (void)encdev;
(void)dev;
return 0; return 0;
} }

View File

@ -56,7 +56,7 @@ static void kw2xrf_set_address(kw2xrf_t *dev)
void kw2xrf_setup(kw2xrf_t *dev, const kw2xrf_params_t *params) void kw2xrf_setup(kw2xrf_t *dev, const kw2xrf_params_t *params)
{ {
netdev_t *netdev = (netdev_t *)dev; netdev_t *netdev = &dev->netdev.netdev;
netdev->driver = &kw2xrf_driver; netdev->driver = &kw2xrf_driver;
/* initialize device descriptor */ /* initialize device descriptor */

View File

@ -55,8 +55,9 @@ static void _isr(netdev_t *netdev);
static void _irq_handler(void *arg) static void _irq_handler(void *arg)
{ {
netdev_t *netdev = (netdev_t *) arg; netdev_t *netdev = arg;
kw2xrf_t *dev = (kw2xrf_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
kw2xrf_t *dev = container_of(netdev_ieee802154, kw2xrf_t, netdev);
thread_flags_set(dev->thread, KW2XRF_THREAD_FLAG_ISR); thread_flags_set(dev->thread, KW2XRF_THREAD_FLAG_ISR);
@ -69,7 +70,8 @@ static void _irq_handler(void *arg)
static int _init(netdev_t *netdev) static int _init(netdev_t *netdev)
{ {
kw2xrf_t *dev = (kw2xrf_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
kw2xrf_t *dev = container_of(netdev_ieee802154, kw2xrf_t, netdev);
dev->thread = thread_get_active(); dev->thread = thread_get_active();
@ -119,7 +121,7 @@ static void kw2xrf_wait_idle(kw2xrf_t *dev)
while (1) { while (1) {
/* TX in progress */ /* TX in progress */
/* Handle any outstanding IRQ first */ /* Handle any outstanding IRQ first */
_isr((netdev_t *)dev); _isr(&dev->netdev.netdev);
/* _isr() will switch the transceiver back to idle after /* _isr() will switch the transceiver back to idle after
* handling the TX complete IRQ */ * handling the TX complete IRQ */
if (kw2xrf_can_switch_to_idle(dev)) { if (kw2xrf_can_switch_to_idle(dev)) {
@ -136,7 +138,8 @@ static void kw2xrf_wait_idle(kw2xrf_t *dev)
static int _send(netdev_t *netdev, const iolist_t *iolist) static int _send(netdev_t *netdev, const iolist_t *iolist)
{ {
kw2xrf_t *dev = (kw2xrf_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
kw2xrf_t *dev = container_of(netdev_ieee802154, kw2xrf_t, netdev);
uint8_t *pkt_buf = &(dev->buf[1]); uint8_t *pkt_buf = &(dev->buf[1]);
size_t len = 0; size_t len = 0;
@ -178,7 +181,8 @@ static int _send(netdev_t *netdev, const iolist_t *iolist)
static int _recv(netdev_t *netdev, void *buf, size_t len, void *info) static int _recv(netdev_t *netdev, void *buf, size_t len, void *info)
{ {
kw2xrf_t *dev = (kw2xrf_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
kw2xrf_t *dev = container_of(netdev_ieee802154, kw2xrf_t, netdev);
size_t pkt_len = 0; size_t pkt_len = 0;
/* get size of the received packet */ /* get size of the received packet */
@ -241,7 +245,8 @@ static netopt_state_t _get_state(kw2xrf_t *dev)
int _get(netdev_t *netdev, netopt_t opt, void *value, size_t len) int _get(netdev_t *netdev, netopt_t opt, void *value, size_t len)
{ {
kw2xrf_t *dev = (kw2xrf_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
kw2xrf_t *dev = container_of(netdev_ieee802154, kw2xrf_t, netdev);
if (dev == NULL) { if (dev == NULL) {
return -ENODEV; return -ENODEV;
@ -364,12 +369,14 @@ int _get(netdev_t *netdev, netopt_t opt, void *value, size_t len)
break; break;
} }
return netdev_ieee802154_get((netdev_ieee802154_t *)netdev, opt, value, len); return netdev_ieee802154_get(container_of(netdev, netdev_ieee802154_t, netdev),
opt, value, len);
} }
static int _set(netdev_t *netdev, netopt_t opt, const void *value, size_t len) static int _set(netdev_t *netdev, netopt_t opt, const void *value, size_t len)
{ {
kw2xrf_t *dev = (kw2xrf_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
kw2xrf_t *dev = container_of(netdev_ieee802154, kw2xrf_t, netdev);
int res = -ENOTSUP; int res = -ENOTSUP;
if (dev == NULL) { if (dev == NULL) {
@ -523,8 +530,8 @@ static int _set(netdev_t *netdev, netopt_t opt, const void *value, size_t len)
} }
if (res == -ENOTSUP) { if (res == -ENOTSUP) {
res = netdev_ieee802154_set((netdev_ieee802154_t *)netdev, opt, res = netdev_ieee802154_set(container_of(netdev, netdev_ieee802154_t, netdev),
value, len); opt, value, len);
} }
return res; return res;
@ -532,7 +539,8 @@ static int _set(netdev_t *netdev, netopt_t opt, const void *value, size_t len)
static void _isr_event_seq_r(netdev_t *netdev, uint8_t *dregs) static void _isr_event_seq_r(netdev_t *netdev, uint8_t *dregs)
{ {
kw2xrf_t *dev = (kw2xrf_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
kw2xrf_t *dev = container_of(netdev_ieee802154, kw2xrf_t, netdev);
uint8_t irqsts1 = 0; uint8_t irqsts1 = 0;
if (dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_RXWTRMRKIRQ) { if (dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_RXWTRMRKIRQ) {
@ -568,7 +576,8 @@ static void _isr_event_seq_r(netdev_t *netdev, uint8_t *dregs)
static void _isr_event_seq_t(netdev_t *netdev, uint8_t *dregs) static void _isr_event_seq_t(netdev_t *netdev, uint8_t *dregs)
{ {
kw2xrf_t *dev = (kw2xrf_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
kw2xrf_t *dev = container_of(netdev_ieee802154, kw2xrf_t, netdev);
uint8_t irqsts1 = 0; uint8_t irqsts1 = 0;
if (dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_TXIRQ) { if (dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_TXIRQ) {
@ -603,7 +612,8 @@ static void _isr_event_seq_t(netdev_t *netdev, uint8_t *dregs)
/* Standalone CCA */ /* Standalone CCA */
static void _isr_event_seq_cca(netdev_t *netdev, uint8_t *dregs) static void _isr_event_seq_cca(netdev_t *netdev, uint8_t *dregs)
{ {
kw2xrf_t *dev = (kw2xrf_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
kw2xrf_t *dev = container_of(netdev_ieee802154, kw2xrf_t, netdev);
uint8_t irqsts1 = 0; uint8_t irqsts1 = 0;
if ((dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_CCAIRQ) && if ((dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_CCAIRQ) &&
@ -623,7 +633,8 @@ static void _isr_event_seq_cca(netdev_t *netdev, uint8_t *dregs)
static void _isr_event_seq_tr(netdev_t *netdev, uint8_t *dregs) static void _isr_event_seq_tr(netdev_t *netdev, uint8_t *dregs)
{ {
kw2xrf_t *dev = (kw2xrf_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
kw2xrf_t *dev = container_of(netdev_ieee802154, kw2xrf_t, netdev);
uint8_t irqsts1 = 0; uint8_t irqsts1 = 0;
if (dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_TXIRQ) { if (dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_TXIRQ) {
@ -689,7 +700,8 @@ static void _isr_event_seq_tr(netdev_t *netdev, uint8_t *dregs)
static void _isr_event_seq_ccca(netdev_t *netdev, uint8_t *dregs) static void _isr_event_seq_ccca(netdev_t *netdev, uint8_t *dregs)
{ {
kw2xrf_t *dev = (kw2xrf_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
kw2xrf_t *dev = container_of(netdev_ieee802154, kw2xrf_t, netdev);
uint8_t irqsts1 = 0; uint8_t irqsts1 = 0;
if ((dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_CCAIRQ) && if ((dregs[MKW2XDM_IRQSTS1] & MKW2XDM_IRQSTS1_CCAIRQ) &&
@ -712,7 +724,8 @@ static void _isr_event_seq_ccca(netdev_t *netdev, uint8_t *dregs)
static void _isr(netdev_t *netdev) static void _isr(netdev_t *netdev)
{ {
uint8_t dregs[MKW2XDM_PHY_CTRL4 + 1]; uint8_t dregs[MKW2XDM_PHY_CTRL4 + 1];
kw2xrf_t *dev = (kw2xrf_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
kw2xrf_t *dev = container_of(netdev_ieee802154, kw2xrf_t, netdev);
if (!spinning_for_irq) { if (!spinning_for_irq) {
num_irqs_handled = num_irqs_queued; num_irqs_handled = num_irqs_queued;
} }

View File

@ -46,7 +46,7 @@ static void kw41zrf_set_address(kw41zrf_t *dev)
void kw41zrf_setup(kw41zrf_t *dev, uint8_t index) void kw41zrf_setup(kw41zrf_t *dev, uint8_t index)
{ {
netdev_t *netdev = (netdev_t *)dev; netdev_t *netdev = &dev->netdev.netdev;
netdev->driver = &kw41zrf_driver; netdev->driver = &kw41zrf_driver;

View File

@ -66,7 +66,10 @@ static bool blocking_for_irq = false;
static void kw41zrf_irq_handler(void *arg) static void kw41zrf_irq_handler(void *arg)
{ {
netdev_t *netdev = arg; netdev_t *netdev = arg;
kw41zrf_t *dev = (kw41zrf_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev,
netdev_ieee802154_t,
netdev);
kw41zrf_t *dev = container_of(netdev_ieee802154, kw41zrf_t, netdev);
KW41ZRF_LED_IRQ_ON; KW41ZRF_LED_IRQ_ON;
kw41zrf_mask_irqs(); kw41zrf_mask_irqs();
@ -85,7 +88,10 @@ static void kw41zrf_irq_handler(void *arg)
static int kw41zrf_netdev_init(netdev_t *netdev) static int kw41zrf_netdev_init(netdev_t *netdev)
{ {
kw41zrf_t *dev = (kw41zrf_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev,
netdev_ieee802154_t,
netdev);
kw41zrf_t *dev = container_of(netdev_ieee802154, kw41zrf_t, netdev);
dev->thread = thread_get_active(); dev->thread = thread_get_active();
/* initialize hardware */ /* initialize hardware */
@ -182,7 +188,7 @@ static void kw41zrf_wait_idle(kw41zrf_t *dev)
/* Block until we get an IRQ */ /* Block until we get an IRQ */
thread_flags_wait_any(KW41ZRF_THREAD_FLAG_ISR); thread_flags_wait_any(KW41ZRF_THREAD_FLAG_ISR);
/* Handle the IRQ */ /* Handle the IRQ */
kw41zrf_netdev_isr((netdev_t *)dev); kw41zrf_netdev_isr(&dev->netdev.netdev);
/* kw41zrf_netdev_isr() will switch the transceiver back to idle /* kw41zrf_netdev_isr() will switch the transceiver back to idle
* after handling the sequence complete IRQ */ * after handling the sequence complete IRQ */
if (kw41zrf_can_switch_to_idle(dev) && dev->backoff_delay == 0) { if (kw41zrf_can_switch_to_idle(dev) && dev->backoff_delay == 0) {
@ -216,7 +222,11 @@ int kw41zrf_cca(kw41zrf_t *dev)
static int kw41zrf_netdev_send(netdev_t *netdev, const iolist_t *iolist) static int kw41zrf_netdev_send(netdev_t *netdev, const iolist_t *iolist)
{ {
kw41zrf_t *dev = (kw41zrf_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev,
netdev_ieee802154_t,
netdev);
kw41zrf_t *dev = container_of(netdev_ieee802154, kw41zrf_t, netdev);
size_t len = 0; size_t len = 0;
kw41zrf_wait_idle(dev); kw41zrf_wait_idle(dev);
@ -273,7 +283,10 @@ static inline void kw41zrf_unblock_rx(kw41zrf_t *dev)
static int kw41zrf_netdev_recv(netdev_t *netdev, void *buf, size_t len, void *info) static int kw41zrf_netdev_recv(netdev_t *netdev, void *buf, size_t len, void *info)
{ {
kw41zrf_t *dev = (kw41zrf_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev,
netdev_ieee802154_t,
netdev);
kw41zrf_t *dev = container_of(netdev_ieee802154, kw41zrf_t, netdev);
if (kw41zrf_is_dsm()) { if (kw41zrf_is_dsm()) {
/* bring the device out of DSM, sleep will be restored before returning */ /* bring the device out of DSM, sleep will be restored before returning */
kw41zrf_set_power_mode(dev, KW41ZRF_POWER_IDLE); kw41zrf_set_power_mode(dev, KW41ZRF_POWER_IDLE);
@ -431,7 +444,10 @@ static netopt_state_t kw41zrf_netdev_get_state(kw41zrf_t *dev)
int kw41zrf_netdev_get(netdev_t *netdev, netopt_t opt, void *value, size_t len) int kw41zrf_netdev_get(netdev_t *netdev, netopt_t opt, void *value, size_t len)
{ {
kw41zrf_t *dev = (kw41zrf_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev,
netdev_ieee802154_t,
netdev);
kw41zrf_t *dev = container_of(netdev_ieee802154, kw41zrf_t, netdev);
if (dev == NULL) { if (dev == NULL) {
return -ENODEV; return -ENODEV;
@ -615,14 +631,18 @@ int kw41zrf_netdev_get(netdev_t *netdev, netopt_t opt, void *value, size_t len)
} }
if (res == -ENOTSUP) { if (res == -ENOTSUP) {
res = netdev_ieee802154_get((netdev_ieee802154_t *)netdev, opt, value, len); res = netdev_ieee802154_get(container_of(netdev, netdev_ieee802154_t, netdev),
opt, value, len);
} }
return res; return res;
} }
static int kw41zrf_netdev_set(netdev_t *netdev, netopt_t opt, const void *value, size_t len) static int kw41zrf_netdev_set(netdev_t *netdev, netopt_t opt, const void *value, size_t len)
{ {
kw41zrf_t *dev = (kw41zrf_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev,
netdev_ieee802154_t,
netdev);
kw41zrf_t *dev = container_of(netdev_ieee802154, kw41zrf_t, netdev);
int res = -ENOTSUP; int res = -ENOTSUP;
if (dev == NULL) { if (dev == NULL) {
@ -810,7 +830,8 @@ static int kw41zrf_netdev_set(netdev_t *netdev, netopt_t opt, const void *value,
} }
if (res == -ENOTSUP) { if (res == -ENOTSUP) {
res = netdev_ieee802154_set((netdev_ieee802154_t *)netdev, opt, value, len); res = netdev_ieee802154_set(container_of(netdev, netdev_ieee802154_t, netdev),
opt, value, len);
} }
return res; return res;
@ -1132,7 +1153,10 @@ static uint32_t _isr_event_seq_ccca(kw41zrf_t *dev, uint32_t irqsts)
static void kw41zrf_netdev_isr(netdev_t *netdev) static void kw41zrf_netdev_isr(netdev_t *netdev)
{ {
kw41zrf_t *dev = (kw41zrf_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev,
netdev_ieee802154_t,
netdev);
kw41zrf_t *dev = container_of(netdev_ieee802154, kw41zrf_t, netdev);
irq_is_queued = false; irq_is_queued = false;
thread_flags_clear(KW41ZRF_THREAD_FLAG_ISR); thread_flags_clear(KW41ZRF_THREAD_FLAG_ISR);

View File

@ -31,7 +31,7 @@
void mrf24j40_setup(mrf24j40_t *dev, const mrf24j40_params_t *params, uint8_t index) void mrf24j40_setup(mrf24j40_t *dev, const mrf24j40_params_t *params, uint8_t index)
{ {
netdev_t *netdev = (netdev_t *)dev; netdev_t *netdev = &dev->netdev.netdev;
netdev->driver = &mrf24j40_driver; netdev->driver = &mrf24j40_driver;
/* initialize device descriptor */ /* initialize device descriptor */
@ -136,8 +136,7 @@ size_t mrf24j40_tx_load(mrf24j40_t *dev, uint8_t *data, size_t len, size_t offse
void mrf24j40_tx_exec(mrf24j40_t *dev) void mrf24j40_tx_exec(mrf24j40_t *dev)
{ {
netdev_t *netdev = (netdev_t *)dev; netdev_t *netdev = &dev->netdev.netdev;
dev->tx_frame_len = dev->tx_frame_len - IEEE802154_FCS_LEN; dev->tx_frame_len = dev->tx_frame_len - IEEE802154_FCS_LEN;
/* write frame length field in FIFO */ /* write frame length field in FIFO */

View File

@ -39,16 +39,19 @@
static void _irq_handler(void *arg) static void _irq_handler(void *arg)
{ {
netdev_t *dev = (netdev_t *) arg; netdev_t *dev = arg;
netdev_ieee802154_t *netdev_ieee802154 = container_of(dev, netdev_ieee802154_t, netdev);
mrf24j40_t *mrf24j40 = container_of(netdev_ieee802154, mrf24j40_t, netdev);
netdev_trigger_event_isr(dev); netdev_trigger_event_isr(dev);
((mrf24j40_t *)arg)->irq_flag = 1; mrf24j40->irq_flag = 1;
} }
static int _init(netdev_t *netdev) static int _init(netdev_t *netdev)
{ {
mrf24j40_t *dev = (mrf24j40_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
mrf24j40_t *dev = container_of(netdev_ieee802154, mrf24j40_t, netdev);
/* initialize GPIOs */ /* initialize GPIOs */
spi_init_cs(dev->params.spi, dev->params.cs_pin); spi_init_cs(dev->params.spi, dev->params.cs_pin);
@ -66,7 +69,8 @@ static int _init(netdev_t *netdev)
static int _send(netdev_t *netdev, const iolist_t *iolist) static int _send(netdev_t *netdev, const iolist_t *iolist)
{ {
mrf24j40_t *dev = (mrf24j40_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
mrf24j40_t *dev = container_of(netdev_ieee802154, mrf24j40_t, netdev);
size_t len = 0; size_t len = 0;
mrf24j40_tx_prepare(dev); mrf24j40_tx_prepare(dev);
@ -104,7 +108,8 @@ static int _send(netdev_t *netdev, const iolist_t *iolist)
static int _recv(netdev_t *netdev, void *buf, size_t len, void *info) static int _recv(netdev_t *netdev, void *buf, size_t len, void *info)
{ {
mrf24j40_t *dev = (mrf24j40_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
mrf24j40_t *dev = container_of(netdev_ieee802154, mrf24j40_t, netdev);
uint8_t phr; uint8_t phr;
size_t pkt_len; size_t pkt_len;
int res = -ENOBUFS; int res = -ENOBUFS;
@ -161,7 +166,8 @@ static netopt_state_t _get_state(mrf24j40_t *dev)
static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len) static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len)
{ {
mrf24j40_t *dev = (mrf24j40_t *) netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
mrf24j40_t *dev = container_of(netdev_ieee802154, mrf24j40_t, netdev);
if (netdev == NULL) { if (netdev == NULL) {
return -ENODEV; return -ENODEV;
@ -330,8 +336,8 @@ static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len)
default: default:
/* try netdev settings */ /* try netdev settings */
res = netdev_ieee802154_get((netdev_ieee802154_t *)netdev, opt, res = netdev_ieee802154_get(container_of(netdev, netdev_ieee802154_t, netdev),
val, max_len); opt, val, max_len);
} }
return res; return res;
} }
@ -361,7 +367,8 @@ static int _set_state(mrf24j40_t *dev, netopt_state_t state)
static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t len) static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t len)
{ {
mrf24j40_t *dev = (mrf24j40_t *) netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
mrf24j40_t *dev = container_of(netdev_ieee802154, mrf24j40_t, netdev);
int res = -ENOTSUP; int res = -ENOTSUP;
if (dev == NULL) { if (dev == NULL) {
@ -513,15 +520,16 @@ static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t len)
} }
/* try netdev building flags */ /* try netdev building flags */
if (res == -ENOTSUP) { if (res == -ENOTSUP) {
res = netdev_ieee802154_set((netdev_ieee802154_t *)netdev, opt, res = netdev_ieee802154_set(container_of(netdev, netdev_ieee802154_t, netdev),
val, len); opt, val, len);
} }
return res; return res;
} }
static void _isr(netdev_t *netdev) static void _isr(netdev_t *netdev)
{ {
mrf24j40_t *dev = (mrf24j40_t *) netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
mrf24j40_t *dev = container_of(netdev_ieee802154, mrf24j40_t, netdev);
/* update pending bits */ /* update pending bits */
mrf24j40_update_tasks(dev); mrf24j40_update_tasks(dev);
DEBUG("[mrf24j40] INTERRUPT (pending: %x),\n", dev->pending); DEBUG("[mrf24j40] INTERRUPT (pending: %x),\n", dev->pending);

View File

@ -54,7 +54,8 @@ static netopt_state_t _get_submac_state(ieee802154_submac_t *submac)
static int _get(netdev_t *netdev, netopt_t opt, void *value, size_t max_len) static int _get(netdev_t *netdev, netopt_t opt, void *value, size_t max_len)
{ {
netdev_ieee802154_submac_t *netdev_submac = (netdev_ieee802154_submac_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
netdev_ieee802154_submac_t *netdev_submac = container_of(netdev_ieee802154, netdev_ieee802154_submac_t, dev);
ieee802154_submac_t *submac = &netdev_submac->submac; ieee802154_submac_t *submac = &netdev_submac->submac;
switch (opt) { switch (opt) {
@ -74,7 +75,7 @@ static int _get(netdev_t *netdev, netopt_t opt, void *value, size_t max_len)
break; break;
} }
return netdev_ieee802154_get((netdev_ieee802154_t *)netdev, opt, return netdev_ieee802154_get(container_of(netdev, netdev_ieee802154_t, netdev), opt,
value, max_len); value, max_len);
} }
@ -95,8 +96,10 @@ static int _set_submac_state(ieee802154_submac_t *submac, netopt_state_t state)
static int _set(netdev_t *netdev, netopt_t opt, const void *value, static int _set(netdev_t *netdev, netopt_t opt, const void *value,
size_t value_len) size_t value_len)
{ {
netdev_ieee802154_submac_t *netdev_submac = netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
(netdev_ieee802154_submac_t *)netdev; netdev_ieee802154_submac_t *netdev_submac = container_of(netdev_ieee802154,
netdev_ieee802154_submac_t,
dev);
ieee802154_submac_t *submac = &netdev_submac->submac; ieee802154_submac_t *submac = &netdev_submac->submac;
int res; int res;
@ -128,8 +131,8 @@ static int _set(netdev_t *netdev, netopt_t opt, const void *value,
break; break;
} }
return netdev_ieee802154_set((netdev_ieee802154_t *)netdev, opt, return netdev_ieee802154_set(container_of(netdev, netdev_ieee802154_t, netdev),
value, value_len); opt, value, value_len);
} }
void ieee802154_submac_ack_timer_set(ieee802154_submac_t *submac, uint16_t us) void ieee802154_submac_ack_timer_set(ieee802154_submac_t *submac, uint16_t us)
@ -152,16 +155,21 @@ void ieee802154_submac_ack_timer_cancel(ieee802154_submac_t *submac)
static int _send(netdev_t *netdev, const iolist_t *pkt) static int _send(netdev_t *netdev, const iolist_t *pkt)
{ {
netdev_ieee802154_submac_t *netdev_submac = netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
(netdev_ieee802154_submac_t *)netdev; netdev_ieee802154_submac_t *netdev_submac = container_of(netdev_ieee802154,
netdev_ieee802154_submac_t,
dev);
ieee802154_submac_t *submac = &netdev_submac->submac;
return ieee802154_send(&netdev_submac->submac, pkt); return ieee802154_send(submac, pkt);
} }
static void _isr(netdev_t *netdev) static void _isr(netdev_t *netdev)
{ {
netdev_ieee802154_submac_t *netdev_submac = netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
(netdev_ieee802154_submac_t *)netdev; netdev_ieee802154_submac_t *netdev_submac = container_of(netdev_ieee802154,
netdev_ieee802154_submac_t,
dev);
ieee802154_submac_t *submac = &netdev_submac->submac; ieee802154_submac_t *submac = &netdev_submac->submac;
do { do {
@ -190,8 +198,10 @@ static void _isr(netdev_t *netdev)
static int _recv(netdev_t *netdev, void *buf, size_t len, void *info) static int _recv(netdev_t *netdev, void *buf, size_t len, void *info)
{ {
netdev_ieee802154_submac_t *netdev_submac = netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
(netdev_ieee802154_submac_t *)netdev; netdev_ieee802154_submac_t *netdev_submac = container_of(netdev_ieee802154,
netdev_ieee802154_submac_t,
dev);
ieee802154_submac_t *submac = &netdev_submac->submac; ieee802154_submac_t *submac = &netdev_submac->submac;
ieee802154_rx_info_t rx_info; ieee802154_rx_info_t rx_info;
@ -221,7 +231,7 @@ static void submac_tx_done(ieee802154_submac_t *submac, int status,
netdev_ieee802154_submac_t *netdev_submac = container_of(submac, netdev_ieee802154_submac_t *netdev_submac = container_of(submac,
netdev_ieee802154_submac_t, netdev_ieee802154_submac_t,
submac); submac);
netdev_t *netdev = (netdev_t *)netdev_submac; netdev_t *netdev = &netdev_submac->dev.netdev;
if (info) { if (info) {
netdev_submac->retrans = info->retrans; netdev_submac->retrans = info->retrans;
@ -250,7 +260,7 @@ static void submac_rx_done(ieee802154_submac_t *submac)
netdev_ieee802154_submac_t *netdev_submac = container_of(submac, netdev_ieee802154_submac_t *netdev_submac = container_of(submac,
netdev_ieee802154_submac_t, netdev_ieee802154_submac_t,
submac); submac);
netdev_t *netdev = (netdev_t *)netdev_submac; netdev_t *netdev = &netdev_submac->dev.netdev;
netdev->event_callback(netdev, NETDEV_EVENT_RX_COMPLETE); netdev->event_callback(netdev, NETDEV_EVENT_RX_COMPLETE);
} }
@ -267,7 +277,7 @@ static void _hal_radio_cb(ieee802154_dev_t *dev, ieee802154_trx_ev_t status)
netdev_ieee802154_submac_t *netdev_submac = container_of(submac, netdev_ieee802154_submac_t *netdev_submac = container_of(submac,
netdev_ieee802154_submac_t, netdev_ieee802154_submac_t,
submac); submac);
netdev_t *netdev = (netdev_t *)netdev_submac; netdev_t *netdev = &netdev_submac->dev.netdev;
switch (status) { switch (status) {
case IEEE802154_RADIO_CONFIRM_TX_DONE: case IEEE802154_RADIO_CONFIRM_TX_DONE:
@ -287,10 +297,11 @@ static void _hal_radio_cb(ieee802154_dev_t *dev, ieee802154_trx_ev_t status)
static int _init(netdev_t *netdev) static int _init(netdev_t *netdev)
{ {
netdev_ieee802154_submac_t *netdev_submac = netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
(netdev_ieee802154_submac_t *)netdev; netdev_ieee802154_submac_t *netdev_submac = container_of(netdev_ieee802154,
netdev_ieee802154_submac_t,
dev);
ieee802154_submac_t *submac = &netdev_submac->submac; ieee802154_submac_t *submac = &netdev_submac->submac;
netdev_ieee802154_t *netdev_ieee802154 = (netdev_ieee802154_t *)netdev;
ieee802154_submac_init(submac, (network_uint16_t*) netdev_ieee802154->short_addr, (eui64_t*) netdev_ieee802154->long_addr); ieee802154_submac_init(submac, (network_uint16_t*) netdev_ieee802154->short_addr, (eui64_t*) netdev_ieee802154->long_addr);
return 0; return 0;
@ -299,7 +310,7 @@ static int _init(netdev_t *netdev)
int netdev_ieee802154_submac_init(netdev_ieee802154_submac_t *netdev_submac, int netdev_ieee802154_submac_init(netdev_ieee802154_submac_t *netdev_submac,
ieee802154_dev_t *dev) ieee802154_dev_t *dev)
{ {
netdev_t *netdev = (netdev_t *)netdev_submac; netdev_t *netdev = &netdev_submac->dev.netdev;
netdev->driver = &netdev_submac_driver; netdev->driver = &netdev_submac_driver;
ieee802154_submac_t *submac = &netdev_submac->submac; ieee802154_submac_t *submac = &netdev_submac->submac;
@ -314,7 +325,7 @@ int netdev_ieee802154_submac_init(netdev_ieee802154_submac_t *netdev_submac,
netdev_submac->ack_timer.callback = _ack_timeout; netdev_submac->ack_timer.callback = _ack_timeout;
netdev_submac->ack_timer.arg = netdev_submac; netdev_submac->ack_timer.arg = netdev_submac;
netdev_ieee802154_t *netdev_ieee802154 = (netdev_ieee802154_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = &netdev_submac->dev;
/* This function already sets the PAN ID to the default one */ /* This function already sets the PAN ID to the default one */
netdev_ieee802154_reset(netdev_ieee802154); netdev_ieee802154_reset(netdev_ieee802154);

View File

@ -156,7 +156,7 @@ static int _nrf24l01p_ng_adpt_send(gnrc_netif_t *netif, gnrc_pktsnip_t *pkt)
assert(pkt); assert(pkt);
assert(netif->dev); assert(netif->dev);
netdev_t *netdev = (netdev_t *)netif->dev; netdev_t *netdev = netif->dev;
gnrc_netif_hdr_t *netif_hdr = (gnrc_netif_hdr_t *)pkt->data; gnrc_netif_hdr_t *netif_hdr = (gnrc_netif_hdr_t *)pkt->data;
if (!netif_hdr) { if (!netif_hdr) {
return -EBADMSG; return -EBADMSG;
@ -190,7 +190,7 @@ static int _nrf24l01p_ng_adpt_send(gnrc_netif_t *netif, gnrc_pktsnip_t *pkt)
uint8_t src[1 + NRF24L01P_NG_ADDR_WIDTH]; uint8_t src[1 + NRF24L01P_NG_ADDR_WIDTH];
src[0] = NRF24L01P_NG_ADDR_WIDTH; src[0] = NRF24L01P_NG_ADDR_WIDTH;
memcpy(src + 1, memcpy(src + 1,
NRF24L01P_NG_ADDR_P1((nrf24l01p_ng_t *)netdev), NRF24L01P_NG_ADDR_P1(container_of(netdev, nrf24l01p_ng_t, netdev)),
NRF24L01P_NG_ADDR_WIDTH); NRF24L01P_NG_ADDR_WIDTH);
iolist_t iolist_src_addr = { iolist_t iolist_src_addr = {
.iol_next = ((iolist_t *)pkt->next), .iol_next = ((iolist_t *)pkt->next),

View File

@ -112,12 +112,12 @@ nrf24l01p_ng_state_t _state_from_netif(netopt_state_t state)
static void _nrf24l01p_ng_irq_handler(void *_dev) static void _nrf24l01p_ng_irq_handler(void *_dev)
{ {
nrf24l01p_ng_t *dev = (nrf24l01p_ng_t *)_dev; nrf24l01p_ng_t *dev = _dev;
/* Once the IRQ pin has triggered, /* Once the IRQ pin has triggered,
do not congest the thread´s do not congest the thread´s
message queue with IRQ events */ message queue with IRQ events */
gpio_irq_disable(dev->params.pin_irq); gpio_irq_disable(dev->params.pin_irq);
netdev_trigger_event_isr((netdev_t *)dev); netdev_trigger_event_isr(&dev->netdev);
} }
static void _isr_max_rt(nrf24l01p_ng_t *dev) static void _isr_max_rt(nrf24l01p_ng_t *dev)
@ -162,7 +162,7 @@ static void _isr_tx_ds(nrf24l01p_ng_t *dev)
static int _init(netdev_t *netdev) static int _init(netdev_t *netdev)
{ {
nrf24l01p_ng_t *dev = (nrf24l01p_ng_t *)netdev; nrf24l01p_ng_t *dev = container_of(netdev, nrf24l01p_ng_t, netdev);
if (dev->params.config.cfg_data_rate >= NRF24L01P_NG_RF_DR_NUM_OF || if (dev->params.config.cfg_data_rate >= NRF24L01P_NG_RF_DR_NUM_OF ||
dev->params.config.cfg_crc == NRF24L01P_NG_CRC_0BYTE || dev->params.config.cfg_crc == NRF24L01P_NG_CRC_0BYTE ||
dev->params.config.cfg_channel >= NRF24L01P_NG_NUM_CHANNELS) { dev->params.config.cfg_channel >= NRF24L01P_NG_NUM_CHANNELS) {
@ -299,7 +299,7 @@ static int _recv(netdev_t *netdev, void *buf, size_t len, void *info)
DEBUG_PUTS("[nrf24l01p_ng] Return upper frame estimation"); DEBUG_PUTS("[nrf24l01p_ng] Return upper frame estimation");
return NRF24L01P_NG_ADDR_WIDTH + NRF24L01P_NG_MAX_PAYLOAD_WIDTH; return NRF24L01P_NG_ADDR_WIDTH + NRF24L01P_NG_MAX_PAYLOAD_WIDTH;
} }
nrf24l01p_ng_t *dev = (nrf24l01p_ng_t *)netdev; nrf24l01p_ng_t *dev = container_of(netdev, nrf24l01p_ng_t, netdev);
uint8_t pl_width; uint8_t pl_width;
uint8_t status = nrf24l01p_ng_read_rx_pl_width(dev, &pl_width); uint8_t status = nrf24l01p_ng_read_rx_pl_width(dev, &pl_width);
uint8_t pno = NRF24L01P_NG_VAL_RX_P_NO(status); uint8_t pno = NRF24L01P_NG_VAL_RX_P_NO(status);
@ -373,7 +373,7 @@ static int _send(netdev_t *netdev, const iolist_t *iolist)
DEBUG_PUTS("[nrf24l01p_ng] No Tx address or no payload"); DEBUG_PUTS("[nrf24l01p_ng] No Tx address or no payload");
return -ENOTSUP; return -ENOTSUP;
} }
nrf24l01p_ng_t *dev = (nrf24l01p_ng_t *)netdev; nrf24l01p_ng_t *dev = container_of(netdev, nrf24l01p_ng_t, netdev);
uint8_t pl_width = 0; uint8_t pl_width = 0;
const uint8_t bcast_addr[] = NRF24L01P_NG_BROADCAST_ADDR; const uint8_t bcast_addr[] = NRF24L01P_NG_BROADCAST_ADDR;
uint8_t payload[NRF24L01P_NG_MAX_PAYLOAD_WIDTH]; uint8_t payload[NRF24L01P_NG_MAX_PAYLOAD_WIDTH];
@ -457,7 +457,7 @@ static int _send(netdev_t *netdev, const iolist_t *iolist)
*/ */
static void _isr(netdev_t *netdev) static void _isr(netdev_t *netdev)
{ {
nrf24l01p_ng_t *dev = (nrf24l01p_ng_t *)netdev; nrf24l01p_ng_t *dev = container_of(netdev, nrf24l01p_ng_t, netdev);
nrf24l01p_ng_acquire(dev); nrf24l01p_ng_acquire(dev);
gpio_irq_enable(dev->params.pin_irq); gpio_irq_enable(dev->params.pin_irq);
@ -517,7 +517,7 @@ static void _isr(netdev_t *netdev)
*/ */
static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len) static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len)
{ {
nrf24l01p_ng_t *dev = (nrf24l01p_ng_t *)netdev; nrf24l01p_ng_t *dev = container_of(netdev, nrf24l01p_ng_t, netdev);
(void)max_len; /* only used in assert() */ (void)max_len; /* only used in assert() */
switch (opt) { switch (opt) {
@ -608,7 +608,7 @@ static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len)
*/ */
static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t len) static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t len)
{ {
nrf24l01p_ng_t *dev = (nrf24l01p_ng_t *)netdev; nrf24l01p_ng_t *dev = container_of(netdev, nrf24l01p_ng_t, netdev);
switch (opt) { switch (opt) {
case NETOPT_ADDRESS: { case NETOPT_ADDRESS: {

View File

@ -47,8 +47,8 @@
*/ */
static void _rx_cb(void *arg, uint8_t c) static void _rx_cb(void *arg, uint8_t c)
{ {
rn2xx3_t *dev = (rn2xx3_t *)arg; rn2xx3_t *dev = arg;
netdev_t *netdev = (netdev_t *)dev; netdev_t *netdev = &dev->netdev;
/* Avoid overflow of module response buffer */ /* Avoid overflow of module response buffer */
if (dev->resp_size >= RN2XX3_MAX_BUF) { if (dev->resp_size >= RN2XX3_MAX_BUF) {
@ -127,7 +127,7 @@ static void _rx_cb(void *arg, uint8_t c)
static void _sleep_timer_cb(void *arg) static void _sleep_timer_cb(void *arg)
{ {
DEBUG("[rn2xx3] exit sleep\n"); DEBUG("[rn2xx3] exit sleep\n");
rn2xx3_t *dev = (rn2xx3_t *)arg; rn2xx3_t *dev = arg;
dev->int_state = RN2XX3_INT_STATE_IDLE; dev->int_state = RN2XX3_INT_STATE_IDLE;
} }

View File

@ -67,7 +67,7 @@ static void _slip_rx_cb(void *arg, uint8_t byte)
check_end: check_end:
if (byte == SLIPDEV_END) { if (byte == SLIPDEV_END) {
if (dev->state == SLIPDEV_STATE_NET) { if (dev->state == SLIPDEV_STATE_NET) {
netdev_trigger_event_isr((netdev_t*) dev); netdev_trigger_event_isr(&dev->netdev);
} }
dev->state = SLIPDEV_STATE_NONE; dev->state = SLIPDEV_STATE_NONE;
} }

View File

@ -72,7 +72,7 @@ const sx126x_pa_cfg_params_t sx1261_pa_cfg = {
void sx126x_setup(sx126x_t *dev, const sx126x_params_t *params, uint8_t index) void sx126x_setup(sx126x_t *dev, const sx126x_params_t *params, uint8_t index)
{ {
netdev_t *netdev = (netdev_t *)dev; netdev_t *netdev = &dev->netdev;
netdev->driver = &sx126x_driver; netdev->driver = &sx126x_driver;
dev->params = (sx126x_params_t *)params; dev->params = (sx126x_params_t *)params;
@ -136,7 +136,7 @@ static void sx126x_init_default_config(sx126x_t *dev)
static void _dio1_isr(void *arg) static void _dio1_isr(void *arg)
{ {
netdev_trigger_event_isr((netdev_t *)arg); netdev_trigger_event_isr(arg);
} }
int sx126x_init(sx126x_t *dev) int sx126x_init(sx126x_t *dev)

View File

@ -39,7 +39,7 @@ const uint8_t sx126x_max_sf = LORA_SF12;
static int _send(netdev_t *netdev, const iolist_t *iolist) static int _send(netdev_t *netdev, const iolist_t *iolist)
{ {
sx126x_t *dev = (sx126x_t *)netdev; sx126x_t *dev = container_of(netdev, sx126x_t, netdev);
netopt_state_t state; netopt_state_t state;
@ -78,10 +78,10 @@ static int _recv(netdev_t *netdev, void *buf, size_t len, void *info)
{ {
DEBUG("[sx126x] netdev: read received data.\n"); DEBUG("[sx126x] netdev: read received data.\n");
sx126x_t *dev = (sx126x_t *)netdev; sx126x_t *dev = container_of(netdev, sx126x_t, netdev);
uint8_t size = 0; uint8_t size = 0;
netdev_lora_rx_info_t *packet_info = (netdev_lora_rx_info_t *)info; netdev_lora_rx_info_t *packet_info = info;
if (packet_info) { if (packet_info) {
sx126x_pkt_status_lora_t pkt_status; sx126x_pkt_status_lora_t pkt_status;
@ -111,7 +111,7 @@ static int _recv(netdev_t *netdev, void *buf, size_t len, void *info)
static int _init(netdev_t *netdev) static int _init(netdev_t *netdev)
{ {
sx126x_t *dev = (sx126x_t *)netdev; sx126x_t *dev = container_of(netdev, sx126x_t, netdev);
/* Launch initialization of driver and device */ /* Launch initialization of driver and device */
DEBUG("[sx126x] netdev: initializing driver...\n"); DEBUG("[sx126x] netdev: initializing driver...\n");
@ -126,7 +126,7 @@ static int _init(netdev_t *netdev)
static void _isr(netdev_t *netdev) static void _isr(netdev_t *netdev)
{ {
sx126x_t *dev = (sx126x_t *)netdev; sx126x_t *dev = container_of(netdev, sx126x_t, netdev);
sx126x_irq_mask_t irq_mask; sx126x_irq_mask_t irq_mask;
@ -205,7 +205,7 @@ static int _get_state(sx126x_t *dev, void *val)
static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len) static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len)
{ {
(void)max_len; /* unused when compiled without debug, assert empty */ (void)max_len; /* unused when compiled without debug, assert empty */
sx126x_t *dev = (sx126x_t *)netdev; sx126x_t *dev = container_of(netdev, sx126x_t, netdev);
if (dev == NULL) { if (dev == NULL) {
return -ENODEV; return -ENODEV;
@ -316,7 +316,7 @@ static int _set_state(sx126x_t *dev, netopt_state_t state)
static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t len) static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t len)
{ {
(void)len; /* unused when compiled without debug, assert empty */ (void)len; /* unused when compiled without debug, assert empty */
sx126x_t *dev = (sx126x_t *)netdev; sx126x_t *dev = container_of(netdev, sx126x_t, netdev);
int res = -ENOTSUP; int res = -ENOTSUP;
if (dev == NULL) { if (dev == NULL) {

View File

@ -75,7 +75,7 @@ static void sx127x_on_dio3_isr(void *arg);
void sx127x_setup(sx127x_t *dev, const sx127x_params_t *params, uint8_t index) void sx127x_setup(sx127x_t *dev, const sx127x_params_t *params, uint8_t index)
{ {
netdev_t *netdev = (netdev_t *)dev; netdev_t *netdev = &dev->netdev;
netdev->driver = &sx127x_driver; netdev->driver = &sx127x_driver;
dev->params = *params; dev->params = *params;
@ -234,27 +234,27 @@ void sx127x_isr(netdev_t *dev)
static void sx127x_on_dio_isr(sx127x_t *dev, sx127x_flags_t flag) static void sx127x_on_dio_isr(sx127x_t *dev, sx127x_flags_t flag)
{ {
dev->irq |= flag; dev->irq |= flag;
sx127x_isr((netdev_t *)dev); sx127x_isr(&dev->netdev);
} }
static void sx127x_on_dio0_isr(void *arg) static void sx127x_on_dio0_isr(void *arg)
{ {
sx127x_on_dio_isr((sx127x_t *)arg, SX127X_IRQ_DIO0); sx127x_on_dio_isr(arg, SX127X_IRQ_DIO0);
} }
static void sx127x_on_dio1_isr(void *arg) static void sx127x_on_dio1_isr(void *arg)
{ {
sx127x_on_dio_isr((sx127x_t *)arg, SX127X_IRQ_DIO1); sx127x_on_dio_isr(arg, SX127X_IRQ_DIO1);
} }
static void sx127x_on_dio2_isr(void *arg) static void sx127x_on_dio2_isr(void *arg)
{ {
sx127x_on_dio_isr((sx127x_t *)arg, SX127X_IRQ_DIO2); sx127x_on_dio_isr(arg, SX127X_IRQ_DIO2);
} }
static void sx127x_on_dio3_isr(void *arg) static void sx127x_on_dio3_isr(void *arg)
{ {
sx127x_on_dio_isr((sx127x_t *)arg, SX127X_IRQ_DIO3); sx127x_on_dio_isr(arg, SX127X_IRQ_DIO3);
} }
/* Internal event handlers */ /* Internal event handlers */
@ -316,14 +316,14 @@ static int _init_gpios(sx127x_t *dev)
static void _on_tx_timeout(void *arg) static void _on_tx_timeout(void *arg)
{ {
netdev_t *dev = (netdev_t *)arg; netdev_t *dev = arg;
dev->event_callback(dev, NETDEV_EVENT_TX_TIMEOUT); dev->event_callback(dev, NETDEV_EVENT_TX_TIMEOUT);
} }
static void _on_rx_timeout(void *arg) static void _on_rx_timeout(void *arg)
{ {
netdev_t *dev = (netdev_t *)arg; netdev_t *dev = arg;
dev->event_callback(dev, NETDEV_EVENT_RX_TIMEOUT); dev->event_callback(dev, NETDEV_EVENT_RX_TIMEOUT);
} }

View File

@ -48,7 +48,7 @@ void _on_dio3_irq(void *arg);
static int _send(netdev_t *netdev, const iolist_t *iolist) static int _send(netdev_t *netdev, const iolist_t *iolist)
{ {
DEBUG("[sx127x] Sending packet now.\n"); DEBUG("[sx127x] Sending packet now.\n");
sx127x_t *dev = (sx127x_t *)netdev; sx127x_t *dev = container_of(netdev, sx127x_t, netdev);
if (sx127x_get_state(dev) == SX127X_RF_TX_RUNNING) { if (sx127x_get_state(dev) == SX127X_RF_TX_RUNNING) {
DEBUG("[sx127x] Cannot send packet: radio already in transmitting " DEBUG("[sx127x] Cannot send packet: radio already in transmitting "
@ -107,7 +107,7 @@ static int _send(netdev_t *netdev, const iolist_t *iolist)
static int _recv(netdev_t *netdev, void *buf, size_t len, void *info) static int _recv(netdev_t *netdev, void *buf, size_t len, void *info)
{ {
sx127x_t *dev = (sx127x_t *)netdev; sx127x_t *dev = container_of(netdev, sx127x_t, netdev);
volatile uint8_t irq_flags = 0; volatile uint8_t irq_flags = 0;
uint8_t size = 0; uint8_t size = 0;
@ -205,7 +205,7 @@ static int _recv(netdev_t *netdev, void *buf, size_t len, void *info)
static int _init(netdev_t *netdev) static int _init(netdev_t *netdev)
{ {
sx127x_t *sx127x = (sx127x_t *)netdev; sx127x_t *sx127x = container_of(netdev, sx127x_t, netdev);
sx127x->irq = 0; sx127x->irq = 0;
sx127x_radio_settings_t settings; sx127x_radio_settings_t settings;
@ -234,7 +234,7 @@ static int _init(netdev_t *netdev)
static void _isr(netdev_t *netdev) static void _isr(netdev_t *netdev)
{ {
sx127x_t *dev = (sx127x_t *)netdev; sx127x_t *dev = container_of(netdev, sx127x_t, netdev);
uint8_t interruptReg = sx127x_reg_read(dev, SX127X_REG_LR_IRQFLAGS); uint8_t interruptReg = sx127x_reg_read(dev, SX127X_REG_LR_IRQFLAGS);
@ -261,7 +261,7 @@ static void _isr(netdev_t *netdev)
static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len) static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len)
{ {
(void)max_len; /* unused when compiled without debug, assert empty */ (void)max_len; /* unused when compiled without debug, assert empty */
sx127x_t *dev = (sx127x_t *)netdev; sx127x_t *dev = container_of(netdev, sx127x_t, netdev);
if (dev == NULL) { if (dev == NULL) {
return -ENODEV; return -ENODEV;
@ -360,7 +360,7 @@ static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t len)
{ {
(void)len; /* unused when compiled without debug, assert empty */ (void)len; /* unused when compiled without debug, assert empty */
sx127x_t *dev = (sx127x_t *)netdev; sx127x_t *dev = container_of(netdev, sx127x_t, netdev);
int res = -ENOTSUP; int res = -ENOTSUP;
if (dev == NULL) { if (dev == NULL) {
@ -577,8 +577,8 @@ static int _get_state(sx127x_t *dev, void *val)
void _on_dio0_irq(void *arg) void _on_dio0_irq(void *arg)
{ {
sx127x_t *dev = (sx127x_t *)arg; sx127x_t *dev = arg;
netdev_t *netdev = (netdev_t *)&dev->netdev; netdev_t *netdev = &dev->netdev;
switch (dev->settings.state) { switch (dev->settings.state) {
case SX127X_RF_RX_RUNNING: case SX127X_RF_RX_RUNNING:
@ -612,8 +612,8 @@ void _on_dio0_irq(void *arg)
void _on_dio1_irq(void *arg) void _on_dio1_irq(void *arg)
{ {
/* Get interrupt context */ /* Get interrupt context */
sx127x_t *dev = (sx127x_t *)arg; sx127x_t *dev = arg;
netdev_t *netdev = (netdev_t *)&dev->netdev; netdev_t *netdev = &dev->netdev;
switch (dev->settings.state) { switch (dev->settings.state) {
case SX127X_RF_RX_RUNNING: case SX127X_RF_RX_RUNNING:
@ -652,8 +652,8 @@ void _on_dio1_irq(void *arg)
void _on_dio2_irq(void *arg) void _on_dio2_irq(void *arg)
{ {
/* Get interrupt context */ /* Get interrupt context */
sx127x_t *dev = (sx127x_t *)arg; sx127x_t *dev = arg;
netdev_t *netdev = (netdev_t *)dev; netdev_t *netdev = &dev->netdev;
switch (dev->settings.state) { switch (dev->settings.state) {
case SX127X_RF_RX_RUNNING: case SX127X_RF_RX_RUNNING:
@ -705,8 +705,8 @@ void _on_dio2_irq(void *arg)
void _on_dio3_irq(void *arg) void _on_dio3_irq(void *arg)
{ {
/* Get interrupt context */ /* Get interrupt context */
sx127x_t *dev = (sx127x_t *)arg; sx127x_t *dev = arg;
netdev_t *netdev = (netdev_t *)dev; netdev_t *netdev = &dev->netdev;
switch (dev->settings.state) { switch (dev->settings.state) {
case SX127X_RF_CAD: case SX127X_RF_CAD:

View File

@ -129,13 +129,13 @@ int main(void)
/* Initialize the radio driver */ /* Initialize the radio driver */
#if IS_USED(MODULE_SX127X) #if IS_USED(MODULE_SX127X)
sx127x_setup(&sx127x, &sx127x_params[0], 0); sx127x_setup(&sx127x, &sx127x_params[0], 0);
loramac.netdev = (netdev_t *)&sx127x; loramac.netdev = &sx127x.netdev;
loramac.netdev->driver = &sx127x_driver; loramac.netdev->driver = &sx127x_driver;
#endif #endif
#if IS_USED(MODULE_SX126X) #if IS_USED(MODULE_SX126X)
sx126x_setup(&sx126x, &sx126x_params[0], 0); sx126x_setup(&sx126x, &sx126x_params[0], 0);
loramac.netdev = (netdev_t *)&sx126x; loramac.netdev = &sx126x.netdev;
loramac.netdev->driver = &sx126x_driver; loramac.netdev->driver = &sx126x_driver;
#endif #endif

View File

@ -180,7 +180,7 @@ void lwip_bootstrap(void)
#ifdef MODULE_NETDEV_TAP #ifdef MODULE_NETDEV_TAP
for (unsigned i = 0; i < LWIP_NETIF_NUMOF; i++) { for (unsigned i = 0; i < LWIP_NETIF_NUMOF; i++) {
netdev_tap_setup(&netdev_taps[i], &netdev_tap_params[i]); netdev_tap_setup(&netdev_taps[i], &netdev_tap_params[i]);
if (netif_add_noaddr(&netif[i], &netdev_taps[i], lwip_netdev_init, if (netif_add_noaddr(&netif[i], &netdev_taps[i].netdev, lwip_netdev_init,
tcpip_input) == NULL) { tcpip_input) == NULL) {
DEBUG("Could not add netdev_tap device\n"); DEBUG("Could not add netdev_tap device\n");
return; return;
@ -189,7 +189,7 @@ void lwip_bootstrap(void)
#elif defined(MODULE_MRF24J40) #elif defined(MODULE_MRF24J40)
for (unsigned i = 0; i < LWIP_NETIF_NUMOF; i++) { for (unsigned i = 0; i < LWIP_NETIF_NUMOF; i++) {
mrf24j40_setup(&mrf24j40_devs[i], &mrf24j40_params[i], i); mrf24j40_setup(&mrf24j40_devs[i], &mrf24j40_params[i], i);
if (netif_add_noaddr(&netif[i], &mrf24j40_devs[i], lwip_netdev_init, if (netif_add_noaddr(&netif[i], &mrf24j40_devs[i].netdev.netdev, lwip_netdev_init,
tcpip_6lowpan_input) == NULL) { tcpip_6lowpan_input) == NULL) {
DEBUG("Could not add mrf24j40 device\n"); DEBUG("Could not add mrf24j40 device\n");
return; return;
@ -198,7 +198,7 @@ void lwip_bootstrap(void)
#elif defined(MODULE_AT86RF2XX) #elif defined(MODULE_AT86RF2XX)
for (unsigned i = 0; i < LWIP_NETIF_NUMOF; i++) { for (unsigned i = 0; i < LWIP_NETIF_NUMOF; i++) {
at86rf2xx_setup(&at86rf2xx_devs[i], &at86rf2xx_params[i], i); at86rf2xx_setup(&at86rf2xx_devs[i], &at86rf2xx_params[i], i);
if (netif_add_noaddr(&netif[i], &at86rf2xx_devs[i], lwip_netdev_init, if (netif_add_noaddr(&netif[i], &at86rf2xx_devs[i].netdev.netdev, lwip_netdev_init,
tcpip_6lowpan_input) == NULL) { tcpip_6lowpan_input) == NULL) {
DEBUG("Could not add at86rf2xx device\n"); DEBUG("Could not add at86rf2xx device\n");
return; return;
@ -207,7 +207,7 @@ void lwip_bootstrap(void)
#elif defined(MODULE_ATWINC15X0) #elif defined(MODULE_ATWINC15X0)
for (unsigned i = 0; i < LWIP_NETIF_NUMOF; i++) { for (unsigned i = 0; i < LWIP_NETIF_NUMOF; i++) {
atwinc15x0_setup(&atwinc15x0_devs[i], &atwinc15x0_params[i]); atwinc15x0_setup(&atwinc15x0_devs[i], &atwinc15x0_params[i]);
if (netif_add_noaddr(&netif[0], &atwinc15x0_devs[i], lwip_netdev_init, if (netif_add_noaddr(&netif[0], &atwinc15x0_devs[i].netdev, lwip_netdev_init,
tcpip_input) == NULL) { tcpip_input) == NULL) {
DEBUG("Could not add atwinc15x0 device\n"); DEBUG("Could not add atwinc15x0 device\n");
return; return;
@ -216,7 +216,7 @@ void lwip_bootstrap(void)
#elif defined(MODULE_ENC28J60) #elif defined(MODULE_ENC28J60)
for (unsigned i = 0; i < LWIP_NETIF_NUMOF; i++) { for (unsigned i = 0; i < LWIP_NETIF_NUMOF; i++) {
enc28j60_setup(&enc28j60_devs[i], &enc28j60_params[i], i); enc28j60_setup(&enc28j60_devs[i], &enc28j60_params[i], i);
if (netif_add_noaddr(&netif[0], &enc28j60_devs[i], lwip_netdev_init, if (netif_add_noaddr(&netif[0], &enc28j60_devs[i].netdev, lwip_netdev_init,
tcpip_input) == NULL) { tcpip_input) == NULL) {
DEBUG("Could not add enc28j60 device\n"); DEBUG("Could not add enc28j60 device\n");
return; return;
@ -225,7 +225,7 @@ void lwip_bootstrap(void)
#elif defined(MODULE_SOCKET_ZEP) #elif defined(MODULE_SOCKET_ZEP)
for (unsigned i = 0; i < LWIP_NETIF_NUMOF; i++) { for (unsigned i = 0; i < LWIP_NETIF_NUMOF; i++) {
socket_zep_setup(&socket_zep_devs[i], &socket_zep_params[i], i); socket_zep_setup(&socket_zep_devs[i], &socket_zep_params[i], i);
if (netif_add_noaddr(&netif[i], &socket_zep_devs[i], lwip_netdev_init, if (netif_add_noaddr(&netif[i], &socket_zep_devs[i].netdev.netdev, lwip_netdev_init,
tcpip_6lowpan_input) == NULL) { tcpip_6lowpan_input) == NULL) {
DEBUG("Could not add socket_zep device\n"); DEBUG("Could not add socket_zep device\n");
return; return;
@ -234,7 +234,7 @@ void lwip_bootstrap(void)
#elif (IS_USED(MODULE_ESP_ETH) || IS_USED(MODULE_ESP_WIFI)) #elif (IS_USED(MODULE_ESP_ETH) || IS_USED(MODULE_ESP_WIFI))
#if IS_USED(MODULE_ESP_ETH) #if IS_USED(MODULE_ESP_ETH)
esp_eth_setup(&_esp_eth_dev); esp_eth_setup(&_esp_eth_dev);
if (netif_add_noaddr(&netif[0], &_esp_eth_dev, lwip_netdev_init, if (netif_add_noaddr(&netif[0], &_esp_eth_dev.netdev, lwip_netdev_init,
tcpip_input) == NULL) { tcpip_input) == NULL) {
DEBUG("Could not add esp_eth device\n"); DEBUG("Could not add esp_eth device\n");
return; return;
@ -242,7 +242,7 @@ void lwip_bootstrap(void)
#endif #endif
#if IS_USED(MODULE_ESP_WIFI) #if IS_USED(MODULE_ESP_WIFI)
esp_wifi_setup(&_esp_wifi_dev); esp_wifi_setup(&_esp_wifi_dev);
if (netif_add_noaddr(&netif[ESP_WIFI_INDEX], &_esp_wifi_dev, lwip_netdev_init, if (netif_add_noaddr(&netif[ESP_WIFI_INDEX], &_esp_wifi_dev.netdev, lwip_netdev_init,
tcpip_input) == NULL) { tcpip_input) == NULL) {
DEBUG("Could not add esp_wifi device\n"); DEBUG("Could not add esp_wifi device\n");
return; return;
@ -264,7 +264,7 @@ void lwip_bootstrap(void)
} }
#elif defined(MODULE_NRF802154) #elif defined(MODULE_NRF802154)
nrf802154_setup(&nrf802154_dev); nrf802154_setup(&nrf802154_dev);
if (netif_add_noaddr(&netif[0], &nrf802154_dev, lwip_netdev_init, if (netif_add_noaddr(&netif[0], &nrf802154_dev.netdev.dev.netdev, lwip_netdev_init,
tcpip_6lowpan_input) == NULL) { tcpip_6lowpan_input) == NULL) {
DEBUG("Could not add nrf802154 device\n"); DEBUG("Could not add nrf802154 device\n");
return; return;

View File

@ -94,7 +94,7 @@ err_t lwip_netdev_init(struct netif *netif)
} }
/* initialize netdev and netif */ /* initialize netdev and netif */
netdev = (netdev_t *)netif->state; netdev = netif->state;
netdev->driver->init(netdev); netdev->driver->init(netdev);
_configure_netdev(netdev); _configure_netdev(netdev);
netdev->event_callback = _event_cb; netdev->event_callback = _event_cb;
@ -203,7 +203,7 @@ err_t lwip_netdev_init(struct netif *netif)
#ifdef MODULE_NETDEV_ETH #ifdef MODULE_NETDEV_ETH
static err_t _eth_link_output(struct netif *netif, struct pbuf *p) static err_t _eth_link_output(struct netif *netif, struct pbuf *p)
{ {
netdev_t *netdev = (netdev_t *)netif->state; netdev_t *netdev = netif->state;
struct pbuf *q; struct pbuf *q;
unsigned int count = 0; unsigned int count = 0;
@ -236,7 +236,7 @@ static err_t _eth_link_output(struct netif *netif, struct pbuf *p)
static err_t _ieee802154_link_output(struct netif *netif, struct pbuf *p) static err_t _ieee802154_link_output(struct netif *netif, struct pbuf *p)
{ {
LWIP_ASSERT("p->next == NULL", p->next == NULL); LWIP_ASSERT("p->next == NULL", p->next == NULL);
netdev_t *netdev = (netdev_t *)netif->state; netdev_t *netdev = netif->state;
iolist_t pkt = { iolist_t pkt = {
.iol_base = p->payload, .iol_base = p->payload,
.iol_len = (p->len - IEEE802154_FCS_LEN), /* FCS is written by driver */ .iol_len = (p->len - IEEE802154_FCS_LEN), /* FCS is written by driver */

View File

@ -76,19 +76,19 @@ void openthread_bootstrap(void)
/* setup netdev modules */ /* setup netdev modules */
#ifdef MODULE_AT86RF2XX #ifdef MODULE_AT86RF2XX
at86rf2xx_setup(&at86rf2xx_dev, &at86rf2xx_params[0], 0); at86rf2xx_setup(&at86rf2xx_dev, &at86rf2xx_params[0], 0);
netdev_t *netdev = (netdev_t *) &at86rf2xx_dev; netdev_t *netdev = &at86rf2xx_dev.netdev.netdev;
#endif #endif
#ifdef MODULE_KW41ZRF #ifdef MODULE_KW41ZRF
kw41zrf_setup(&kw41z_dev, 0); kw41zrf_setup(&kw41z_dev, 0);
netdev_t *netdev = (netdev_t *) &kw41z_dev; netdev_t *netdev = &kw41z_dev.netdev.netdev;
#endif #endif
#ifdef MODULE_CC2538_RF #ifdef MODULE_CC2538_RF
cc2538_setup(&cc2538_rf_dev); cc2538_setup(&cc2538_rf_dev);
netdev_t *netdev = (netdev_t*) &cc2538_rf_dev; netdev_t *netdev = &cc2538_rf_dev.netdev.dev.netdev;
#endif #endif
#ifdef MODULE_NRF802154 #ifdef MODULE_NRF802154
nrf802154_setup(&nrf802154_dev); nrf802154_setup(&nrf802154_dev);
netdev_t *netdev = (netdev_t*) &nrf802154_dev; netdev_t *netdev = &nrf802154_dev.netdev.dev.netdev;
#endif #endif
openthread_radio_init(netdev, tx_buf, rx_buf); openthread_radio_init(netdev, tx_buf, rx_buf);

View File

@ -79,7 +79,7 @@ static void _set_addr(void)
int openwsn_radio_init(void *radio_dev) int openwsn_radio_init(void *radio_dev)
{ {
assert(radio_dev); assert(radio_dev);
netdev_t *netdev = (netdev_t *)radio_dev; netdev_t *netdev = radio_dev;
LOG_DEBUG("[openwsn/radio]: initialize riot-adaptation\n"); LOG_DEBUG("[openwsn/radio]: initialize riot-adaptation\n");
openwsn_radio.dev = netdev; openwsn_radio.dev = netdev;

View File

@ -569,16 +569,18 @@ static void _semtech_loramac_event_cb(netdev_t *dev, netdev_event_t event)
case NETDEV_EVENT_FHSS_CHANGE_CHANNEL: case NETDEV_EVENT_FHSS_CHANGE_CHANNEL:
DEBUG("[semtech-loramac] FHSS channel change\n"); DEBUG("[semtech-loramac] FHSS channel change\n");
if(semtech_loramac_radio_events.FhssChangeChannel) { if(semtech_loramac_radio_events.FhssChangeChannel) {
semtech_loramac_radio_events.FhssChangeChannel(( sx127x_t *sx127x = container_of(dev, sx127x_t, netdev);
(sx127x_t *)dev)->_internal.last_channel); semtech_loramac_radio_events.FhssChangeChannel(
sx127x->_internal.last_channel);
} }
break; break;
case NETDEV_EVENT_CAD_DONE: case NETDEV_EVENT_CAD_DONE:
DEBUG("[semtech-loramac] test: CAD done\n"); DEBUG("[semtech-loramac] test: CAD done\n");
sx127x_t *sx127x = container_of(dev, sx127x_t, netdev);
if(semtech_loramac_radio_events.CadDone) { if(semtech_loramac_radio_events.CadDone) {
semtech_loramac_radio_events.CadDone(( semtech_loramac_radio_events.CadDone(
(sx127x_t *)dev)->_internal.is_last_cad_success); sx127x->_internal.is_last_cad_success);
} }
break; break;
#endif #endif

View File

@ -48,13 +48,13 @@ void auto_init_loramac(void)
{ {
#if IS_USED(MODULE_SX127X) #if IS_USED(MODULE_SX127X)
sx127x_setup(&sx127x, &sx127x_params[0], 0); sx127x_setup(&sx127x, &sx127x_params[0], 0);
loramac.netdev = (netdev_t *)&sx127x; loramac.netdev = &sx127x.netdev;
loramac.netdev->driver = &sx127x_driver; loramac.netdev->driver = &sx127x_driver;
#endif #endif
#if IS_USED(MODULE_SX126X) #if IS_USED(MODULE_SX126X)
sx126x_setup(&sx126x, &sx126x_params[0], 0); sx126x_setup(&sx126x, &sx126x_params[0], 0);
loramac.netdev = (netdev_t *)&sx126x; loramac.netdev = &sx126x.netdev;
loramac.netdev->driver = &sx126x_driver; loramac.netdev->driver = &sx126x_driver;
#endif #endif

View File

@ -45,7 +45,7 @@ int fuzzing_netdev(gnrc_netif_t *netif) {
netdev_test_set_get_cb(&dev, NETOPT_DEVICE_TYPE, _dev_get_device_type); netdev_test_set_get_cb(&dev, NETOPT_DEVICE_TYPE, _dev_get_device_type);
return gnrc_netif_raw_create(netif, _netif_stack, THREAD_STACKSIZE_DEFAULT, return gnrc_netif_raw_create(netif, _netif_stack, THREAD_STACKSIZE_DEFAULT,
GNRC_NETIF_PRIO, "dummy_netif", (netdev_t *)&dev); GNRC_NETIF_PRIO, "dummy_netif", &dev.netdev.netdev);
} }
void fuzzing_netdev_wait(void) { void fuzzing_netdev_wait(void) {

View File

@ -46,7 +46,7 @@
* ipv6_addr_t dst = IPV6_ADDR_UNSPECIFIED; * ipv6_addr_t dst = IPV6_ADDR_UNSPECIFIED;
* *
* netdev_test_setup(&dev, NULL); * netdev_test_setup(&dev, NULL);
* dev->driver->init((netdev_t *)&dev) * dev->driver->init(&dev->netdev->netdev)
* // initialize stack and connect `dev` to it * // initialize stack and connect `dev` to it
* // ... * // ...
* mutex_lock(&wait); * mutex_lock(&wait);
@ -80,10 +80,7 @@
#include "mutex.h" #include "mutex.h"
#ifdef MODULE_NETDEV_IEEE802154
#include "net/netdev/ieee802154.h" #include "net/netdev/ieee802154.h"
#endif
#include "net/netdev.h" #include "net/netdev.h"
#ifdef __cplusplus #ifdef __cplusplus
@ -164,18 +161,14 @@ typedef int (*netdev_test_set_cb_t)(netdev_t *dev, const void *value,
/** /**
* @brief Device descriptor for @ref sys_netdev_test devices * @brief Device descriptor for @ref sys_netdev_test devices
* *
* @extends netdev_t * @extends netdev_ieee802154_t
*/ */
typedef struct { typedef struct {
/** /**
* @brief netdev fields * @brief netdev fields
* @{ * @{
*/ */
#ifdef MODULE_NETDEV_IEEE802154
netdev_ieee802154_t netdev; /**< superclass */ netdev_ieee802154_t netdev; /**< superclass */
#else /* MODULE_NETDEV_IEEE802154 */
netdev_t netdev; /**< superclass */
#endif /* MODULE_NETDEV_IEEE802154 */
/** @} */ /** @} */
/** /**

View File

@ -81,7 +81,7 @@ static gnrc_pktsnip_t *_recv(gnrc_netif_t *netif)
{ {
netdev_t *dev = netif->dev; netdev_t *dev = netif->dev;
netdev_ieee802154_rx_info_t rx_info; netdev_ieee802154_rx_info_t rx_info;
netdev_ieee802154_t *state = (netdev_ieee802154_t *)netif->dev; netdev_ieee802154_t *state = container_of(dev, netdev_ieee802154_t, netdev);
gnrc_pktsnip_t *pkt = NULL; gnrc_pktsnip_t *pkt = NULL;
int bytes_expected = dev->driver->recv(dev, NULL, 0, NULL); int bytes_expected = dev->driver->recv(dev, NULL, 0, NULL);
@ -538,7 +538,8 @@ static void gomach_t2k_trans_in_cp(gnrc_netif_t *netif)
/* If we are retransmitting the packet, use the same sequence number for the /* If we are retransmitting the packet, use the same sequence number for the
* packet to avoid duplicate packet reception at the receiver side. */ * packet to avoid duplicate packet reception at the receiver side. */
if ((netif->mac.tx.no_ack_counter > 0) || (netif->mac.tx.tx_busy_count > 0)) { if ((netif->mac.tx.no_ack_counter > 0) || (netif->mac.tx.tx_busy_count > 0)) {
netdev_ieee802154_t *device_state = (netdev_ieee802154_t *)netif->dev; netdev_t *netdev = netif->dev;
netdev_ieee802154_t *device_state = container_of(netdev, netdev_ieee802154_t, netdev);
device_state->seq = netif->mac.tx.tx_seq; device_state->seq = netif->mac.tx.tx_seq;
} }
@ -627,7 +628,8 @@ static bool _cp_tx_busy(gnrc_netif_t *netif)
/* Store the TX sequence number for this packet. Always use the same /* Store the TX sequence number for this packet. Always use the same
* sequence number for sending the same packet, to avoid duplicated * sequence number for sending the same packet, to avoid duplicated
* packet reception at the receiver. */ * packet reception at the receiver. */
netdev_ieee802154_t *device_state = (netdev_ieee802154_t *)netif->dev; netdev_t *netdev = netif->dev;
netdev_ieee802154_t *device_state = container_of(netdev, netdev_ieee802154_t, netdev);
netif->mac.tx.tx_seq = device_state->seq - 1; netif->mac.tx.tx_seq = device_state->seq - 1;
netif->mac.tx.t2k_state = GNRC_GOMACH_T2K_TRANS_IN_CP; netif->mac.tx.t2k_state = GNRC_GOMACH_T2K_TRANS_IN_CP;
@ -645,7 +647,8 @@ static void _cp_tx_default(gnrc_netif_t *netif)
/* This packet will be retried. Store the TX sequence number for this packet. /* This packet will be retried. Store the TX sequence number for this packet.
* Always use the same sequence number for sending the same packet. */ * Always use the same sequence number for sending the same packet. */
netdev_ieee802154_t *device_state = (netdev_ieee802154_t *)netif->dev; netdev_t *netdev = netif->dev;
netdev_ieee802154_t *device_state = container_of(netdev, netdev_ieee802154_t, netdev);
netif->mac.tx.tx_seq = device_state->seq - 1; netif->mac.tx.tx_seq = device_state->seq - 1;
/* If no_ack_counter reaches the threshold, regarded as phase-lock failed. So /* If no_ack_counter reaches the threshold, regarded as phase-lock failed. So
@ -668,7 +671,8 @@ static void gomach_t2k_wait_cp_txfeedback(gnrc_netif_t *netif)
/* No TX-ISR, go to sleep. */ /* No TX-ISR, go to sleep. */
netif->mac.tx.no_ack_counter++; netif->mac.tx.no_ack_counter++;
netdev_ieee802154_t *device_state = (netdev_ieee802154_t *)netif->dev; netdev_t *netdev = netif->dev;
netdev_ieee802154_t *device_state = container_of(netdev, netdev_ieee802154_t, netdev);
netif->mac.tx.tx_seq = device_state->seq - 1; netif->mac.tx.tx_seq = device_state->seq - 1;
/* Here, we don't queue the packet again, but keep it in tx.packet. */ /* Here, we don't queue the packet again, but keep it in tx.packet. */
@ -798,7 +802,8 @@ static void gomach_t2k_trans_in_slots(gnrc_netif_t *netif)
{ {
/* If this packet is being retransmitted, use the same recorded MAC sequence number. */ /* If this packet is being retransmitted, use the same recorded MAC sequence number. */
if (netif->mac.tx.no_ack_counter > 0) { if (netif->mac.tx.no_ack_counter > 0) {
netdev_ieee802154_t *device_state = (netdev_ieee802154_t *)netif->dev; netdev_t *netdev = netif->dev;
netdev_ieee802154_t *device_state = container_of(netdev, netdev_ieee802154_t, netdev);
device_state->seq = netif->mac.tx.tx_seq; device_state->seq = netif->mac.tx.tx_seq;
} }
@ -866,7 +871,8 @@ static void _t2k_wait_vtdma_tx_default(gnrc_netif_t *netif)
* the following cycle. */ * the following cycle. */
netif->mac.tx.no_ack_counter = 1; netif->mac.tx.no_ack_counter = 1;
netdev_ieee802154_t *device_state = (netdev_ieee802154_t *)netif->dev; netdev_t *netdev = netif->dev;
netdev_ieee802154_t *device_state = container_of(netdev, netdev_ieee802154_t, netdev);
netif->mac.tx.tx_seq = device_state->seq - 1; netif->mac.tx.tx_seq = device_state->seq - 1;
/* Do not release the packet here, continue sending the same packet. ***/ /* Do not release the packet here, continue sending the same packet. ***/
@ -890,7 +896,8 @@ static void gomach_t2k_wait_vtdma_transfeedback(gnrc_netif_t *netif)
/* No TX-ISR, go to sleep. */ /* No TX-ISR, go to sleep. */
netif->mac.tx.no_ack_counter++; netif->mac.tx.no_ack_counter++;
netdev_ieee802154_t *device_state = (netdev_ieee802154_t *)netif->dev; netdev_t *netdev = netif->dev;
netdev_ieee802154_t *device_state = container_of(netdev, netdev_ieee802154_t, netdev);
netif->mac.tx.tx_seq = device_state->seq - 1; netif->mac.tx.tx_seq = device_state->seq - 1;
/* Here, we don't queue the packet again, but keep it in tx.packet. */ /* Here, we don't queue the packet again, but keep it in tx.packet. */
@ -1251,7 +1258,8 @@ static void gomach_t2u_send_data(gnrc_netif_t *netif)
{ {
/* If we are retrying to send the data, reload its original MAC sequence. */ /* If we are retrying to send the data, reload its original MAC sequence. */
if (netif->mac.tx.no_ack_counter > 0) { if (netif->mac.tx.no_ack_counter > 0) {
netdev_ieee802154_t *device_state = (netdev_ieee802154_t *)netif->dev; netdev_t *netdev = netif->dev;
netdev_ieee802154_t *device_state = container_of(netdev, netdev_ieee802154_t, netdev);
device_state->seq = netif->mac.tx.tx_seq; device_state->seq = netif->mac.tx.tx_seq;
} }
@ -1326,7 +1334,8 @@ static void _t2u_data_tx_fail(gnrc_netif_t *netif)
else { else {
/* Record the MAC sequence of the data, retry t2u in next cycle. */ /* Record the MAC sequence of the data, retry t2u in next cycle. */
netif->mac.tx.no_ack_counter = CONFIG_GNRC_GOMACH_REPHASELOCK_THRESHOLD; netif->mac.tx.no_ack_counter = CONFIG_GNRC_GOMACH_REPHASELOCK_THRESHOLD;
netdev_ieee802154_t *device_state = (netdev_ieee802154_t *)netif->dev; netdev_t *netdev = netif->dev;
netdev_ieee802154_t *device_state = container_of(netdev, netdev_ieee802154_t, netdev);
netif->mac.tx.tx_seq = device_state->seq - 1; netif->mac.tx.tx_seq = device_state->seq - 1;
LOG_DEBUG("[GOMACH] t2u send data failed on channel %d.\n", LOG_DEBUG("[GOMACH] t2u send data failed on channel %d.\n",
@ -1345,7 +1354,8 @@ static void gomach_t2u_wait_tx_feedback(gnrc_netif_t *netif)
netif->mac.tx.t2u_retry_counter++; netif->mac.tx.t2u_retry_counter++;
netif->mac.tx.no_ack_counter = CONFIG_GNRC_GOMACH_REPHASELOCK_THRESHOLD; netif->mac.tx.no_ack_counter = CONFIG_GNRC_GOMACH_REPHASELOCK_THRESHOLD;
netdev_ieee802154_t *device_state = (netdev_ieee802154_t *)netif->dev; netdev_t *netdev = netif->dev;
netdev_ieee802154_t *device_state = container_of(netdev, netdev_ieee802154_t, netdev);
netif->mac.tx.tx_seq = device_state->seq - 1; netif->mac.tx.tx_seq = device_state->seq - 1;
gnrc_gomach_set_quit_cycle(netif, true); gnrc_gomach_set_quit_cycle(netif, true);
@ -2174,7 +2184,8 @@ static void _gomach_init(gnrc_netif_t *netif)
netif->mac.rx.check_dup_pkt.queue_head = 0; netif->mac.rx.check_dup_pkt.queue_head = 0;
netif->mac.tx.last_tx_neighbor_id = 0; netif->mac.tx.last_tx_neighbor_id = 0;
netdev_ieee802154_t *device_state = (netdev_ieee802154_t *)netif->dev; netdev_t *netdev = netif->dev;
netdev_ieee802154_t *device_state = container_of(netdev, netdev_ieee802154_t, netdev);
device_state->seq = netif->l2addr[netif->l2addr_len - 1]; device_state->seq = netif->l2addr[netif->l2addr_len - 1];
/* Initialize GoMacH's duplicate-check scheme. */ /* Initialize GoMacH's duplicate-check scheme. */

View File

@ -49,7 +49,7 @@
int _gnrc_gomach_transmit(gnrc_netif_t *netif, gnrc_pktsnip_t *pkt) int _gnrc_gomach_transmit(gnrc_netif_t *netif, gnrc_pktsnip_t *pkt)
{ {
netdev_t *dev = netif->dev; netdev_t *dev = netif->dev;
netdev_ieee802154_t *state = (netdev_ieee802154_t *)netif->dev; netdev_ieee802154_t *state = container_of(dev, netdev_ieee802154_t, netdev);
gnrc_netif_hdr_t *netif_hdr; gnrc_netif_hdr_t *netif_hdr;
const uint8_t *src, *dst = NULL; const uint8_t *src, *dst = NULL;
int res = 0; int res = 0;
@ -159,7 +159,8 @@ static int _parse_packet(gnrc_netif_t *netif, gnrc_pktsnip_t *pkt,
assert(info != NULL); assert(info != NULL);
assert(pkt != NULL); assert(pkt != NULL);
netdev_ieee802154_t *state = (netdev_ieee802154_t *)netif->dev; netdev_t *dev = netif->dev;
netdev_ieee802154_t *state = container_of(dev, netdev_ieee802154_t, netdev);
/* Get the packet sequence number */ /* Get the packet sequence number */
info->seq = ieee802154_get_seq(pkt->next->data); info->seq = ieee802154_get_seq(pkt->next->data);

View File

@ -150,7 +150,7 @@ static gnrc_pktsnip_t *_recv(gnrc_netif_t *netif)
{ {
netdev_t *dev = netif->dev; netdev_t *dev = netif->dev;
netdev_ieee802154_rx_info_t rx_info; netdev_ieee802154_rx_info_t rx_info;
netdev_ieee802154_t *state = (netdev_ieee802154_t *)netif->dev; netdev_ieee802154_t *state = container_of(dev, netdev_ieee802154_t, netdev);
gnrc_pktsnip_t *pkt = NULL; gnrc_pktsnip_t *pkt = NULL;
int bytes_expected = dev->driver->recv(dev, NULL, 0, NULL); int bytes_expected = dev->driver->recv(dev, NULL, 0, NULL);

View File

@ -36,7 +36,7 @@
int _gnrc_lwmac_transmit(gnrc_netif_t *netif, gnrc_pktsnip_t *pkt) int _gnrc_lwmac_transmit(gnrc_netif_t *netif, gnrc_pktsnip_t *pkt)
{ {
netdev_t *dev = netif->dev; netdev_t *dev = netif->dev;
netdev_ieee802154_t *state = (netdev_ieee802154_t *)netif->dev; netdev_ieee802154_t *state = container_of(dev, netdev_ieee802154_t, netdev);
gnrc_netif_hdr_t *netif_hdr; gnrc_netif_hdr_t *netif_hdr;
const uint8_t *src, *dst = NULL; const uint8_t *src, *dst = NULL;
int res = 0; int res = 0;

View File

@ -185,8 +185,11 @@ static gnrc_pktsnip_t *_recv(gnrc_netif_t *netif)
uint16_t payload_size = 0; uint16_t payload_size = 0;
uint8_t *mic = NULL; uint8_t *mic = NULL;
uint8_t mic_size = 0; uint8_t mic_size = 0;
netdev_ieee802154_t *netdev_ieee802154 = container_of(dev,
netdev_ieee802154_t,
netdev);
if (mhr[0] & NETDEV_IEEE802154_SECURITY_EN) { if (mhr[0] & NETDEV_IEEE802154_SECURITY_EN) {
if (ieee802154_sec_decrypt_frame(&((netdev_ieee802154_t *)dev)->sec_ctx, if (ieee802154_sec_decrypt_frame(&netdev_ieee802154->sec_ctx,
nread, nread,
mhr, (uint8_t *)&mhr_len, mhr, (uint8_t *)&mhr_len,
&payload, &payload_size, &payload, &payload_size,
@ -248,7 +251,7 @@ static gnrc_pktsnip_t *_recv(gnrc_netif_t *netif)
static int _send(gnrc_netif_t *netif, gnrc_pktsnip_t *pkt) static int _send(gnrc_netif_t *netif, gnrc_pktsnip_t *pkt)
{ {
netdev_t *dev = netif->dev; netdev_t *dev = netif->dev;
netdev_ieee802154_t *state = (netdev_ieee802154_t *)netif->dev; netdev_ieee802154_t *state = container_of(dev, netdev_ieee802154_t, netdev);
gnrc_netif_hdr_t *netif_hdr; gnrc_netif_hdr_t *netif_hdr;
const uint8_t *src, *dst = NULL; const uint8_t *src, *dst = NULL;
int res = 0; int res = 0;

View File

@ -57,17 +57,17 @@ void auto_init_at86rf2xx(void)
gnrc_netif_gomach_create(&_netif[i], _at86rf2xx_stacks[i], gnrc_netif_gomach_create(&_netif[i], _at86rf2xx_stacks[i],
AT86RF2XX_MAC_STACKSIZE, AT86RF2XX_MAC_STACKSIZE,
AT86RF2XX_MAC_PRIO, "at86rf2xx-gomach", AT86RF2XX_MAC_PRIO, "at86rf2xx-gomach",
(netdev_t *)&at86rf2xx_devs[i]); &at86rf2xx_devs[i].netdev.netdev);
#elif defined(MODULE_GNRC_LWMAC) #elif defined(MODULE_GNRC_LWMAC)
gnrc_netif_lwmac_create(&_netif[i], _at86rf2xx_stacks[i], gnrc_netif_lwmac_create(&_netif[i], _at86rf2xx_stacks[i],
AT86RF2XX_MAC_STACKSIZE, AT86RF2XX_MAC_STACKSIZE,
AT86RF2XX_MAC_PRIO, "at86rf2xx-lwmac", AT86RF2XX_MAC_PRIO, "at86rf2xx-lwmac",
(netdev_t *)&at86rf2xx_devs[i]); &at86rf2xx_devs[i].netdev.netdev);
#else #else
gnrc_netif_ieee802154_create(&_netif[i], _at86rf2xx_stacks[i], gnrc_netif_ieee802154_create(&_netif[i], _at86rf2xx_stacks[i],
AT86RF2XX_MAC_STACKSIZE, AT86RF2XX_MAC_STACKSIZE,
AT86RF2XX_MAC_PRIO, "at86rf2xx", AT86RF2XX_MAC_PRIO, "at86rf2xx",
(netdev_t *)&at86rf2xx_devs[i]); &at86rf2xx_devs[i].netdev.netdev);
#endif #endif
} }
} }

View File

@ -63,7 +63,7 @@ void auto_init_atwinc15x0(void)
gnrc_netif_ethernet_create(&_netif[i], stack[i], gnrc_netif_ethernet_create(&_netif[i], stack[i],
ATWINC15X0_MAC_STACKSIZE, ATWINC15X0_MAC_STACKSIZE,
ATWINC15X0_MAC_PRIO, "atwinc15x0", ATWINC15X0_MAC_PRIO, "atwinc15x0",
(netdev_t *)&dev[i]); &dev[i].netdev);
} }
} }

View File

@ -75,7 +75,7 @@ void auto_init_cc110x(void)
cc110x_setup(&_cc110x_devs[i], &cc110x_params[i], i); cc110x_setup(&_cc110x_devs[i], &cc110x_params[i], i);
gnrc_netif_cc1xxx_create(&_netif[i], stacks[i], CC110X_MAC_STACKSIZE, CC110X_MAC_PRIO, gnrc_netif_cc1xxx_create(&_netif[i], stacks[i], CC110X_MAC_STACKSIZE, CC110X_MAC_PRIO,
"cc110x", (netdev_t *)&_cc110x_devs[i]); "cc110x", &_cc110x_devs[i].netdev);
} }
} }
/** @} */ /** @} */

View File

@ -60,7 +60,7 @@ void auto_init_cc2420(void)
cc2420_setup(&cc2420_devs[i], &cc2420_params[i], i); cc2420_setup(&cc2420_devs[i], &cc2420_params[i], i);
gnrc_netif_ieee802154_create(&_netif[i], _cc2420_stacks[i], CC2420_MAC_STACKSIZE, gnrc_netif_ieee802154_create(&_netif[i], _cc2420_stacks[i], CC2420_MAC_STACKSIZE,
CC2420_MAC_PRIO, "cc2420", CC2420_MAC_PRIO, "cc2420",
(netdev_t *)&cc2420_devs[i]); &cc2420_devs[i].netdev.netdev);
} }
} }
/** @} */ /** @} */

View File

@ -44,6 +44,6 @@ void auto_init_cc2538_rf(void)
gnrc_netif_ieee802154_create(&_netif, _cc2538_rf_stack, gnrc_netif_ieee802154_create(&_netif, _cc2538_rf_stack,
CC2538_MAC_STACKSIZE, CC2538_MAC_STACKSIZE,
CC2538_MAC_PRIO, "cc2538_rf", CC2538_MAC_PRIO, "cc2538_rf",
(netdev_t *)&cc2538_rf_dev); &cc2538_rf_dev.netdev.dev.netdev);
} }
/** @} */ /** @} */

View File

@ -46,7 +46,7 @@ void auto_init_dose(void)
dose_setup(&dose[i], &dose_params[i], i); dose_setup(&dose[i], &dose_params[i], i);
gnrc_netif_ethernet_create(&_netif[i], _netdev_eth_stack[i], DOSE_MAC_STACKSIZE, gnrc_netif_ethernet_create(&_netif[i], _netdev_eth_stack[i], DOSE_MAC_STACKSIZE,
DOSE_MAC_PRIO, "dose", (netdev_t *)&dose[i]); DOSE_MAC_PRIO, "dose", &dose[i].netdev);
} }
} }
/** @} */ /** @} */

View File

@ -63,7 +63,7 @@ void auto_init_enc28j60(void)
enc28j60_setup(&dev[i], &enc28j60_params[i], i); enc28j60_setup(&dev[i], &enc28j60_params[i], i);
gnrc_netif_ethernet_create(&_netif[i], stack[i], ENC28J60_MAC_STACKSIZE, gnrc_netif_ethernet_create(&_netif[i], stack[i], ENC28J60_MAC_STACKSIZE,
ENC28J60_MAC_PRIO, "enc28j60", ENC28J60_MAC_PRIO, "enc28j60",
(netdev_t *)&dev[i]); &dev[i].netdev);
} }
} }
/** @} */ /** @} */

View File

@ -53,6 +53,6 @@ void auto_init_encx24j600(void)
/* initialize netdev<->gnrc adapter state */ /* initialize netdev<->gnrc adapter state */
gnrc_netif_ethernet_create(&_netif, _netdev_eth_stack, ENCX24J600_MAC_STACKSIZE, gnrc_netif_ethernet_create(&_netif, _netdev_eth_stack, ENCX24J600_MAC_STACKSIZE,
ENCX24J600_MAC_PRIO, "encx24j600", ENCX24J600_MAC_PRIO, "encx24j600",
(netdev_t *)&encx24j600); &encx24j600.netdev);
} }
/** @} */ /** @} */

View File

@ -59,7 +59,7 @@ void auto_init_ethos(void)
/* initialize netdev<->gnrc adapter state */ /* initialize netdev<->gnrc adapter state */
gnrc_netif_ethernet_create(&_netif[i], _netdev_eth_stack[i], ETHOS_MAC_STACKSIZE, gnrc_netif_ethernet_create(&_netif[i], _netdev_eth_stack[i], ETHOS_MAC_STACKSIZE,
ETHOS_MAC_PRIO, "ethos", (netdev_t *)&ethos[i]); ETHOS_MAC_PRIO, "ethos", &ethos[i].netdev);
} }
} }
/** @} */ /** @} */

View File

@ -54,7 +54,7 @@ void auto_init_kw2xrf(void)
kw2xrf_setup(&kw2xrf_devs[i], (kw2xrf_params_t*) p); kw2xrf_setup(&kw2xrf_devs[i], (kw2xrf_params_t*) p);
gnrc_netif_ieee802154_create(&_netif[i], _kw2xrf_stacks[i], KW2XRF_MAC_STACKSIZE, gnrc_netif_ieee802154_create(&_netif[i], _kw2xrf_stacks[i], KW2XRF_MAC_STACKSIZE,
KW2XRF_MAC_PRIO, "kw2xrf", KW2XRF_MAC_PRIO, "kw2xrf",
(netdev_t *)&kw2xrf_devs[i]); &kw2xrf_devs[i].netdev.netdev);
} }
} }
/** @} */ /** @} */

View File

@ -62,15 +62,15 @@ void auto_init_kw41zrf(void)
#if defined(MODULE_GNRC_GOMACH) #if defined(MODULE_GNRC_GOMACH)
gnrc_netif_gomach_create(&_netif[i], _kw41zrf_stacks[i], KW41ZRF_NETIF_STACKSIZE, gnrc_netif_gomach_create(&_netif[i], _kw41zrf_stacks[i], KW41ZRF_NETIF_STACKSIZE,
KW41ZRF_NETIF_PRIO, "kw41zrf-gomach", KW41ZRF_NETIF_PRIO, "kw41zrf-gomach",
(netdev_t *)&kw41zrf_devs[i]); &kw41zrf_devs[i].netdev.netdev);
#elif defined(MODULE_GNRC_LWMAC) #elif defined(MODULE_GNRC_LWMAC)
gnrc_netif_lwmac_create(&_netif[i], _kw41zrf_stacks[i], KW41ZRF_NETIF_STACKSIZE, gnrc_netif_lwmac_create(&_netif[i], _kw41zrf_stacks[i], KW41ZRF_NETIF_STACKSIZE,
KW41ZRF_NETIF_PRIO, "kw41zrf-lwmac", KW41ZRF_NETIF_PRIO, "kw41zrf-lwmac",
(netdev_t *)&kw41zrf_devs[i]); &kw41zrf_devs[i].netdev.netdev);
#else #else
gnrc_netif_ieee802154_create(&_netif[i], _kw41zrf_stacks[i], KW41ZRF_NETIF_STACKSIZE, gnrc_netif_ieee802154_create(&_netif[i], _kw41zrf_stacks[i], KW41ZRF_NETIF_STACKSIZE,
KW41ZRF_NETIF_PRIO, "kw41zrf", KW41ZRF_NETIF_PRIO, "kw41zrf",
(netdev_t *)&kw41zrf_devs[i]); &kw41zrf_devs[i].netdev.netdev);
#endif #endif
} }
} }

View File

@ -51,7 +51,7 @@ void auto_init_mrf24j40(void)
gnrc_netif_ieee802154_create(&_netif[i], _mrf24j40_stacks[i], gnrc_netif_ieee802154_create(&_netif[i], _mrf24j40_stacks[i],
MRF24J40_MAC_STACKSIZE, MRF24J40_MAC_PRIO, MRF24J40_MAC_STACKSIZE, MRF24J40_MAC_PRIO,
"mrf24j40", "mrf24j40",
(netdev_t *)&mrf24j40_devs[i]); &mrf24j40_devs[i].netdev.netdev);
} }
} }
/** @} */ /** @} */

View File

@ -77,7 +77,7 @@ void auto_init_nrf24l01p_ng(void)
NRF24L01P_NG_MAC_STACKSIZE, NRF24L01P_NG_MAC_STACKSIZE,
NRF24L01P_NG_MAC_PRIO, NRF24L01P_NG_MAC_PRIO,
"nrf24l01p_ng", "nrf24l01p_ng",
(netdev_t *)&_nrf24l01p_ng_devs[i]); &_nrf24l01p_ng_devs[i].netdev);
} }
} }

View File

@ -48,6 +48,6 @@ void auto_init_nrf802154(void)
gnrc_netif_ieee802154_create(&_netif, _stack, gnrc_netif_ieee802154_create(&_netif, _stack,
NRF802154_MAC_STACKSIZE, NRF802154_MAC_STACKSIZE,
NRF802154_MAC_PRIO, "nrf802154", NRF802154_MAC_PRIO, "nrf802154",
(netdev_t *)&nrf802154_dev); &nrf802154_dev.netdev.dev.netdev);
} }
/** @} */ /** @} */

View File

@ -51,7 +51,7 @@ void auto_init_slipdev(void)
slipdev_setup(&slipdevs[i], p, i); slipdev_setup(&slipdevs[i], p, i);
gnrc_netif_raw_create(&_netif[i], _slipdev_stacks[i], SLIPDEV_STACKSIZE, gnrc_netif_raw_create(&_netif[i], _slipdev_stacks[i], SLIPDEV_STACKSIZE,
SLIPDEV_PRIO, "slipdev", SLIPDEV_PRIO, "slipdev",
(netdev_t *)&slipdevs[i]); &slipdevs[i].netdev);
} }
} }
/** @} */ /** @} */

View File

@ -50,7 +50,7 @@ void auto_init_socket_zep(void)
gnrc_netif_ieee802154_create(&_netif[i], _socket_zep_stacks[i], gnrc_netif_ieee802154_create(&_netif[i], _socket_zep_stacks[i],
SOCKET_ZEP_MAC_STACKSIZE, SOCKET_ZEP_MAC_STACKSIZE,
SOCKET_ZEP_MAC_PRIO, "socket_zep", SOCKET_ZEP_MAC_PRIO, "socket_zep",
(netdev_t *)&_socket_zeps[i]); &_socket_zeps[i].netdev.netdev);
} }
} }
/** @} */ /** @} */

View File

@ -59,12 +59,12 @@ void auto_init_sx126x(void)
gnrc_netif_lorawan_create(&_netif[i], sx126x_stacks[i], gnrc_netif_lorawan_create(&_netif[i], sx126x_stacks[i],
SX126X_STACKSIZE, SX126X_PRIO, SX126X_STACKSIZE, SX126X_PRIO,
"sx126x", (netdev_t *)&sx126x_devs[i]); "sx126x", &sx126x_devs[i].netdev);
} }
else { else {
gnrc_netif_raw_create(&_netif[i], sx126x_stacks[i], gnrc_netif_raw_create(&_netif[i], sx126x_stacks[i],
SX126X_STACKSIZE, SX126X_PRIO, SX126X_STACKSIZE, SX126X_PRIO,
"sx126x", (netdev_t *)&sx126x_devs[i]); "sx126x", &sx126x_devs[i].netdev);
} }
} }
} }

View File

@ -64,12 +64,12 @@ void auto_init_sx127x(void)
gnrc_netif_lorawan_create(&_netif[i], sx127x_stacks[i], gnrc_netif_lorawan_create(&_netif[i], sx127x_stacks[i],
SX127X_STACKSIZE, SX127X_PRIO, SX127X_STACKSIZE, SX127X_PRIO,
"sx127x", (netdev_t *)&sx127x_devs[i]); "sx127x", &sx127x_devs[i].netdev);
} }
else { else {
gnrc_netif_raw_create(&_netif[i], sx127x_stacks[i], gnrc_netif_raw_create(&_netif[i], sx127x_stacks[i],
SX127X_STACKSIZE, SX127X_PRIO, SX127X_STACKSIZE, SX127X_PRIO,
"sx127x", (netdev_t *)&sx127x_devs[i]); "sx127x", &sx127x_devs[i].netdev);
} }
} }
} }

View File

@ -59,7 +59,7 @@ void auto_init_w5100(void)
w5100_setup(&dev[i], &w5100_params[i]); w5100_setup(&dev[i], &w5100_params[i]);
/* initialize netdev <-> gnrc adapter state */ /* initialize netdev <-> gnrc adapter state */
gnrc_netif_ethernet_create(&_netif[i], stack[i], MAC_STACKSIZE, MAC_PRIO, "w5100", gnrc_netif_ethernet_create(&_netif[i], stack[i], MAC_STACKSIZE, MAC_PRIO, "w5100",
(netdev_t *)&dev[i]); &dev[i].nd);
} }
} }
/** @} */ /** @} */

View File

@ -33,7 +33,8 @@ void netdev_test_reset(netdev_test_t *dev)
static int _send(netdev_t *netdev, const iolist_t *iolist) static int _send(netdev_t *netdev, const iolist_t *iolist)
{ {
netdev_test_t *dev = (netdev_test_t *)netdev; netdev_test_t *dev = container_of(container_of(netdev, netdev_ieee802154_t, netdev),
netdev_test_t, netdev);
int res = -EINVAL; int res = -EINVAL;
mutex_lock(&dev->mutex); mutex_lock(&dev->mutex);
@ -46,7 +47,8 @@ static int _send(netdev_t *netdev, const iolist_t *iolist)
static int _recv(netdev_t *netdev, void *buf, size_t len, void *info) static int _recv(netdev_t *netdev, void *buf, size_t len, void *info)
{ {
netdev_test_t *dev = (netdev_test_t *)netdev; netdev_test_t *dev = container_of(container_of(netdev, netdev_ieee802154_t, netdev),
netdev_test_t, netdev);
int res = (buf == NULL) ? 0 : len; /* assume everything would be fine */ int res = (buf == NULL) ? 0 : len; /* assume everything would be fine */
mutex_lock(&dev->mutex); mutex_lock(&dev->mutex);
@ -63,7 +65,8 @@ static int _recv(netdev_t *netdev, void *buf, size_t len, void *info)
static int _init(netdev_t *netdev) static int _init(netdev_t *netdev)
{ {
netdev_test_t *dev = (netdev_test_t *)netdev; netdev_test_t *dev = container_of(container_of(netdev, netdev_ieee802154_t, netdev),
netdev_test_t, netdev);
int res = 0; /* assume everything would be fine */ int res = 0; /* assume everything would be fine */
mutex_lock(&dev->mutex); mutex_lock(&dev->mutex);
@ -76,7 +79,8 @@ static int _init(netdev_t *netdev)
static void _isr(netdev_t *netdev) static void _isr(netdev_t *netdev)
{ {
netdev_test_t *dev = (netdev_test_t *)netdev; netdev_test_t *dev = container_of(container_of(netdev, netdev_ieee802154_t, netdev),
netdev_test_t, netdev);
mutex_lock(&dev->mutex); mutex_lock(&dev->mutex);
if (dev->isr_cb != NULL) { if (dev->isr_cb != NULL) {
@ -90,7 +94,8 @@ static void _isr(netdev_t *netdev)
static int _get(netdev_t *netdev, netopt_t opt, void *value, size_t max_len) static int _get(netdev_t *netdev, netopt_t opt, void *value, size_t max_len)
{ {
netdev_test_t *dev = (netdev_test_t *)netdev; netdev_test_t *dev = container_of(container_of(netdev, netdev_ieee802154_t, netdev),
netdev_test_t, netdev);
int res = -ENOTSUP; /* option assumed to be not supported */ int res = -ENOTSUP; /* option assumed to be not supported */
mutex_lock(&dev->mutex); mutex_lock(&dev->mutex);
@ -103,7 +108,8 @@ static int _get(netdev_t *netdev, netopt_t opt, void *value, size_t max_len)
static int _set(netdev_t *netdev, netopt_t opt, const void *value, size_t value_len) static int _set(netdev_t *netdev, netopt_t opt, const void *value, size_t value_len)
{ {
netdev_test_t *dev = (netdev_test_t *)netdev; netdev_test_t *dev = container_of(container_of(netdev, netdev_ieee802154_t, netdev),
netdev_test_t, netdev);
int res = -ENOTSUP; /* option assumed to be not supported */ int res = -ENOTSUP; /* option assumed to be not supported */
mutex_lock(&dev->mutex); mutex_lock(&dev->mutex);
@ -125,9 +131,7 @@ static const netdev_driver_t _driver = {
void netdev_test_setup(netdev_test_t *dev, void *state) void netdev_test_setup(netdev_test_t *dev, void *state)
{ {
netdev_t *netdev = (netdev_t *)dev; dev->netdev.netdev.driver = &_driver;
netdev->driver = &_driver;
dev->state = state; dev->state = state;
mutex_init(&dev->mutex); mutex_init(&dev->mutex);
netdev_test_reset(dev); netdev_test_reset(dev);

View File

@ -98,7 +98,11 @@ static int cmd_set_trim(int argc, char **argv)
return 1; return 1;
} }
at86rf215_t* dev = (at86rf215_t*)netif->dev; netdev_t *netdev = netif->dev;
netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev,
netdev_ieee802154_t,
netdev);
at86rf215_t* dev = container_of(netdev_ieee802154, at86rf215_t, netdev);
printf("setting trim to %u fF\n", 300U * trim); printf("setting trim to %u fF\n", 300U * trim);
at86rf215_set_trim(dev, trim); at86rf215_set_trim(dev, trim);
@ -151,7 +155,11 @@ static int cmd_set_clock_out(int argc, char **argv)
return 1; return 1;
} }
at86rf215_t *dev = (at86rf215_t *)netif->dev; netdev_t *netdev = netif->dev;
netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev,
netdev_ieee802154_t,
netdev);
at86rf215_t* dev = container_of(netdev_ieee802154, at86rf215_t, netdev);
printf("Clock output set to %s %s\n", keys[freq], freq ? "MHz" : ""); printf("Clock output set to %s %s\n", keys[freq], freq ? "MHz" : "");
at86rf215_set_clock_output(dev, AT86RF215_CLKO_4mA, freq); at86rf215_set_clock_output(dev, AT86RF215_CLKO_4mA, freq);
@ -183,7 +191,11 @@ static int cmd_get_random(int argc, char **argv)
return 1; return 1;
} }
at86rf215_t *dev = (at86rf215_t *)netif->dev; netdev_t *netdev = netif->dev;
netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev,
netdev_ieee802154_t,
netdev);
at86rf215_t* dev = container_of(netdev_ieee802154, at86rf215_t, netdev);
at86rf215_get_random(dev, buffer, values); at86rf215_get_random(dev, buffer, values);

View File

@ -35,7 +35,7 @@ static int send(int iface, le_uint16_t dst_pan, uint8_t *dst_addr,
int ifconfig_list(int idx) int ifconfig_list(int idx)
{ {
int res; int res;
netdev_ieee802154_t *dev = (netdev_ieee802154_t *)(&devs[idx]); netdev_ieee802154_t *dev = &devs[idx].netdev;
int (*get)(netdev_t *, netopt_t, void *, size_t) = dev->netdev.driver->get; int (*get)(netdev_t *, netopt_t, void *, size_t) = dev->netdev.driver->get;
netopt_enable_t enable_val; netopt_enable_t enable_val;
@ -47,21 +47,21 @@ int ifconfig_list(int idx)
print_addr(dev->long_addr, IEEE802154_LONG_ADDRESS_LEN); print_addr(dev->long_addr, IEEE802154_LONG_ADDRESS_LEN);
printf(", PAN: 0x%04x", dev->pan); printf(", PAN: 0x%04x", dev->pan);
res = get((netdev_t *)dev, NETOPT_ADDR_LEN, &u16_val, sizeof(u16_val)); res = get(&dev->netdev, NETOPT_ADDR_LEN, &u16_val, sizeof(u16_val));
if (res < 0) { if (res < 0) {
puts("(err)"); puts("(err)");
return 1; return 1;
} }
printf("\n Address length: %u", (unsigned)u16_val); printf("\n Address length: %u", (unsigned)u16_val);
res = get((netdev_t *)dev, NETOPT_SRC_LEN, &u16_val, sizeof(u16_val)); res = get(&dev->netdev, NETOPT_SRC_LEN, &u16_val, sizeof(u16_val));
if (res < 0) { if (res < 0) {
puts("(err)"); puts("(err)");
return 1; return 1;
} }
printf(", Source address length: %u", (unsigned)u16_val); printf(", Source address length: %u", (unsigned)u16_val);
res = get((netdev_t *)dev, NETOPT_MAX_PDU_SIZE, &u16_val, res = get(&dev->netdev, NETOPT_MAX_PDU_SIZE, &u16_val,
sizeof(u16_val)); sizeof(u16_val));
if (res < 0) { if (res < 0) {
puts("(err)"); puts("(err)");
@ -70,20 +70,20 @@ int ifconfig_list(int idx)
printf(", Max.Payload: %u", (unsigned)u16_val); printf(", Max.Payload: %u", (unsigned)u16_val);
printf("\n Channel: %u", dev->chan); printf("\n Channel: %u", dev->chan);
res = get((netdev_t *)dev, NETOPT_CHANNEL_PAGE, &u16_val, sizeof(u16_val)); res = get(&dev->netdev, NETOPT_CHANNEL_PAGE, &u16_val, sizeof(u16_val));
if (res < 0) { if (res < 0) {
puts("(err)"); puts("(err)");
return 1; return 1;
} }
printf(", Ch.page: %u", (unsigned)u16_val); printf(", Ch.page: %u", (unsigned)u16_val);
res = get((netdev_t *)dev, NETOPT_TX_POWER, &u16_val, sizeof(u16_val)); res = get(&dev->netdev, NETOPT_TX_POWER, &u16_val, sizeof(u16_val));
if (res < 0) { if (res < 0) {
puts("(err)"); puts("(err)");
return 1; return 1;
} }
printf(", TXPower: %d dBm", (int)u16_val); printf(", TXPower: %d dBm", (int)u16_val);
res = get((netdev_t *)dev, NETOPT_IS_WIRED, &u16_val, sizeof(u16_val)); res = get(&dev->netdev, NETOPT_IS_WIRED, &u16_val, sizeof(u16_val));
if (res < 0) { if (res < 0) {
puts(", wireless"); puts(", wireless");
} }
@ -92,27 +92,27 @@ int ifconfig_list(int idx)
} }
printf(" "); printf(" ");
res = get((netdev_t *)dev, NETOPT_PRELOADING, &enable_val, res = get(&dev->netdev, NETOPT_PRELOADING, &enable_val,
sizeof(netopt_enable_t)); sizeof(netopt_enable_t));
if ((res > 0) && (enable_val == NETOPT_ENABLE)) { if ((res > 0) && (enable_val == NETOPT_ENABLE)) {
printf(" PRELOAD"); printf(" PRELOAD");
} }
res = get((netdev_t *)dev, NETOPT_AUTOACK, &enable_val, res = get(&dev->netdev, NETOPT_AUTOACK, &enable_val,
sizeof(netopt_enable_t)); sizeof(netopt_enable_t));
if ((res > 0) && (enable_val == NETOPT_ENABLE)) { if ((res > 0) && (enable_val == NETOPT_ENABLE)) {
printf(" AUTOACK"); printf(" AUTOACK");
} }
res = get((netdev_t *)dev, NETOPT_RAWMODE, &enable_val, res = get(&dev->netdev, NETOPT_RAWMODE, &enable_val,
sizeof(netopt_enable_t)); sizeof(netopt_enable_t));
if ((res > 0) && (enable_val == NETOPT_ENABLE)) { if ((res > 0) && (enable_val == NETOPT_ENABLE)) {
printf(" RAW"); printf(" RAW");
} }
res = get((netdev_t *)dev, NETOPT_AUTOCCA, &enable_val, res = get(&dev->netdev, NETOPT_AUTOCCA, &enable_val,
sizeof(netopt_enable_t)); sizeof(netopt_enable_t));
if ((res > 0) && (enable_val == NETOPT_ENABLE)) { if ((res > 0) && (enable_val == NETOPT_ENABLE)) {
printf(" AUTOCCA"); printf(" AUTOCCA");
} }
res = get((netdev_t *)dev, NETOPT_CSMA, &enable_val, res = get(&dev->netdev, NETOPT_CSMA, &enable_val,
sizeof(netopt_enable_t)); sizeof(netopt_enable_t));
if ((res > 0) && (enable_val == NETOPT_ENABLE)) { if ((res > 0) && (enable_val == NETOPT_ENABLE)) {
printf(" CSMA"); printf(" CSMA");
@ -258,7 +258,7 @@ static int send(int iface, le_uint16_t dst_pan, uint8_t *dst, size_t dst_len,
.iol_len = strlen(data) .iol_len = strlen(data)
}; };
dev = (netdev_ieee802154_t *)&devs[iface]; dev = &devs[iface].netdev;
flags = (uint8_t)(dev->flags & NETDEV_IEEE802154_SEND_MASK); flags = (uint8_t)(dev->flags & NETDEV_IEEE802154_SEND_MASK);
flags |= IEEE802154_FCF_TYPE_DATA; flags |= IEEE802154_FCF_TYPE_DATA;
src_pan = byteorder_btols(byteorder_htons(dev->pan)); src_pan = byteorder_btols(byteorder_htons(dev->pan));
@ -288,7 +288,7 @@ static int send(int iface, le_uint16_t dst_pan, uint8_t *dst, size_t dst_len,
.iol_len = (size_t)res .iol_len = (size_t)res
}; };
res = dev->netdev.driver->send((netdev_t *)dev, &iol_hdr); res = dev->netdev.driver->send(&dev->netdev, &iol_hdr);
if (res < 0) { if (res < 0) {
puts("txtsnd: Error on sending"); puts("txtsnd: Error on sending");
return 1; return 1;

View File

@ -93,7 +93,7 @@ int main(void)
for (unsigned i = 0; i < AT86RF2XX_NUM; i++) { for (unsigned i = 0; i < AT86RF2XX_NUM; i++) {
netopt_enable_t en = NETOPT_ENABLE; netopt_enable_t en = NETOPT_ENABLE;
const at86rf2xx_params_t *p = &at86rf2xx_params[i]; const at86rf2xx_params_t *p = &at86rf2xx_params[i];
netdev_t *dev = (netdev_t *)(&devs[i]); netdev_t *dev = &devs[i].netdev.netdev;
printf("Initializing AT86RF2xx radio at SPI_%d\n", p->spi); printf("Initializing AT86RF2xx radio at SPI_%d\n", p->spi);
at86rf2xx_setup(&devs[i], p, i); at86rf2xx_setup(&devs[i], p, i);

View File

@ -95,7 +95,7 @@ static void _event_cb(netdev_t *dev, netdev_event_t event)
void *_recv_thread(void *arg) void *_recv_thread(void *arg)
{ {
netdev_t *netdev = (netdev_t *)arg; netdev_t *netdev = arg;
static msg_t _msg_queue[SX126X_MSG_QUEUE]; static msg_t _msg_queue[SX126X_MSG_QUEUE];
@ -295,7 +295,7 @@ int sx126x_cmd(int argc, char **argv)
return -1; return -1;
} }
netdev_t *netdev = (netdev_t *)&sx126x; netdev_t *netdev = &sx126x.netdev;
if (!strcmp("get", argv[1])) { if (!strcmp("get", argv[1])) {
return sx126x_get_cmd(netdev, argc, argv); return sx126x_get_cmd(netdev, argc, argv);
@ -321,7 +321,7 @@ static const shell_command_t shell_commands[] = {
int main(void) int main(void)
{ {
sx126x_setup(&sx126x, &sx126x_params[0], 0); sx126x_setup(&sx126x, &sx126x_params[0], 0);
netdev_t *netdev = (netdev_t *)&sx126x; netdev_t *netdev = &sx126x.netdev;
netdev->driver = &sx126x_driver; netdev->driver = &sx126x_driver;

View File

@ -108,7 +108,7 @@ int lora_setup_cmd(int argc, char **argv)
uint8_t lora_cr = (uint8_t)(cr - 4); uint8_t lora_cr = (uint8_t)(cr - 4);
/* Configure radio device */ /* Configure radio device */
netdev_t *netdev = (netdev_t *)&sx127x; netdev_t *netdev = &sx127x.netdev;
netdev->driver->set(netdev, NETOPT_BANDWIDTH, netdev->driver->set(netdev, NETOPT_BANDWIDTH,
&lora_bw, sizeof(lora_bw)); &lora_bw, sizeof(lora_bw));
@ -127,7 +127,7 @@ int random_cmd(int argc, char **argv)
(void)argc; (void)argc;
(void)argv; (void)argv;
netdev_t *netdev = (netdev_t *)&sx127x; netdev_t *netdev = &sx127x.netdev;
uint32_t rand; uint32_t rand;
netdev->driver->get(netdev, NETOPT_RANDOM, &rand, sizeof(rand)); netdev->driver->get(netdev, NETOPT_RANDOM, &rand, sizeof(rand));
@ -135,7 +135,7 @@ int random_cmd(int argc, char **argv)
(unsigned int)rand); (unsigned int)rand);
/* reinit the transceiver to default values */ /* reinit the transceiver to default values */
sx127x_init_radio_settings((sx127x_t *)netdev); sx127x_init_radio_settings(&sx127x);
return 0; return 0;
} }
@ -249,7 +249,7 @@ int send_cmd(int argc, char **argv)
.iol_len = (strlen(argv[1]) + 1) .iol_len = (strlen(argv[1]) + 1)
}; };
netdev_t *netdev = (netdev_t *)&sx127x; netdev_t *netdev = &sx127x.netdev;
if (netdev->driver->send(netdev, &iolist) == -ENOTSUP) { if (netdev->driver->send(netdev, &iolist) == -ENOTSUP) {
puts("Cannot send: radio is still transmitting"); puts("Cannot send: radio is still transmitting");
@ -263,7 +263,7 @@ int listen_cmd(int argc, char **argv)
(void)argc; (void)argc;
(void)argv; (void)argv;
netdev_t *netdev = (netdev_t *)&sx127x; netdev_t *netdev = &sx127x.netdev;
/* Switch to continuous listen mode */ /* Switch to continuous listen mode */
const netopt_enable_t single = false; const netopt_enable_t single = false;
@ -289,7 +289,7 @@ int syncword_cmd(int argc, char **argv)
return -1; return -1;
} }
netdev_t *netdev = (netdev_t *)&sx127x; netdev_t *netdev = &sx127x.netdev;
uint8_t syncword; uint8_t syncword;
if (strstr(argv[1], "get") != NULL) { if (strstr(argv[1], "get") != NULL) {
@ -323,7 +323,7 @@ int channel_cmd(int argc, char **argv)
return -1; return -1;
} }
netdev_t *netdev = (netdev_t *)&sx127x; netdev_t *netdev = &sx127x.netdev;
uint32_t chan; uint32_t chan;
if (strstr(argv[1], "get") != NULL) { if (strstr(argv[1], "get") != NULL) {
@ -358,7 +358,7 @@ int rx_timeout_cmd(int argc, char **argv)
return -1; return -1;
} }
netdev_t *netdev = (netdev_t *)&sx127x; netdev_t *netdev = &sx127x.netdev;
uint8_t rx_timeout; uint8_t rx_timeout;
if (strstr(argv[1], "set") != NULL) { if (strstr(argv[1], "set") != NULL) {
@ -383,7 +383,7 @@ int reset_cmd(int argc, char **argv)
{ {
(void)argc; (void)argc;
(void)argv; (void)argv;
netdev_t *netdev = (netdev_t *)&sx127x; netdev_t *netdev = &sx127x.netdev;
puts("resetting sx127x..."); puts("resetting sx127x...");
netopt_state_t state = NETOPT_STATE_RESET; netopt_state_t state = NETOPT_STATE_RESET;
@ -409,7 +409,7 @@ static void _set_opt(netdev_t *netdev, netopt_t opt, bool val, char *str_help)
int crc_cmd(int argc, char **argv) int crc_cmd(int argc, char **argv)
{ {
netdev_t *netdev = (netdev_t *)&sx127x; netdev_t *netdev = &sx127x.netdev;
if (argc < 3 || strcmp(argv[1], "set") != 0) { if (argc < 3 || strcmp(argv[1], "set") != 0) {
printf("usage: %s set <1|0>\n", argv[0]); printf("usage: %s set <1|0>\n", argv[0]);
@ -424,7 +424,7 @@ int crc_cmd(int argc, char **argv)
int implicit_cmd(int argc, char **argv) int implicit_cmd(int argc, char **argv)
{ {
netdev_t *netdev = (netdev_t *)&sx127x; netdev_t *netdev = &sx127x.netdev;
if (argc < 3 || strcmp(argv[1], "set") != 0) { if (argc < 3 || strcmp(argv[1], "set") != 0) {
printf("usage: %s set <1|0>\n", argv[0]); printf("usage: %s set <1|0>\n", argv[0]);
@ -439,7 +439,7 @@ int implicit_cmd(int argc, char **argv)
int payload_cmd(int argc, char **argv) int payload_cmd(int argc, char **argv)
{ {
netdev_t *netdev = (netdev_t *)&sx127x; netdev_t *netdev = &sx127x.netdev;
if (argc < 3 || strcmp(argv[1], "set") != 0) { if (argc < 3 || strcmp(argv[1], "set") != 0) {
printf("usage: %s set <payload length>\n", argv[0]); printf("usage: %s set <payload length>\n", argv[0]);
@ -542,7 +542,7 @@ void *_recv_thread(void *arg)
int main(void) int main(void)
{ {
sx127x.params = sx127x_params[0]; sx127x.params = sx127x_params[0];
netdev_t *netdev = (netdev_t *)&sx127x; netdev_t *netdev = &sx127x.netdev;
netdev->driver = &sx127x_driver; netdev->driver = &sx127x_driver;

View File

@ -691,7 +691,7 @@ int main(void)
int res = gnrc_netif_raw_create(&_netif, mock_netif_stack, int res = gnrc_netif_raw_create(&_netif, mock_netif_stack,
sizeof(mock_netif_stack), sizeof(mock_netif_stack),
GNRC_NETIF_PRIO, "mock_netif", GNRC_NETIF_PRIO, "mock_netif",
(netdev_t *)&mock_netdev); &mock_netdev.netdev.netdev);
mock_netif = &_netif; mock_netif = &_netif;
assert(res == 0); assert(res == 0);
shell_run(shell_commands, line_buf, SHELL_DEFAULT_BUFSIZE); shell_run(shell_commands, line_buf, SHELL_DEFAULT_BUFSIZE);

View File

@ -157,7 +157,13 @@ static int _run_test(int argc, char **argv)
xtimer_usleep(200); xtimer_usleep(200);
} }
/* activate dumping of sent ethernet frames */ /* activate dumping of sent ethernet frames */
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154,
netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_dump_etherframe); _dump_etherframe);
/* first, test forwarding without subscription */ /* first, test forwarding without subscription */
subscribers = gnrc_netapi_dispatch_receive(GNRC_NETTYPE_IPV6, subscribers = gnrc_netapi_dispatch_receive(GNRC_NETTYPE_IPV6,

View File

@ -65,7 +65,7 @@ void _tests_init(void)
_get_address); _get_address);
int res = gnrc_netif_ethernet_create(&_netif, int res = gnrc_netif_ethernet_create(&_netif,
_mock_netif_stack, THREAD_STACKSIZE_DEFAULT, GNRC_NETIF_PRIO, _mock_netif_stack, THREAD_STACKSIZE_DEFAULT, GNRC_NETIF_PRIO,
"mockup_eth", &_mock_netdev.netdev "mockup_eth", &_mock_netdev.netdev.netdev
); );
_mock_netif = &_netif; _mock_netif = &_netif;
expect(res == 0); expect(res == 0);

View File

@ -82,7 +82,7 @@ void _tests_init(void)
_get_address); _get_address);
int res = gnrc_netif_ethernet_create(&_netif, int res = gnrc_netif_ethernet_create(&_netif,
_mock_netif_stack, THREAD_STACKSIZE_DEFAULT, GNRC_NETIF_PRIO, _mock_netif_stack, THREAD_STACKSIZE_DEFAULT, GNRC_NETIF_PRIO,
"mockup_eth", &_mock_netdev.netdev "mockup_eth", &_mock_netdev.netdev.netdev
); );
_mock_netif = &_netif; _mock_netif = &_netif;
expect(res == 0); expect(res == 0);

View File

@ -27,8 +27,8 @@
static netdev_test_t _devs[NETIF_NUMOF]; static netdev_test_t _devs[NETIF_NUMOF];
netdev_t *ethernet_dev = (netdev_t *)&_devs[0]; netdev_t *ethernet_dev = &_devs[DEV_ETHERNET].netdev.netdev;
netdev_t *ieee802154_dev = (netdev_t *)&_devs[1]; netdev_t *ieee802154_dev = &_devs[DEV_IEEE802154].netdev.netdev;
netdev_t *devs[DEFAULT_DEVS_NUMOF]; netdev_t *devs[DEFAULT_DEVS_NUMOF];
#define MSG_QUEUE_SIZE (8) #define MSG_QUEUE_SIZE (8)
@ -116,7 +116,8 @@ static int _get_netdev_device_type(netdev_t *netdev, void *value, size_t max_len
expect(max_len == sizeof(uint16_t)); expect(max_len == sizeof(uint16_t));
(void)max_len; (void)max_len;
netdev_test_t *dev = (netdev_test_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
netdev_test_t *dev = container_of(netdev_ieee802154, netdev_test_t, netdev);
if (dev->state == 0x0) { if (dev->state == 0x0) {
*((uint16_t *)value) = NETDEV_TYPE_ETHERNET; *((uint16_t *)value) = NETDEV_TYPE_ETHERNET;
@ -143,7 +144,8 @@ static int _get_netdev_max_packet_size(netdev_t *netdev, void *value, size_t max
expect(max_len == sizeof(uint16_t)); expect(max_len == sizeof(uint16_t));
(void)max_len; (void)max_len;
netdev_test_t *dev = (netdev_test_t *)netdev; netdev_ieee802154_t *netdev_ieee802154 = container_of(netdev, netdev_ieee802154_t, netdev);
netdev_test_t *dev = container_of(netdev_ieee802154, netdev_test_t, netdev);
if (dev->state == 0x0) { if (dev->state == 0x0) {
*((uint16_t *)value) = ETHERNET_DATA_LEN; *((uint16_t *)value) = ETHERNET_DATA_LEN;
@ -161,26 +163,26 @@ static int _get_netdev_max_packet_size(netdev_t *netdev, void *value, size_t max
void _tests_init(void) void _tests_init(void)
{ {
msg_init_queue(_main_msg_queue, MSG_QUEUE_SIZE); msg_init_queue(_main_msg_queue, MSG_QUEUE_SIZE);
netdev_test_setup((netdev_test_t *)ethernet_dev, 0); netdev_test_setup(&_devs[DEV_ETHERNET], 0);
netdev_test_set_send_cb((netdev_test_t *)ethernet_dev, _dump_send_packet); netdev_test_set_send_cb(&_devs[DEV_ETHERNET], _dump_send_packet);
netdev_test_set_recv_cb((netdev_test_t *)ethernet_dev, _netdev_recv); netdev_test_set_recv_cb(&_devs[DEV_ETHERNET], _netdev_recv);
netdev_test_set_isr_cb((netdev_test_t *)ethernet_dev, _netdev_isr); netdev_test_set_isr_cb(&_devs[DEV_ETHERNET], _netdev_isr);
netdev_test_set_get_cb((netdev_test_t *)ethernet_dev, NETOPT_DEVICE_TYPE, netdev_test_set_get_cb(&_devs[DEV_ETHERNET], NETOPT_DEVICE_TYPE,
_get_netdev_device_type); _get_netdev_device_type);
netdev_test_set_get_cb((netdev_test_t *)ethernet_dev, NETOPT_MAX_PDU_SIZE, netdev_test_set_get_cb(&_devs[DEV_ETHERNET], NETOPT_MAX_PDU_SIZE,
_get_netdev_max_packet_size); _get_netdev_max_packet_size);
netdev_test_setup((netdev_test_t *)ieee802154_dev, (void *)1); netdev_test_setup(&_devs[DEV_IEEE802154], (void *)1);
netdev_test_set_send_cb((netdev_test_t *)ieee802154_dev, _dump_send_packet); netdev_test_set_send_cb(&_devs[DEV_IEEE802154], _dump_send_packet);
netdev_test_set_recv_cb((netdev_test_t *)ieee802154_dev, _netdev_recv); netdev_test_set_recv_cb(&_devs[DEV_IEEE802154], _netdev_recv);
netdev_test_set_isr_cb((netdev_test_t *)ieee802154_dev, _netdev_isr); netdev_test_set_isr_cb(&_devs[DEV_IEEE802154], _netdev_isr);
netdev_test_set_get_cb((netdev_test_t *)ieee802154_dev, NETOPT_DEVICE_TYPE, netdev_test_set_get_cb(&_devs[DEV_IEEE802154], NETOPT_DEVICE_TYPE,
_get_netdev_device_type); _get_netdev_device_type);
netdev_test_set_get_cb((netdev_test_t *)ieee802154_dev, NETOPT_PROTO, netdev_test_set_get_cb(&_devs[DEV_IEEE802154], NETOPT_PROTO,
_get_netdev_proto); _get_netdev_proto);
netdev_test_set_get_cb((netdev_test_t *)ieee802154_dev, netdev_test_set_get_cb(&_devs[DEV_IEEE802154],
NETOPT_MAX_PDU_SIZE, _get_netdev_max_packet_size); NETOPT_MAX_PDU_SIZE, _get_netdev_max_packet_size);
for (intptr_t i = SPECIAL_DEVS; i < NETIF_NUMOF; i++) { for (intptr_t i = SPECIAL_DEVS; i < NETIF_NUMOF; i++) {
devs[i - SPECIAL_DEVS] = (netdev_t *)&_devs[i]; devs[i - SPECIAL_DEVS] = &_devs[i].netdev.netdev;
netdev_test_setup(&_devs[i], (void *)i); netdev_test_setup(&_devs[i], (void *)i);
netdev_test_set_get_cb(&_devs[i], NETOPT_DEVICE_TYPE, netdev_test_set_get_cb(&_devs[i], NETOPT_DEVICE_TYPE,
_get_netdev_device_type); _get_netdev_device_type);

View File

@ -29,6 +29,8 @@ extern "C" {
#define NETIF_NUMOF (4) #define NETIF_NUMOF (4)
#define SPECIAL_DEVS (2) #define SPECIAL_DEVS (2)
#define DEFAULT_DEVS_NUMOF (NETIF_NUMOF - SPECIAL_DEVS) #define DEFAULT_DEVS_NUMOF (NETIF_NUMOF - SPECIAL_DEVS)
#define DEV_ETHERNET 0
#define DEV_IEEE802154 1
#define GP1 (0x20U) #define GP1 (0x20U)
#define GP2 (0x01U) #define GP2 (0x01U)

View File

@ -1770,27 +1770,37 @@ static Test *embunit_tests_gnrc_netif(void)
int main(void) int main(void)
{ {
_tests_init(); _tests_init();
netdev_test_set_get_cb((netdev_test_t *)ethernet_dev, NETOPT_ADDRESS, netdev_test_t *test_ethernet = container_of(
container_of(ethernet_dev, netdev_ieee802154_t, netdev),
netdev_test_t,
netdev
);
netdev_test_t *test_ieee802154 = container_of(
container_of(ieee802154_dev, netdev_ieee802154_t, netdev),
netdev_test_t,
netdev
);
netdev_test_set_get_cb(test_ethernet, NETOPT_ADDRESS,
_get_netdev_address); _get_netdev_address);
netdev_test_set_set_cb((netdev_test_t *)ethernet_dev, NETOPT_ADDRESS, netdev_test_set_set_cb(test_ethernet, NETOPT_ADDRESS,
_set_netdev_address); _set_netdev_address);
netdev_test_set_get_cb((netdev_test_t *)ethernet_dev, NETOPT_L2_GROUP, netdev_test_set_get_cb(test_ethernet, NETOPT_L2_GROUP,
_get_netdev_l2_group); _get_netdev_l2_group);
netdev_test_set_set_cb((netdev_test_t *)ethernet_dev, NETOPT_L2_GROUP, netdev_test_set_set_cb(test_ethernet, NETOPT_L2_GROUP,
_set_netdev_l2_group); _set_netdev_l2_group);
netdev_test_set_set_cb((netdev_test_t *)ethernet_dev, NETOPT_L2_GROUP_LEAVE, netdev_test_set_set_cb(test_ethernet, NETOPT_L2_GROUP_LEAVE,
_set_netdev_l2_group_leave); _set_netdev_l2_group_leave);
netdev_test_set_get_cb((netdev_test_t *)ieee802154_dev, NETOPT_ADDRESS, netdev_test_set_get_cb(test_ieee802154, NETOPT_ADDRESS,
_get_netdev_address); _get_netdev_address);
netdev_test_set_set_cb((netdev_test_t *)ieee802154_dev, NETOPT_ADDRESS, netdev_test_set_set_cb(test_ieee802154, NETOPT_ADDRESS,
_set_netdev_address); _set_netdev_address);
netdev_test_set_get_cb((netdev_test_t *)ieee802154_dev, NETOPT_ADDRESS_LONG, netdev_test_set_get_cb(test_ieee802154, NETOPT_ADDRESS_LONG,
_get_netdev_address_long); _get_netdev_address_long);
netdev_test_set_set_cb((netdev_test_t *)ieee802154_dev, NETOPT_ADDRESS_LONG, netdev_test_set_set_cb(test_ieee802154, NETOPT_ADDRESS_LONG,
_set_netdev_address_long); _set_netdev_address_long);
netdev_test_set_get_cb((netdev_test_t *)ieee802154_dev, NETOPT_SRC_LEN, netdev_test_set_get_cb(test_ieee802154, NETOPT_SRC_LEN,
_get_netdev_src_len); _get_netdev_src_len);
netdev_test_set_set_cb((netdev_test_t *)ieee802154_dev, NETOPT_SRC_LEN, netdev_test_set_set_cb(test_ieee802154, NETOPT_SRC_LEN,
_set_netdev_src_len); _set_netdev_src_len);
TESTS_START(); TESTS_START();
TESTS_RUN(embunit_tests_gnrc_netif()); TESTS_RUN(embunit_tests_gnrc_netif());

View File

@ -111,7 +111,7 @@ static void _init_interface(void)
_get_netdev_addr_long); _get_netdev_addr_long);
gnrc_netif_ieee802154_create(&_netif, gnrc_netif_ieee802154_create(&_netif,
_netif_stack, THREAD_STACKSIZE_DEFAULT, GNRC_NETIF_PRIO, _netif_stack, THREAD_STACKSIZE_DEFAULT, GNRC_NETIF_PRIO,
"dummy_netif", (netdev_t *)&_ieee802154_dev); "dummy_netif", &_ieee802154_dev.netdev.netdev);
ipv6_addr_t addr = IPV6_ADDR_UNSPECIFIED; ipv6_addr_t addr = IPV6_ADDR_UNSPECIFIED;
/* fd01::01 */ /* fd01::01 */

View File

@ -318,7 +318,12 @@ static void _set_up(void)
static void _tear_down(void) static void _tear_down(void)
{ {
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, NULL); netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test, NULL);
mutex_unlock(&_target_buf_barrier); mutex_unlock(&_target_buf_barrier);
/* wait in case mutex in _mock_netdev_send was already entered */ /* wait in case mutex in _mock_netdev_send was already entered */
mutex_lock(&_target_buf_barrier); mutex_lock(&_target_buf_barrier);
@ -455,7 +460,12 @@ static void test_minfwd_forward__success__1st_frag_sixlo(void)
TEST_ASSERT_NOT_NULL((frag = gnrc_pktbuf_mark(pkt, sizeof(sixlowpan_frag_t), TEST_ASSERT_NOT_NULL((frag = gnrc_pktbuf_mark(pkt, sizeof(sixlowpan_frag_t),
GNRC_NETTYPE_SIXLOWPAN))); GNRC_NETTYPE_SIXLOWPAN)));
LL_DELETE(pkt, frag); LL_DELETE(pkt, frag);
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT_EQUAL_INT(0, gnrc_sixlowpan_frag_minfwd_forward(pkt, TEST_ASSERT_EQUAL_INT(0, gnrc_sixlowpan_frag_minfwd_forward(pkt,
frag->data, frag->data,
@ -490,7 +500,12 @@ static void test_minfwd_forward__success__1st_frag_iphc(void)
TEST_ASSERT_NOT_NULL((frag = gnrc_pktbuf_mark(pkt, sizeof(sixlowpan_frag_t), TEST_ASSERT_NOT_NULL((frag = gnrc_pktbuf_mark(pkt, sizeof(sixlowpan_frag_t),
GNRC_NETTYPE_SIXLOWPAN))); GNRC_NETTYPE_SIXLOWPAN)));
LL_DELETE(pkt, frag); LL_DELETE(pkt, frag);
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT_EQUAL_INT(0, gnrc_sixlowpan_frag_minfwd_forward(pkt, TEST_ASSERT_EQUAL_INT(0, gnrc_sixlowpan_frag_minfwd_forward(pkt,
frag->data, frag->data,
@ -530,7 +545,12 @@ static void test_minfwd_forward__success__nth_frag_incomplete(void)
sizeof(sixlowpan_frag_n_t), sizeof(sixlowpan_frag_n_t),
GNRC_NETTYPE_SIXLOWPAN))); GNRC_NETTYPE_SIXLOWPAN)));
LL_DELETE(pkt, frag); LL_DELETE(pkt, frag);
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT_EQUAL_INT(0, gnrc_sixlowpan_frag_minfwd_forward(pkt, TEST_ASSERT_EQUAL_INT(0, gnrc_sixlowpan_frag_minfwd_forward(pkt,
frag->data, frag->data,
@ -572,7 +592,12 @@ static void test_minfwd_forward__success__nth_frag_complete(void)
LL_DELETE(pkt, frag); LL_DELETE(pkt, frag);
/* simulate current_size only missing the created fragment */ /* simulate current_size only missing the created fragment */
vrbe->super.current_size = _vrbe_base.datagram_size; vrbe->super.current_size = _vrbe_base.datagram_size;
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT_EQUAL_INT(0, gnrc_sixlowpan_frag_minfwd_forward(pkt, TEST_ASSERT_EQUAL_INT(0, gnrc_sixlowpan_frag_minfwd_forward(pkt,
frag->data, frag->data,
@ -613,7 +638,12 @@ static void test_minfwd_forward__ENOMEM__netif_hdr_build_fail(void)
GNRC_NETTYPE_SIXLOWPAN))); GNRC_NETTYPE_SIXLOWPAN)));
LL_DELETE(pkt, frag); LL_DELETE(pkt, frag);
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT_EQUAL_INT(-ENOMEM, gnrc_sixlowpan_frag_minfwd_forward(pkt, TEST_ASSERT_EQUAL_INT(-ENOMEM, gnrc_sixlowpan_frag_minfwd_forward(pkt,
frag->data, frag->data,
@ -637,7 +667,12 @@ static void test_minfwd_frag_iphc__success(void)
fbuf->datagram_size = TEST_SEND_DATAGRAM_SIZE; fbuf->datagram_size = TEST_SEND_DATAGRAM_SIZE;
fbuf->tag = TEST_SEND_DATAGRAM_TAG; fbuf->tag = TEST_SEND_DATAGRAM_TAG;
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT_EQUAL_INT( TEST_ASSERT_EQUAL_INT(
0, gnrc_sixlowpan_frag_minfwd_frag_iphc(pkt, 0, gnrc_sixlowpan_frag_minfwd_frag_iphc(pkt,
@ -677,7 +712,12 @@ static void test_minfwd_frag_iphc__no_frag(void)
fbuf->datagram_size = TEST_SEND_FRAG1_PAYLOAD_SIZE; fbuf->datagram_size = TEST_SEND_FRAG1_PAYLOAD_SIZE;
fbuf->tag = TEST_SEND_DATAGRAM_TAG; fbuf->tag = TEST_SEND_DATAGRAM_TAG;
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT_EQUAL_INT( TEST_ASSERT_EQUAL_INT(
-1, gnrc_sixlowpan_frag_minfwd_frag_iphc(pkt, -1, gnrc_sixlowpan_frag_minfwd_frag_iphc(pkt,
@ -716,7 +756,12 @@ static void test_minfwd_frag_iphc__ll_dst(void)
fbuf->datagram_size = TEST_SEND_FRAG1_PAYLOAD_SIZE; fbuf->datagram_size = TEST_SEND_FRAG1_PAYLOAD_SIZE;
fbuf->tag = TEST_SEND_DATAGRAM_TAG; fbuf->tag = TEST_SEND_DATAGRAM_TAG;
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT_EQUAL_INT( TEST_ASSERT_EQUAL_INT(
-1, gnrc_sixlowpan_frag_minfwd_frag_iphc(pkt, -1, gnrc_sixlowpan_frag_minfwd_frag_iphc(pkt,
@ -744,7 +789,12 @@ static void test_sixlo_recv__1st_frag_uncomp(void)
); );
/* configure route to destination of IP header in frag */ /* configure route to destination of IP header in frag */
TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN)); TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -807,7 +857,12 @@ static void test_sixlo_recv__1st_frag_uncomp__after_nth_frag(void)
); );
/* configure route to destination of IP header in frag */ /* configure route to destination of IP header in frag */
TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN)); TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -856,7 +911,12 @@ static void test_sixlo_recv__1st_frag_comp(void)
); );
/* configure route to destination of IP header in frag */ /* configure route to destination of IP header in frag */
TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN)); TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -906,7 +966,12 @@ static void test_sixlo_recv__1st_frag_comp__only_iphc(void)
); );
/* configure route to destination of IP header in frag */ /* configure route to destination of IP header in frag */
TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN)); TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -946,7 +1011,12 @@ static void test_sixlo_recv__1st_frag_comp__only_iphc_no_nhc(void)
); );
/* configure route to destination of IP header in frag */ /* configure route to destination of IP header in frag */
TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN)); TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1084,7 +1154,12 @@ static void test_sixlo_recv__1st_frag_comp__after_nth_frag(void)
); );
/* configure route to destination of IP header in frag */ /* configure route to destination of IP header in frag */
TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN)); TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1135,7 +1210,12 @@ static void test_sixlo_recv__nth_frag(void)
_rem_l2, sizeof(_rem_l2))) _rem_l2, sizeof(_rem_l2)))
); );
vrbe->super.arrival = xtimer_now_usec(); vrbe->super.arrival = xtimer_now_usec();
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1176,7 +1256,12 @@ static void test_sixlo_recv__nth_frag__datagram_complete(void)
/* simulate current_size only missing the created fragment */ /* simulate current_size only missing the created fragment */
vrbe->super.current_size = _vrbe_base.datagram_size - TEST_NTH_FRAG_SIZE; vrbe->super.current_size = _vrbe_base.datagram_size - TEST_NTH_FRAG_SIZE;
vrbe->super.arrival = xtimer_now_usec(); vrbe->super.arrival = xtimer_now_usec();
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1208,7 +1293,12 @@ static void test_sixlo_recv__nth_frag__no_vrbe(void)
TEST_ASSERT_NOT_NULL( TEST_ASSERT_NOT_NULL(
(frag = _create_recv_frag(_test_nth_frag, sizeof(_test_nth_frag))) (frag = _create_recv_frag(_test_nth_frag, sizeof(_test_nth_frag)))
); );
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1244,7 +1334,12 @@ static void test_sixlo_recv__nth_frag__duplicate(void)
_rem_l2, sizeof(_rem_l2))) _rem_l2, sizeof(_rem_l2)))
); );
vrbe->super.arrival = xtimer_now_usec(); vrbe->super.arrival = xtimer_now_usec();
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1294,7 +1389,12 @@ static void test_sixlo_recv__nth_frag__overlap(void)
_rem_l2, sizeof(_rem_l2))) _rem_l2, sizeof(_rem_l2)))
); );
vrbe->super.arrival = xtimer_now_usec(); vrbe->super.arrival = xtimer_now_usec();
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1334,7 +1434,12 @@ static void test_sixlo_send(void)
TEST_ASSERT_NOT_NULL((pkt = _create_send_datagram(false, true))); TEST_ASSERT_NOT_NULL((pkt = _create_send_datagram(false, true)));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_send(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_send(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,

View File

@ -348,7 +348,13 @@ static void _set_up(void)
static void _tear_down(void) static void _tear_down(void)
{ {
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, NULL); netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test, NULL);
mutex_unlock(&_target_buf_barrier); mutex_unlock(&_target_buf_barrier);
/* wait in case mutex in _mock_netdev_send was already entered */ /* wait in case mutex in _mock_netdev_send was already entered */
mutex_lock(&_target_buf_barrier); mutex_lock(&_target_buf_barrier);
@ -373,7 +379,12 @@ static void test_sfr_forward__success__1st_frag_sixlo(void)
TEST_ASSERT_NOT_NULL((frag = gnrc_pktbuf_mark(pkt, sizeof(sixlowpan_sfr_rfrag_t), TEST_ASSERT_NOT_NULL((frag = gnrc_pktbuf_mark(pkt, sizeof(sixlowpan_sfr_rfrag_t),
GNRC_NETTYPE_SIXLOWPAN))); GNRC_NETTYPE_SIXLOWPAN)));
LL_DELETE(pkt, frag); LL_DELETE(pkt, frag);
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT_EQUAL_INT(0, gnrc_sixlowpan_frag_sfr_forward(pkt, TEST_ASSERT_EQUAL_INT(0, gnrc_sixlowpan_frag_sfr_forward(pkt,
frag->data, frag->data,
@ -407,7 +418,12 @@ static void test_sfr_forward__success__1st_frag_iphc(void)
TEST_ASSERT_NOT_NULL((frag = gnrc_pktbuf_mark(pkt, sizeof(sixlowpan_sfr_rfrag_t), TEST_ASSERT_NOT_NULL((frag = gnrc_pktbuf_mark(pkt, sizeof(sixlowpan_sfr_rfrag_t),
GNRC_NETTYPE_SIXLOWPAN))); GNRC_NETTYPE_SIXLOWPAN)));
LL_DELETE(pkt, frag); LL_DELETE(pkt, frag);
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT_EQUAL_INT(0, gnrc_sixlowpan_frag_sfr_forward(pkt, TEST_ASSERT_EQUAL_INT(0, gnrc_sixlowpan_frag_sfr_forward(pkt,
frag->data, frag->data,
@ -446,7 +462,12 @@ static void test_sfr_forward__success__nth_frag_incomplete(void)
sizeof(sixlowpan_sfr_rfrag_t), sizeof(sixlowpan_sfr_rfrag_t),
GNRC_NETTYPE_SIXLOWPAN))); GNRC_NETTYPE_SIXLOWPAN)));
LL_DELETE(pkt, frag); LL_DELETE(pkt, frag);
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT_EQUAL_INT(0, gnrc_sixlowpan_frag_sfr_forward(pkt, TEST_ASSERT_EQUAL_INT(0, gnrc_sixlowpan_frag_sfr_forward(pkt,
frag->data, frag->data,
@ -486,7 +507,12 @@ static void test_sfr_forward__success__nth_frag_complete(void)
LL_DELETE(pkt, frag); LL_DELETE(pkt, frag);
/* simulate current_size only missing the created fragment */ /* simulate current_size only missing the created fragment */
vrbe->super.current_size = _vrbe_base.datagram_size; vrbe->super.current_size = _vrbe_base.datagram_size;
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT_EQUAL_INT(0, gnrc_sixlowpan_frag_sfr_forward(pkt, TEST_ASSERT_EQUAL_INT(0, gnrc_sixlowpan_frag_sfr_forward(pkt,
frag->data, frag->data,
@ -524,7 +550,12 @@ static void test_sfr_forward__ENOMEM__netif_hdr_build_fail(void)
GNRC_NETTYPE_SIXLOWPAN))); GNRC_NETTYPE_SIXLOWPAN)));
LL_DELETE(pkt, frag); LL_DELETE(pkt, frag);
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT_EQUAL_INT(-ENOMEM, gnrc_sixlowpan_frag_sfr_forward(pkt, TEST_ASSERT_EQUAL_INT(-ENOMEM, gnrc_sixlowpan_frag_sfr_forward(pkt,
frag->data, frag->data,
@ -548,7 +579,12 @@ static void test_sixlo_recv_fwd__1st_frag_uncomp(void)
); );
/* configure route to destination of IP header in frag */ /* configure route to destination of IP header in frag */
TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN)); TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -580,7 +616,12 @@ static void test_sixlo_recv_fwd__1st_frag_uncomp__req_ack(void)
sixlowpan_sfr_rfrag_set_ack_req(frag->data); sixlowpan_sfr_rfrag_set_ack_req(frag->data);
/* configure route to destination of IP header in frag */ /* configure route to destination of IP header in frag */
TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN)); TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -613,7 +654,12 @@ static void test_sixlo_recv_fwd__1st_frag_uncomp__no_route(void)
(frag = _create_recv_frag(_test_1st_frag_uncomp, (frag = _create_recv_frag(_test_1st_frag_uncomp,
sizeof(_test_1st_frag_uncomp))) sizeof(_test_1st_frag_uncomp)))
); );
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -644,7 +690,12 @@ static void test_sixlo_recv_fwd__1st_frag_uncomp__after_nth_frag(void)
); );
/* configure route to destination of IP header in frag */ /* configure route to destination of IP header in frag */
TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN)); TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -693,7 +744,12 @@ static void test_sixlo_recv_fwd__1st_frag_comp(void)
); );
/* configure route to destination of IP header in frag */ /* configure route to destination of IP header in frag */
TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN)); TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -750,7 +806,12 @@ static void test_sixlo_recv_fwd__1st_frag_comp__resend(void)
); );
/* configure route to destination of IP header in frag */ /* configure route to destination of IP header in frag */
TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN)); TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -806,7 +867,12 @@ static void test_sixlo_recv_fwd__1st_frag_comp__only_iphc(void)
sizeof(sixlowpan_sfr_rfrag_t)); sizeof(sixlowpan_sfr_rfrag_t));
/* configure route to destination of IP header in frag */ /* configure route to destination of IP header in frag */
TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN)); TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -846,7 +912,12 @@ static void test_sixlo_recv_fwd__1st_frag_comp__only_iphc_no_nhc(void)
); );
/* configure route to destination of IP header in frag */ /* configure route to destination of IP header in frag */
TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN)); TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -881,7 +952,12 @@ static void test_sixlo_recv_fwd__1st_frag_comp__no_route(void)
(frag = _create_recv_frag(_test_1st_frag_comp_prev_hop, (frag = _create_recv_frag(_test_1st_frag_comp_prev_hop,
sizeof(_test_1st_frag_comp_prev_hop))) sizeof(_test_1st_frag_comp_prev_hop)))
); );
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -910,7 +986,12 @@ static void test_sixlo_recv_fwd__1st_frag_comp__no_route_only_iphc(void)
(frag = _create_recv_frag(_test_1st_frag_comp_prev_hop, (frag = _create_recv_frag(_test_1st_frag_comp_prev_hop,
TEST_1ST_FRAG_COMP_PREV_HOP_UDP_PAYLOAD_POS)) TEST_1ST_FRAG_COMP_PREV_HOP_UDP_PAYLOAD_POS))
); );
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -946,7 +1027,12 @@ static void test_sixlo_recv_fwd__1st_frag_comp__no_refrag(void)
reserved[i] = gnrc_sixlowpan_frag_fb_get(); reserved[i] = gnrc_sixlowpan_frag_fb_get();
reserved[i]->pkt = frag; reserved[i]->pkt = frag;
} }
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -984,7 +1070,12 @@ static void test_sixlo_recv_fwd__1st_frag_comp__after_nth_frag(void)
); );
/* configure route to destination of IP header in frag */ /* configure route to destination of IP header in frag */
TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN)); TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1057,7 +1148,12 @@ static void test_sixlo_recv_fwd__1st_frag_abort(void)
); );
vrbe->in_netif = _mock_netif; vrbe->in_netif = _mock_netif;
exp_tag = vrbe->out_tag & 0xff; exp_tag = vrbe->out_tag & 0xff;
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1100,7 +1196,12 @@ static void test_sixlo_recv_fwd__1st_frag_nalp(void)
data[sizeof(sixlowpan_sfr_rfrag_t)] &= ~(0xc0); data[sizeof(sixlowpan_sfr_rfrag_t)] &= ~(0xc0);
/* configure route to destination of IP header in frag */ /* configure route to destination of IP header in frag */
TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN)); TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1133,7 +1234,12 @@ static void test_sixlo_recv_fwd__1st_frag_nalp__req_ack(void)
sixlowpan_sfr_rfrag_set_ack_req(frag->data); sixlowpan_sfr_rfrag_set_ack_req(frag->data);
/* configure route to destination of IP header in frag */ /* configure route to destination of IP header in frag */
TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN)); TEST_ASSERT_EQUAL_INT(0, _set_route_and_nce(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1166,7 +1272,12 @@ static void test_sixlo_recv_fwd__1st_frag_nalp__no_vrb(void)
data = frag->data; data = frag->data;
/* mark dispatch after RFRAG header a non-6LoWPAN frame */ /* mark dispatch after RFRAG header a non-6LoWPAN frame */
data[sizeof(sixlowpan_sfr_rfrag_t)] &= ~(0xc0); data[sizeof(sixlowpan_sfr_rfrag_t)] &= ~(0xc0);
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1199,7 +1310,12 @@ static void test_sixlo_recv_fwd__nth_frag(void)
vrbe->in_netif = _mock_netif; vrbe->in_netif = _mock_netif;
/* set offset_diff to test it in the outgoing RFRAG */ /* set offset_diff to test it in the outgoing RFRAG */
vrbe->offset_diff = TEST_OFFSET_DIFF; vrbe->offset_diff = TEST_OFFSET_DIFF;
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1236,7 +1352,12 @@ static void test_sixlo_recv_fwd__nth_frag__no_vrbe(void)
TEST_ASSERT_NOT_NULL( TEST_ASSERT_NOT_NULL(
(frag = _create_recv_frag(_test_nth_frag, sizeof(_test_nth_frag))) (frag = _create_recv_frag(_test_nth_frag, sizeof(_test_nth_frag)))
); );
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1268,7 +1389,12 @@ static void test_sixlo_recv_fwd__nth_frag__duplicate(void)
(vrbe = gnrc_sixlowpan_frag_vrb_add(&_vrbe_base, _mock_netif, (vrbe = gnrc_sixlowpan_frag_vrb_add(&_vrbe_base, _mock_netif,
_rem_l2, sizeof(_rem_l2))) _rem_l2, sizeof(_rem_l2)))
); );
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1313,7 +1439,12 @@ static void test_sixlo_recv_fwd__nth_frag__overlap(void)
(vrbe = gnrc_sixlowpan_frag_vrb_add(&_vrbe_base, _mock_netif, (vrbe = gnrc_sixlowpan_frag_vrb_add(&_vrbe_base, _mock_netif,
_rem_l2, sizeof(_rem_l2))) _rem_l2, sizeof(_rem_l2)))
); );
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1358,7 +1489,12 @@ static void test_sixlo_recv_fwd__frag__too_short(void)
(frag = _create_recv_frag(_test_1st_frag_comp, (frag = _create_recv_frag(_test_1st_frag_comp,
sizeof(sixlowpan_sfr_rfrag_t) - 1)) sizeof(sixlowpan_sfr_rfrag_t) - 1))
); );
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1392,7 +1528,12 @@ static void test_sixlo_recv_fwd__ack(void)
vrbe->in_netif = _mock_netif; vrbe->in_netif = _mock_netif;
ack_hdr = ack->data; ack_hdr = ack->data;
ack_hdr->base.tag = vrbe->out_tag; ack_hdr->base.tag = vrbe->out_tag;
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1428,7 +1569,12 @@ static void test_sixlo_recv_fwd__NULL_ack(void)
ack_hdr->base.tag = vrbe->out_tag; ack_hdr->base.tag = vrbe->out_tag;
/* set ACK bitmap to NULL */ /* set ACK bitmap to NULL */
memset(ack_hdr->bitmap, 0, sizeof(ack_hdr->bitmap)); memset(ack_hdr->bitmap, 0, sizeof(ack_hdr->bitmap));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1466,7 +1612,12 @@ static void test_sixlo_recv_fwd__FULL_ack(void)
ack_hdr->base.tag = vrbe->out_tag; ack_hdr->base.tag = vrbe->out_tag;
/* set ACK bitmap to NULL */ /* set ACK bitmap to NULL */
memcpy(ack_hdr->bitmap, full_bitmap, sizeof(ack_hdr->bitmap)); memcpy(ack_hdr->bitmap, full_bitmap, sizeof(ack_hdr->bitmap));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1490,7 +1641,12 @@ static void test_sixlo_recv_fwd__ack__no_vrbe(void)
TEST_ASSERT_NOT_NULL( TEST_ASSERT_NOT_NULL(
(ack = _create_recv_ack(_test_ack, sizeof(_test_ack))) (ack = _create_recv_ack(_test_ack, sizeof(_test_ack)))
); );
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1519,7 +1675,12 @@ static void test_sixlo_recv_fwd__ack__too_short(void)
(frag = _create_recv_frag(_test_ack, (frag = _create_recv_frag(_test_ack,
sizeof(sixlowpan_sfr_ack_t) - 1)) sizeof(sixlowpan_sfr_ack_t) - 1))
); );
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1548,7 +1709,12 @@ static void test_sixlo_recv_ep__1st_frag_uncomp(void)
/* configure interface to be endpoint of route */ /* configure interface to be endpoint of route */
TEST_ASSERT_EQUAL_INT(sizeof(ipv6_addr_t), TEST_ASSERT_EQUAL_INT(sizeof(ipv6_addr_t),
_add_dst(&_rem_gb, REM_GB_PFX_LEN)); _add_dst(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1591,7 +1757,12 @@ static void test_sixlo_recv_ep__1st_frag_uncomp__req_ack(void)
/* configure interface to be endpoint of route */ /* configure interface to be endpoint of route */
TEST_ASSERT_EQUAL_INT(sizeof(ipv6_addr_t), TEST_ASSERT_EQUAL_INT(sizeof(ipv6_addr_t),
_add_dst(&_rem_gb, REM_GB_PFX_LEN)); _add_dst(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1633,7 +1804,12 @@ static void test_sixlo_recv_ep__1st_frag_uncomp__after_nth_frag(void)
/* configure interface to be endpoint of route */ /* configure interface to be endpoint of route */
TEST_ASSERT_EQUAL_INT(sizeof(ipv6_addr_t), TEST_ASSERT_EQUAL_INT(sizeof(ipv6_addr_t),
_add_dst(&_rem_gb, REM_GB_PFX_LEN)); _add_dst(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1691,7 +1867,12 @@ static void test_sixlo_recv_ep__1st_frag_comp(void)
/* configure interface to be endpoint of route */ /* configure interface to be endpoint of route */
TEST_ASSERT_EQUAL_INT(sizeof(ipv6_addr_t), TEST_ASSERT_EQUAL_INT(sizeof(ipv6_addr_t),
_add_dst(&_rem_gb, REM_GB_PFX_LEN)); _add_dst(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1730,7 +1911,12 @@ static void test_sixlo_recv_ep__1st_frag_comp__after_nth_frag(void)
/* configure interface to be endpoint of route */ /* configure interface to be endpoint of route */
TEST_ASSERT_EQUAL_INT(sizeof(ipv6_addr_t), TEST_ASSERT_EQUAL_INT(sizeof(ipv6_addr_t),
_add_dst(&_rem_gb, REM_GB_PFX_LEN)); _add_dst(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1788,7 +1974,12 @@ static void test_sixlo_recv_ep__1st_frag_abort(void)
/* configure interface to be endpoint of route */ /* configure interface to be endpoint of route */
TEST_ASSERT_EQUAL_INT(sizeof(ipv6_addr_t), TEST_ASSERT_EQUAL_INT(sizeof(ipv6_addr_t),
_add_dst(&_rem_gb, REM_GB_PFX_LEN)); _add_dst(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1836,7 +2027,12 @@ static void test_sixlo_recv_ep__1st_frag_abort__req_ack(void)
/* configure interface to be endpoint of route */ /* configure interface to be endpoint of route */
TEST_ASSERT_EQUAL_INT(sizeof(ipv6_addr_t), TEST_ASSERT_EQUAL_INT(sizeof(ipv6_addr_t),
_add_dst(&_rem_gb, REM_GB_PFX_LEN)); _add_dst(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_receive(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -1888,7 +2084,12 @@ static void test_sixlo_recv_ep__complete_datagram(void)
/* configure interface to be endpoint of route */ /* configure interface to be endpoint of route */
TEST_ASSERT_EQUAL_INT(sizeof(ipv6_addr_t), TEST_ASSERT_EQUAL_INT(sizeof(ipv6_addr_t),
_add_dst(&_rem_gb, REM_GB_PFX_LEN)); _add_dst(&_rem_gb, REM_GB_PFX_LEN));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
/* ==== FIRST FRAGMENT ==== */ /* ==== FIRST FRAGMENT ==== */
TEST_ASSERT_NOT_NULL( TEST_ASSERT_NOT_NULL(
@ -2011,7 +2212,12 @@ static void test_sixlo_send(void)
TEST_ASSERT(3 <= CONFIG_GNRC_SIXLOWPAN_SFR_OPT_WIN_SIZE); TEST_ASSERT(3 <= CONFIG_GNRC_SIXLOWPAN_SFR_OPT_WIN_SIZE);
TEST_ASSERT_NOT_NULL((pkt = _create_send_datagram(false, true))); TEST_ASSERT_NOT_NULL((pkt = _create_send_datagram(false, true)));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_send(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_send(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -2071,7 +2277,12 @@ static void test_sixlo_send__first_ackd(void)
TEST_ASSERT(3 <= CONFIG_GNRC_SIXLOWPAN_SFR_OPT_WIN_SIZE); TEST_ASSERT(3 <= CONFIG_GNRC_SIXLOWPAN_SFR_OPT_WIN_SIZE);
TEST_ASSERT_NOT_NULL((pkt = _create_send_datagram(false, true))); TEST_ASSERT_NOT_NULL((pkt = _create_send_datagram(false, true)));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_send(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_send(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -2154,7 +2365,12 @@ static void test_sixlo_send__middle_ackd(void)
TEST_ASSERT(3 <= CONFIG_GNRC_SIXLOWPAN_SFR_OPT_WIN_SIZE); TEST_ASSERT(3 <= CONFIG_GNRC_SIXLOWPAN_SFR_OPT_WIN_SIZE);
TEST_ASSERT_NOT_NULL((pkt = _create_send_datagram(false, true))); TEST_ASSERT_NOT_NULL((pkt = _create_send_datagram(false, true)));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_send(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_send(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -2239,7 +2455,12 @@ static void test_sixlo_send__last_ackd(void)
TEST_ASSERT(3 <= CONFIG_GNRC_SIXLOWPAN_SFR_OPT_WIN_SIZE); TEST_ASSERT(3 <= CONFIG_GNRC_SIXLOWPAN_SFR_OPT_WIN_SIZE);
TEST_ASSERT_NOT_NULL((pkt = _create_send_datagram(false, true))); TEST_ASSERT_NOT_NULL((pkt = _create_send_datagram(false, true)));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_send(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_send(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -2324,7 +2545,12 @@ static void test_sixlo_send__all_ackd(void)
TEST_ASSERT(3 <= CONFIG_GNRC_SIXLOWPAN_SFR_OPT_WIN_SIZE); TEST_ASSERT(3 <= CONFIG_GNRC_SIXLOWPAN_SFR_OPT_WIN_SIZE);
TEST_ASSERT_NOT_NULL((pkt = _create_send_datagram(false, true))); TEST_ASSERT_NOT_NULL((pkt = _create_send_datagram(false, true)));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_send(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_send(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,
@ -2384,7 +2610,12 @@ static void test_sixlo_send__FULL_ack_recv(void)
TEST_ASSERT(3 <= CONFIG_GNRC_SIXLOWPAN_SFR_OPT_WIN_SIZE); TEST_ASSERT(3 <= CONFIG_GNRC_SIXLOWPAN_SFR_OPT_WIN_SIZE);
TEST_ASSERT_NOT_NULL((pkt = _create_send_datagram(false, true))); TEST_ASSERT_NOT_NULL((pkt = _create_send_datagram(false, true)));
netdev_test_set_send_cb((netdev_test_t *)_mock_netif->dev, netdev_ieee802154_t *netdev_ieee802154 = container_of(_mock_netif->dev,
netdev_ieee802154_t,
netdev);
netdev_test_t *netdev_test = container_of(netdev_ieee802154, netdev_test_t,
netdev);
netdev_test_set_send_cb(netdev_test,
_mock_netdev_send); _mock_netdev_send);
TEST_ASSERT(0 < gnrc_netapi_dispatch_send(GNRC_NETTYPE_SIXLOWPAN, TEST_ASSERT(0 < gnrc_netapi_dispatch_send(GNRC_NETTYPE_SIXLOWPAN,
GNRC_NETREG_DEMUX_CTX_ALL, GNRC_NETREG_DEMUX_CTX_ALL,

View File

@ -311,7 +311,7 @@ static void _init_mock_netif(void)
_get_netdev_addr_long); _get_netdev_addr_long);
gnrc_netif_ieee802154_create(&_netif, _mock_netif_stack, gnrc_netif_ieee802154_create(&_netif, _mock_netif_stack,
THREAD_STACKSIZE_DEFAULT, GNRC_NETIF_PRIO, THREAD_STACKSIZE_DEFAULT, GNRC_NETIF_PRIO,
"mock_netif", (netdev_t *)&_mock_dev); "mock_netif", &_mock_dev.netdev.netdev);
_mock_netif = &_netif; _mock_netif = &_netif;
thread_yield_higher(); thread_yield_higher();
} }

View File

@ -65,7 +65,7 @@ extern const netdev_driver_t netdev_submac_driver;
static void _netdev_isr_handler(event_t *event) static void _netdev_isr_handler(event_t *event)
{ {
(void)event; (void)event;
netdev_t *netdev = (netdev_t *)&netdev_submac; netdev_t *netdev = &netdev_submac.dev.netdev;
netdev->driver->isr(netdev); netdev->driver->isr(netdev);
} }
@ -207,7 +207,7 @@ static int _init(void)
{ {
ieee802154_hal_test_init_devs(); ieee802154_hal_test_init_devs();
netdev_t *dev = (netdev_t *)&netdev_submac; netdev_t *dev = &netdev_submac.dev.netdev;
dev->event_callback = _event_cb; dev->event_callback = _event_cb;
netdev_ieee802154_submac_init(&netdev_submac, netdev_ieee802154_submac_init(&netdev_submac,
@ -254,7 +254,7 @@ static int send(uint8_t *dst, size_t dst_len,
iol_hdr.iol_base = mhr; iol_hdr.iol_base = mhr;
iol_hdr.iol_len = mhr_len; iol_hdr.iol_len = mhr_len;
netdev_t *dev = (netdev_t *)&netdev_submac; netdev_t *dev = &netdev_submac.dev.netdev;
dev->driver->send(dev, &iol_hdr); dev->driver->send(dev, &iol_hdr);
return 0; return 0;

View File

@ -155,7 +155,7 @@ void _net_init(void)
netdev_test_set_recv_cb(&netdev, _netdev_recv); netdev_test_set_recv_cb(&netdev, _netdev_recv);
netdev_test_set_isr_cb(&netdev, _netdev_isr); netdev_test_set_isr_cb(&netdev, _netdev_isr);
/* netdev needs to be set-up */ /* netdev needs to be set-up */
expect(netdev.netdev.driver); expect(netdev.netdev.netdev.driver);
#if LWIP_IPV4 #if LWIP_IPV4
ip4_addr_t local4, mask4, gw4; ip4_addr_t local4, mask4, gw4;
local4.addr = _TEST_ADDR4_LOCAL; local4.addr = _TEST_ADDR4_LOCAL;
@ -232,7 +232,7 @@ bool _inject_4packet(uint32_t src, uint32_t dst, uint8_t proto, void *data,
uint8_t *payload = (uint8_t *)(ip_hdr + 1); uint8_t *payload = (uint8_t *)(ip_hdr + 1);
(void)netif; (void)netif;
_get_addr((netdev_t *)&netdev, &eth_hdr->dst, sizeof(eth_hdr->dst)); _get_addr(&netdev.netdev.netdev, &eth_hdr->dst, sizeof(eth_hdr->dst));
eth_hdr->type = byteorder_htons(ETHERTYPE_IPV4); eth_hdr->type = byteorder_htons(ETHERTYPE_IPV4);
IPH_VHL_SET(ip_hdr, 4, 5); IPH_VHL_SET(ip_hdr, 4, 5);
IPH_TOS_SET(ip_hdr, 0); IPH_TOS_SET(ip_hdr, 0);
@ -248,7 +248,7 @@ bool _inject_4packet(uint32_t src, uint32_t dst, uint8_t proto, void *data,
_netdev_buffer_size = sizeof(ethernet_hdr_t) + sizeof(struct ip_hdr) + _netdev_buffer_size = sizeof(ethernet_hdr_t) + sizeof(struct ip_hdr) +
data_len; data_len;
mutex_unlock(&_netdev_buffer_mutex); mutex_unlock(&_netdev_buffer_mutex);
netdev_trigger_event_isr((netdev_t *)&netdev); netdev_trigger_event_isr(&netdev.netdev.netdev);
return true; return true;
#else #else
@ -267,7 +267,7 @@ bool _inject_6packet(const ipv6_addr_t *src, const ipv6_addr_t *dst,
uint8_t *payload = (uint8_t *)(ipv6_hdr + 1); uint8_t *payload = (uint8_t *)(ipv6_hdr + 1);
(void)netif; (void)netif;
_get_addr((netdev_t *)&netdev, &eth_hdr->dst, sizeof(eth_hdr->dst)); _get_addr(&netdev.netdev.netdev, &eth_hdr->dst, sizeof(eth_hdr->dst));
eth_hdr->type = byteorder_htons(ETHERTYPE_IPV6); eth_hdr->type = byteorder_htons(ETHERTYPE_IPV6);
ipv6_hdr_set_version(ipv6_hdr); ipv6_hdr_set_version(ipv6_hdr);
ipv6_hdr->len = byteorder_htons(data_len); ipv6_hdr->len = byteorder_htons(data_len);
@ -280,7 +280,7 @@ bool _inject_6packet(const ipv6_addr_t *src, const ipv6_addr_t *dst,
_netdev_buffer_size = sizeof(ethernet_hdr_t) + sizeof(ipv6_hdr_t) + _netdev_buffer_size = sizeof(ethernet_hdr_t) + sizeof(ipv6_hdr_t) +
data_len; data_len;
mutex_unlock(&_netdev_buffer_mutex); mutex_unlock(&_netdev_buffer_mutex);
netdev_trigger_event_isr((netdev_t *)&netdev); netdev_trigger_event_isr(&netdev.netdev.netdev);
return true; return true;
#else #else

View File

@ -158,7 +158,7 @@ void _net_init(void)
netdev_test_set_recv_cb(&netdev, _netdev_recv); netdev_test_set_recv_cb(&netdev, _netdev_recv);
netdev_test_set_isr_cb(&netdev, _netdev_isr); netdev_test_set_isr_cb(&netdev, _netdev_isr);
/* netdev needs to be set-up */ /* netdev needs to be set-up */
expect(netdev.netdev.driver); expect(netdev.netdev.netdev.driver);
#if LWIP_IPV4 #if LWIP_IPV4
ip4_addr_t local4, mask4, gw4; ip4_addr_t local4, mask4, gw4;
local4.addr = _TEST_ADDR4_LOCAL; local4.addr = _TEST_ADDR4_LOCAL;
@ -238,7 +238,7 @@ bool _inject_4packet(uint32_t src, uint32_t dst, uint16_t src_port,
const uint16_t udp_len = (uint16_t)(sizeof(udp_hdr_t) + data_len); const uint16_t udp_len = (uint16_t)(sizeof(udp_hdr_t) + data_len);
(void)netif; (void)netif;
_get_addr((netdev_t *)&netdev, &eth_hdr->dst, sizeof(eth_hdr->dst)); _get_addr(&netdev.netdev.netdev, &eth_hdr->dst, sizeof(eth_hdr->dst));
eth_hdr->type = byteorder_htons(ETHERTYPE_IPV4); eth_hdr->type = byteorder_htons(ETHERTYPE_IPV4);
IPH_VHL_SET(ip_hdr, 4, 5); IPH_VHL_SET(ip_hdr, 4, 5);
IPH_TOS_SET(ip_hdr, 0); IPH_TOS_SET(ip_hdr, 0);
@ -260,7 +260,7 @@ bool _inject_4packet(uint32_t src, uint32_t dst, uint16_t src_port,
_netdev_buffer_size = sizeof(ethernet_hdr_t) + sizeof(struct ip_hdr) + _netdev_buffer_size = sizeof(ethernet_hdr_t) + sizeof(struct ip_hdr) +
sizeof(udp_hdr_t) + data_len; sizeof(udp_hdr_t) + data_len;
mutex_unlock(&_netdev_buffer_mutex); mutex_unlock(&_netdev_buffer_mutex);
netdev_trigger_event_isr((netdev_t *)&netdev); netdev_trigger_event_isr(&netdev.netdev.netdev);
return true; return true;
#else #else
@ -284,7 +284,7 @@ bool _inject_6packet(const ipv6_addr_t *src, const ipv6_addr_t *dst,
uint16_t csum = 0; uint16_t csum = 0;
(void)netif; (void)netif;
_get_addr((netdev_t *)&netdev, &eth_hdr->dst, sizeof(eth_hdr->dst)); _get_addr(&netdev.netdev.netdev, &eth_hdr->dst, sizeof(eth_hdr->dst));
eth_hdr->type = byteorder_htons(ETHERTYPE_IPV6); eth_hdr->type = byteorder_htons(ETHERTYPE_IPV6);
ipv6_hdr_set_version(ipv6_hdr); ipv6_hdr_set_version(ipv6_hdr);
ipv6_hdr->len = byteorder_htons(udp_len); ipv6_hdr->len = byteorder_htons(udp_len);
@ -309,7 +309,7 @@ bool _inject_6packet(const ipv6_addr_t *src, const ipv6_addr_t *dst,
_netdev_buffer_size = sizeof(ethernet_hdr_t) + sizeof(ipv6_hdr_t) + _netdev_buffer_size = sizeof(ethernet_hdr_t) + sizeof(ipv6_hdr_t) +
sizeof(udp_hdr_t) + data_len; sizeof(udp_hdr_t) + data_len;
mutex_unlock(&_netdev_buffer_mutex); mutex_unlock(&_netdev_buffer_mutex);
netdev_trigger_event_isr((netdev_t *)&netdev); netdev_trigger_event_isr(&netdev.netdev.netdev);
return true; return true;
#else #else

View File

@ -138,7 +138,7 @@ static int test_receive(void)
thread_getpid()); thread_getpid());
msg_t msg; msg_t msg;
if (_dev.netdev.event_callback == NULL) { if (_dev.netdev.netdev.event_callback == NULL) {
puts("Device's event_callback not set"); puts("Device's event_callback not set");
return 0; return 0;
} }
@ -154,7 +154,7 @@ static int test_receive(void)
/* register for GNRC_NETTYPE_UNDEF */ /* register for GNRC_NETTYPE_UNDEF */
gnrc_netreg_register(GNRC_NETTYPE_UNDEF, &me); gnrc_netreg_register(GNRC_NETTYPE_UNDEF, &me);
/* fire ISR event */ /* fire ISR event */
netdev_trigger_event_isr((netdev_t *)&_dev.netdev); netdev_trigger_event_isr(&_dev.netdev.netdev);
/* wait for packet from MAC layer*/ /* wait for packet from MAC layer*/
msg_receive(&msg); msg_receive(&msg);
/* check message */ /* check message */
@ -261,7 +261,7 @@ int main(void)
netdev_test_set_get_cb(&_dev, NETOPT_ADDRESS, _dev_get_addr); netdev_test_set_get_cb(&_dev, NETOPT_ADDRESS, _dev_get_addr);
netdev_test_set_set_cb(&_dev, NETOPT_ADDRESS, _dev_set_addr); netdev_test_set_set_cb(&_dev, NETOPT_ADDRESS, _dev_set_addr);
gnrc_netif_ethernet_create(&_netif, _mac_stack, _MAC_STACKSIZE, _MAC_PRIO, gnrc_netif_ethernet_create(&_netif, _mac_stack, _MAC_STACKSIZE, _MAC_PRIO,
"netdev_test", (netdev_t *)&_dev); "netdev_test", &_dev.netdev.netdev);
_mac_pid = _netif.pid; _mac_pid = _netif.pid;
/* test execution */ /* test execution */

View File

@ -48,7 +48,7 @@ static void _print_info(netdev_t *netdev);
static void test_init(void) static void test_init(void)
{ {
const socket_zep_params_t *p = &socket_zep_params[0]; const socket_zep_params_t *p = &socket_zep_params[0];
netdev_t *netdev = (netdev_t *)(&_dev); netdev_t *netdev = &_dev.netdev.netdev;
printf("Initializing socket ZEP with (local: [%s]:%s, remote: [%s]:%s)\n", printf("Initializing socket ZEP with (local: [%s]:%s, remote: [%s]:%s)\n",
p->local_addr, p->local_port, p->remote_addr, p->remote_port); p->local_addr, p->local_port, p->remote_addr, p->remote_port);
@ -60,7 +60,7 @@ static void test_init(void)
static void test_send__iolist_NULL(void) static void test_send__iolist_NULL(void)
{ {
netdev_t *netdev = (netdev_t *)(&_dev); netdev_t *netdev = &_dev.netdev.netdev;
puts("Send zero-length packet"); puts("Send zero-length packet");
int res = netdev->driver->send(netdev, NULL); int res = netdev->driver->send(netdev, NULL);
@ -77,7 +77,7 @@ static void test_send__iolist_not_NULL(void)
iolist[0].iol_next = &iolist[1]; iolist[0].iol_next = &iolist[1];
netdev_t *netdev = (netdev_t *)(&_dev); netdev_t *netdev = &_dev.netdev.netdev;
puts("Send 'Hello\\0World\\0'"); puts("Send 'Hello\\0World\\0'");
int res = netdev->driver->send(netdev, iolist); int res = netdev->driver->send(netdev, iolist);
@ -91,7 +91,7 @@ static void test_recv(void)
{ {
puts("Waiting for an incoming message (use `make test`)"); puts("Waiting for an incoming message (use `make test`)");
while (1) { while (1) {
netdev_t *netdev = (netdev_t *)(&_dev); netdev_t *netdev = &_dev.netdev.netdev;
msg_t msg; msg_t msg;
msg_receive(&msg); msg_receive(&msg);