linkmanage部分,对不同链路的管理
v2.6.0
目前支持的UDP,TCP,serial
- 创建单实例linkmanager
创建单实例是1个宏定义,这个设计还是很巧妙的,隐藏了实例的创建
IMPLEMENT_QGC_SINGLETON(LinkManager, LinkManager)
#define IMPLEMENT_QGC_SINGLETON(className, interfaceName) \
interfaceName* className::_instance = NULL; \
interfaceName* className::_mockInstance = NULL; \
interfaceName* className::_realInstance = NULL; \
\
interfaceName* className::_createSingleton(void) \
{ \
Q_ASSERT(_instance == NULL); \
_instance = new className(qgcApp()); \
return _instance; \
} \
\
发送数据
- 发送心跳包
void MAVLinkProtocol::sendHeartbeat()
- 发送消息
sendMessage(beat);
- 发送链路
link->writeBytes((