28#if (HAL_USE_ICU == TRUE) || defined(__DOXYGEN__)
38#if !defined(ICU_USE_OVERFLOW_SCALING)
39#define ICU_USE_OVERFLOW_SCALING FALSE
90#define icuStartCaptureI(icup) do { \
91 icu_lld_start_capture(icup); \
92 (icup)->state = ICU_WAITING; \
102#define icuStopCaptureI(icup) do { \
103 icu_lld_stop_capture(icup); \
104 (icup)->state = ICU_READY; \
117#define icuEnableNotificationsI(icup) icu_lld_enable_notifications(icup)
129#define icuDisableNotificationsI(icup) icu_lld_disable_notifications(icup)
141#define icuAreNotificationsEnabledX(icup) \
142 icu_lld_are_notifications_enabled(icup)
156#define icuGetWidthX(icup) icu_lld_get_width(icup)
170#define icuGetPeriodX(icup) icu_lld_get_period(icup)
184#define _icu_isr_invoke_width_cb(icup) do { \
185 if (((icup)->state == ICU_ACTIVE) && \
186 ((icup)->config->width_cb != NULL)) \
187 (icup)->config->width_cb(icup); \
198#define _icu_isr_invoke_period_cb(icup) do { \
199 if (((icup)->state == ICU_ACTIVE) && \
200 ((icup)->config->period_cb != NULL)) \
201 (icup)->config->period_cb(icup); \
202 (icup)->state = ICU_ACTIVE; \
205#if ICU_USE_OVERFLOW_SCALING == TRUE
216#define _icu_isr_invoke_overflow_cb(icup) do { \
217 if ((icup)->config->overflow_cb != NULL && (icup)->state == ICU_ACTIVE) \
218 (icup)->config->overflow_cb(icup); \
220 (icup)->state = ICU_WAITING; \
233#define _icu_isr_invoke_overflow_cb(icup) do { \
234 (icup)->config->overflow_cb(icup); \
235 (icup)->state = ICU_WAITING; \
void icuObjectInit(ICUDriver *icup)
Initializes the standard part of a ICUDriver structure.
void icuEnableNotifications(ICUDriver *icup)
Enables notifications.
msg_t icuStart(ICUDriver *icup, const ICUConfig *config)
Configures and activates the ICU peripheral.
void icuStop(ICUDriver *icup)
Deactivates the ICU peripheral.
void icuInit(void)
ICU Driver initialization.
void icuStartCapture(ICUDriver *icup)
Starts the input capture.
icustate_t
Driver state machine possible states.
void(* icucallback_t)(ICUDriver *icup)
ICU notification callback type.
void icuDisableNotifications(ICUDriver *icup)
Disables notifications.
void icuStopCapture(ICUDriver *icup)
Stops the input capture.
bool icuWaitCapture(ICUDriver *icup)
Waits for a completed capture.
PLATFORM ICU subsystem low level driver header.
Driver configuration structure.
Structure representing an ICU driver.
const ICUConfig * config
Current configuration data.