Files
ESPC3-wireless/app/drivers/sertrf/protocol/p_protocol.h
2025-09-02 14:20:28 +08:00

69 lines
1.3 KiB
C

#pragma once
#ifndef PROJECT_H
#define PROJECT_H
#include "../device.h"
#include "mavlink_control.h"
#include "MSP.h"
typedef struct
{
int* uart_fd;
sb_data_port_t* data_port;
}protocol_port_t;
typedef enum
{
PROTOCOL_IDLE,
PROTOCOL_MSP,
PROTOCOL_MAVLINK,
}protocol_type_m;
typedef enum
{
PORT_LINUX_UART = 0,
PORT_LINUX_SBDATA,
}port_type_m;
typedef struct
{
protocol_port_t port;
protocol_type_m pro_type;
port_type_m port_type;
mavlink_device_t mavlink_device;
msp_port_t msp;
}protocol_t;
/**
* @brief 初始化协议前端
*
* @param port_type 使用的设备类型(如串口或其他)
* @param port 由对应的驱动提供的绑定接口获得的句柄
*/
void Protocol_init(port_type_m port_type, void* port);
/**
* @brief 搜索协议
*
* @retval 协议类型
*/
int Protocol_search();
/**
* @brief 使用串口进行数据获取的主运行函数(针对需要使用串口读取)
*/
void Protocol_loop(void* arg);
/**
* @brief 搜索协议
*
* @param data 数据缓存
* @param size 数据长度
* @retval 协议类型
*/
int Protocol_buf_search(void* data, uint32_t size);
/**
* @brief 解析数据 (针对已获取到数据缓存)
*
* @param data 数据缓存
* @param size 数据长度
*/
void Protocol_buf_decode(void* data, uint32_t size);
#endif