Files
ESPC3-wireless/app/drivers/sertrf/protocol/mavlink_control.h
2025-09-04 16:01:12 +08:00

108 lines
2.4 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.

#pragma once
#ifndef MAVLINK_CONTROL_H
#define MAVLINK_CONTROL_H
//关闭针对mavlink的警告
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
#include <common/mavlink.h>
#pragma GCC diagnostic pop
struct Mavlink_Messages {
int sysid;
int compid;
// Heartbeat
mavlink_heartbeat_t heartbeat;
// System Status
mavlink_sys_status_t sys_status;
// Battery Status
mavlink_battery_status_t battery_status;
// Radio Status
mavlink_radio_status_t radio_status;
// Local Position
mavlink_local_position_ned_t local_position_ned;
// Global Position
mavlink_global_position_int_t global_position_int;
// Local Position Target
mavlink_position_target_local_ned_t position_target_local_ned;
// Global Position Target
mavlink_position_target_global_int_t position_target_global_int;
// HiRes IMU
mavlink_highres_imu_t highres_imu;
// Attitude
mavlink_attitude_t attitude;
// System Parameters?
};
typedef struct {
mavlink_status_t lastStatus;
struct Mavlink_Messages current_messages;
bool debug;
int (*read)(void *data, uint32_t size, uint32_t wait_ms);
int (*write)(const void *data, uint32_t size, uint32_t wait_ms);
}mavlink_device_t;
/**
* @brief 初始化mavlink
*
* @param mavlink_device 接口
*/
void mavlink_init(mavlink_device_t* mavlink_device);
/**
* @brief MAVLINK消息解析
*
* @param mavlink_device 接口
* @param message 解析成功存放消息
* @param cp 数据
*/
int mavlink_message(mavlink_device_t* mavlink_device, mavlink_message_t* message,uint8_t cp);
/**
* @brief MAVLINK消息发送
*
* @param mavlink_device 接口
* @param message 需要发送的消息
*/
int write_message(mavlink_device_t* mavlink_device, const mavlink_message_t *message);
/**
* @brief MAVLINK消息处理
*
* @param mavlink_device 接口
* @param message 需要处理的消息
*/
void mavlik_packet_processing(mavlink_device_t* mavlink_device, mavlink_message_t* message);
/**
* @brief MAVLINK消息接收 (针对需要自己进行读操作)
*
* @param mavlink_device 接口
*/
void mavlink_recv_loop(mavlink_device_t* mavlink_device);
/**
* @brief MAVLINK消息接收针对已获取到数据缓存
*
* @param mavlink_device 接口
* @param data 数据
* @param size 大小
* @retval 解析成功次数
*/
int mavlink_recv_buf(mavlink_device_t* mavlink_device, void *data, uint32_t size);
#endif