From 7a0f814043a9cad606c96dde169b361a53979053 Mon Sep 17 00:00:00 2001 From: sg Date: Thu, 12 Feb 2015 22:14:28 +0100 Subject: [PATCH] introduce sys_timeouts_sleeptime (returns the time left before the next timeout is due, for NO_SYS==1) --- CHANGELOG | 4 ++++ src/core/timers.c | 14 +++++++++++++- src/include/lwip/timers.h | 1 + 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 492691d9..16e9e9de 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -6,6 +6,10 @@ HISTORY ++ New features: + 2015-02-12: chrysn + * timers.h/.c: introduce sys_timeouts_sleeptime (returns the time left before + the next timeout is due, for NO_SYS==1) + 2015-02-11: Nick van Ijzendoorn * opt.h, sockets.h/c: patch #7702 "Include ability to increase the socket number with defined offset" diff --git a/src/core/timers.c b/src/core/timers.c index b327c384..c47fe9f8 100644 --- a/src/core/timers.c +++ b/src/core/timers.c @@ -470,7 +470,7 @@ sys_check_timeouts(void) } } /* repeat until all expired timers have been called */ - }while(had_one); + } while(had_one); } } @@ -485,6 +485,18 @@ sys_restart_timeouts(void) timeouts_last_time = sys_now(); } +/** Return the time left before the next timeout is due. If no timeouts are + * enqueued, returns 0xffffffff + */ +u32_t +sys_timeouts_sleeptime(void) +{ + if (next_timeout == NULL) { + return 0xffffffff; + } + return (sys_now() - timeouts_last_time) + next_timeout->time; +} + #else /* NO_SYS */ /** diff --git a/src/include/lwip/timers.h b/src/include/lwip/timers.h index 48a9508c..629c1e7d 100644 --- a/src/include/lwip/timers.h +++ b/src/include/lwip/timers.h @@ -87,6 +87,7 @@ void sys_untimeout(sys_timeout_handler handler, void *arg); #if NO_SYS void sys_check_timeouts(void); void sys_restart_timeouts(void); +u32_t sys_timeouts_sleeptime(void); #else /* NO_SYS */ void sys_timeouts_mbox_fetch(sys_mbox_t *mbox, void **msg); #endif /* NO_SYS */