42 : writer_(
std::move(writer)) {
43 AddRecvProtocolData<RadarState201, true>();
44 AddRecvProtocolData<ClusterListStatus600, true>();
45 AddRecvProtocolData<ClusterGeneralInfo701, true>();
46 AddRecvProtocolData<ClusterQualityInfo702, true>();
47 AddRecvProtocolData<ObjectExtendedInfo60D, true>();
48 AddRecvProtocolData<ObjectGeneralInfo60B, true>();
49 AddRecvProtocolData<ObjectListStatus60A, true>();
50 AddRecvProtocolData<ObjectQualityInfo60C, true>();
76 const uint8_t *data, int32_t length) {
77 ProtocolData<RacobitRadar> *sensor_protocol_data =
79 if (sensor_protocol_data ==
nullptr) {
83 std::lock_guard<std::mutex> lock(sensor_data_mutex_);
89 common::util::FillHeader(FLAGS_sensor_node_name, &sensor_data_);
94 ADEBUG << sensor_data_.ShortDebugString();
96 if (sensor_data_.contiobs_size() <=
97 sensor_data_.object_list_status().nof_objects()) {
99 common::util::FillHeader(
"racobit_radar", &sensor_data_);
100 writer_->Write(sensor_data_);
102 sensor_data_.Clear();
106 sensor_protocol_data->Parse(data, length, &sensor_data_);
109 ADEBUG << sensor_data_.ShortDebugString();
110 if (sensor_data_.radar_state().send_quality() ==
112 sensor_data_.radar_state().send_ext_info() ==
114 sensor_data_.radar_state().max_distance() ==
116 sensor_data_.radar_state().output_type() ==
118 sensor_data_.radar_state().rcs_threshold() ==
120 sensor_data_.radar_state().radar_power() ==
122 is_configured_ =
true;
124 AINFO <<
"configure radar again";
128 can_client_->SendSingleFrame({sender_message.
CanFrame()});
132 received_ids_.insert(message_id);
134 const auto it = check_ids_.find(message_id);
135 if (it != check_ids_.end()) {
137 it->second.real_period = time - it->second.last_time;
139 const double period_multiplier = 1.5;
140 if (it->second.real_period >
141 (
static_cast<double>(it->second.period) * period_multiplier)) {
142 it->second.error_count += 1;
144 it->second.error_count = 0;
146 it->second.last_time = time;