|
|
|
@ -407,6 +407,12 @@ static inline void _set_state(at86rf2xx_t *dev, uint8_t state)
|
|
|
|
|
dev->state = state;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static inline void _force_trx_off(at86rf2xx_t *dev)
|
|
|
|
|
{
|
|
|
|
|
at86rf2xx_reg_write(dev, AT86RF2XX_REG__TRX_STATE, AT86RF2XX_TRX_STATE__FORCE_TRX_OFF);
|
|
|
|
|
while (at86rf2xx_get_status(dev) != AT86RF2XX_STATE_TRX_OFF);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void at86rf2xx_set_state(at86rf2xx_t *dev, uint8_t state)
|
|
|
|
|
{
|
|
|
|
|
uint8_t old_state = at86rf2xx_get_status(dev);
|
|
|
|
@ -437,7 +443,7 @@ void at86rf2xx_set_state(at86rf2xx_t *dev, uint8_t state)
|
|
|
|
|
|
|
|
|
|
if (state == AT86RF2XX_STATE_SLEEP) {
|
|
|
|
|
/* First go to TRX_OFF */
|
|
|
|
|
at86rf2xx_force_trx_off(dev);
|
|
|
|
|
_force_trx_off(dev);
|
|
|
|
|
/* Discard all IRQ flags, framebuffer is lost anyway */
|
|
|
|
|
at86rf2xx_reg_read(dev, AT86RF2XX_REG__IRQ_STATUS);
|
|
|
|
|
/* Go to SLEEP mode from TRX_OFF */
|
|
|
|
@ -459,5 +465,5 @@ void at86rf2xx_reset_state_machine(at86rf2xx_t *dev)
|
|
|
|
|
old_state = at86rf2xx_get_status(dev);
|
|
|
|
|
} while (old_state == AT86RF2XX_STATE_IN_PROGRESS);
|
|
|
|
|
|
|
|
|
|
at86rf2xx_force_trx_off(dev);
|
|
|
|
|
_force_trx_off(dev);
|
|
|
|
|
}
|
|
|
|
|