diff --git a/drivers/kw41zrf/kw41zrf_getset.c b/drivers/kw41zrf/kw41zrf_getset.c index d0b2539f42..a1343e909c 100644 --- a/drivers/kw41zrf/kw41zrf_getset.c +++ b/drivers/kw41zrf/kw41zrf_getset.c @@ -116,9 +116,11 @@ void kw41zrf_set_pan(kw41zrf_t *dev, uint16_t pan) void kw41zrf_set_addr_short(kw41zrf_t *dev, const network_uint16_t *addr) { (void) dev; + /* radio hardware stores this in little endian */ ZLL->MACSHORTADDRS0 = (ZLL->MACSHORTADDRS0 & ~ZLL_MACSHORTADDRS0_MACSHORTADDRS0_MASK) | - ZLL_MACSHORTADDRS0_MACSHORTADDRS0(addr->u16); + ZLL_MACSHORTADDRS0_MACSHORTADDRS0(byteorder_swaps( + addr->u16)); } void kw41zrf_set_addr_long(kw41zrf_t *dev, const eui64_t *addr) @@ -133,6 +135,8 @@ void kw41zrf_get_addr_short(kw41zrf_t *dev, network_uint16_t *addr) (void) dev; addr->u16 = (ZLL->MACSHORTADDRS0 & ZLL_MACSHORTADDRS0_MACSHORTADDRS0_MASK) >> ZLL_MACSHORTADDRS0_MACSHORTADDRS0_SHIFT; + /* radio hardware stores this in little endian */ + addr->u16 = byteorder_swaps(addr->u16); } void kw41zrf_get_addr_long(kw41zrf_t *dev, eui64_t *addr)