Lazy loaded image
MavLink 初始化过程
Words 1662Read Time 5 min
2024-8-19

GCS类

  • chan_parameters 定义了针对每一个接口的接口参数。
  • _chan,是一个 GCS_MAVLINK 类生成的指针数组对象,MAVLINK_COMM_NUM_BUFFERS定义为5个,指示 Mavlink 最多只能有 5 个接口。
 

void AP_Vehicle::setup()

 

Sub::init_ardupilot()

Setup 中的 setup_console()

find_serial()功能概述:在可用的串行端口搜索允许给定协议的第一个实例(instance),如果搜索的是协议的第一个实例,那么实例(instance)应该为0,第二个为1,以此类推。成功则返回串口设备。
 
 

init_ardupilot 中 setup_uarts

前面解释的setup_console()函数类似,这边实现的是对剩下4个类接口的注册及初始化工作。
 

mavlink_delay_cb()

hal.scheduler->register_delay_callback(mavlink_delay_cb_static, 5)注册mavlink服务回调。 这将在对hal.scheduler-> delay的调用中剩余超过5毫秒的任何时间运行。这个函数将调用sub.mavlink_delay_cb();
对于这个函数,官方的解释是处理MAVLink数据包的delay()回调。 我们在长时间运行的库初始化例程中将其设置为回调,以允许MAVLink在等待初始化完成的同时处理数据包。函数实现如下:
注意到每次以ms为单位获取tnow时间,并且以1Hz频率(1s时间)通过APM固件中的“地面站”向实际电脑地面站发送心跳包和系统状态包,MSG_HEARTBEAT和MSG_SYS_STATUS表示id号,分别为1和3。按50hz频率进行发送和接收的更新。每5s发送一次信息。这里面调用的函数内容有点多,后面找机会另写一篇研究一下,这次就先到这吧。

引用

 
上一篇
模板设计模式:让你的代码结构更清晰
下一篇
Guide to Linux System

Comments
Loading...