diff --git a/drivers/include/mrf24j40.h b/drivers/include/mrf24j40.h index d94d071aba..cfc89c4a30 100644 --- a/drivers/include/mrf24j40.h +++ b/drivers/include/mrf24j40.h @@ -224,11 +224,10 @@ void mrf24j40_set_addr_short(mrf24j40_t *dev, uint16_t addr); /** * @brief Get the configured long address of the given device * - * @param[in] dev device to read from - * - * @return the currently set (8-byte) long address + * @param[in] dev device to read from + * @param[out] addr the currently set (8-byte) long address */ -uint64_t mrf24j40_get_addr_long(mrf24j40_t *dev); +void mrf24j40_get_addr_long(mrf24j40_t *dev, uint8_t *addr); /** * @brief Set the long address of the given device @@ -236,7 +235,7 @@ uint64_t mrf24j40_get_addr_long(mrf24j40_t *dev); * @param[in] dev device to write to * @param[in] addr (8-byte) long address to set */ -void mrf24j40_set_addr_long(mrf24j40_t *dev, uint64_t addr); +void mrf24j40_set_addr_long(mrf24j40_t *dev, const uint8_t *addr); /** * @brief Get the configured channel number of the given device diff --git a/drivers/mrf24j40/mrf24j40.c b/drivers/mrf24j40/mrf24j40.c index 13982fb239..a4be2ec044 100644 --- a/drivers/mrf24j40/mrf24j40.c +++ b/drivers/mrf24j40/mrf24j40.c @@ -55,7 +55,7 @@ int mrf24j40_reset(mrf24j40_t *dev) netdev_ieee802154_setup(&dev->netdev); /* set short and long address */ - mrf24j40_set_addr_long(dev, unaligned_get_u64(dev->netdev.long_addr)); + mrf24j40_set_addr_long(dev, dev->netdev.long_addr); mrf24j40_set_addr_short(dev, unaligned_get_u16(dev->netdev.short_addr)); mrf24j40_set_chan(dev, CONFIG_IEEE802154_DEFAULT_CHANNEL); diff --git a/drivers/mrf24j40/mrf24j40_getset.c b/drivers/mrf24j40/mrf24j40_getset.c index 304bc3644d..3249fbd891 100644 --- a/drivers/mrf24j40/mrf24j40_getset.c +++ b/drivers/mrf24j40/mrf24j40_getset.c @@ -157,24 +157,17 @@ void mrf24j40_set_addr_short(mrf24j40_t *dev, uint16_t addr) naddr.u8[0]); } -uint64_t mrf24j40_get_addr_long(mrf24j40_t *dev) +void mrf24j40_get_addr_long(mrf24j40_t *dev, uint8_t *addr) { - network_uint64_t naddr; - for (int i = 0; i < 8; i++) { - naddr.u8[7 - i] = mrf24j40_reg_read_short(dev, (MRF24J40_REG_EADR0 + i)); + addr[7 - i] = mrf24j40_reg_read_short(dev, MRF24J40_REG_EADR0 + i); } - return naddr.u64; } -void mrf24j40_set_addr_long(mrf24j40_t *dev, uint64_t addr) +void mrf24j40_set_addr_long(mrf24j40_t *dev, const uint8_t *addr) { - network_uint64_t naddr; - naddr.u64 = addr; - for (int i = 0; i < 8; i++) { - mrf24j40_reg_write_short(dev, (MRF24J40_REG_EADR0 + i), - (naddr.u8[7 - i])); + mrf24j40_reg_write_short(dev, MRF24J40_REG_EADR0 + i, addr[7 - i]); } } diff --git a/drivers/mrf24j40/mrf24j40_netdev.c b/drivers/mrf24j40/mrf24j40_netdev.c index 5604f2854f..253291e820 100644 --- a/drivers/mrf24j40/mrf24j40_netdev.c +++ b/drivers/mrf24j40/mrf24j40_netdev.c @@ -184,7 +184,7 @@ static int _get(netdev_t *netdev, netopt_t opt, void *val, size_t max_len) res = -EOVERFLOW; } else { - *(uint64_t*)val = mrf24j40_get_addr_long(dev); + mrf24j40_get_addr_long(dev, val); res = sizeof(uint64_t); } break; @@ -400,7 +400,7 @@ static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t len) res = -EOVERFLOW; } else { - mrf24j40_set_addr_long(dev, *((const uint64_t *)val)); + mrf24j40_set_addr_long(dev, val); res = sizeof(uint64_t); } break;