mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-12-25 22:43:50 +01:00
cc2538_rf: pass address via pointer
This commit is contained in:
parent
be3667bfdd
commit
6675c5f5c0
@ -236,16 +236,16 @@ bool cc2538_channel_clear(void);
|
||||
/**
|
||||
* @brief Get the configured long address of the device
|
||||
*
|
||||
* @return The currently set (8-byte) long address
|
||||
* @param[out] addr The currently set (8-byte) long address
|
||||
*/
|
||||
uint64_t cc2538_get_addr_long(void);
|
||||
void cc2538_get_addr_long(uint8_t *addr);
|
||||
|
||||
/**
|
||||
* @brief Get the configured short address of the device
|
||||
*
|
||||
* @return The currently set (2-byte) short address
|
||||
* @param[out] addr The currently set (2-byte) short address
|
||||
*/
|
||||
uint16_t cc2538_get_addr_short(void);
|
||||
void cc2538_get_addr_short(uint8_t *addr);
|
||||
|
||||
/**
|
||||
* @brief Get the primary (burned-in) EUI-64 of the device
|
||||
@ -321,14 +321,14 @@ void cc2538_setup(cc2538_rf_t *dev);
|
||||
*
|
||||
* @param[in] addr (2-byte) short address to set
|
||||
*/
|
||||
void cc2538_set_addr_short(uint16_t addr);
|
||||
void cc2538_set_addr_short(const uint8_t *addr);
|
||||
|
||||
/**
|
||||
* @brief Set the long address of the device
|
||||
*
|
||||
* @param[in] addr (8-byte) short address to set
|
||||
*/
|
||||
void cc2538_set_addr_long(uint64_t addr);
|
||||
void cc2538_set_addr_long(const uint8_t *addr);
|
||||
|
||||
/**
|
||||
* @brief Set the channel number of the device
|
||||
|
||||
@ -62,29 +62,22 @@ static const uint8_t power_lut[NUM_POWER_LEVELS] = {
|
||||
255, /**< 7 dBm */
|
||||
};
|
||||
|
||||
uint64_t cc2538_get_addr_long(void)
|
||||
void cc2538_get_addr_long(uint8_t *addr)
|
||||
{
|
||||
uint64_t addr = RFCORE_FFSM_EXT_ADDR0;
|
||||
addr <<= 8;
|
||||
addr |= RFCORE_FFSM_EXT_ADDR1;
|
||||
addr <<= 8;
|
||||
addr |= RFCORE_FFSM_EXT_ADDR2;
|
||||
addr <<= 8;
|
||||
addr |= RFCORE_FFSM_EXT_ADDR3;
|
||||
addr <<= 8;
|
||||
addr |= RFCORE_FFSM_EXT_ADDR4;
|
||||
addr <<= 8;
|
||||
addr |= RFCORE_FFSM_EXT_ADDR5;
|
||||
addr <<= 8;
|
||||
addr |= RFCORE_FFSM_EXT_ADDR6;
|
||||
addr <<= 8;
|
||||
addr |= RFCORE_FFSM_EXT_ADDR7;
|
||||
return addr;
|
||||
addr[7] = RFCORE_FFSM_EXT_ADDR0;
|
||||
addr[6] = RFCORE_FFSM_EXT_ADDR1;
|
||||
addr[5] = RFCORE_FFSM_EXT_ADDR2;
|
||||
addr[4] = RFCORE_FFSM_EXT_ADDR3;
|
||||
addr[3] = RFCORE_FFSM_EXT_ADDR4;
|
||||
addr[2] = RFCORE_FFSM_EXT_ADDR5;
|
||||
addr[1] = RFCORE_FFSM_EXT_ADDR6;
|
||||
addr[0] = RFCORE_FFSM_EXT_ADDR7;
|
||||
}
|
||||
|
||||
uint16_t cc2538_get_addr_short(void)
|
||||
void cc2538_get_addr_short(uint8_t *addr)
|
||||
{
|
||||
return (RFCORE_FFSM_SHORT_ADDR0 << 8) | RFCORE_FFSM_SHORT_ADDR1;
|
||||
addr[1] = RFCORE_FFSM_SHORT_ADDR0;
|
||||
addr[0] = RFCORE_FFSM_SHORT_ADDR1;
|
||||
}
|
||||
|
||||
unsigned int cc2538_get_chan(void)
|
||||
@ -147,22 +140,22 @@ int cc2538_get_tx_power(void)
|
||||
return OUTPUT_POWER_MIN + best_index;
|
||||
}
|
||||
|
||||
void cc2538_set_addr_long(uint64_t addr)
|
||||
void cc2538_set_addr_long(const uint8_t *addr)
|
||||
{
|
||||
RFCORE_FFSM_EXT_ADDR0 = addr >> (7 * 8);
|
||||
RFCORE_FFSM_EXT_ADDR1 = addr >> (6 * 8);
|
||||
RFCORE_FFSM_EXT_ADDR2 = addr >> (5 * 8);
|
||||
RFCORE_FFSM_EXT_ADDR3 = addr >> (4 * 8);
|
||||
RFCORE_FFSM_EXT_ADDR4 = addr >> (3 * 8);
|
||||
RFCORE_FFSM_EXT_ADDR5 = addr >> (2 * 8);
|
||||
RFCORE_FFSM_EXT_ADDR6 = addr >> (1 * 8);
|
||||
RFCORE_FFSM_EXT_ADDR7 = addr >> (0 * 8);
|
||||
RFCORE_FFSM_EXT_ADDR0 = addr[7];
|
||||
RFCORE_FFSM_EXT_ADDR1 = addr[6];
|
||||
RFCORE_FFSM_EXT_ADDR2 = addr[5];
|
||||
RFCORE_FFSM_EXT_ADDR3 = addr[4];
|
||||
RFCORE_FFSM_EXT_ADDR4 = addr[3];
|
||||
RFCORE_FFSM_EXT_ADDR5 = addr[2];
|
||||
RFCORE_FFSM_EXT_ADDR6 = addr[1];
|
||||
RFCORE_FFSM_EXT_ADDR7 = addr[0];
|
||||
}
|
||||
|
||||
void cc2538_set_addr_short(uint16_t addr)
|
||||
void cc2538_set_addr_short(const uint8_t *addr)
|
||||
{
|
||||
RFCORE_FFSM_SHORT_ADDR1 = addr;
|
||||
RFCORE_FFSM_SHORT_ADDR0 = addr >> 8;
|
||||
RFCORE_FFSM_SHORT_ADDR0 = addr[1];
|
||||
RFCORE_FFSM_SHORT_ADDR1 = addr[0];
|
||||
}
|
||||
|
||||
void cc2538_set_chan(unsigned int chan)
|
||||
|
||||
@ -56,7 +56,7 @@ static int _get(netdev_t *netdev, netopt_t opt, void *value, size_t max_len)
|
||||
return -EOVERFLOW;
|
||||
}
|
||||
else {
|
||||
*(uint16_t*)value = cc2538_get_addr_short();
|
||||
cc2538_get_addr_short(value);
|
||||
}
|
||||
return sizeof(uint16_t);
|
||||
|
||||
@ -65,7 +65,7 @@ static int _get(netdev_t *netdev, netopt_t opt, void *value, size_t max_len)
|
||||
return -EOVERFLOW;
|
||||
}
|
||||
else {
|
||||
*(uint64_t*)value = cc2538_get_addr_long();
|
||||
cc2538_get_addr_long(value);
|
||||
}
|
||||
return sizeof(uint64_t);
|
||||
|
||||
@ -164,7 +164,7 @@ static int _set(netdev_t *netdev, netopt_t opt, const void *value, size_t value_
|
||||
res = -EOVERFLOW;
|
||||
}
|
||||
else {
|
||||
cc2538_set_addr_short(*((const uint16_t*)value));
|
||||
cc2538_set_addr_short(value);
|
||||
res = sizeof(uint16_t);
|
||||
}
|
||||
break;
|
||||
@ -174,7 +174,7 @@ static int _set(netdev_t *netdev, netopt_t opt, const void *value, size_t value_
|
||||
res = -EOVERFLOW;
|
||||
}
|
||||
else {
|
||||
cc2538_set_addr_long(*((const uint64_t*)value));
|
||||
cc2538_set_addr_long(value);
|
||||
res = sizeof(uint64_t);
|
||||
}
|
||||
break;
|
||||
@ -394,18 +394,12 @@ static int _init(netdev_t *netdev)
|
||||
_dev = netdev;
|
||||
|
||||
uint16_t chan = cc2538_get_chan();
|
||||
uint16_t addr_short = cc2538_get_addr_short();
|
||||
uint64_t addr_long = cc2538_get_addr_long();
|
||||
|
||||
netdev_ieee802154_reset(&dev->netdev);
|
||||
|
||||
/* Initialise netdev_ieee802154_t struct */
|
||||
netdev_ieee802154_set(&dev->netdev, NETOPT_CHANNEL,
|
||||
&chan, sizeof(chan));
|
||||
netdev_ieee802154_set(&dev->netdev, NETOPT_ADDRESS,
|
||||
&addr_short, sizeof(addr_short));
|
||||
netdev_ieee802154_set(&dev->netdev, NETOPT_ADDRESS_LONG,
|
||||
&addr_long, sizeof(addr_long));
|
||||
|
||||
cc2538_set_state(dev, NETOPT_STATE_IDLE);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user