rc_sbus.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #ifndef _SOFT_RC_SBUS_H_
  2. #define _SOFT_RC_SBUS_H_
  3. #include "common.h"
  4. #include "remote_controller.h"
  5. #include <stdbool.h>
  6. #include <stdint.h>
  7. #define _SBUS_CALIB_CH_NUM 4
  8. #define _SBUS_DATA_NUM 23
  9. /* sbus 信号状态 */
  10. typedef enum
  11. {
  12. SBUS_SIGNAL_OK = 0x00,
  13. SBUS_SIGNAL_LOST = 0x01,
  14. SBUS_SIGNAL_FAILSAFE = 0x03,
  15. } RCSbus_SignalStatus;
  16. typedef struct
  17. {
  18. /*--------- public members ---------------*/
  19. RC_Data_Type rc;
  20. /*--------- public members end -----------*/
  21. /*--------- private members --------------*/
  22. uint32_t _link_lost_time_us; /* 失联时间 */
  23. RCSbus_SignalStatus _sbus_signal_status; /* sbus 信号状态 */
  24. /* 接收解析 */
  25. uint8_t _raw_sbus_parse_stage;
  26. uint8_t _raw_sbus_head;
  27. uint8_t _raw_sbus_data[_SBUS_DATA_NUM];
  28. uint8_t _raw_sbus_tail;
  29. uint8_t _raw_sbus_data_rx_index;
  30. /* 数值异常判断计时 */
  31. float _health_count_s;
  32. float _fail_count_s;
  33. float _bad_count_s;
  34. /*-------- private members end-------------*/
  35. } RC_SBUS_Data;
  36. void RcSbus_StructInit(RC_SBUS_Data *prc_sbus);
  37. bool rc_sbus_protocal_parse_char(RC_SBUS_Data *rc_sbus, uint8_t data);
  38. #endif