From f3df5705cf5ac9f764e0ba681418af32145654c9 Mon Sep 17 00:00:00 2001 From: biboc Date: Mon, 19 Jun 2017 17:27:16 +0200 Subject: [PATCH] at86rf2xx/Fix_saving_unstable_state --- drivers/at86rf2xx/at86rf2xx_getset.c | 9 +++++---- drivers/at86rf2xx/at86rf2xx_internal.c | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/at86rf2xx/at86rf2xx_getset.c b/drivers/at86rf2xx/at86rf2xx_getset.c index 8f5265095ebe..85e96f73c062 100644 --- a/drivers/at86rf2xx/at86rf2xx_getset.c +++ b/drivers/at86rf2xx/at86rf2xx_getset.c @@ -452,10 +452,6 @@ void at86rf2xx_set_state(at86rf2xx_t *dev, uint8_t state) return; } - if (state == AT86RF2XX_STATE_FORCE_TRX_OFF) { - _set_state(dev, AT86RF2XX_STATE_TRX_OFF, state); - return; - } /* make sure there is no ongoing transmission, or state transition already * in progress */ @@ -465,6 +461,11 @@ void at86rf2xx_set_state(at86rf2xx_t *dev, uint8_t state) old_state = at86rf2xx_get_status(dev); } + if (state == AT86RF2XX_STATE_FORCE_TRX_OFF) { + _set_state(dev, AT86RF2XX_STATE_TRX_OFF, state); + return; + } + if (state == old_state) { return; } diff --git a/drivers/at86rf2xx/at86rf2xx_internal.c b/drivers/at86rf2xx/at86rf2xx_internal.c index 660b691b6cfc..6a4e1f73da09 100644 --- a/drivers/at86rf2xx/at86rf2xx_internal.c +++ b/drivers/at86rf2xx/at86rf2xx_internal.c @@ -147,6 +147,7 @@ void at86rf2xx_hardware_reset(at86rf2xx_t *dev) void at86rf2xx_configure_phy(at86rf2xx_t *dev) { + while (AT86RF2XX_STATE_IN_PROGRESS == at86rf2xx_get_status(dev)) {} uint8_t state = at86rf2xx_get_status(dev); /* we must be in TRX_OFF before changing the PHY configuration */