|
@@ -266,6 +266,7 @@ Error_manager System_executor::encapsulate_send_status()
|
|
|
int region_index = 0;
|
|
|
for (auto iter = t_ground_region_map.begin(); iter != t_ground_region_map.end(); ++iter)
|
|
|
{
|
|
|
+ bool has_mulfunctional_device = false;
|
|
|
// 以t_ground_status_msg为模板创建各区域心跳消息
|
|
|
message::Ground_status_msg t_multi_status_msg;
|
|
|
t_multi_status_msg.CopyFrom(t_ground_status_msg);
|
|
@@ -280,6 +281,10 @@ Error_manager System_executor::encapsulate_send_status()
|
|
|
LOG(WARNING) << "lidar status "<<t_param.lidar_exts(j).lidar_id()<<" cannot be found, param error";
|
|
|
}else{
|
|
|
t_multi_status_msg.add_wanji_lidar_device_status((message::Wanji_lidar_device_status)t_status_iter->second);
|
|
|
+ if(t_status_iter->second != Velodyne_lidar_device::E_READY && t_status_iter->second != Velodyne_lidar_device::E_BUSY)
|
|
|
+ {
|
|
|
+ has_mulfunctional_device = true;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
//velodyne雷达的自动定位信息
|
|
@@ -383,14 +388,25 @@ Error_manager System_executor::encapsulate_send_status()
|
|
|
t_error.set_error_description(t_error_str);
|
|
|
}
|
|
|
|
|
|
- t_multi_status_msg.mutable_error_manager()->set_error_code(t_error.get_error_code());
|
|
|
- t_multi_status_msg.mutable_error_manager()->set_error_level((message::Error_level)t_error.get_error_level());
|
|
|
- t_multi_status_msg.mutable_error_manager()->set_error_description(t_error.get_error_description());
|
|
|
+ if(has_mulfunctional_device)
|
|
|
+ {
|
|
|
+ t_multi_status_msg.mutable_error_manager()->set_error_code(Error_code::VELODYNE_LIDAR_COMMUNICATION_DISCONNECT);
|
|
|
+ t_multi_status_msg.mutable_error_manager()->set_error_level(message::Error_level::MAJOR_ERROR);
|
|
|
+ t_multi_status_msg.mutable_error_manager()->set_error_description("has mulfunctional lidar device, please check.");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ t_multi_status_msg.mutable_error_manager()->set_error_code(t_error.get_error_code());
|
|
|
+ t_multi_status_msg.mutable_error_manager()->set_error_level((message::Error_level)t_error.get_error_level());
|
|
|
+ t_multi_status_msg.mutable_error_manager()->set_error_description(t_error.get_error_description());
|
|
|
+ }
|
|
|
|
|
|
std::string t_msg = t_multi_status_msg.SerializeAsString();
|
|
|
System_communication::get_instance_references().encapsulate_msg(t_msg);
|
|
|
if(t_multi_status_msg.id_struct().terminal_id()==DISP_TERM_ID)
|
|
|
std::cout<<t_multi_status_msg.DebugString()<<std::endl<<std::endl;
|
|
|
+
|
|
|
+ usleep(1000*10);
|
|
|
}
|
|
|
|
|
|
// 普爱统一一个万集节点, 各终端消息分别发送
|