drivers/mrf24j40: pass long address via pointer

This commit is contained in:
Benjamin Valentin 2020-09-07 12:36:11 +02:00 committed by Benjamin Valentin
parent 988ee1648f
commit a1d8c79a98
4 changed files with 11 additions and 19 deletions

View File

@ -225,10 +225,9 @@ 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[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

View File

@ -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);

View File

@ -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]);
}
}

View File

@ -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;