void UAS::add_connection_change_handler(UAS::ConnectionCb cb) { lock_guard lock(mutex); connection_cb_vec.push_back(cb); }
时间: 2024-05-25 15:10:11 浏览: 12
这是一个名为UAS的类内部的成员函数,用于添加一个连接状态改变的回调函数。该函数接受一个回调函数参数cb,类型为ConnectionCb,这个类型可能是一个函数指针或者一个函数对象。
函数内部首先使用lock_guard来对mutex进行加锁,确保线程安全。然后将传入的回调函数cb添加到connection_cb_vec向量中。这个向量中存储了所有的连接状态改变回调函数,当连接状态改变时,会遍历这个向量调用所有的回调函数。
因为这个函数是UAS类的成员函数,所以在调用时需要先创建一个UAS类的对象,然后通过对象调用该函数。
相关问题
// setup UAS and diag mav_uas.set_tgt(tgt_system_id, tgt_component_id); UAS_FCU(&mav_uas) = fcu_link; mav_uas.add_connection_change_handler(std::bind(&MavlinkDiag::set_connection_status, &fcu_link_diag, std::placeholders::_1)); mav_uas.add_connection_change_handler(std::bind(&MavRos::log_connect_change, this, std::placeholders::_1));
这段代码看起来是在设置一个MAVLink的链接,并且将该链接与一些处理程序关联。具体来说:
- `mav_uas.set_tgt(tgt_system_id, tgt_component_id);` 这行代码设置MAVLink连接的目标系统ID和组件ID。
- `UAS_FCU(&mav_uas) = fcu_link;` 这行代码设置MAVLink连接的通信方式(可能是串口、UDP、TCP等)。
- `mav_uas.add_connection_change_handler(std::bind(&MavlinkDiag::set_connection_status, &fcu_link_diag, std::placeholders::_1));` 这行代码将一个处理程序与MAVLink连接关联。当连接状态发生变化时,处理程序`MavlinkDiag::set_connection_status`将被调用,参数`_1`是连接状态。
- `mav_uas.add_connection_change_handler(std::bind(&MavRos::log_connect_change, this, std::placeholders::_1));` 这行代码将另一个处理程序与MAVLink连接关联。当连接状态发生变化时,处理程序`MavRos::log_connect_change`将被调用,参数`_1`是连接状态。
总体来说,这段代码的作用是建立MAVLink连接并且设置一些连接状态处理程序。
UAS: GeographicLib exception: File not readable /usr/share/GeographicLib/geoids/egm96-5.pgm | Run install_geographiclib_dataset.sh script in order to install Geoid Model dataset!
这个错误表示您需要安装 Geoid Model 数据集,否则无法使用地理位置相关的功能。您可以按照以下步骤安装该数据集:
1. 运行以下命令:
```
sudo apt-get install geographiclib-tools
```
这将安装 GeographicLib 工具包,包括安装 Geoid Model 数据集所需的脚本。
2. 运行以下命令:
```
sudo geographiclib-get-geoids egm96-5
```
这将下载并安装 Geoid Model 数据集。请注意,此过程可能需要一些时间,具体取决于您的网络速度。完成后,您应该能够使用地理位置相关的功能了。
如果您仍然遇到问题,请尝试重新启动 QGroundControl 或重启您的计算机,然后再尝试安装数据集。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)