#ifndef PILOT_H_ #define PILOT_H_ #ifdef __cplusplus extern "C" { #endif #include #include /** * @brief Níveis categóricos de tensão no sinal CP (Control Pilot) */ typedef enum { PILOT_VOLTAGE_12, ///< Estado A: +12V PILOT_VOLTAGE_9, ///< Estado B: +9V PILOT_VOLTAGE_6, ///< Estado C: +6V PILOT_VOLTAGE_3, ///< Estado D: +3V PILOT_VOLTAGE_1 ///< Estado E/F: abaixo de 3V } pilot_voltage_t; /** * @brief Inicializa o driver do sinal Pilot */ void pilot_init(void); /** * @brief Define o nível do Pilot: +12V ou -12V * * @param level true = +12V, false = -12V */ void pilot_set_level(bool level); /** * @brief Ativa o PWM do Pilot com corrente limitada * * @param amps Corrente em ampères (ex: 16 = 16A) */ void pilot_set_amps(uint16_t amps); /** * @brief Mede o nível de tensão do Pilot e detecta -12V * * @param up_voltage Valor categórico da tensão positiva * @param down_voltage_n12 true se o nível negativo atingir -12V */ void pilot_measure(pilot_voltage_t *up_voltage, bool *down_voltage_n12); /** * @brief Retorna o estado lógico atual do Pilot (nível alto = +12V) * * @return true se nível atual for +12V, false se for -12V */ bool pilot_get_state(void); /** * @brief Cache interno opcional dos níveis de tensão reais do Pilot */ typedef struct { uint16_t high_mv; ///< Pico positivo medido (mV) uint16_t low_mv; ///< Pico negativo medido (mV) } pilot_voltage_cache_t; #ifdef __cplusplus } #endif #endif /* PILOT_H_ */