From a9fe5f3e392144446f9223b2a61e5df94b848913 Mon Sep 17 00:00:00 2001 From: hesolium Date: Thu, 8 Jun 2017 11:01:27 +0200 Subject: [PATCH 1/2] Create equeue.c On Mbed os 5.4, NRF52-DK, no RTOS, no active SoftDevice after long time (timer/counter overflow?) 'deadline' == 511999. In my case timeout (parameters ms) == ZERO and dispatch(0) run "forever". This modification is only simply safeguard. I dont know where is real problem (Mbed, Nordic drivers, ...) --- events/equeue/equeue.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/events/equeue/equeue.c b/events/equeue/equeue.c index 436b45c3eb0..02df0772774 100644 --- a/events/equeue/equeue.c +++ b/events/equeue/equeue.c @@ -431,7 +431,14 @@ void equeue_dispatch(equeue_t *q, int ms) { } } equeue_mutex_unlock(&q->queuelock); - + + // in any case 'deadline' must be <= than 'ms' + // Unrecognized bug on some platform (deadline == 511999) + if(ms >= o && deadline > ms) { + deadline = ms; + if(ms == 0) + return; + } // wait for events equeue_sema_wait(&q->eventsema, deadline); From d117e616a79b405ad8bd4773dd64728a0461722d Mon Sep 17 00:00:00 2001 From: hesolium Date: Thu, 8 Jun 2017 11:06:32 +0200 Subject: [PATCH 2/2] Create equeue.c --- events/equeue/equeue.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/events/equeue/equeue.c b/events/equeue/equeue.c index 02df0772774..19af4c1cabe 100644 --- a/events/equeue/equeue.c +++ b/events/equeue/equeue.c @@ -434,7 +434,7 @@ void equeue_dispatch(equeue_t *q, int ms) { // in any case 'deadline' must be <= than 'ms' // Unrecognized bug on some platform (deadline == 511999) - if(ms >= o && deadline > ms) { + if(ms >= 0 && deadline > ms) { deadline = ms; if(ms == 0) return;