68 eOerror_value_t value = eoerror_code2value(
m_dnginfo.errorCode);
75 case eoerror_value_CFG_candiscovery_started:
78 eObrd_type_t brdnum =
static_cast<eObrd_type_t
>((
m_dnginfo.param64 & 0x0000ff0000000000) >> 40);
79 const char *canboardname = eoboards_type2string(brdnum);
80 uint16_t maskcan1 = (
m_dnginfo.param64 & 0xffff000000000000) >> 48;
81 eObrd_protocolversion_t prot = {0};
82 eObrd_firmwareversion_t appl = {0};
83 uint64_t reqpr = (
m_dnginfo.param64 & 0x000000ffff000000) >> 24;
84 uint64_t reqfw = (
m_dnginfo.param64 & 0x0000000000ffffff);
86 prot.major = reqpr >> 8;
87 prot.minor = reqpr & 0xff;
88 appl.major = (reqfw >> 16) & 0xff;
89 appl.minor = (reqfw >> 8) & 0xff;
90 appl.build = reqfw & 0xff;
91 num = eo_common_hlfword_bitsetcount(maskcan1)+eo_common_hlfword_bitsetcount(maskcan2);
93 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.",
97 prot.major, prot.minor,
98 appl.major, appl.minor, appl.build
100 m_dnginfo.baseInfo.finalMessage.append(str);
103 case eoerror_value_CFG_candiscovery_ok:
105 uint8_t num =
m_dnginfo.param16 & 0x00ff;
106 eObool_t fakesearch = (0x0000 == (
m_dnginfo.param16 & 0xf000)) ? (eobool_false) : (eobool_true);
107 uint64_t brdnum = (
m_dnginfo.param64 & 0x0000ff0000000000) >> 40;
108 const char *canboardname = eoboards_type2string(
static_cast<eObrd_type_t
>(brdnum));
109 uint64_t searchtime = (
m_dnginfo.param64 & 0xffff000000000000) >> 48;
110 eObrd_protocolversion_t prot = {0};
111 eObrd_firmwareversion_t appl = {0};
112 uint64_t reqpr = (
m_dnginfo.param64 & 0x000000ffff000000) >> 24;
113 uint64_t reqfw = (
m_dnginfo.param64 & 0x0000000000ffffff);
114 char strOK[80] =
"OK";
116 prot.major = reqpr >> 8;
117 prot.minor = reqpr & 0xff;
118 appl.major = (reqfw >> 16) & 0xff;
119 appl.minor = (reqfw >> 8) & 0xff;
120 appl.build = reqfw & 0xff;
123 if(eobool_true == fakesearch)
125 snprintf(strOK,
sizeof(strOK),
"OK but FAKE (without any control on CAN w/ get-fw-version<> message)");
128 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",
132 prot.major, prot.minor,
133 appl.major, appl.minor, appl.build,
136 m_dnginfo.baseInfo.finalMessage.append(str);
139 case eoerror_value_CFG_candiscovery_detectedboard:
141 uint64_t brdnum = (
m_dnginfo.param64 & 0x0000ff0000000000) >> 40;
142 const char *canboardname = eoboards_type2string(
static_cast<eObrd_type_t
>(brdnum));
143 uint64_t searchtime = (
m_dnginfo.param64 & 0xffff000000000000) >> 48;
144 eObrd_protocolversion_t prot = {0};
145 eObrd_firmwareversion_t appl = {0};
146 uint64_t reqpr = (
m_dnginfo.param64 & 0x000000ffff000000) >> 24;
147 uint64_t reqfw = (
m_dnginfo.param64 & 0x0000000000ffffff);
149 prot.major = reqpr >> 8;
150 prot.minor = reqpr & 0xff;
151 appl.major = (reqfw >> 16) & 0xff;
152 appl.minor = (reqfw >> 8) & 0xff;
153 appl.build = reqfw & 0xff;
157 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",
160 m_dnginfo.baseInfo.sourceCANPortStr.c_str(), address,
161 prot.major, prot.minor,
162 appl.major, appl.minor, appl.build,
165 m_dnginfo.baseInfo.finalMessage.append(str);
168 case eoerror_value_CFG_candiscovery_boardsmissing:
170 uint8_t numofmissing =
m_dnginfo.param16 & 0x00ff;
171 const char *canboardname = eoboards_type2string(
static_cast<eObrd_type_t
>((
m_dnginfo.param16 >> 8)));
172 uint64_t searchtime = (
m_dnginfo.param64 & 0xffff000000000000) >> 48;
173 uint16_t maskofmissing =
m_dnginfo.param64 & 0x000000000000ffff;
178 snprintf(str,
sizeof(str),
"%s %d missing %s boards for %d ms in %s:",
183 m_dnginfo.baseInfo.sourceCANPortStr.c_str()
185 m_dnginfo.baseInfo.finalMessage.append(str);
188 if(eobool_true == eo_common_hlfword_bitcheck(maskofmissing, i))
190 snprintf(str,
sizeof(str),
"%d of %d: missing %s BOARD %s:%s:%d",
191 n, numofmissing, canboardname,
192 m_dnginfo.baseInfo.sourceBoardIpAddrStr.c_str(),
m_dnginfo.baseInfo.sourceCANPortStr.c_str(), i
194 m_dnginfo.baseInfo.finalMessage.append(str);
202 case eoerror_value_CFG_candiscovery_boardsinvalid:
204 uint8_t numofinvalid =
m_dnginfo.param16 & 0x00ff;
205 const char *canboardname = eoboards_type2string(
static_cast<eObrd_type_t
>(
m_dnginfo.param16 >> 8));
206 uint64_t invalidmask =
m_dnginfo.param64;
209 const char *empty =
"";
210 const char *wrongtype =
"WRONG BOARD TYPE";
211 const char *wrongprot =
"WRONG PROTOCOL VERSION";
212 const char *wrongappl =
"WRONG APPLICATION VERSION";
214 snprintf(str,
sizeof(str),
"%s %d invalid %s boards in %s:\n",
218 m_dnginfo.baseInfo.sourceCANPortStr.c_str()
220 m_dnginfo.baseInfo.finalMessage.append(str);
222 for(
int i=1; i<15; i++)
224 uint64_t val = (invalidmask >> (4*i)) & 0x0f;
227 snprintf(str,
sizeof(str),
"\t %d of %d: wrong %s because it has: %s%s%s \n",
228 n, numofinvalid, canboardname,
229 ((val & 0x1) == 0x1) ? (wrongtype) : (empty),
230 ((val & 0x2) == 0x2) ? (wrongappl) : (empty),
231 ((val & 0x4) == 0x4) ? (wrongprot) : (empty)
234 m_dnginfo.baseInfo.finalMessage.append(str);
242 case eoerror_value_CFG_skin_ok:
244 uint16_t maskcan1 = (
m_dnginfo.param64 & 0x0000ffff00000000) >> 32;
245 uint16_t maskcan2 = (
m_dnginfo.param64 & 0xffff000000000000) >> 48;
246 eObrd_protocolversion_t prot = {0};
247 eObrd_firmwareversion_t appl = {0};
248 uint64_t reqpr = (
m_dnginfo.param64 & 0x00000000ffff0000) >> 16;
249 uint64_t reqfw = (
m_dnginfo.param64 & 0x000000000000ffff);
250 prot.major = reqpr >> 8;
251 prot.minor = reqpr & 0xff;
252 appl.major = (reqfw >> 8) & 0xff;
253 appl.minor = reqfw & 0xff;
254 uint16_t numOfpatches =
m_dnginfo.param16;
256 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",
260 prot.major, prot.minor,
261 appl.major, appl.minor
263 m_dnginfo.baseInfo.finalMessage.append(str);
266 case eoerror_value_CFG_skin_failed_toomanyboards:
267 case eoerror_value_CFG_inertials3_failed_toomanyboards:
268 case eoerror_value_CFG_temperatures_failed_toomanyboards:
270 uint8_t numOfReqBoards = (
m_dnginfo.param16 & 0xff00) >> 8;
271 uint8_t numOfMaxBoards =
m_dnginfo.param16 & 0x00ff;
273 uint16_t maskcan1 = (
m_dnginfo.param64 & 0x000000000000ffff);
274 uint16_t maskcan2 = (
m_dnginfo.param64 & 0x00000000ffff0000) >> 16;
276 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)",
278 numOfReqBoards, numOfMaxBoards,
281 m_dnginfo.baseInfo.finalMessage.append(str);
284 case eoerror_value_CFG_skin_failed_candiscovery:
285 case eoerror_value_CFG_inertials3_failed_candiscovery:
286 case eoerror_value_CFG_temperatures_failed_candiscovery:
288 uint16_t incompMaskcan2 = (
m_dnginfo.param64 & 0xffff000000000000) >> 48;
289 uint16_t incompMaskcan1 = (
m_dnginfo.param64 & 0x0000ffff00000000) >> 32;
290 uint16_t missMaskcan2 = (
m_dnginfo.param64 & 0x00000000ffff0000) >> 16;
291 uint16_t missMaskcan1 = (
m_dnginfo.param64 & 0x000000000000ffff);
292 uint16_t numOfPatches =
m_dnginfo.param16;
294 if (eoerror_value_CFG_skin_failed_candiscovery == value)
296 snprintf(str,
sizeof(str),
"%s for %d skin patches. ",
m_dnginfo.baseMessage.c_str(), numOfPatches);
297 m_dnginfo.baseInfo.finalMessage.append(str);
301 snprintf(str,
sizeof(str),
"%s. ",
m_dnginfo.baseMessage.c_str());
302 m_dnginfo.baseInfo.finalMessage.append(str);
305 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)",
306 missMaskcan1, missMaskcan2,
307 incompMaskcan1, incompMaskcan2
310 m_dnginfo.baseInfo.finalMessage.append(str);
313 case eoerror_value_CFG_strain_ok:
314 case eoerror_value_CFG_strain_failed_candiscovery:
316 eObrd_protocolversion_t prot = {0};
317 eObrd_firmwareversion_t appl = {0};
318 uint64_t reqpr = (
m_dnginfo.param64 & 0x00000000ffff0000) >> 16;
319 uint64_t reqfw = (
m_dnginfo.param64 & 0x000000000000ffff);
320 prot.major = reqpr >> 8;
321 prot.minor = reqpr & 0xff;
322 appl.major = (reqfw >> 8) & 0xff;
323 appl.minor = reqfw & 0xff;
325 uint8_t address =
m_dnginfo.param16 & 0x00ff;
328 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",
331 prot.major, prot.minor,
332 appl.major, appl.minor,
335 m_dnginfo.baseInfo.finalMessage.append(str);
338 case eoerror_value_CFG_mais_ok:
339 case eoerror_value_CFG_mais_failed_candiscovery:
340 case eoerror_value_CFG_psc_ok:
341 case eoerror_value_CFG_psc_failed_candiscovery:
342 case eoerror_value_CFG_pos_ok:
343 case eoerror_value_CFG_pos_failed_candiscovery:
345 eObrd_protocolversion_t prot = {0};
346 eObrd_firmwareversion_t appl = {0};
347 uint64_t reqpr = (
m_dnginfo.param64 & 0x00000000ffff0000) >> 16;
348 uint64_t reqfw = (
m_dnginfo.param64 & 0x000000000000ffff);
349 prot.major = reqpr >> 8;
350 prot.minor = reqpr & 0xff;
351 appl.major = (reqfw >> 8) & 0xff;
352 appl.minor = reqfw & 0xff;
353 uint8_t address =
m_dnginfo.param16 & 0x00ff;
356 snprintf(str,
sizeof(str),
"%s on board at addr: %d and port:%d with can protocol ver %d.%d and application ver %d.%d.",
360 prot.major, prot.minor,
361 appl.major, appl.minor
363 m_dnginfo.baseInfo.finalMessage.append(str);
366 case eoerror_value_CFG_mais_failed_verify_because_active:
367 case eoerror_value_CFG_mc_foc_ok:
368 case eoerror_value_CFG_mc_foc_failed_candiscovery_of_foc:
369 case eoerror_value_CFG_mc_foc_failed_encoders_verify:
370 case eoerror_value_CFG_mc_mc4_ok:
371 case eoerror_value_CFG_mc_mc4_failed_candiscovery_of_mc4:
372 case eoerror_value_CFG_mc_mc4_failed_mais_verify:
373 case eoerror_value_CFG_mc_mc4plus_ok:
374 case eoerror_value_CFG_mc_mc4plus_failed_encoders_verify:
375 case eoerror_value_CFG_comm_cannotloadaregularrop:
376 case eoerror_value_CFG_mc_mc4plusmais_ok:
377 case eoerror_value_CFG_mc_mc4plusmais_failed_encoders_verify:
378 case eoerror_value_CFG_mc_mc4plusmais_failed_candiscovery_of_mais:
379 case eoerror_value_CFG_services_not_verified_yet:
380 case eoerror_value_CFG_mc_not_verified_yet:
381 case eoerror_value_CFG_strain_not_verified_yet:
382 case eoerror_value_CFG_mais_not_verified_yet:
383 case eoerror_value_CFG_skin_not_verified_yet:
384 case eoerror_value_CFG_inertials3_not_verified_yet:
385 case eoerror_value_CFG_encoders_not_verified_yet:
386 case eoerror_value_CFG_mc_using_onboard_config:
387 case eoerror_value_CFG_strain_using_onboard_config:
388 case eoerror_value_CFG_mais_using_onboard_config:
389 case eoerror_value_CFG_inertials3_using_onboard_config:
390 case eoerror_value_CFG_skin_using_onboard_config:
391 case eoerror_value_CFG_inertials3_ok:
392 case eoerror_value_CFG_temperatures_not_verified_yet:
393 case eoerror_value_CFG_temperatures_ok:
394 case eoerror_value_CFG_temperatures_using_onboard_config:
395 case eoerror_value_CFG_psc_failed_verify_because_active:
396 case eoerror_value_CFG_psc_not_verified_yet:
397 case eoerror_value_CFG_psc_using_onboard_config:
398 case eoerror_value_CFG_mc_mc2pluspsc_ok:
399 case eoerror_value_CFG_mc_mc2pluspsc_failed_encoders_verify:
400 case eoerror_value_CFG_mc_mc2pluspsc_failed_candiscovery_of_pscs:
401 case eoerror_value_CFG_inertials3_failed_notsupported:
402 case eoerror_value_CFG_temperatures_failed_notsupported:
403 case eoerror_value_CFG_mais_failed_notsupported:
404 case eoerror_value_CFG_strain_failed_notsupported:
405 case eoerror_value_CFG_skin_failed_notsupported:
406 case eoerror_value_CFG_psc_failed_notsupported:
407 case eoerror_value_CFG_mc_failed_notsupported:
408 case eoerror_value_CFG_encoders_failed_notsupported:
409 case eoerror_value_CFG_pos_not_verified_yet:
410 case eoerror_value_CFG_pos_using_onboard_config:
411 case eoerror_value_CFG_pos_failed_notsupported:
412 case eoerror_value_CFG_mc_mc4plusfaps_ok:
413 case eoerror_value_CFG_mc_mc4plusfaps_failed_encoders_verify:
414 case eoerror_value_CFG_mc_mc4plusfaps_failed_candiscovery:
415 case eoerror_value_CFG_mc_mc4pluspmc_ok:
416 case eoerror_value_CFG_mc_mc4pluspmc_failed_encoders_verify:
417 case eoerror_value_CFG_mc_mc4pluspmc_failed_candiscovery_of_pmc:
418 case eoerror_value_CFG_ft_ok:
419 case eoerror_value_CFG_ft_failed_candiscovery:
420 case eoerror_value_CFG_ft_not_verified_yet:
421 case eoerror_value_CFG_ft_using_onboard_config:
422 case eoerror_value_CFG_ft_failed_notsupported:
423 case eoerror_value_CFG_ft_failed_fullscales:
424 case eoerror_value_CFG_bat_ok:
425 case eoerror_value_CFG_bat_failed_candiscovery:
426 case eoerror_value_CFG_bat_not_verified_yet:
427 case eoerror_value_CFG_bat_using_onboard_config:
428 case eoerror_value_CFG_bat_failed_notsupported:
429 case eoerror_value_CFG_mc_advfoc_ok:
430 case eoerror_value_CFG_mc_advfoc_failed_candiscovery:
431 case eoerror_value_CFG_mc_advfoc_failed_encoders_verify:
432 case eoerror_value_CFG_mc_advfoc_failed_ICCdiscovery:
438 case eoerror_value_CFG_encoders_ok:
439 case eoerror_value_CFG_encoders_failed_verify:
441 uint8_t numOfJoints = (
m_dnginfo.param16 & 0xf000) >> 12;
442 uint8_t failmaskenc1 =
m_dnginfo.param16 & 0x000f;
443 int16_t errorenc1 =
m_dnginfo.param64 & 0x0000ffff;
444 uint8_t failmaskenc2 = (
m_dnginfo.param16 & 0x00f0) >> 4;
445 int16_t errorenc2 = (
m_dnginfo.param64 & 0xffff0000) >> 16;
447 int16_t rawerror1 = errorenc1 & failmaskenc1;
448 int16_t rawerror2 = errorenc2 & failmaskenc2;
449 snprintf(str,
sizeof(str),
"%s",
m_dnginfo.baseMessage.c_str());
450 m_dnginfo.baseInfo.finalMessage.append(str);
452 for(
auto i=0; i < numOfJoints; i++)
455 auto primary_enc_with_error = (failmaskenc1 & (1<<i));
456 auto secondary_enc_with_error = (failmaskenc2 & (1<<i));
457 auto primary_error_code = 0;
458 auto secondary_error_code = 0;
459 if(primary_enc_with_error)
461 primary_error_code = (errorenc1 >> (4*i)) & 0xf;
463 snprintf(str,
sizeof(str),
" joint %d (%s) has error on primary encoder (code=%d). ",
464 i,
m_dnginfo.baseInfo.axisName.c_str(), primary_error_code);
465 m_dnginfo.baseInfo.finalMessage.append(str);
468 if(secondary_enc_with_error)
470 secondary_error_code = (errorenc2 >> (4*i)) & 0xf;
472 snprintf(str,
sizeof(str),
" joint %d (%s) has error on secodary encoder (code=%d)",
473 i,
m_dnginfo.baseInfo.axisName.c_str(), secondary_error_code);
474 m_dnginfo.baseInfo.finalMessage.append(str);
482 case eoerror_value_CFG_inertials3_failed_unsupportedsensor:
486 snprintf(str,
sizeof(str),
"%s. Number of unsupported sens is %d",
490 m_dnginfo.baseInfo.finalMessage.append(str);
493 case eoerror_value_CFG_inertials3_changed_requestedrate:
494 case eoerror_value_CFG_temperatures_changed_requestedrate:
495 case eoerror_value_CFG_psc_changed_requestedrate:
496 case eoerror_value_CFG_pos_changed_requestedrate:
498 uint8_t reqrate = (
m_dnginfo.param16 & 0xff00) >> 8;
499 uint8_t assrate =
m_dnginfo.param16 & 0x00ff;
501 snprintf(str,
sizeof(str),
"%s. Requested rate %u and Assigned rate %u",
506 m_dnginfo.baseInfo.finalMessage.append(str);
509 case eoerror_value_CFG_inertials3_failed_generic:
510 case eoerror_value_CFG_temperatures_failed_generic:
514 snprintf(str,
sizeof(str),
"%s for %d sensors",
518 m_dnginfo.baseInfo.finalMessage.append(str);
521 case eoerror_value_CFG_mc_advfoc_ICCdiscovery_result:
523 const char *wrongtype =
" WRONG ONBOARD BOARD TYPE";
524 const char *wrongappl =
" WRONG APPLICATION VERSION";
525 const char *wrongprot =
" WRONG PROTOCOL VERSION";
526 const char *empty =
"";
528 uint8_t NoResponse = 0x10;
529 uint8_t WrongType = 0x01;
530 uint8_t WrongApp = 0x02;
531 uint8_t WrongProtocol = 0x04;
532 uint8_t WrongChannel = 0x08;
535 constexpr uint64_t MASK_FW_BUILD = 0x00000000000000FF;
536 constexpr uint64_t MASK_FW_MINOR = 0x000000000000FF00;
537 constexpr uint64_t MASK_FW_MAJOR = 0x0000000000FF0000;
538 constexpr uint64_t MASK_PROTO_MINOR = 0x00000000FF000000;
539 constexpr uint64_t MASK_PROTO_MAJOR = 0x000000FF00000000;
540 constexpr uint64_t MASK_BOARD_TYPE = 0x0000FF0000000000;
541 constexpr uint64_t MASK_ADDRESS = 0x00FF000000000000;
542 constexpr uint64_t MASK_BUS = 0xFF00000000000000;
544 constexpr uint8_t SHIFT_FW_BUILD = 0;
545 constexpr uint8_t SHIFT_FW_MINOR = 8;
546 constexpr uint8_t SHIFT_FW_MAJOR = 16;
547 constexpr uint8_t SHIFT_PROTO_MINOR = 24;
548 constexpr uint8_t SHIFT_PROTO_MAJOR = 32;
549 constexpr uint8_t SHIFT_BOARD_TYPE = 40;
550 constexpr uint8_t SHIFT_ADDRESS = 48;
551 constexpr uint8_t SHIFT_BUS = 56;
554 uint8_t fw_build = (
m_dnginfo.param64 & MASK_FW_BUILD) >> SHIFT_FW_BUILD;
555 uint8_t fw_minor = (
m_dnginfo.param64 & MASK_FW_MINOR) >> SHIFT_FW_MINOR;
556 uint8_t fw_major = (
m_dnginfo.param64 & MASK_FW_MAJOR) >> SHIFT_FW_MAJOR;
557 uint8_t proto_minor = (
m_dnginfo.param64 & MASK_PROTO_MINOR) >> SHIFT_PROTO_MINOR;
558 uint8_t proto_major = (
m_dnginfo.param64 & MASK_PROTO_MAJOR) >> SHIFT_PROTO_MAJOR;
559 uint8_t board_type = (
m_dnginfo.param64 & MASK_BOARD_TYPE) >> SHIFT_BOARD_TYPE;
560 uint8_t address = (
m_dnginfo.param64 & MASK_ADDRESS) >> SHIFT_ADDRESS;
561 uint8_t bus = (
m_dnginfo.param64 & MASK_BUS) >> SHIFT_BUS;
563 uint16_t invalidmask =
m_dnginfo.param16;
564 eOlocation_t location = { bus, 0, address};
565 char location_str[64];
567 parser.
convert(location, &location_str[0],
sizeof(location_str));
568 eObrd_type_t general_brd_type = eoboards_cantype2type(
static_cast<eObrd_cantype_t
>(board_type));
569 std::string board_type_str = eoboards_type2string(general_brd_type);
570 uint16_t val = invalidmask & 0x0ff;
573 if((val & NoResponse) == NoResponse)
575 snprintf(str,
sizeof(str),
"%serror, the application on the other core does not respond.",
578 m_dnginfo.baseInfo.finalMessage.append(str);
580 else if((val & WrongChannel) == WrongChannel)
582 snprintf(str,
sizeof(str),
"%serror, wrong port selected.",
585 m_dnginfo.baseInfo.finalMessage.append(str);
589 snprintf(str,
sizeof(str),
"error on ICCdiscovery because it has:%s%s%s. ",
590 ((val & WrongType) == WrongType) ? (wrongtype) : (empty),
591 ((val & WrongApp) == WrongApp) ? (wrongappl) : (empty),
592 ((val & WrongProtocol) == WrongProtocol) ? (wrongprot) : (empty)
594 m_dnginfo.baseInfo.finalMessage.append(str);
596 snprintf(str,
sizeof(str),
"Found on other core: %s FW ver is %d.%d.%d. Protocol ver is %d.%d Port: %s. \n",
597 board_type_str.c_str(),
598 fw_major, fw_minor, fw_build, proto_major, proto_minor, location_str
600 m_dnginfo.baseInfo.finalMessage.append(str);
605 snprintf(str,
sizeof(str),
"%s ICCdiscovery successful. Found on other core: %s FW ver is %d.%d.%d. Protocol ver is %d.%d Port: %s. \n",
606 m_dnginfo.baseMessage.c_str(), board_type_str.c_str(),
607 fw_major, fw_minor, fw_build, proto_major, proto_minor, location_str
610 m_dnginfo.baseInfo.finalMessage.append(str);
615 case EOERROR_VALUE_DUMMY:
617 m_dnginfo.baseInfo.finalMessage.append(
": unrecognised eoerror_category_Config error value.");
709 eOerror_value_t value = eoerror_code2value(
m_dnginfo.errorCode);
715 case eoerror_value_MC_motor_external_fault:
716 case eoerror_value_MC_motor_qencoder_phase_disappeared:
718 snprintf(str,
sizeof(str),
" %s",
m_dnginfo.baseMessage.c_str());
719 m_dnginfo.baseInfo.finalMessage.append(str);
722 case eoerror_value_MC_motor_overcurrent:
723 case eoerror_value_MC_motor_i2t_limit:
724 case eoerror_value_MC_motor_hallsensors:
725 case eoerror_value_MC_motor_can_invalid_prot:
726 case eoerror_value_MC_motor_can_generic:
727 case eoerror_value_MC_motor_can_no_answer:
728 case eoerror_value_MC_axis_torque_sens:
729 case eoerror_value_MC_joint_hard_limit:
731 uint8_t joint_num =
m_dnginfo.param16 & 0x00ff;
734 snprintf(str,
sizeof(str),
" %s (Joint=%s (NIB=%d))",
m_dnginfo.baseMessage.c_str(),
m_dnginfo.baseInfo.axisName.c_str(), joint_num);
735 m_dnginfo.baseInfo.finalMessage.append(str);
738 case eoerror_value_MC_abs_enc_invalid:
739 case eoerror_value_MC_abs_enc_spikes:
740 case eoerror_value_MC_abs_enc_timeout:
742 std::string encoderTypeName = {};
743 uint8_t joint_num =
m_dnginfo.param16 & 0x00ff;
744 uint8_t enc_port = (
m_dnginfo.param16 & 0xff00)>>8;
747 std::transform(encoderTypeName.begin(), encoderTypeName.end(), encoderTypeName.begin(), ::toupper);
749 snprintf(str,
sizeof(str),
" %s (Joint=%s (NIB=%d), encoderPort=%d, encoderType=%s)",
750 m_dnginfo.baseMessage.c_str(),
m_dnginfo.baseInfo.axisName.c_str(), joint_num, enc_port, encoderTypeName.c_str()
752 m_dnginfo.baseInfo.finalMessage.append(str);
757 case eoerror_value_MC_motor_qencoder_phase:
760 uint16_t enc_raw_value =
m_dnginfo.param64 & 0xffff;
763 snprintf(str,
sizeof(str),
" %s (Joint=%s (NIB=%d), Raw_quad_encoder_value=%d)",
764 m_dnginfo.baseMessage.c_str(),
m_dnginfo.baseInfo.axisName.c_str(), joint_num, enc_raw_value
766 m_dnginfo.baseInfo.finalMessage.append(str);
769 case eoerror_value_MC_motor_qencoder_dirty:
772 uint16_t dirty_error =
m_dnginfo.param64 & 0xffff;
773 uint16_t index_error = (
m_dnginfo.param64 & 0xffff0000)>>16;
774 uint16_t phase_error = (
m_dnginfo.param64 & 0xffff00000000)>>32;
777 snprintf(str,
sizeof(str),
" %s (Joint=%s (NIB=%d), index=%d, dirty=%d, phase=%d)",
778 m_dnginfo.baseMessage.c_str(),
m_dnginfo.baseInfo.axisName.c_str(), joint_num, index_error, dirty_error, phase_error
780 m_dnginfo.baseInfo.finalMessage.append(str);
783 case eoerror_value_MC_generic_error:
785 eOmc_motorFaultState_t motor_status;
787 motor_status.bitmask =
m_dnginfo.param64 & 0xffffffff;
789 std::string motorStatusString = motorStatusBitsToString(motor_status);
790 snprintf(str,
sizeof(str),
" %s (Joint=%s (NIB=%d) (Errors:%s)",
791 m_dnginfo.baseMessage.c_str(),
m_dnginfo.baseInfo.axisName.c_str(), joint_num, motorStatusString.c_str()
793 m_dnginfo.baseInfo.finalMessage.append(str);
796 case eoerror_value_MC_motor_wrong_state:
799 uint16_t req_state = (
m_dnginfo.param64 & 0xf0)>>4;
800 uint16_t cur_state =
m_dnginfo.param64 & 0x0f;
805 snprintf(str,
sizeof(str),
" %s Joint=%s (NIB=%d). The requested state is %d, but the current is %d)",
806 m_dnginfo.baseMessage.c_str(),
m_dnginfo.baseInfo.axisName.c_str(), joint_num, req_state, cur_state
808 m_dnginfo.baseInfo.finalMessage.append(str);
811 case eoerror_value_MC_motor_overheating:
814 int16_t temp_raw_value =
m_dnginfo.param64 & 0xffff;
818 snprintf(str,
sizeof(str),
" %s (Joint=%s (NIB=%d), Raw_temperature_value=%d)",
819 m_dnginfo.baseMessage.c_str(),
m_dnginfo.baseInfo.axisName.c_str(), joint_num, temp_raw_value
821 m_dnginfo.baseInfo.finalMessage.append(str);
824 case eoerror_value_MC_ref_setpoint_timeout:
827 int16_t timeout_type =
m_dnginfo.param64 & 0xff;
829 char* timeout_type_str = 0;
833 case eoerror_value_MC_ref_timeout_torque: timeout_type_str =
"TORQUE";
break;
834 case eoerror_value_MC_ref_timeout_current: timeout_type_str =
"CURRENT";
break;
835 case eoerror_value_MC_ref_timeout_pwm: timeout_type_str =
"PWM";
break;
836 default: timeout_type_str =
"UNKNOWN";
break;
841 snprintf(str,
sizeof(str),
" %s (Joint=%s (NIB=%d)). The board isn't receiving %s reference setpoint commands and has been faulted to prevent damage.",
842 m_dnginfo.baseMessage.c_str(),
m_dnginfo.baseInfo.axisName.c_str(), joint_num, timeout_type_str);
843 m_dnginfo.baseInfo.finalMessage.append(str);
846 case eoerror_value_MC_motor_tdb_not_reading:
852 snprintf(str,
sizeof(str),
" %s (Joint=%s (NIB=%d))",
854 m_dnginfo.baseInfo.finalMessage.append(str);
857 case eoerror_value_MC_joint_software_limit:
860 int8_t ref_controlmode =
m_dnginfo.param64 & 0x00ff;
861 int32_t position_feedback = (
m_dnginfo.param64 & 0xffffffff00000000) >> 32;
863 std::string ref_controlmode_str = {};
864 m_entityNameProvider.getEntityControlModeName(joint_num,
static_cast<eOenum08_t
>(ref_controlmode), ref_controlmode_str,
false);
868 std::stringstream ss;
870 <<
" (Joint=" <<
m_dnginfo.baseInfo.axisName
871 <<
" (NIB=" << joint_num
872 <<
"), Position_feedback=" << std::fixed << std::setprecision(4) << position_feedback_converted
873 <<
", Ref_controlmode=" << ref_controlmode_str <<
")";
874 m_dnginfo.baseInfo.finalMessage.append(ss.str());
877 case EOERROR_VALUE_DUMMY:
879 m_dnginfo.baseInfo.finalMessage.append(
": unrecognised eoerror_category_MotionControl error value.");
1114 char str[512] = {0};
1115 eOerror_value_t value = eoerror_code2value(
m_dnginfo.errorCode);
1116 m_dnginfo.baseInfo.finalMessage.clear();
1121 case eoerror_value_SYS_runninghappily:
1123 std::string appstate =
"unknown";
1126 case 0: appstate=
"just restarted";
break;
1127 case 1: appstate=
"idle";
break;
1128 case 2: appstate=
"running";
break;
1130 snprintf(str,
sizeof(str),
" %s Application state is %s.",
m_dnginfo.baseMessage.c_str(), appstate.c_str());
1131 m_dnginfo.baseInfo.finalMessage.append(str);
1134 case eoerror_value_SYS_ctrloop_execoverflowRX:
1137 uint16_t prev_rx = (
m_dnginfo.param64 & 0x0000ffff00000000)>>32;
1138 uint16_t prev_do = (
m_dnginfo.param64 & 0x00000000ffff0000)>>16;
1139 uint16_t prev_tx = (
m_dnginfo.param64 & 0x000000000000ffff);
1140 uint16_t prev_prev_tx = (
m_dnginfo.param64 & 0xffff000000000000)>>48;
1144 snprintf(str,
sizeof(str),
" %s RX execution time %d[usec]. Latest previous execution times[usec] (..., Tx=%d);(RX=%d, DO=%d, TX=%d);",
1145 m_dnginfo.baseMessage.c_str(),
m_dnginfo.param16, prev_prev_tx, prev_rx, prev_do, prev_tx);
1146 m_dnginfo.baseInfo.finalMessage.append(str);
1149 case eoerror_value_SYS_ctrloop_execoverflowDO:
1152 uint16_t prev_do = (
m_dnginfo.param64 & 0x0000ffff00000000)>>32;
1153 uint16_t prev_tx = (
m_dnginfo.param64 & 0x00000000ffff0000)>>16;
1154 uint16_t prev_rx = (
m_dnginfo.param64 & 0x000000000000ffff);
1155 uint16_t prev_prev_rx = (
m_dnginfo.param64 & 0xffff000000000000)>>48;
1158 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, ...);",
1159 m_dnginfo.baseMessage.c_str(),
m_dnginfo.param16,
"N/A", prev_prev_rx, prev_do, prev_tx, prev_rx);
1160 m_dnginfo.baseInfo.finalMessage.append(str);
1163 case eoerror_value_SYS_ctrloop_execoverflowTX:
1166 uint16_t prev_tx = (
m_dnginfo.param64 & 0x0000ffff00000000)>>32;
1167 uint16_t prev_rx = (
m_dnginfo.param64 & 0x00000000ffff0000)>>16;
1168 uint16_t prev_do = (
m_dnginfo.param64 & 0x000000000000ffff);
1169 uint8_t can1_frames = (
m_dnginfo.param64 & 0x00ff000000000000) >> 48;
1170 uint8_t can2_frames = (
m_dnginfo.param64 & 0xff00000000000000) >> 56;
1173 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]",
1174 m_dnginfo.baseMessage.c_str(),
m_dnginfo.param16,
"N/A",
"N/A" , prev_tx, prev_rx, prev_do, can1_frames, can2_frames);
1175 m_dnginfo.baseInfo.finalMessage.append(str);
1178 case eoerror_value_SYS_ropparsingerror:
1180 snprintf(str,
sizeof(str),
" %s Error code is %d (eOparserResult_t).",
m_dnginfo.baseMessage.c_str(),
m_dnginfo.param16);
1181 m_dnginfo.baseInfo.finalMessage.append(str);
1184 case eoerror_value_SYS_halerror:
1186 snprintf(str,
sizeof(str),
" %s HAL error code is %d.",
m_dnginfo.baseMessage.c_str(),
m_dnginfo.param16);
1187 m_dnginfo.baseInfo.finalMessage.append(str);
1190 case eoerror_value_SYS_osalerror:
1192 snprintf(str,
sizeof(str),
" %s OSAL error code is %d.",
m_dnginfo.baseMessage.c_str(),
m_dnginfo.param16);
1193 m_dnginfo.baseInfo.finalMessage.append(str);
1196 case eoerror_value_SYS_ipalerror:
1198 snprintf(str,
sizeof(str),
" %s IPAL error code is %d.",
m_dnginfo.baseMessage.c_str(),
m_dnginfo.param16);
1199 m_dnginfo.baseInfo.finalMessage.append(str);
1202 case eoerror_value_SYS_dispatcherfifooverflow:
1204 snprintf(str,
sizeof(str),
" %s Number of lost items is %d.",
m_dnginfo.baseMessage.c_str(),
m_dnginfo.param16);
1205 m_dnginfo.baseInfo.finalMessage.append(str);
1208 case eoerror_value_SYS_canservices_txfifooverflow:
1210 snprintf(str,
sizeof(str),
" %s CanPort=%s Frame.ID=%d, Frame.Size=%d Frame.Data=0x%lx",
1212 m_dnginfo.baseInfo.finalMessage.append(str);
1215 case eoerror_value_SYS_canservices_txbusfailure:
1217 snprintf(str,
sizeof(str),
" %s CanPort=%s. Size of fifo is %d",
m_dnginfo.baseMessage.c_str(),
m_dnginfo.baseInfo.sourceCANPortStr.c_str(), ((
m_dnginfo.param16 & 0xff00) >>8));
1218 m_dnginfo.baseInfo.finalMessage.append(str);
1221 case eoerror_value_SYS_canservices_formingfailure:
1223 snprintf(str,
sizeof(str),
" %s CanPort=%s. Message class is %d. Message cmd is %d",
m_dnginfo.baseMessage.c_str(),
m_dnginfo.baseInfo.sourceCANPortStr.c_str(), ((
m_dnginfo.param16 & 0xff00) >>8), (
m_dnginfo.param16 & 0x00ff));
1224 m_dnginfo.baseInfo.finalMessage.append(str);
1227 case eoerror_value_SYS_canservices_parsingfailure:
1229 snprintf(str,
sizeof(str),
" %s CanPort=%s. Frame.size=%d. Frame.Id=%d ",
m_dnginfo.baseMessage.c_str(),
m_dnginfo.baseInfo.sourceCANPortStr.c_str(), ((
m_dnginfo.param16 & 0xf000) >>12), (
m_dnginfo.param16 & 0x0fff));
1230 m_dnginfo.baseInfo.finalMessage.append(str);
1233 case eoerror_value_SYS_canservices_genericerror:
1235 snprintf(str,
sizeof(str),
" %s error code is %d ",
m_dnginfo.baseMessage.c_str(),
m_dnginfo.param16);
1236 m_dnginfo.baseInfo.finalMessage.append(str);
1240 case eoerror_value_SYS_ctrloop_rxphasemin:
1241 case eoerror_value_SYS_ctrloop_dophasemin:
1242 case eoerror_value_SYS_ctrloop_txphasemin:
1243 case eoerror_value_SYS_ctrloop_rxphaseaverage:
1244 case eoerror_value_SYS_ctrloop_dophaseaverage:
1245 case eoerror_value_SYS_ctrloop_txphaseaverage:
1246 case eoerror_value_SYS_ctrloop_rxphasemax:
1247 case eoerror_value_SYS_ctrloop_dophasemax:
1248 case eoerror_value_SYS_ctrloop_txphasemax:
1250 snprintf(str,
sizeof(str),
" %s, monitored over %f sec is %d microsec",
m_dnginfo.baseMessage.c_str(),
1251 0.01*
static_cast<float>(
m_dnginfo.param64 & 0xffff),
1254 m_dnginfo.baseInfo.finalMessage.append(str);
1257 case eoerror_value_SYS_exec_time_stats:
1259 static constexpr const char *
const names[5] = {
"runner.RX()",
"runner.DO()",
"runner.TX()",
"runner.RXDOTX()",
"other.ID = " };
1260 std::string actor = {};
1267 actor = names[4] + std::to_string(
m_dnginfo.param16);
1270 snprintf(str,
sizeof(str),
" %s: %s -> (%d, %d, %d) us over %f sec",
1273 static_cast<uint16_t
>((
m_dnginfo.param64 >> 48) & 0xffff),
1274 static_cast<uint16_t
>((
m_dnginfo.param64 >> 32) & 0xffff),
1275 static_cast<uint16_t
>((
m_dnginfo.param64 >> 16) & 0xffff),
1276 0.01*
static_cast<float>(
m_dnginfo.param64 & 0xffff)
1278 m_dnginfo.baseInfo.finalMessage.append(str);
1281 case eoerror_value_SYS_ctrloop_execoverflowPERIOD:
1284 uint16_t current =
static_cast<uint16_t
>((
m_dnginfo.param64 >> 48) & 0xffff);
1285 uint16_t rxt =
static_cast<uint16_t
>((
m_dnginfo.param64 >> 32) & 0xffff);
1286 uint16_t dot =
static_cast<uint16_t
>((
m_dnginfo.param64 >> 16) & 0xffff);
1287 uint16_t txt =
static_cast<uint16_t
>((
m_dnginfo.param64 ) & 0xffff);
1289 snprintf(str,
sizeof(str),
" %s: RXDOTX cycle budget = %d us, RXDOTX exec time = %d us, (rx, do, tx) = (%d, %d, %d) us",
1295 m_dnginfo.baseInfo.finalMessage.append(str);
1298 case eoerror_value_SYS_ctrloop_histogramPERIOD:
1302 for(uint8_t i=0; i<8; i++)
1304 uint64_t
x = (
m_dnginfo.param64 >> (8*i)) & 0xff;
1305 v[i] =
static_cast<float>(
x)/255.0;
1308 snprintf(str,
sizeof(str),
" %s: RXDOTX execution histogram w/ bins = %d us wide in [0, %f) + beyond -> [%f, %f, %f, %f, %f, %f, %f) + %f",
1311 v[0], v[1], v[2], v[3], v[4], v[5], v[6],
1314 m_dnginfo.baseInfo.finalMessage.append(str);
1317 case eoerror_value_SYS_proxy_forward_fails:
1319 snprintf(str,
sizeof(str),
" %s. ROP.sign=%d, ROP.id=%d. Proxy list capacity is %d, size is %d ",
1321 (int32_t)((
m_dnginfo.param64&0xffffffff00000000)>>32),
1322 (int32_t)(
m_dnginfo.param64&0x00000000ffffffff),
1324 m_dnginfo.baseInfo.finalMessage.append(str);
1328 case eoerror_value_SYS_proxy_ropdes_notfound:
1330 snprintf(str,
sizeof(str),
" %s ROP.id=%d ",
m_dnginfo.baseMessage.c_str(), (int32_t)(
m_dnginfo.param64&0x00000000ffffffff));
1331 m_dnginfo.baseInfo.finalMessage.append(str);
1335 case eoerror_value_SYS_canservices_canprint:
1337 snprintf(str,
sizeof(str),
" %s CanPort=%s Frame.Size=%d Frame.Data=0x%lx",
m_dnginfo.baseMessage.c_str(),
m_dnginfo.baseInfo.sourceCANPortStr.c_str(),
m_dnginfo.param16,
m_dnginfo.param64 );
1338 m_dnginfo.baseInfo.finalMessage.append(str);
1341 case eoerror_value_SYS_canservices_rxmaisbug:
1343 snprintf(str,
sizeof(str),
" %s CanPort=%s Frame.Size=%d Frame.Data=0x%lx",
m_dnginfo.baseMessage.c_str(),
m_dnginfo.baseInfo.sourceCANPortStr.c_str(),
m_dnginfo.param16,
m_dnginfo.param64 );
1344 m_dnginfo.baseInfo.finalMessage.append(str);
1347 case eoerror_value_SYS_canservices_rxfromwrongboard:
1349 snprintf(str,
sizeof(str),
" %s CanPort=%s Frame.Size=%d Frame.Data=0x%lx",
m_dnginfo.baseMessage.c_str(),
m_dnginfo.baseInfo.sourceCANPortStr.c_str(),
m_dnginfo.param16,
m_dnginfo.param64 );
1350 m_dnginfo.baseInfo.finalMessage.append(str);
1353 case eoerror_value_SYS_transceiver_rxseqnumber_error:
1356 snprintf(str,
sizeof(str),
" %s Expected number is %ld, received number is %d ",
m_dnginfo.baseMessage.c_str(),
m_dnginfo.param64, receivedNum);
1357 m_dnginfo.baseInfo.finalMessage.append(str);
1360 case eoerror_value_SYS_transceiver_rxseqnumber_restarted:
1362 snprintf(str,
sizeof(str),
" %s Expected number is %ld",
m_dnginfo.baseMessage.c_str(),
m_dnginfo.param64);
1363 m_dnginfo.baseInfo.finalMessage.append(str);
1366 case eoerror_value_SYS_canservices_board_detected:
1389 int fw_build = (
m_dnginfo.param64 & 0x00000000000000ff);
1390 int fw_major = (
m_dnginfo.param64 & 0x000000000000ff00) >> 8;
1391 int fw_minor = (
m_dnginfo.param64 & 0x0000000000ff0000) >> 16;
1392 int proto_major = (
m_dnginfo.param64 & 0x00000000ff000000) >> 24;
1393 int proto_minor = (
m_dnginfo.param64 & 0x000000ff00000000) >> 32;
1407 snprintf(str,
sizeof(str),
" %s on CAN port=%s with address %d. Fw ver is %d.%d.%d. Proto ver is %d.%d",
1409 fw_build, fw_major, fw_minor, proto_major, proto_minor );
1410 m_dnginfo.baseInfo.finalMessage.append(str);
1413 case eoerror_value_SYS_canservices_board_wrongprotversion:
1433 int fw_build = (
m_dnginfo.param64 & 0x00000000000000ff);
1434 int fw_major = (
m_dnginfo.param64 & 0x000000000000ff00) >> 8;
1435 int fw_minor = (
m_dnginfo.param64 & 0x0000000000ff0000) >> 16;
1436 int proto_major = (
m_dnginfo.param64 & 0x00000000ff000000) >> 24;
1437 int proto_minor = (
m_dnginfo.param64 & 0x000000ff00000000) >> 32;
1438 int req_proto_major = (
m_dnginfo.param16 & 0xff00) >>8;
1439 int req_proto_minor = (
m_dnginfo.param16 & 0x00ff);
1442 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",
1444 fw_build, fw_major, fw_minor, proto_major, proto_minor, req_proto_major, req_proto_minor );
1445 m_dnginfo.baseInfo.finalMessage.append(str);
1448 case eoerror_value_SYS_canservices_board_notfound:
1450 eObrd_type_t general_brd_type = eoboards_cantype2type((eObrd_cantype_t)
m_dnginfo.param16);
1451 snprintf(str,
sizeof(str),
" %s The board is on CAN port=%s with address %d. Board type is %s.",
1453 m_dnginfo.baseInfo.sourceCANBoardAddr, eoboards_type2string(general_brd_type));
1454 m_dnginfo.baseInfo.finalMessage.append(str);
1458 case eoerror_value_SYS_canservices_boards_lostcontact:
1460 eOmn_serv_category_t serv_category;
1463 getCanMonitorInfo(serv_category, lostCanBoards1, lostCanBoards2);
1465 snprintf(str,
sizeof(str),
"%s Type of service category is %s. Lost can boards on (can1map, can2map) = ([ %s ], [ %s ] ).",
1467 eomn_servicecategory2string(serv_category),
1468 lostCanBoards1, lostCanBoards2
1471 m_dnginfo.baseInfo.finalMessage.append(str);
1475 case eoerror_value_SYS_canservices_boards_retrievedcontact:
1477 eOmn_serv_category_t serv_category;
1478 diagstr retrievedCanBoards1 = {0};
1479 diagstr retrievedCanBoards2 = {0};
1480 getCanMonitorInfo(serv_category, retrievedCanBoards1, retrievedCanBoards2);
1482 snprintf(str,
sizeof(str),
"%s Type of service category is %s. Retrieved can boards on (can1map, can2map) = ([ %s ], [ %s ] ).",
1484 eomn_servicecategory2string(serv_category),
1485 retrievedCanBoards1, retrievedCanBoards2
1488 m_dnginfo.baseInfo.finalMessage.append(str);
1492 case eoerror_value_SYS_canservices_monitor_regularcontact:
1494 eOmn_serv_category_t serv_category;
1495 diagstr foundCanBoards1 = {0};
1496 diagstr foundCanBoards2 = {0};
1497 getCanMonitorInfo(serv_category, foundCanBoards1, foundCanBoards2);
1499 snprintf(str,
sizeof(str),
"%s Type of service category is %s. CAN boards are on (can1map, can2map) = ([ %s ], [ %s ])",
1501 eomn_servicecategory2string(serv_category),
1505 m_dnginfo.baseInfo.finalMessage.append(str);
1508 case eoerror_value_SYS_canservices_monitor_lostcontact:
1510 eOmn_serv_category_t serv_category;
1513 getCanMonitorInfo(serv_category, lostCanBoards1, lostCanBoards2);
1515 snprintf(str,
sizeof(str),
"%s Type of service category is %s. Lost CAN boards are on (can1map, can2map) = ([ %s ], [ %s ]).",
1517 eomn_servicecategory2string(serv_category),
1521 m_dnginfo.baseInfo.finalMessage.append(str);
1524 case eoerror_value_SYS_canservices_monitor_retrievedcontact:
1526 eOmn_serv_category_t serv_category;
1527 uint32_t totRetrvTime;
1528 diagstr retrievedCanBoards1 = {0};
1529 diagstr retrievedCanBoards2 = {0};
1530 getCanMonitorInfoWithTime(serv_category, retrievedCanBoards1, retrievedCanBoards2, totRetrvTime);
1533 snprintf(str,
sizeof(str),
"%s Type of service category is %s. CAN boards are on (can1map, can2map) = ([ %s ], [ %s ]). Total retrieving time: %d [ms]",
1535 eomn_servicecategory2string(serv_category),
1536 retrievedCanBoards1,
1537 retrievedCanBoards2,
1540 m_dnginfo.baseInfo.finalMessage.append(str);
1544 case eoerror_value_SYS_canservices_monitor_stillnocontact:
1546 eOmn_serv_category_t serv_category;
1547 uint32_t totDisappTime;
1550 getCanMonitorInfoWithTime(serv_category, lostCanBoards1, lostCanBoards2, totDisappTime);
1552 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]",
1554 eomn_servicecategory2string(serv_category),
1559 m_dnginfo.baseInfo.finalMessage.append(str);
1563 case eoerror_value_SYS_unspecified:
1564 case eoerror_value_SYS_tobedecided:
1565 case eoerror_value_SYS_memory_zerorequested:
1566 case eoerror_value_SYS_memory_notinitialised:
1567 case eoerror_value_SYS_memory_missing:
1568 case eoerror_value_SYS_mutex_timeout:
1569 case eoerror_value_SYS_wrongparam:
1570 case eoerror_value_SYS_wrongusage:
1571 case eoerror_value_SYS_runtimeerror:
1572 case eoerror_value_SYS_runninginfatalerrorstate:
1573 case eoerror_value_SYS_udptxfailure:
1574 case eoerror_value_SYS_configurator_udptxfailure:
1575 case eoerror_value_SYS_runner_udptxfailure:
1576 case eoerror_value_SYS_runner_transceivererror:
1577 case eoerror_value_SYS_canservices_rxfifooverflow:
1578 case eoerror_value_SYS_proxy_forward_ok:
1579 case eoerror_value_SYS_proxy_forward_callback_fails:
1580 case eoerror_value_SYS_proxy_reply_ok:
1581 case eoerror_value_SYS_proxy_reply_fails:
1582 case eoerror_value_SYS_canservices_boards_missing:
1583 case eoerror_value_SYS_canservices_boards_searched:
1584 case eoerror_value_SYS_canservices_boards_found:
1585 case eoerror_value_SYS_transceiver_rxinvalidframe_error:
1591 case EOERROR_VALUE_DUMMY:
1593 m_dnginfo.baseInfo.finalMessage.append(
": unrecognised eoerror_category_HardWare error value.");