diff options
author | px4dev <px4@purgatory.org> | 2013-02-24 11:41:26 -0800 |
---|---|---|
committer | px4dev <px4@purgatory.org> | 2013-02-24 11:41:26 -0800 |
commit | 923a7cc505971ab6d04115d18108152f62d46283 (patch) | |
tree | 149c502582ed80f539dd622da6d8ea688c615107 /apps/drivers/stm32 | |
parent | a11a71ec9c1b04cd5ca515862605008038804c8d (diff) | |
download | px4-firmware-923a7cc505971ab6d04115d18108152f62d46283.tar.gz px4-firmware-923a7cc505971ab6d04115d18108152f62d46283.tar.bz2 px4-firmware-923a7cc505971ab6d04115d18108152f62d46283.zip |
Add an interrupt-safe way of comparing a timestamp with the current time.
Add an interrupt-safe way of storing the current time into a timestamp.
Diffstat (limited to 'apps/drivers/stm32')
-rw-r--r-- | apps/drivers/stm32/drv_hrt.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/apps/drivers/stm32/drv_hrt.c b/apps/drivers/stm32/drv_hrt.c index cd9cb45b1..0df2a8b74 100644 --- a/apps/drivers/stm32/drv_hrt.c +++ b/apps/drivers/stm32/drv_hrt.c @@ -646,6 +646,36 @@ abstime_to_ts(struct timespec *ts, hrt_abstime abstime) } /* + * Compare a time value with the current time. + */ +hrt_abstime +hrt_elapsed_time(const volatile hrt_abstime *then) +{ + irqstate_t flags = irqsave(); + + hrt_abstime delta = hrt_absolute_time() - *then; + + irqrestore(flags); + + return delta; +} + +/* + * Store the absolute time in an interrupt-safe fashion + */ +hrt_absolute_time +hrt_store_absolute_time(volatile hrt_abstime *now) +{ + irqstate_t flags = irqsave(); + + hrt_abstime ts = hrt_absolute_time(); + + irqrestore(flags); + + return ts; +} + +/* * Initalise the high-resolution timing module. */ void |