#pragma once

#ifdef __cplusplus
extern "C" {
#endif

typedef struct {
    float alpha;       ///< Fator de suavização (0.0 a 1.0)
    float value;       ///< Último valor filtrado
    int initialized;   ///< Flag de inicialização
} input_filter_t;

/**
 * @brief Inicializa o filtro com o fator alpha desejado.
 * @param filter Ponteiro para a estrutura do filtro
 * @param alpha Valor entre 0.0 (mais lento) e 1.0 (sem filtro)
 */
void input_filter_init(input_filter_t *filter, float alpha);

/**
 * @brief Atualiza o valor filtrado com uma nova entrada.
 * @param filter Ponteiro para o filtro
 * @param input Valor bruto
 * @return Valor suavizado
 */
float input_filter_update(input_filter_t *filter, float input);

#ifdef __cplusplus
}
#endif
