From 6e9303ee9cf662dc26a9aa0b6f3a8e2d0af6695b Mon Sep 17 00:00:00 2001 From: gdisirio Date: Wed, 30 Oct 2013 13:14:36 +0000 Subject: Improved time range check in the kernel. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@6401 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/kernel/include/chvt.h | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'os/kernel/include/chvt.h') diff --git a/os/kernel/include/chvt.h b/os/kernel/include/chvt.h index c677689af..c1b246cd3 100644 --- a/os/kernel/include/chvt.h +++ b/os/kernel/include/chvt.h @@ -207,6 +207,32 @@ typedef struct { * @api */ #define chTimeNow() (vtlist.vt_systime) + +/** + * @brief Returns the elapsed time since the specified start time. + * + * @param[in] start start time + * @return The elapsed time. + * + * @api + */ +#define chTimeElapsedSince(start) (chTimeNow() - (start)) + +/** + * @brief Checks if the current system time is within the specified time + * window. + * @note When start==end then the function returns always true because the + * whole time range is specified. + * + * @param[in] start the start of the time window (inclusive) + * @param[in] end the end of the time window (non inclusive) + * @retval TRUE current time within the specified time window. + * @retval FALSE current time not within the specified time window. + * + * @api + */ +#define chTimeIsWithin(start, end) \ + (chTimeElapsedSince(start) < ((end) - (start))) /** @} */ extern VTList vtlist; @@ -220,7 +246,6 @@ extern "C" { void _vt_init(void); void chVTSetI(VirtualTimer *vtp, systime_t time, vtfunc_t vtfunc, void *par); void chVTResetI(VirtualTimer *vtp); - bool_t chTimeIsWithin(systime_t start, systime_t end); #ifdef __cplusplus } #endif -- cgit v1.2.3