#ifndef _SOFT_RC_SBUS_H_ #define _SOFT_RC_SBUS_H_ #include "common.h" #include "remote_controller.h" #include #include #define _SBUS_CALIB_CH_NUM 4 #define _SBUS_DATA_NUM 23 /* sbus 信号状态 */ typedef enum { SBUS_SIGNAL_OK = 0x00, SBUS_SIGNAL_LOST = 0x01, SBUS_SIGNAL_FAILSAFE = 0x03, } RCSbus_SignalStatus; typedef struct { /*--------- public members ---------------*/ RC_Data_Type rc; /*--------- public members end -----------*/ /*--------- private members --------------*/ uint32_t _link_lost_time_us; /* 失联时间 */ RCSbus_SignalStatus _sbus_signal_status; /* sbus 信号状态 */ /* 接收解析 */ uint8_t _raw_sbus_parse_stage; uint8_t _raw_sbus_head; uint8_t _raw_sbus_data[_SBUS_DATA_NUM]; uint8_t _raw_sbus_tail; uint8_t _raw_sbus_data_rx_index; /* 数值异常判断计时 */ float _health_count_s; float _fail_count_s; float _bad_count_s; /*-------- private members end-------------*/ } RC_SBUS_Data; void RcSbus_StructInit(RC_SBUS_Data *prc_sbus); bool rc_sbus_protocal_parse_char(RC_SBUS_Data *rc_sbus, uint8_t data); #endif