R2_NEW/User/device/rc.h

86 lines
1.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef RC_h
#define RC_h
/* Includes ----------------------------------------------------------------- */
#include <cmsis_os2.h>
#include "bsp_usart.h"
#include "cmd.h"
#include "user_math.h"
#include "device.h"
/* Exported constants ------------------------------------------------------- */
/* Exported macro ----------------------------------------------------------- */
/* Exported types ----------------------------------------------------------- */
typedef __packed struct
{
uint16_t ch_r_x : 11;
uint16_t ch_r_y : 11;
uint16_t ch_l_x : 11;
uint16_t ch_l_y : 11;
uint8_t sw_r : 2;
uint8_t sw_l : 2;
int16_t x;
int16_t y;
int16_t z;
uint8_t press_l;
uint8_t press_r;
uint16_t key;
uint16_t res;
} DR16_Data_t;
typedef struct {
DR16_Data_t data;
} DR16_t;
/*ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>*/
typedef __packed struct
{
fp32 map_ch[4];
int16_t ch[4];
int16_t sw[8];
} LD_raw_t;
typedef __packed struct
{
fp32 ch_r_x ;
fp32 ch_r_y ;
fp32 ch_l_x ;
fp32 ch_l_y ;
CMD_SwitchPos_t key_A ;
// int16_t key_B ;//<2F><>
CMD_SwitchPos_t key_C ;
// int16_t key_D ;//<2F><>
CMD_SwitchPos_t key_E ;
CMD_SwitchPos_t key_F;
CMD_SwitchPos_t key_G ;
CMD_SwitchPos_t key_H ;
int16_t knob_left;//<2F><><EFBFBD><EFBFBD>ť
int16_t knob_right;//<2F><><EFBFBD><EFBFBD>ť
} LD_Data_t;
int8_t RC_SBUS_Init(void );
static void RC_SBUS_RxCpltCallback(void) ;
int8_t RC_SBUS_Restart(void) ;
int8_t RC_SBUS_StartDmaRecv(void) ;
bool RC_SBUS_WaitDmaCplt(uint32_t timeout) ;
int8_t LD_ParseRaw( LD_raw_t *raw, LD_Data_t *LD);
static bool DR16_DataCorrupted(const DR16_t *dr16) ;
int8_t DR16_ParseRaw(DR16_t *dr16);
int8_t RC_ParseRC( DR16_t *dr16,LD_raw_t *LD_raw, LD_Data_t *LD, CMD_RC_t *rc) ;
int8_t DR16_HandleOffline(const DR16_t *dr16, CMD_RC_t *rc) ;
int8_t LD_HandleOffline(const LD_Data_t *LD, CMD_RC_t *rc) ;
CMD_SwitchPos_t MapSwitchState(int16_t value) ;
#endif