From 0e54407ca9d9cec7c6f8798c9d94d83a2848a988 Mon Sep 17 00:00:00 2001 From: Jonathan Seroussi Date: Tue, 17 Oct 2017 16:55:40 +0300 Subject: [PATCH] Removing use of undefined TASKS_START behavior This is a follow up commit to a the same fix in the nRF52. Tested using the bleprph app - but only on an emulator. Seems to be working the same as before. Happy to help testing further! The problem was that the behavior of the RNG TASKS_START is defined to be write only. Reading from it is undefined and though it might have worked up until now doesn't mean it'll constantly work. I was only able to catch on to this using an emulator. X-Original-Commit: 0a1569b315ce3d2ef772343cbc30aa4e843b2626 --- nimble/drivers/nrf51/src/ble_hw.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/nimble/drivers/nrf51/src/ble_hw.c b/nimble/drivers/nrf51/src/ble_hw.c index c9e6989f9..e9b50408f 100644 --- a/nimble/drivers/nrf51/src/ble_hw.c +++ b/nimble/drivers/nrf51/src/ble_hw.c @@ -340,13 +340,11 @@ ble_hw_rng_start(void) /* No need for interrupt if there is no callback */ OS_ENTER_CRITICAL(sr); - if (NRF_RNG->TASKS_START == 0) { - NRF_RNG->EVENTS_VALRDY = 0; - if (g_ble_rng_isr_cb) { - NRF_RNG->INTENSET = 1; - } - NRF_RNG->TASKS_START = 1; + NRF_RNG->EVENTS_VALRDY = 0; + if (g_ble_rng_isr_cb) { + NRF_RNG->INTENSET = 1; } + NRF_RNG->TASKS_START = 1; OS_EXIT_CRITICAL(sr); return 0;