git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/kernel_3_dev@6634 35acf78f-673a-0410-8e92-d51de3d6d3f4

master
gdisirio 2014-01-20 12:26:50 +00:00
parent 841ab0b70e
commit 151ca1d309
3 changed files with 86 additions and 61 deletions

View File

@ -68,50 +68,6 @@
*/ */
#define stGetCounter() st_lld_get_counter() #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. * @brief Determines if the alarm is active.
* *
@ -132,6 +88,10 @@
extern "C" { extern "C" {
#endif #endif
void stInit(void); void stInit(void);
void stStartAlarm(systime_t time);
void stStopAlarm(void);
void stSetAlarm(systime_t time);
systime_t stGetAlarm(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -66,6 +66,71 @@ void stInit(void) {
st_lld_init(); 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 */ #endif /* OSAL_ST_MODE != OSAL_ST_MODE_NONE */
/** @} */ /** @} */

View File

@ -60,6 +60,14 @@
/* Module macros. */ /* Module macros. */
/*===========================================================================*/ /*===========================================================================*/
/*===========================================================================*/
/* External declarations. */
/*===========================================================================*/
/*===========================================================================*/
/* Module inline functions. */
/*===========================================================================*/
/** /**
* @brief Starts the alarm. * @brief Starts the alarm.
* @note Makes sure that no spurious alarms are triggered after * @note Makes sure that no spurious alarms are triggered after
@ -69,9 +77,9 @@
* *
* @notapi * @notapi
*/ */
#define port_timer_start_alarm(time) { \ static inline void port_timer_start_alarm(systime_t time) {
chDbgAssert(stIsAlarmActive() == false, "already active"); \
stStartAlarm(time); \ stStartAlarm(time);
} }
/** /**
@ -79,9 +87,9 @@
* *
* @notapi * @notapi
*/ */
#define port_timer_stop_alarm() { \ static inline void port_timer_stop_alarm(void) {
chDbgAssert(stIsAlarmActive() != false, "not active"); \
stStopAlarm(); \ stStopAlarm();
} }
/** /**
@ -91,19 +99,11 @@
* *
* @notapi * @notapi
*/ */
#define port_timer_set_alarm(time) { \ static inline void port_timer_set_alarm(systime_t time) {
chDbgAssert(stIsAlarmActive() != false, "not active"); \
stSetAlarm(time); \ stSetAlarm(time);
} }
/*===========================================================================*/
/* External declarations. */
/*===========================================================================*/
/*===========================================================================*/
/* Module inline functions. */
/*===========================================================================*/
/** /**
* @brief Returns the system time. * @brief Returns the system time.
* *