define SBUS in config

This commit is contained in:
2026-02-14 21:58:39 +01:00
parent 4ccfc5128b
commit 40d2880fdc
6 changed files with 259 additions and 183 deletions

View File

@ -1,24 +1,19 @@
/**
* @file rcsignal.h
* @brief RC PWM signal reading and parsing module
* @brief RC PWM/SBUS signal reading and parsing module
*/
#ifndef RCSIGNAL_H
#define RCSIGNAL_H
#include "esp_err.h"
#include "config.h"
#include <stdint.h>
#include <stdbool.h>
// Define to switch between PWM and SBUS mode
// Comment out to use PWM mode, uncomment to use SBUS mode
#define USE_SBUS_MODE
#ifdef USE_SBUS_MODE
#define SBUS_NUM_CHANNELS 16 // SBUS supports 16 proportional channels
#define SBUS_TRIGGER_CHANNEL 3 // Channel 4 (index 3) for mode trigger
#endif
// SBUS protocol constants (always defined for use in both modes)
#define SBUS_NUM_CHANNELS 16 // SBUS supports 16 proportional channels
/**
* @brief Callback function type for mode changes
@ -27,10 +22,10 @@ typedef void (*rcsignal_mode_change_callback_t)();
/**
* @brief Initialize RC signal reading
* @param pin GPIO pin for PWM input (-1 to disable)
* @param config Pointer to configuration structure
* @return ESP_OK on success
*/
esp_err_t rcsignal_init(int8_t pin);
esp_err_t rcsignal_init(const config_t *config);
/**
* @brief Deinitialize RC signal reading
@ -61,18 +56,16 @@ bool rcsignal_is_active(void);
*/
uint8_t rcsignal_get_current_mode(void);
#ifdef USE_SBUS_MODE
/**
* @brief Get SBUS channel value
* @brief Get SBUS channel value (only valid in SBUS mode)
* @param channel Channel index (0-15)
* @return Channel value (172-1811) or 0 if invalid
* @return Channel value (172-1811) or 0 if invalid/not in SBUS mode
*/
uint16_t rcsignal_get_sbus_channel(uint8_t channel);
/**
* @brief Debug function to print all SBUS channels
* @brief Debug function to print all SBUS channels (only valid in SBUS mode)
*/
void rcsignal_debug_print_channels(void);
#endif
#endif // RCSIGNAL_H