mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-12-24 22:13:52 +01:00
Merge pull request #9531 from bergzand/pr/netdev/reset_refactor
netdev_ieee802154: Add and use common reset function
This commit is contained in:
commit
fd8ef789b7
@ -56,15 +56,13 @@ void at86rf2xx_reset(at86rf2xx_t *dev)
|
||||
|
||||
at86rf2xx_hardware_reset(dev);
|
||||
|
||||
netdev_ieee802154_reset(&dev->netdev);
|
||||
|
||||
/* Reset state machine to ensure a known state */
|
||||
if (dev->state == AT86RF2XX_STATE_P_ON) {
|
||||
at86rf2xx_set_state(dev, AT86RF2XX_STATE_FORCE_TRX_OFF);
|
||||
}
|
||||
|
||||
/* reset options and sequence number */
|
||||
dev->netdev.seq = 0;
|
||||
dev->netdev.flags = 0;
|
||||
|
||||
/* get an 8-byte unique ID to use as hardware address */
|
||||
luid_get(addr_long.uint8, IEEE802154_LONG_ADDRESS_LEN);
|
||||
/* make sure we mark the address as non-multicast and not globally unique */
|
||||
@ -88,12 +86,7 @@ void at86rf2xx_reset(at86rf2xx_t *dev)
|
||||
#ifdef MODULE_NETSTATS_L2
|
||||
at86rf2xx_set_option(dev, AT86RF2XX_OPT_TELL_TX_END, true);
|
||||
#endif
|
||||
/* set default protocol */
|
||||
#ifdef MODULE_GNRC_SIXLOWPAN
|
||||
dev->netdev.proto = GNRC_NETTYPE_SIXLOWPAN;
|
||||
#elif MODULE_GNRC
|
||||
dev->netdev.proto = GNRC_NETTYPE_UNDEF;
|
||||
#endif
|
||||
|
||||
/* enable safe mode (protect RX FIFO until reading data starts) */
|
||||
at86rf2xx_reg_write(dev, AT86RF2XX_REG__TRX_CTRL_2,
|
||||
AT86RF2XX_TRX_CTRL_2_MASK__RX_SAFE_MODE);
|
||||
|
||||
@ -49,9 +49,7 @@ int cc2420_init(cc2420_t *dev)
|
||||
uint16_t reg;
|
||||
uint8_t addr[8];
|
||||
|
||||
/* reset options and sequence number */
|
||||
dev->netdev.seq = 0;
|
||||
dev->netdev.flags = 0;
|
||||
netdev_ieee802154_reset(&dev->netdev);
|
||||
|
||||
/* set default address, channel, PAN ID, and TX power */
|
||||
luid_get(addr, sizeof(addr));
|
||||
@ -73,12 +71,6 @@ int cc2420_init(cc2420_t *dev)
|
||||
#ifdef MODULE_NETSTATS_L2
|
||||
cc2420_set_option(dev, CC2420_OPT_TELL_RX_END, true);
|
||||
#endif
|
||||
/* set default protocol*/
|
||||
#ifdef MODULE_GNRC_SIXLOWPAN
|
||||
dev->netdev.proto = GNRC_NETTYPE_SIXLOWPAN;
|
||||
#elif MODULE_GNRC
|
||||
dev->netdev.proto = GNRC_NETTYPE_UNDEF;
|
||||
#endif
|
||||
|
||||
/* change default RX bandpass filter to 1.3uA (as recommended) */
|
||||
reg = cc2420_reg_read(dev, CC2420_REG_RXCTRL1);
|
||||
|
||||
@ -121,6 +121,17 @@ typedef struct {
|
||||
*/
|
||||
typedef struct netdev_radio_rx_info netdev_ieee802154_rx_info_t;
|
||||
|
||||
/**
|
||||
* @brief Reset function for ieee802154 common fields
|
||||
*
|
||||
* Supposed to be used by netdev drivers to reset the ieee802154 fields when
|
||||
* resetting the device
|
||||
*
|
||||
* @param[in] dev network device descriptor
|
||||
*/
|
||||
void netdev_ieee802154_reset(netdev_ieee802154_t *dev);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Fallback function for netdev IEEE 802.15.4 devices' _get function
|
||||
*
|
||||
|
||||
@ -90,16 +90,7 @@ int kw2xrf_init(kw2xrf_t *dev, gpio_cb_t cb)
|
||||
|
||||
void kw2xrf_reset_phy(kw2xrf_t *dev)
|
||||
{
|
||||
/* reset options and sequence number */
|
||||
dev->netdev.seq = 0;
|
||||
dev->netdev.flags = 0;
|
||||
|
||||
/* set default protocol */
|
||||
#ifdef MODULE_GNRC_SIXLOWPAN
|
||||
dev->netdev.proto = GNRC_NETTYPE_SIXLOWPAN;
|
||||
#elif MODULE_GNRC
|
||||
dev->netdev.proto = GNRC_NETTYPE_UNDEF;
|
||||
#endif
|
||||
netdev_ieee802154_reset(&dev->netdev);
|
||||
|
||||
dev->tx_power = KW2XRF_DEFAULT_TX_POWER;
|
||||
kw2xrf_set_tx_power(dev, dev->tx_power);
|
||||
|
||||
@ -46,9 +46,7 @@ void mrf24j40_reset(mrf24j40_t *dev)
|
||||
|
||||
mrf24j40_init(dev);
|
||||
|
||||
/* reset options and sequence number */
|
||||
dev->netdev.seq = 0;
|
||||
dev->netdev.flags = 0;
|
||||
netdev_ieee802154_reset(&dev->netdev);
|
||||
|
||||
/* get an 8-byte unique ID to use as hardware address */
|
||||
luid_get(addr_long.uint8, IEEE802154_LONG_ADDRESS_LEN);
|
||||
@ -76,13 +74,6 @@ void mrf24j40_reset(mrf24j40_t *dev)
|
||||
mrf24j40_set_option(dev, MRF24J40_OPT_TELL_TX_END, true);
|
||||
#endif
|
||||
|
||||
/* set default protocol */
|
||||
#ifdef MODULE_GNRC_SIXLOWPAN
|
||||
dev->netdev.proto = GNRC_NETTYPE_SIXLOWPAN;
|
||||
#elif MODULE_GNRC
|
||||
dev->netdev.proto = GNRC_NETTYPE_UNDEF;
|
||||
#endif
|
||||
|
||||
/* go into RX state */
|
||||
mrf24j40_reset_tasks(dev);
|
||||
dev->state = 0;
|
||||
|
||||
@ -50,6 +50,19 @@ static int _get_iid(netdev_ieee802154_t *dev, eui64_t *value, size_t max_len)
|
||||
return sizeof(eui64_t);
|
||||
}
|
||||
|
||||
void netdev_ieee802154_reset(netdev_ieee802154_t *dev)
|
||||
{
|
||||
dev->seq = 0;
|
||||
dev->flags = 0;
|
||||
|
||||
/* set default protocol */
|
||||
#ifdef MODULE_GNRC_SIXLOWPAN
|
||||
dev->proto = GNRC_NETTYPE_SIXLOWPAN;
|
||||
#elif MODULE_GNRC
|
||||
dev->proto = GNRC_NETTYPE_UNDEF;
|
||||
#endif
|
||||
}
|
||||
|
||||
int netdev_ieee802154_get(netdev_ieee802154_t *dev, netopt_t opt, void *value,
|
||||
size_t max_len)
|
||||
{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user