53 lines
1.3 KiB
C
53 lines
1.3 KiB
C
/**
|
|
* 协议层: 遥控信号打包/解包、SBUS 解析、USB HID Joystick
|
|
* 统一管理 NRF24/CRFS/SBUS/USB 四种协议的数据流
|
|
*/
|
|
#ifndef PROTOCOL_H
|
|
#define PROTOCOL_H
|
|
|
|
#include "main.h"
|
|
#include "nrf24l01.h"
|
|
#include "storage.h"
|
|
#include "menu.h"
|
|
|
|
/* 数据包结构 (NRF24 协议) */
|
|
#define RF_PACKET_SIZE 32
|
|
#define RF_HEADER_SIZE 6
|
|
|
|
/* 数据包头 */
|
|
#define RF_SYNC_BYTE0 0xAA
|
|
#define RF_SYNC_BYTE1 0x55
|
|
|
|
/* SBUS 帧结构 */
|
|
#define SBUS_FRAME_SIZE 25
|
|
#define SBUS_BAUDRATE 100000
|
|
|
|
/* USB HID 报告大小 */
|
|
#define HID_REPORT_SIZE 16
|
|
|
|
/* 函数声明 */
|
|
void Protocol_Init(void);
|
|
|
|
/* RF 协议 */
|
|
void Protocol_SendRFPacket(void); /* 发送 NRF24 数据包 */
|
|
void Protocol_ProcessRF(void); /* 处理 RF 收发 */
|
|
|
|
/* SBUS 输入 */
|
|
void Protocol_SBUS_Init(void);
|
|
uint8_t Protocol_SBUS_Parse(const uint8_t *frame, int16_t *channels);
|
|
|
|
/* USB HID Joystick */
|
|
void Protocol_HID_Init(void);
|
|
void Protocol_HID_Send(void); /* 发送 HID 报告 */
|
|
|
|
/* 主循环调用 */
|
|
void Protocol_Run(void);
|
|
|
|
/* 回传数据 */
|
|
extern uint16_t telem_voltage; /* 电压 (mV) */
|
|
extern uint8_t telem_rssi; /* RSSI */
|
|
extern uint8_t telem_packet_loss; /* 丢包率 */
|
|
extern uint16_t telem_temp; /* 温度 */
|
|
|
|
#endif /* PROTOCOL_H */
|