From 151ca1d309f2d350527a73676c5aa47f5c2fa921 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Mon, 20 Jan 2014 12:26:50 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/kernel_3_dev@6634 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/include/st.h | 48 +++-------------------------- os/hal/src/st.c | 65 +++++++++++++++++++++++++++++++++++++++ os/rt/ports/ARMCMx/chcore_timer.h | 34 ++++++++++---------- 3 files changed, 86 insertions(+), 61 deletions(-) (limited to 'os') diff --git a/os/hal/include/st.h b/os/hal/include/st.h index 43d64f643..ebe906f1c 100644 --- a/os/hal/include/st.h +++ b/os/hal/include/st.h @@ -68,50 +68,6 @@ */ #define stGetCounter() st_lld_get_counter() -/** - * @brief Starts the alarm. - * @note Makes sure that no spurious alarms are triggered after - * this call. - * @note This functionality is only available in free running mode, the - * behaviour in periodic mode is undefined. - * - * @param[in] time the time to be set for the first alarm - * - * @api - */ -#define stStartAlarm(time) st_lld_start_alarm(time) - -/** - * @brief Stops the alarm interrupt. - * @note This functionality is only available in free running mode, the - * behaviour in periodic mode is undefined. - * - * @api - */ -#define stStopAlarm() st_lld_stop_alarm() - -/** - * @brief Sets the alarm time. - * @note This functionality is only available in free running mode, the - * behaviour in periodic mode is undefined. - * - * @param[in] time the time to be set for the next alarm - * - * @api - */ -#define stSetAlarm(time) st_lld_set_alarm(time) - -/** - * @brief Returns the current alarm time. - * @note This functionality is only available in free running mode, the - * behaviour in periodic mode is undefined. - * - * @return The currently set alarm time. - * - * @api - */ -#define stGetAlarm() st_lld_get_alarm() - /** * @brief Determines if the alarm is active. * @@ -132,6 +88,10 @@ extern "C" { #endif void stInit(void); + void stStartAlarm(systime_t time); + void stStopAlarm(void); + void stSetAlarm(systime_t time); + systime_t stGetAlarm(void); #ifdef __cplusplus } #endif diff --git a/os/hal/src/st.c b/os/hal/src/st.c index f2e8f3bf2..afb4466fa 100644 --- a/os/hal/src/st.c +++ b/os/hal/src/st.c @@ -66,6 +66,71 @@ void stInit(void) { st_lld_init(); } + +/** + * @brief Starts the alarm. + * @note Makes sure that no spurious alarms are triggered after + * this call. + * @note This functionality is only available in free running mode, the + * behavior in periodic mode is undefined. + * + * @param[in] time the time to be set for the first alarm + * + * @api + */ +void stStartAlarm(systime_t time) { + + osalDbgAssert(stIsAlarmActive() == false, "already active"); + + st_lld_start_alarm(time); +} + +/** + * @brief Stops the alarm interrupt. + * @note This functionality is only available in free running mode, the + * behavior in periodic mode is undefined. + * + * @api + */ +void stStopAlarm(void) { + + osalDbgAssert(stIsAlarmActive() != false, "not active"); + + st_lld_stop_alarm(); +} + +/** + * @brief Sets the alarm time. + * @note This functionality is only available in free running mode, the + * behavior in periodic mode is undefined. + * + * @param[in] time the time to be set for the next alarm + * + * @api + */ +void stSetAlarm(systime_t time) { + + osalDbgAssert(stIsAlarmActive() != false, "not active"); + + st_lld_set_alarm(time); +} + +/** + * @brief Returns the current alarm time. + * @note This functionality is only available in free running mode, the + * behavior in periodic mode is undefined. + * + * @return The currently set alarm time. + * + * @api + */ +systime_t stGetAlarm(void) { + + osalDbgAssert(stIsAlarmActive() != false, "not active"); + + return st_lld_get_alarm(); +} + #endif /* OSAL_ST_MODE != OSAL_ST_MODE_NONE */ /** @} */ diff --git a/os/rt/ports/ARMCMx/chcore_timer.h b/os/rt/ports/ARMCMx/chcore_timer.h index 548da4afe..0ddf0a9bb 100644 --- a/os/rt/ports/ARMCMx/chcore_timer.h +++ b/os/rt/ports/ARMCMx/chcore_timer.h @@ -60,6 +60,14 @@ /* Module macros. */ /*===========================================================================*/ +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + /** * @brief Starts the alarm. * @note Makes sure that no spurious alarms are triggered after @@ -69,9 +77,9 @@ * * @notapi */ -#define port_timer_start_alarm(time) { \ - chDbgAssert(stIsAlarmActive() == false, "already active"); \ - stStartAlarm(time); \ +static inline void port_timer_start_alarm(systime_t time) { + + stStartAlarm(time); } /** @@ -79,9 +87,9 @@ * * @notapi */ -#define port_timer_stop_alarm() { \ - chDbgAssert(stIsAlarmActive() != false, "not active"); \ - stStopAlarm(); \ +static inline void port_timer_stop_alarm(void) { + + stStopAlarm(); } /** @@ -91,18 +99,10 @@ * * @notapi */ -#define port_timer_set_alarm(time) { \ - chDbgAssert(stIsAlarmActive() != false, "not active"); \ - stSetAlarm(time); \ -} - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ +static inline void port_timer_set_alarm(systime_t time) { -/*===========================================================================*/ -/* Module inline functions. */ -/*===========================================================================*/ + stSetAlarm(time); +} /** * @brief Returns the system time. -- cgit v1.2.3