From 9b77aac5426cac86d44150441a3131e4d7051151 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20=27Morty=27=20Str=C3=BCbe?= Date: Fri, 2 Nov 2012 16:56:11 +0100 Subject: [PATCH] Add function etimer_reset_set. This new function is similar to reset, but allows to also set a new timeout. Thus long-term accuracy with changing timeouts is now possible. --- core/sys/etimer.c | 8 ++++++++ core/sys/etimer.h | 13 +++++++++++++ 2 files changed, 21 insertions(+) diff --git a/core/sys/etimer.c b/core/sys/etimer.c index 719401115..17ac74285 100644 --- a/core/sys/etimer.c +++ b/core/sys/etimer.c @@ -181,6 +181,14 @@ etimer_set(struct etimer *et, clock_time_t interval) } /*---------------------------------------------------------------------------*/ void +etimer_reset_with_new_interval(struct etimer *et, clock_time_t interval) +{ + timer_reset(&et->timer); + et->timer.interval = interval; + add_timer(et); +} +/*---------------------------------------------------------------------------*/ +void etimer_reset(struct etimer *et) { timer_reset(&et->timer); diff --git a/core/sys/etimer.h b/core/sys/etimer.h index b1f57b01a..ebbcfc7fd 100644 --- a/core/sys/etimer.h +++ b/core/sys/etimer.h @@ -114,6 +114,19 @@ CCIF void etimer_set(struct etimer *et, clock_time_t interval); */ CCIF void etimer_reset(struct etimer *et); +/** + * \brief Reset an event timer with a new interval. + * \param et A pointer to the event timer. + * \param interval The interval before the timer expires. + * + * This function very similar to etimer_reset. Opposed to + * etimer_reset it is possible to change the timout. + * This allows accurate, non-periodic timers without drift. + * + * \sa etimer_reset() + */ +void etimer_reset_with_new_interval(struct etimer *et, clock_time_t interval); + /** * \brief Restart an event timer from the current point in time * \param et A pointer to the event timer.