Files
WS2812B-LED-RC-Controller/main/rcsignal.h
2026-01-06 11:09:59 +01:00

62 lines
1.3 KiB
C

/**
* @file rcsignal.h
* @brief RC PWM signal reading and parsing module
*/
#ifndef RCSIGNAL_H
#define RCSIGNAL_H
#include "esp_err.h"
#include <stdint.h>
#include <stdbool.h>
/**
* @brief Callback function type for mode changes
* @param new_mode New animation mode (0-13)
*/
typedef void (*rcsignal_mode_change_callback_t)(uint8_t new_mode);
/**
* @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 Manually trigger mode change (for emulation)
*/
void rcsignal_trigger_mode_change(void);
/**
* @brief Get current mode
* @return Current animation mode (0-13)
*/
uint8_t rcsignal_get_current_mode(void);
#endif // RCSIGNAL_H