/** * @file rcsignal.h * @brief RC PWM signal reading and parsing module */ #ifndef RCSIGNAL_H #define RCSIGNAL_H #include "esp_err.h" #include #include /** * @brief Callback function type for mode changes */ typedef void (*rcsignal_mode_change_callback_t)(); /** * @brief Initialize RC signal reading * @param pin GPIO pin for PWM input (-1 to disable) * @return ESP_OK on success */ esp_err_t rcsignal_init(int8_t pin); /** * @brief Deinitialize RC signal reading */ void rcsignal_deinit(void); /** * @brief Register callback for mode changes * @param callback Callback function */ void rcsignal_register_callback(rcsignal_mode_change_callback_t callback); /** * @brief Get current PWM pulse width in microseconds * @return Pulse width in µs (0 if no signal) */ uint32_t rcsignal_get_pulse_width(void); /** * @brief Check if PWM signal is active * @return true if signal detected in last 100ms */ bool rcsignal_is_active(void); /** * @brief Get current mode * @return Current animation mode (0-13) */ uint8_t rcsignal_get_current_mode(void); #endif // RCSIGNAL_H