From e8e89d8ca9a6997068cde86d672d1b6e07adeff4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Canet?= Date: Thu, 9 Jul 2015 15:08:02 +0200 Subject: [PATCH] native: timer: Do not cancel timer when setting it to 0 --- cpu/native/periph/timer.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/cpu/native/periph/timer.c b/cpu/native/periph/timer.c index 3257e5ee80..df6bf996f4 100644 --- a/cpu/native/periph/timer.c +++ b/cpu/native/periph/timer.c @@ -94,10 +94,8 @@ int timer_init(tim_t dev, unsigned int ticks_per_us, void (*callback)(int)) return 0; } -int timer_set(tim_t dev, int channel, unsigned int offset) +static void do_timer_set(unsigned int offset) { - (void)dev; - (void)channel; DEBUG("%s\n", __func__); if (offset && offset < NATIVE_TIMER_MIN_RES) { @@ -115,6 +113,19 @@ int timer_set(tim_t dev, int channel, unsigned int offset) err(EXIT_FAILURE, "timer_arm: setitimer"); } _native_syscall_leave(); +} + +int timer_set(tim_t dev, int channel, unsigned int offset) +{ + (void)dev; + (void)channel; + DEBUG("%s\n", __func__); + + if (!offset) { + offset = NATIVE_TIMER_MIN_RES; + } + + do_timer_set(offset); return 1; } @@ -130,7 +141,12 @@ int timer_set_absolute(tim_t dev, int channel, unsigned int value) int timer_clear(tim_t dev, int channel) { - return timer_set(dev, channel, 0); + (void)dev; + (void)channel; + + do_timer_set(0); + + return 1; } void timer_irq_enable(tim_t dev)