175 chassis_.set_error_code(chassis_error_code());
178 chassis_.set_engine_started(
true);
182 if (chassis_detail.has_wheelspeed_report_506()) {
184 chassis_.mutable_wheel_speed()->set_wheel_spd_rr(
188 chassis_.mutable_wheel_speed()->set_wheel_spd_rl(
192 chassis_.mutable_wheel_speed()->set_wheel_spd_fr(
196 chassis_.mutable_wheel_speed()->set_wheel_spd_fl(
201 if (chassis_detail.has_vcu_report_505() &&
203 chassis_.set_speed_mps(
206 chassis_.set_speed_mps(0);
213 if (chassis_detail.has_throttle_report_500() &&
215 chassis_.set_throttle_percentage(
static_cast<float>(
218 chassis_.set_throttle_percentage(0);
221 if (chassis_detail.has_throttle_command_100() &&
223 chassis_.set_throttle_percentage_cmd(
static_cast<float>(
226 chassis_.set_throttle_percentage_cmd(0);
229 if (chassis_detail.has_brake_report_501() &&
231 chassis_.set_brake_percentage(
static_cast<float>(
234 chassis_.set_brake_percentage(0);
237 if (chassis_detail.has_brake_command_101() &&
239 chassis_.set_brake_percentage_cmd(
static_cast<float>(
242 chassis_.set_brake_percentage_cmd(0);
245 if (chassis_detail.has_gear_report_503() &&
269 chassis_.set_gear_location(gear_pos);
274 if (chassis_detail.has_steering_report_502() &&
276 chassis_.set_steering_percentage(
static_cast<float>(
280 chassis_.set_steering_percentage(0);
283 if (chassis_detail.has_steering_command_102() &&
285 chassis_.set_steering_percentage_cmd(
static_cast<float>(
288 chassis_.set_steering_percentage_cmd(0);
291 if (chassis_detail.has_park_report_504() &&
295 chassis_.set_parking_brake(
true);
297 chassis_.set_parking_brake(
false);
300 chassis_.set_parking_brake(
false);
303 if (chassis_detail.has_bms_report_512() &&
305 chassis_.set_battery_soc_percentage(
309 chassis_.mutable_engage_advice()->set_advice(
311 chassis_.mutable_engage_advice()->set_reason(
312 "Battery soc percentage is lower than 15%, please charge it "
316 chassis_.set_battery_soc_percentage(0);
322 if (chassis_detail.has_ultr_sensor_1_507()) {
323 chassis_.mutable_surround()->set_sonar08(
325 chassis_.mutable_surround()->set_sonar09(
327 chassis_.mutable_surround()->set_sonar10(
329 chassis_.mutable_surround()->set_sonar11(
332 chassis_.mutable_surround()->set_sonar08(0);
333 chassis_.mutable_surround()->set_sonar09(0);
334 chassis_.mutable_surround()->set_sonar10(0);
335 chassis_.mutable_surround()->set_sonar11(0);
338 if (chassis_detail.has_ultr_sensor_3_509()) {
339 chassis_.mutable_surround()->set_sonar02(
341 chassis_.mutable_surround()->set_sonar03(
343 chassis_.mutable_surround()->set_sonar04(
345 chassis_.mutable_surround()->set_sonar05(
348 chassis_.mutable_surround()->set_sonar02(0);
349 chassis_.mutable_surround()->set_sonar03(0);
350 chassis_.mutable_surround()->set_sonar04(0);
351 chassis_.mutable_surround()->set_sonar05(0);
354 if (chassis_detail.has_ultr_sensor_5_511()) {
355 chassis_.mutable_surround()->set_sonar00(
357 chassis_.mutable_surround()->set_sonar01(
359 chassis_.mutable_surround()->set_sonar06(
361 chassis_.mutable_surround()->set_sonar07(
364 chassis_.mutable_surround()->set_sonar00(0);
365 chassis_.mutable_surround()->set_sonar01(0);
366 chassis_.mutable_surround()->set_sonar06(0);
367 chassis_.mutable_surround()->set_sonar07(0);
372 std::string vin =
"";
373 if (chassis_detail.has_vin_resp1_514()) {
375 vin += vin_resp1_514.
vin00();
376 vin += vin_resp1_514.
vin01();
377 vin += vin_resp1_514.
vin02();
378 vin += vin_resp1_514.
vin03();
379 vin += vin_resp1_514.
vin04();
380 vin += vin_resp1_514.
vin05();
381 vin += vin_resp1_514.
vin06();
382 vin += vin_resp1_514.
vin07();
384 if (chassis_detail.has_vin_resp2_515()) {
386 vin += vin_resp2_515.
vin08();
387 vin += vin_resp2_515.
vin09();
388 vin += vin_resp2_515.
vin10();
389 vin += vin_resp2_515.
vin11();
390 vin += vin_resp2_515.
vin12();
391 vin += vin_resp2_515.
vin13();
392 vin += vin_resp2_515.
vin14();
393 vin += vin_resp2_515.
vin15();
395 if (chassis_detail.has_vin_resp3_516()) {
397 vin += vin_resp3_516.
vin16();
399 std::reverse(vin.begin(), vin.end());
400 chassis_.mutable_vehicle_id()->set_vin(vin);
402 if (chassis_detail.has_vcu_report_505() &&
414 if (chassis_detail.has_vcu_report_505() &&
427 if (chassis_detail.has_brake_report_501() &&
429 chassis_.mutable_check_response()->set_is_esp_online(
432 if (chassis_detail.has_steering_report_502() &&
434 chassis_.mutable_check_response()->set_is_eps_online(
437 if (chassis_detail.has_throttle_report_500() &&
439 chassis_.mutable_check_response()->set_is_vcu_online(
443 if (CheckChassisError()) {
444 chassis_.mutable_engage_advice()->set_advice(
446 chassis_.mutable_engage_advice()->set_reason(
447 "Chassis has some fault, please check the chassis_detail.");
452 chassis_.mutable_engage_advice()->set_advice(
454 chassis_.mutable_engage_advice()->set_reason(
455 "devkit chassis detail is lost! Please check the communication error.");