aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal
diff options
context:
space:
mode:
Diffstat (limited to 'os/hal')
-rw-r--r--os/hal/include/st.h48
-rw-r--r--os/hal/src/st.c65
2 files changed, 69 insertions, 44 deletions
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
@@ -69,50 +69,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.
*
* @return The alarm status.
@@ -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 */
/** @} */