aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--os/hal/include/pwm.h52
-rw-r--r--os/hal/src/pwm.c8
2 files changed, 56 insertions, 4 deletions
diff --git a/os/hal/include/pwm.h b/os/hal/include/pwm.h
index 934131d1e..cb948e850 100644
--- a/os/hal/include/pwm.h
+++ b/os/hal/include/pwm.h
@@ -226,6 +226,58 @@ typedef void (*pwmcallback_t)(PWMDriver *pwmp);
*/
#define pwmIsChannelEnabledI(pwmp, channel) \
((bool)((pwmp)->enabled & (1 << (channel))))
+
+/**
+ * @brief Enables the periodic activation edge notification.
+ * @pre The PWM unit must have been activated using @p pwmStart().
+ * @note If the notification is already enabled then the call has no effect.
+ *
+ * @param[in] pwmp pointer to a @p PWMDriver object
+ *
+ * @iclass
+ */
+#define pwmEnablePeriodicNotificationI(pwmp) \
+ pwm_lld_enable_periodic_notification(pwmp)
+
+/**
+ * @brief Disables the periodic activation edge notification.
+ * @pre The PWM unit must have been activated using @p pwmStart().
+ * @note If the notification is already disabled then the call has no effect.
+ *
+ * @param[in] pwmp pointer to a @p PWMDriver object
+ *
+ * @iclass
+ */
+#define pwmDisablePeriodicNotificationI(pwmp) \
+ pwm_lld_disable_periodic_notification(pwmp)
+
+/**
+ * @brief Enables a channel de-activation edge notification.
+ * @pre The PWM unit must have been activated using @p pwmStart().
+ * @pre The channel must have been activated using @p pwmEnableChannel().
+ * @note If the notification is already enabled then the call has no effect.
+ *
+ * @param[in] pwmp pointer to a @p PWMDriver object
+ * @param[in] channel PWM channel identifier (0...channels-1)
+ *
+ * @iclass
+ */
+#define pwmEnableChannelNotificationI(pwmp, channel) \
+ pwm_lld_enable_channel_notification(pwmp, channel)
+
+/**
+ * @brief Disables a channel de-activation edge notification.
+ * @pre The PWM unit must have been activated using @p pwmStart().
+ * @pre The channel must have been activated using @p pwmEnableChannel().
+ * @note If the notification is already disabled then the call has no effect.
+ *
+ * @param[in] pwmp pointer to a @p PWMDriver object
+ * @param[in] channel PWM channel identifier (0...channels-1)
+ *
+ * @iclass
+ */
+#define pwmDisableChannelNotificationI(pwmp, channel) \
+ pwm_lld_disable_channel_notification(pwmp, channel)
/** @} */
/*===========================================================================*/
diff --git a/os/hal/src/pwm.c b/os/hal/src/pwm.c
index 427e529f3..e569fa671 100644
--- a/os/hal/src/pwm.c
+++ b/os/hal/src/pwm.c
@@ -223,7 +223,7 @@ void pwmEnablePeriodicNotification(PWMDriver *pwmp) {
osalDbgAssert(pwmp->state == PWM_READY, "not ready");
osalDbgAssert(pwmp->config->callback != NULL, "undefined periodic callback");
- pwm_lld_enable_periodic_notification(pwmp);
+ pwmEnablePeriodicNotificationI(pwmp);
osalSysUnlock();
}
@@ -246,7 +246,7 @@ void pwmDisablePeriodicNotification(PWMDriver *pwmp) {
osalDbgAssert(pwmp->state == PWM_READY, "not ready");
osalDbgAssert(pwmp->config->callback != NULL, "undefined periodic callback");
- pwm_lld_disable_periodic_notification(pwmp);
+ pwmDisablePeriodicNotificationI(pwmp);
osalSysUnlock();
}
@@ -274,7 +274,7 @@ void pwmEnableChannelNotification(PWMDriver *pwmp, pwmchannel_t channel) {
osalDbgAssert(pwmp->config->channels[channel].callback != NULL,
"undefined channel callback");
- pwm_lld_enable_channel_notification(pwmp, channel);
+ pwmEnableChannelNotificationI(pwmp, channel);
osalSysUnlock();
}
@@ -302,7 +302,7 @@ void pwmDisableChannelNotification(PWMDriver *pwmp, pwmchannel_t channel) {
osalDbgAssert(pwmp->config->channels[channel].callback != NULL,
"undefined channel callback");
- pwm_lld_disable_channel_notification(pwmp, channel);
+ pwmDisableChannelNotificationI(pwmp, channel);
osalSysUnlock();
}