在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1005|回复: 8

[求助] MAVLink 学习笔记(c_library_v1-master)

[复制链接]
发表于 2022-9-24 16:19:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
src=http%3A%2F%2Fimg-blog.csdnimg.cn%2Fimg_convert%2F24437dc4c2fec81287b517889aa62f78.png&refer=http%3A%2F%2Fimg-blog.csdnimg.jpg


深入源码,学习v1版本的MAVLink架构,记录学习细节,巩固学习要点

 楼主| 发表于 2022-9-24 16:21:53 | 显示全部楼层
/* 文件组织结构,如下 */



/* 文件组织结构,见上 */

WXWorkCapture_16640073991552.png
 楼主| 发表于 2022-9-26 18:52:45 | 显示全部楼层
typedef struct __mavlink_system
{
    uint8_t sysid;
    uint8_t compid;
} mavlink_system_t;


/**
* Used by the mavlink_send_xxx convenience functions
*/

 楼主| 发表于 2022-9-26 19:05:03 | 显示全部楼层
本帖最后由 jasiachang 于 2022-9-26 19:10 编辑

typedef struct __mavlink_message
{
    uint16_t checksum;
    uint8_t magic;
    uint8_t len;
    uint8_t seq;
    uint8_t sysid;
    uint8_t compid;
    uint8_t msgid;
    uint64_t payload64[(A + B + 7) / 8];
} mavlink_message_t;


 楼主| 发表于 2022-9-26 19:10:19 | 显示全部楼层
typedef struct __mavlink_extended_message
{
    mavlink_message_t base_msg;
    int32_t extended_payload_len;
    uint8_t extended_payload[C];
} mavlink_extended_message_t;


 楼主| 发表于 2022-9-26 19:16:59 | 显示全部楼层
typedef enum
{
    MAVLINK_TYPE_CHAR = 0,
    MAVLINK_TYPE_UINT8_T = 1,
    MAVLINK_TYPE_INT8_T = 2,
    ...
    MAVLINK_TYPE_FLOAT = 9,
    MAVLINK_TYPE_DOUBLE = 10
} mavlink_message_type_t;


 楼主| 发表于 2022-9-27 12:42:53 | 显示全部楼层
/**
* Applications can set "MAVLINK_COMM_NUM_BUFFERS" to the maximum number of buffers they will use.
* If more are used, then the result will be a stack overrun.
*/

#ifndef MAVLINK_COMM_NUM_BUFFERS

#if (defined linux) | (defined __linux) | (defined __MACH__) | (defined _WIN32)
#define MAVLINK_COMM_NUM_BUFFERS 16
#else
#define MAVLINK_COMM_NUM_BUFFERS 4
#endif
#endif


 楼主| 发表于 2022-9-29 22:28:13 | 显示全部楼层
mavlink_types.h中的所有数据结构

mavlink_system_t
struct类型,包含两个成员sysid、compid

mavlink_message_t
struct类型,包含8个成员checksum、magic、len、seq、sysid、compid、msgid、payload64[]

mavlink_extended_message_t
struct类型,包含3个成员mavlink_message_t base_msg、extended_payload_len、extended_payload[]

mavlink_message_type_t
enum类型

mavlink_field_info_t
struct类型,包含6个成员,两个字符串,mavlink_message_type_t type、三个定点数

mavlink_message_info_t
struct类型,包含3个成员,一个字符串,一个定点数,一个mavlink_field_info_t数组

mavlink_channel_t
enum类型

mavlink_parse_state_t
enum类型,用作通讯parser过程中的状态机

mavlink_framing_t
enum类型,包含3种,分别是"未完成"、"好了"、"校验异常"

mavlink_status_t
struct类型,包含9个成员,完后再仔细看和深入理解


 楼主| 发表于 2022-9-29 22:39:01 | 显示全部楼层
mavlink_helpers.h


/**
* @brief Reset the status of a channel.
*/


void mavlink_reset_channel_status(uint8_t chan)
{
    mavlink_status_t * status = mavlink_get_channel_status(chan);
    ststus->parse_state = MAVLINK_PARSE_STATE_IDLE;
}




您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-6 13:12 , Processed in 0.038326 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表