aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2013-10-30 13:14:36 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2013-10-30 13:14:36 +0000
commit6e9303ee9cf662dc26a9aa0b6f3a8e2d0af6695b (patch)
tree8ac8e22be173e446bbbbecf7b97ab30a0c1f8f33
parentc96e390f3a5b4bd7d5afcf0607cf3e072a812c04 (diff)
downloadChibiOS-6e9303ee9cf662dc26a9aa0b6f3a8e2d0af6695b.tar.gz
ChibiOS-6e9303ee9cf662dc26a9aa0b6f3a8e2d0af6695b.tar.bz2
ChibiOS-6e9303ee9cf662dc26a9aa0b6f3a8e2d0af6695b.zip
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
-rw-r--r--os/kernel/include/chvt.h27
-rw-r--r--os/kernel/src/chvt.c20
-rw-r--r--readme.txt2
3 files changed, 28 insertions, 21 deletions
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
diff --git a/os/kernel/src/chvt.c b/os/kernel/src/chvt.c
index a8e3ce499..f2d6cd697 100644
--- a/os/kernel/src/chvt.c
+++ b/os/kernel/src/chvt.c
@@ -111,24 +111,4 @@ void chVTResetI(VirtualTimer *vtp) {
vtp->vt_func = (vtfunc_t)NULL;
}
-/**
- * @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
- */
-bool_t chTimeIsWithin(systime_t start, systime_t end) {
-
- systime_t time = chTimeNow();
- return end > start ? (time >= start) && (time < end) :
- (time >= start) || (time < end);
-}
-
/** @} */
diff --git a/readme.txt b/readme.txt
index 140faa831..4317f462f 100644
--- a/readme.txt
+++ b/readme.txt
@@ -116,6 +116,8 @@
(backported to 2.6.0).
- FIX: Fixed MS2ST() and US2ST() macros error (bug #415)(backported to 2.6.0,
2.4.4, 2.2.10, NilRTOS).
+- NEW: Improved time range check in the kernel, new API chTimeElapsedSince()
+ introduced. The API chTimeIsWithin() is now a macro.
- NEW: Added a new function shellExit() to the shell. It allows to exit the
shell from any command handler.
- NEW: Added support for STM32F401/STM32F42x/STM32F43x devices.