99 lines
2.1 KiB
C
99 lines
2.1 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 enum
|
|
{
|
|
MESSAGE_IDLE = 0,
|
|
MESSAGE_OTA,
|
|
}message_status_m;
|
|
typedef enum
|
|
{
|
|
PROTOCOL_STATUS_OK = 0,
|
|
PROTOCOL_STATUS_NO_DATA, //没有收到数据,或者数据小于一定量
|
|
PROTOCOL_STATUS_TYPE_IDLE, //协议类型未知
|
|
PROTOCOL_STATUS_ANALYSIS_ERROR, //长时间解析失败
|
|
PROTOCOL_STATUS_IN_OTA, //OTA中
|
|
}protocol_status_t;
|
|
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_status_t protocol_status;
|
|
uint16_t analysis_sussess_count; //数据解析成功次数
|
|
|
|
message_status_m message_status;
|
|
}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);
|
|
/**
|
|
* @brief 设置消息状态
|
|
*
|
|
* @param status 消息状态
|
|
*/
|
|
void protocol_set_message_status(message_status_m status);
|
|
/**
|
|
* @brief 获取协议状态
|
|
*
|
|
* @retval 协议状态
|
|
*/
|
|
protocol_status_t get_protocol_status(void);
|
|
|
|
#endif |