12 #include "embot_core_binary.h"
29 snprintf(str,
sizeof(str),
" src %s, adr %d,(code 0x%.8x, par16 0x%.4x par64 0x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x) -> %s %s %s",
34 p64[7], p64[6], p64[5], p64[4], p64[3], p64[2], p64[1], p64[0],
67 case eoerror_value_CFG_candiscovery_started:
70 eObrd_type_t brdnum =
static_cast<eObrd_type_t
>((
m_dnginfo.
param64 & 0x0000ff0000000000) >> 40);
71 const char *canboardname = eoboards_type2string(brdnum);
73 eObrd_protocolversion_t prot = {0};
74 eObrd_firmwareversion_t appl = {0};
78 prot.major = reqpr >> 8;
79 prot.minor = reqpr & 0xff;
80 appl.major = (reqfw >> 16) & 0xff;
81 appl.minor = (reqfw >> 8) & 0xff;
82 appl.build = reqfw & 0xff;
83 num = eo_common_hlfword_bitsetcount(maskcan1)+eo_common_hlfword_bitsetcount(maskcan2);
85 snprintf(str,
sizeof(str),
" %s %d %s boards on (can1map, can2map) = (0x%.4x, 0x%.4x) with target can protocol ver %d.%d and application ver %d.%d.%d.",
89 prot.major, prot.minor,
90 appl.major, appl.minor, appl.build
95 case eoerror_value_CFG_candiscovery_ok:
98 eObool_t fakesearch = (0x0000 == (
m_dnginfo.
param16 & 0xf000)) ? (eobool_false) : (eobool_true);
100 const char *canboardname = eoboards_type2string(
static_cast<eObrd_type_t
>(brdnum));
102 eObrd_protocolversion_t prot = {0};
103 eObrd_firmwareversion_t appl = {0};
106 char strOK[80] =
"OK";
108 prot.major = reqpr >> 8;
109 prot.minor = reqpr & 0xff;
110 appl.major = (reqfw >> 16) & 0xff;
111 appl.minor = (reqfw >> 8) & 0xff;
112 appl.build = reqfw & 0xff;
115 if(eobool_true == fakesearch)
117 snprintf(strOK,
sizeof(strOK),
"OK but FAKE (without any control on CAN w/ get-fw-version<> message)");
120 snprintf(str,
sizeof(str),
"%s is %s for %d %s boards with target can protocol ver %d.%d and application ver %d.%d.%d. Search time was %d ms",
124 prot.major, prot.minor,
125 appl.major, appl.minor, appl.build,
131 case eoerror_value_CFG_candiscovery_detectedboard:
134 const char *canboardname = eoboards_type2string(
static_cast<eObrd_type_t
>(brdnum));
136 eObrd_protocolversion_t prot = {0};
137 eObrd_firmwareversion_t appl = {0};
141 prot.major = reqpr >> 8;
142 prot.minor = reqpr & 0xff;
143 appl.major = (reqfw >> 16) & 0xff;
144 appl.minor = (reqfw >> 8) & 0xff;
145 appl.build = reqfw & 0xff;
149 snprintf(str,
sizeof(str),
"%s %s board in %s addr %d with can protocol ver %d.%d and application ver %d.%d.%d Search time was %d ms",
153 prot.major, prot.minor,
154 appl.major, appl.minor, appl.build,
160 case eoerror_value_CFG_candiscovery_boardsmissing:
163 const char *canboardname = eoboards_type2string(
static_cast<eObrd_type_t
>((
m_dnginfo.
param16 >> 8)));
170 snprintf(str,
sizeof(str),
"%s %d missing %s boards for %d ms in %s:",
180 if(eobool_true == eo_common_hlfword_bitcheck(maskofmissing, i))
182 snprintf(str,
sizeof(str),
"%d of %d: missing %s BOARD %s:%s:%d",
183 n, numofmissing, canboardname,
194 case eoerror_value_CFG_candiscovery_boardsinvalid:
197 const char *canboardname = eoboards_type2string(
static_cast<eObrd_type_t
>(
m_dnginfo.
param16 >> 8));
201 const char *empty =
"";
202 const char *wrongtype =
"WRONG BOARD TYPE";
203 const char *wrongprot =
"WRONG PROTOCOL VERSION";
204 const char *wrongappl =
"WRONG APPLICATION VERSION";
206 snprintf(str,
sizeof(str),
"%s %d invalid %s boards in %s:\n",
214 for(
int i=1; i<15; i++)
216 uint64_t val = (invalidmask >> (4*i)) & 0x0f;
219 snprintf(str,
sizeof(str),
"\t %d of %d: wrong %s because it has: %s%s%s \n",
220 n, numofinvalid, canboardname,
221 ((val & 0x1) == 0x1) ? (wrongtype) : (empty),
222 ((val & 0x2) == 0x2) ? (wrongappl) : (empty),
223 ((val & 0x4) == 0x4) ? (wrongprot) : (empty)
234 case eoerror_value_CFG_skin_ok:
238 eObrd_protocolversion_t prot = {0};
239 eObrd_firmwareversion_t appl = {0};
242 prot.major = reqpr >> 8;
243 prot.minor = reqpr & 0xff;
244 appl.major = (reqfw >> 8) & 0xff;
245 appl.minor = reqfw & 0xff;
248 snprintf(str,
sizeof(str),
"%s on %d skin patches for boards on (can1map, can2map) = (0x%.4x, 0x%.4x) with target can protocol ver %d.%d and application ver %d.%d",
252 prot.major, prot.minor,
253 appl.major, appl.minor
258 case eoerror_value_CFG_skin_failed_toomanyboards:
259 case eoerror_value_CFG_inertials3_failed_toomanyboards:
260 case eoerror_value_CFG_temperatures_failed_toomanyboards:
268 snprintf(str,
sizeof(str),
" %s for %d boards. Limit of max number of boards is %d. Boards are on (can1map, can2map) = (0x%.4x, 0x%.4x)",
270 numOfReqBoards, numOfMaxBoards,
276 case eoerror_value_CFG_skin_failed_candiscovery:
277 case eoerror_value_CFG_inertials3_failed_candiscovery:
278 case eoerror_value_CFG_temperatures_failed_candiscovery:
286 if (eoerror_value_CFG_skin_failed_candiscovery == value)
288 snprintf(str,
sizeof(str),
"%s for %d skin patches. ",
m_dnginfo.
baseMessage.c_str(), numOfPatches);
297 snprintf(str,
sizeof(str),
"Missing can boards on (can1map, can2map) = (0x%.4x, 0x%.4x) and found but incompatible can boards on (can1map, can2map) = (0x%.4x, 0x%.4x)",
298 missMaskcan1, missMaskcan2,
299 incompMaskcan1, incompMaskcan2
305 case eoerror_value_CFG_strain_ok:
306 case eoerror_value_CFG_strain_failed_candiscovery:
308 eObrd_protocolversion_t prot = {0};
309 eObrd_firmwareversion_t appl = {0};
312 prot.major = reqpr >> 8;
313 prot.minor = reqpr & 0xff;
314 appl.major = (reqfw >> 8) & 0xff;
315 appl.minor = reqfw & 0xff;
320 snprintf(str,
sizeof(str),
"%s for board at addr:%d and port:%d with can protocol ver %d.%d and application ver %d.%d. Strain number is:%d",
323 prot.major, prot.minor,
324 appl.major, appl.minor,
330 case eoerror_value_CFG_mais_ok:
331 case eoerror_value_CFG_mais_failed_candiscovery:
332 case eoerror_value_CFG_psc_ok:
333 case eoerror_value_CFG_psc_failed_candiscovery:
334 case eoerror_value_CFG_pos_ok:
335 case eoerror_value_CFG_pos_failed_candiscovery:
337 eObrd_protocolversion_t prot = {0};
338 eObrd_firmwareversion_t appl = {0};
341 prot.major = reqpr >> 8;
342 prot.minor = reqpr & 0xff;
343 appl.major = (reqfw >> 8) & 0xff;
344 appl.minor = reqfw & 0xff;
348 snprintf(str,
sizeof(str),
"%s on board at addr: %d and port:%d with can protocol ver %d.%d and application ver %d.%d.",
352 prot.major, prot.minor,
353 appl.major, appl.minor
358 case eoerror_value_CFG_mais_failed_verify_because_active:
359 case eoerror_value_CFG_mc_foc_ok:
360 case eoerror_value_CFG_mc_foc_failed_candiscovery_of_foc:
361 case eoerror_value_CFG_mc_foc_failed_encoders_verify:
362 case eoerror_value_CFG_mc_mc4_ok:
363 case eoerror_value_CFG_mc_mc4_failed_candiscovery_of_mc4:
364 case eoerror_value_CFG_mc_mc4_failed_mais_verify:
365 case eoerror_value_CFG_mc_mc4plus_ok:
366 case eoerror_value_CFG_mc_mc4plus_failed_encoders_verify:
367 case eoerror_value_CFG_comm_cannotloadaregularrop:
368 case eoerror_value_CFG_mc_mc4plusmais_ok:
369 case eoerror_value_CFG_mc_mc4plusmais_failed_encoders_verify:
370 case eoerror_value_CFG_mc_mc4plusmais_failed_candiscovery_of_mais:
371 case eoerror_value_CFG_services_not_verified_yet:
372 case eoerror_value_CFG_mc_not_verified_yet:
373 case eoerror_value_CFG_strain_not_verified_yet:
374 case eoerror_value_CFG_mais_not_verified_yet:
375 case eoerror_value_CFG_skin_not_verified_yet:
376 case eoerror_value_CFG_inertials3_not_verified_yet:
377 case eoerror_value_CFG_encoders_not_verified_yet:
378 case eoerror_value_CFG_mc_using_onboard_config:
379 case eoerror_value_CFG_strain_using_onboard_config:
380 case eoerror_value_CFG_mais_using_onboard_config:
381 case eoerror_value_CFG_inertials3_using_onboard_config:
382 case eoerror_value_CFG_skin_using_onboard_config:
383 case eoerror_value_CFG_inertials3_ok:
384 case eoerror_value_CFG_temperatures_not_verified_yet:
385 case eoerror_value_CFG_temperatures_ok:
386 case eoerror_value_CFG_temperatures_using_onboard_config:
387 case eoerror_value_CFG_psc_failed_verify_because_active:
388 case eoerror_value_CFG_psc_not_verified_yet:
389 case eoerror_value_CFG_psc_using_onboard_config:
390 case eoerror_value_CFG_mc_mc2pluspsc_ok:
391 case eoerror_value_CFG_mc_mc2pluspsc_failed_encoders_verify:
392 case eoerror_value_CFG_mc_mc2pluspsc_failed_candiscovery_of_pscs:
393 case eoerror_value_CFG_inertials3_failed_notsupported:
394 case eoerror_value_CFG_temperatures_failed_notsupported:
395 case eoerror_value_CFG_mais_failed_notsupported:
396 case eoerror_value_CFG_strain_failed_notsupported:
397 case eoerror_value_CFG_skin_failed_notsupported:
398 case eoerror_value_CFG_psc_failed_notsupported:
399 case eoerror_value_CFG_mc_failed_notsupported:
400 case eoerror_value_CFG_encoders_failed_notsupported:
401 case eoerror_value_CFG_pos_not_verified_yet:
402 case eoerror_value_CFG_pos_using_onboard_config:
403 case eoerror_value_CFG_pos_failed_notsupported:
404 case eoerror_value_CFG_mc_mc4plusfaps_ok:
405 case eoerror_value_CFG_mc_mc4plusfaps_failed_encoders_verify:
406 case eoerror_value_CFG_mc_mc4plusfaps_failed_candiscovery:
407 case eoerror_value_CFG_mc_mc4pluspmc_ok:
408 case eoerror_value_CFG_mc_mc4pluspmc_failed_encoders_verify:
409 case eoerror_value_CFG_mc_mc4pluspmc_failed_candiscovery_of_pmc:
410 case eoerror_value_CFG_ft_ok:
411 case eoerror_value_CFG_ft_failed_candiscovery:
412 case eoerror_value_CFG_ft_not_verified_yet:
413 case eoerror_value_CFG_ft_using_onboard_config:
414 case eoerror_value_CFG_ft_failed_notsupported:
415 case eoerror_value_CFG_ft_failed_fullscales:
416 case eoerror_value_CFG_bat_ok:
417 case eoerror_value_CFG_bat_failed_candiscovery:
418 case eoerror_value_CFG_bat_not_verified_yet:
419 case eoerror_value_CFG_bat_using_onboard_config:
420 case eoerror_value_CFG_bat_failed_notsupported:
426 case eoerror_value_CFG_encoders_ok:
427 case eoerror_value_CFG_encoders_failed_verify:
435 int16_t rawerror1 = errorenc1 & failmaskenc1;
436 int16_t rawerror2 = errorenc2 & failmaskenc2;
440 for(
auto i=0; i < numOfJoints; i++)
443 auto primary_enc_with_error = (failmaskenc1 & (1<<i));
444 auto secondary_enc_with_error = (failmaskenc2 & (1<<i));
445 auto primary_error_code = 0;
446 auto secondary_error_code = 0;
447 if(primary_enc_with_error)
449 primary_error_code = ( (errorenc1 & (0xf <<i)) >> 4*i);
451 snprintf(str,
sizeof(str),
" joint %d (%s) has error on primary encoder (code=%d). ",
456 if(secondary_enc_with_error)
458 secondary_error_code = ( (errorenc2 & (0xf <<i)) >> 4*i);
460 snprintf(str,
sizeof(str),
" joint %d (%s) has error on secodary encoder (code=%d)",
470 case eoerror_value_CFG_inertials3_failed_unsupportedsensor:
474 snprintf(str,
sizeof(str),
"%s. Number of unsupported sens is %d",
481 case eoerror_value_CFG_inertials3_changed_requestedrate:
482 case eoerror_value_CFG_temperatures_changed_requestedrate:
483 case eoerror_value_CFG_psc_changed_requestedrate:
484 case eoerror_value_CFG_pos_changed_requestedrate:
489 snprintf(str,
sizeof(str),
"%s. Requested rate %u and Assigned rate %u",
497 case eoerror_value_CFG_inertials3_failed_generic:
498 case eoerror_value_CFG_temperatures_failed_generic:
502 snprintf(str,
sizeof(str),
"%s for %d sensors",
509 case EOERROR_VALUE_DUMMY:
536 std::string MotionControlParser::motorStatusBitsToString(eOmc_motorFaultState_t motorstatus)
539 static const std::array<std::string_view, eOmc_motorFaultState_numberof> s_motor_fault_status =
542 "ExternalFaultAsserted",
543 "UnderVoltageFailure",
544 "OverVoltageFailure",
545 "OverCurrentFailure",
549 "DHESInvalidSequence",
550 "CANInvalidProtocol",
559 "OverHeatingFailure",
568 "FirmwareSPITimingError",
570 "FirmwarePWMFatalError",
578 "SiliconRevisionFault",
579 "PositionLimitUpper",
583 std::string statusstring = {};
584 statusstring.reserve(256);
586 for (uint8_t i = 0; i < eOmc_motorFaultState_numberof; i++)
589 if(embot::core::binary::bit::check(motorstatus.bitmask, i))
591 statusstring.append(
static_cast<const char*
>(s_motor_fault_status.at(i).data()));
592 statusstring.append(
" ");
609 case eoerror_value_MC_motor_external_fault:
610 case eoerror_value_MC_motor_qencoder_phase_disappeared:
616 case eoerror_value_MC_motor_overcurrent:
617 case eoerror_value_MC_motor_i2t_limit:
618 case eoerror_value_MC_motor_hallsensors:
619 case eoerror_value_MC_motor_can_invalid_prot:
620 case eoerror_value_MC_motor_can_generic:
621 case eoerror_value_MC_motor_can_no_answer:
622 case eoerror_value_MC_axis_torque_sens:
623 case eoerror_value_MC_joint_hard_limit:
632 case eoerror_value_MC_aea_abs_enc_invalid:
633 case eoerror_value_MC_aea_abs_enc_spikes:
634 case eoerror_value_MC_aea_abs_enc_timeout:
640 snprintf(str,
sizeof(str),
" %s (Joint=%s (NIB=%d), encoderPort=%d)",
647 case eoerror_value_MC_motor_qencoder_dirty:
648 case eoerror_value_MC_motor_qencoder_phase:
654 snprintf(str,
sizeof(str),
" %s (Joint=%s (NIB=%d), Raw_quad_encoder_value=%d)",
660 case eoerror_value_MC_generic_error:
662 eOmc_motorFaultState_t motor_status;
666 std::string motorStatusString = motorStatusBitsToString(motor_status);
667 snprintf(str,
sizeof(str),
" %s (Joint=%s (NIB=%d) (Errors:%s)",
673 case eoerror_value_MC_motor_wrong_state:
682 snprintf(str,
sizeof(str),
" %s Joint=%s (NIB=%d). The requested state is %d, but the current is %d)",
688 case eoerror_value_MC_motor_overheating:
695 snprintf(str,
sizeof(str),
" %s (Joint=%s (NIB=%d), Raw_temperature_value=%d)",
701 case EOERROR_VALUE_DUMMY:
739 case eoerror_value_SK_unspecified:
740 case eoerror_value_SK_obsoletecommand:
745 case eoerror_value_SK_arrayofcandataoverflow:
751 snprintf(str,
sizeof(str),
" %s. Frame.ID=%d, Frame.Size=%d Frame.Data=0x%lx",
757 case eoerror_value_SK_onoroff:
759 std::string emsboardstate =
"unknown";
762 case 0: emsboardstate =
"OFF";
break;
763 case 1: emsboardstate =
"ON";
break;
770 case eoerror_value_SK_unexpecteddata:
772 std::string emsboardstate =
"unknown";
775 case 0: emsboardstate =
"CFG";
break;
776 case 1: emsboardstate =
"RUN";
break;
783 case EOERROR_VALUE_DUMMY:
813 case eoerror_value_HW_strain_saturation:
817 uint32_t upper_saturation_counts = (
m_dnginfo.
param64 & 0xffffffff00000000)>>32;
818 snprintf(str,
sizeof(str),
" %s %d is the channel involved. In the last second, the lower saturation counts is %d and the upper one is %d",
821 lower_saturation_counts,
822 upper_saturation_counts);
826 case eoerror_value_HW_encoder_invalid_value:
827 case eoerror_value_HW_encoder_close_to_limits:
828 case eoerror_value_HW_encoder_crc:
829 case eoerror_value_HW_encoder_not_connected:
835 case EOERROR_VALUE_DUMMY:
861 void SysParser::canMask2canBoardsStr(uint16_t canmask,
diagstr canboardsstr)
863 for(
int i=1; i<15; i++)
866 if ( (canmask & (1<<i)) == (1<<i))
869 strcat(canboardsstr, tmpstr);
874 void SysParser::getCanMonitorInfo(eOmn_serv_category_t &serv_category,
diagstr boardsOnCan1,
diagstr boardsOnCan2)
880 canMask2canBoardsStr(boardsMaskCan1, boardsOnCan1);
881 canMask2canBoardsStr(boardsMaskCan2, boardsOnCan2);
885 void SysParser::getCanMonitorInfoWithTime(eOmn_serv_category_t &serv_category,
diagstr boardsOnCan1,
diagstr boardsOnCan2, uint32_t &
time)
887 getCanMonitorInfo(serv_category, boardsOnCan1, boardsOnCan2);
901 case eoerror_value_SYS_runninghappily:
903 std::string appstate =
"unknown";
906 case 0: appstate=
"just restarted";
break;
907 case 1: appstate=
"idle";
break;
908 case 2: appstate=
"running";
break;
910 snprintf(str,
sizeof(str),
" %s Application state is %s.",
m_dnginfo.
baseMessage.c_str(), appstate.c_str());
914 case eoerror_value_SYS_ctrloop_execoverflowRX:
924 snprintf(str,
sizeof(str),
" %s RX execution time %d[usec]. Latest previous execution times[usec] (..., Tx=%d);(RX=%d, DO=%d, TX=%d);",
929 case eoerror_value_SYS_ctrloop_execoverflowDO:
938 snprintf(str,
sizeof(str),
" %s DO execution time %d[usec]. Latest previous execution times[usec] (..., Tx=%s);(RX=%d, DO=%d, TX=%d); (Rx=%d, ...);",
943 case eoerror_value_SYS_ctrloop_execoverflowTX:
953 snprintf(str,
sizeof(str),
" %s TX execution time %d[usec]. Latest previous execution times[usec] (RX=%s, DO=%s, TX=%d); (Rx=%d, DO=%d, ...). Num of CAN frames[CAN1,CAN2]=[%u %u]",
958 case eoerror_value_SYS_ropparsingerror:
964 case eoerror_value_SYS_halerror:
970 case eoerror_value_SYS_osalerror:
976 case eoerror_value_SYS_ipalerror:
982 case eoerror_value_SYS_dispatcherfifooverflow:
988 case eoerror_value_SYS_canservices_txfifooverflow:
990 snprintf(str,
sizeof(str),
" %s CanPort=%s Frame.ID=%d, Frame.Size=%d Frame.Data=0x%lx",
995 case eoerror_value_SYS_canservices_txbusfailure:
1001 case eoerror_value_SYS_canservices_formingfailure:
1007 case eoerror_value_SYS_canservices_parsingfailure:
1013 case eoerror_value_SYS_canservices_genericerror:
1020 case eoerror_value_SYS_ctrloop_rxphaseaverage:
1027 case eoerror_value_SYS_ctrloop_dophaseaverage:
1034 case eoerror_value_SYS_ctrloop_txphaseaverage:
1041 case eoerror_value_SYS_ctrloop_rxphasemax:
1048 case eoerror_value_SYS_ctrloop_dophasemax:
1054 case eoerror_value_SYS_ctrloop_txphasemax:
1061 case eoerror_value_SYS_ctrloop_rxphasemin:
1068 case eoerror_value_SYS_ctrloop_dophasemin:
1075 case eoerror_value_SYS_ctrloop_txphasemin:
1082 case eoerror_value_SYS_proxy_forward_fails:
1084 snprintf(str,
sizeof(str),
" %s. ROP.sign=%d, ROP.id=%d. Proxy list capacity is %d, size is %d ",
1093 case eoerror_value_SYS_proxy_ropdes_notfound:
1100 case eoerror_value_SYS_canservices_canprint:
1106 case eoerror_value_SYS_canservices_rxmaisbug:
1112 case eoerror_value_SYS_canservices_rxfromwrongboard:
1118 case eoerror_value_SYS_transceiver_rxseqnumber_error:
1125 case eoerror_value_SYS_transceiver_rxseqnumber_restarted:
1131 case eoerror_value_SYS_canservices_board_detected:
1172 snprintf(str,
sizeof(str),
" %s on CAN port=%s with address %d. Fw ver is %d.%d.%d. Proto ver is %d.%d",
1174 fw_build, fw_major, fw_minor, proto_major, proto_minor );
1178 case eoerror_value_SYS_canservices_board_wrongprotversion:
1207 snprintf(str,
sizeof(str),
" %s on CAN port=%s with address %d. Fw ver is %d.%d.%d. Proto ver is %d.%d. Required Version is %d.%d",
1209 fw_build, fw_major, fw_minor, proto_major, proto_minor, req_proto_major, req_proto_minor );
1213 case eoerror_value_SYS_canservices_board_notfound:
1215 eObrd_type_t general_brd_type = eoboards_cantype2type((eObrd_cantype_t)
m_dnginfo.
param16);
1216 snprintf(str,
sizeof(str),
" %s The board is on CAN port=%s with address %d. Board type is %s.",
1223 case eoerror_value_SYS_canservices_boards_lostcontact:
1225 eOmn_serv_category_t serv_category;
1228 getCanMonitorInfo(serv_category, lostCanBoards1, lostCanBoards2);
1230 snprintf(str,
sizeof(str),
"%s Type of service category is %s. Lost can boards on (can1map, can2map) = ([ %s ], [ %s ] ).",
1232 eomn_servicecategory2string(serv_category),
1233 lostCanBoards1, lostCanBoards2
1240 case eoerror_value_SYS_canservices_boards_retrievedcontact:
1242 eOmn_serv_category_t serv_category;
1243 diagstr retrievedCanBoards1 = {0};
1244 diagstr retrievedCanBoards2 = {0};
1245 getCanMonitorInfo(serv_category, retrievedCanBoards1, retrievedCanBoards2);
1247 snprintf(str,
sizeof(str),
"%s Type of service category is %s. Retrieved can boards on (can1map, can2map) = ([ %s ], [ %s ] ).",
1249 eomn_servicecategory2string(serv_category),
1250 retrievedCanBoards1, retrievedCanBoards2
1257 case eoerror_value_SYS_canservices_monitor_regularcontact:
1259 eOmn_serv_category_t serv_category;
1260 diagstr foundCanBoards1 = {0};
1261 diagstr foundCanBoards2 = {0};
1262 getCanMonitorInfo(serv_category, foundCanBoards1, foundCanBoards2);
1264 snprintf(str,
sizeof(str),
"%s Type of service category is %s. CAN boards are on (can1map, can2map) = ([ %s ], [ %s ])",
1266 eomn_servicecategory2string(serv_category),
1273 case eoerror_value_SYS_canservices_monitor_lostcontact:
1275 eOmn_serv_category_t serv_category;
1278 getCanMonitorInfo(serv_category, lostCanBoards1, lostCanBoards2);
1280 snprintf(str,
sizeof(str),
"%s Type of service category is %s. Lost CAN boards are on (can1map, can2map) = ([ %s ], [ %s ]).",
1282 eomn_servicecategory2string(serv_category),
1289 case eoerror_value_SYS_canservices_monitor_retrievedcontact:
1291 eOmn_serv_category_t serv_category;
1292 uint32_t totRetrvTime;
1293 diagstr retrievedCanBoards1 = {0};
1294 diagstr retrievedCanBoards2 = {0};
1295 getCanMonitorInfoWithTime(serv_category, retrievedCanBoards1, retrievedCanBoards2, totRetrvTime);
1298 snprintf(str,
sizeof(str),
"%s Type of service category is %s. CAN boards are on (can1map, can2map) = ([ %s ], [ %s ]). Total retrieving time: %d [ms]",
1300 eomn_servicecategory2string(serv_category),
1301 retrievedCanBoards1,
1302 retrievedCanBoards2,
1309 case eoerror_value_SYS_canservices_monitor_stillnocontact:
1311 eOmn_serv_category_t serv_category;
1312 uint32_t totDisappTime;
1315 getCanMonitorInfoWithTime(serv_category, lostCanBoards1, lostCanBoards2, totDisappTime);
1317 snprintf(str,
sizeof(str),
"%s Type of service category is %s. Lost CAN boards are on (can1map, can2map) = ([ %s ] , [ %s ]). Total disappearance time: %d [ms]",
1319 eomn_servicecategory2string(serv_category),
1328 case eoerror_value_SYS_unspecified:
1329 case eoerror_value_SYS_tobedecided:
1330 case eoerror_value_SYS_memory_zerorequested:
1331 case eoerror_value_SYS_memory_notinitialised:
1332 case eoerror_value_SYS_memory_missing:
1333 case eoerror_value_SYS_mutex_timeout:
1334 case eoerror_value_SYS_wrongparam:
1335 case eoerror_value_SYS_wrongusage:
1336 case eoerror_value_SYS_runtimeerror:
1337 case eoerror_value_SYS_runninginfatalerrorstate:
1338 case eoerror_value_SYS_udptxfailure:
1339 case eoerror_value_SYS_configurator_udptxfailure:
1340 case eoerror_value_SYS_runner_udptxfailure:
1341 case eoerror_value_SYS_runner_transceivererror:
1342 case eoerror_value_SYS_canservices_rxfifooverflow:
1343 case eoerror_value_SYS_proxy_forward_ok:
1344 case eoerror_value_SYS_proxy_forward_callback_fails:
1345 case eoerror_value_SYS_proxy_reply_ok:
1346 case eoerror_value_SYS_proxy_reply_fails:
1347 case eoerror_value_SYS_canservices_boards_missing:
1348 case eoerror_value_SYS_canservices_boards_searched:
1349 case eoerror_value_SYS_canservices_boards_found:
1350 case eoerror_value_SYS_transceiver_rxinvalidframe_error:
1356 case EOERROR_VALUE_DUMMY:
1390 char str[512] = {0};
1397 case eoerror_value_ETHMON_link_goes_up:
1398 case eoerror_value_ETHMON_link_goes_down:
1399 case eoerror_value_ETHMON_error_rxcrc:
1401 std::string appstate =
"unknown";
1404 case 0: appstate=
"N/A";
break;
1405 case 1: appstate=
"idle";
break;
1406 case 3: appstate=
"running";
break;
1409 std::string ethport =
"unknown";
1412 case 0: ethport=
"ETH input (P2/P13/J4)";
break;
1413 case 1: ethport=
"ETH output (P3/P12/J5)";
break;
1414 case 2: ethport=
"internal";
break;
1416 if(eoerror_value_ETHMON_error_rxcrc == value)
1417 snprintf(str,
sizeof(str),
" %s in port %s. Application state is %s. Number of erros is %ld",
1420 snprintf(str,
sizeof(str),
" %s in port %s. Application state is %s.",
m_dnginfo.
baseMessage.c_str(), ethport.c_str(), appstate.c_str());
1425 case eoerror_value_ETHMON_txseqnumbermissing:
1432 case eoerror_value_ETHMON_juststarted:
1433 case eoerror_value_ETHMON_justverified:
1439 case EOERROR_VALUE_DUMMY:
1464 char str[512] = {0};
1471 case eoerror_value_IS_arrayofinertialdataoverflow:
1478 snprintf(str,
sizeof(str),
" %s. Frame.ID=%d, Frame.Size=%d Frame.Data=0x%lx",
1484 case eoerror_value_IS_unknownsensor:
1490 case EOERROR_VALUE_DUMMY:
1513 char str[512] = {0};
1520 case eoerror_value_AS_arrayoftemperaturedataoverflow:
1527 snprintf(str,
sizeof(str),
" %s. Frame.ID=%d, Frame.Size=%d Frame.Data=0x%lx",
1533 case eoerror_value_AS_unknownsensor:
1539 case EOERROR_VALUE_DUMMY:
uint8_t sourceCANBoardAddr
std::string sourceCANPortStr
std::string sourceBoardIpAddrStr
AnalogSensorParser()=delete
Diagnostic::EmbeddedInfo baseInfo
Diagnostic::LowLevel::EntityNameProvider & m_entityNameProvider
Diagnostic::LowLevel::AuxEmbeddedInfo & m_dnginfo
bool getAxisName(uint32_t entityId, std::string &axisName)
EthMonitorParser()=delete
InertialSensorParser()=delete
MotionControlParser()=delete