MCPcopy Create free account
hub / github.com/CANopenNode/CANopenNode / CO_process_SRDO

Function CO_process_SRDO

CANopen.c:1475–1510  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1473
1474#if ((CO_CONFIG_SRDO)&CO_CONFIG_SRDO_ENABLE) != 0
1475CO_SRDO_state_t
1476CO_process_SRDO(CO_t* co, uint32_t timeDifference_us, uint32_t* timerNext_us) {
1477 static bool_t NMTisOperationalPrevius = false;
1478 uint8_t i;
1479 CO_ReturnError_t err;
1480
1481 if (co->nodeIdUnconfigured) {
1482 return CO_SRDO_state_unknown;
1483 }
1484
1485 bool_t NMTisOperational = CO_NMT_getInternalState(co->NMT) == CO_NMT_OPERATIONAL;
1486
1487 if (NMTisOperationalPrevius != NMTisOperational) {
1488 NMTisOperationalPrevius = NMTisOperational;
1489 if (NMTisOperational) {
1490 for (i = 0; i < CO_GET_CNT(SRDO); i++) {
1491 err = CO_SRDO_config(&co->SRDO[i], i, co->SRDOGuard, NULL);
1492
1493 if (err != CO_ERROR_NO) {
1494 return CO_SRDO_state_error_internal;
1495 }
1496 }
1497 }
1498 }
1499
1500 CO_SRDO_state_t lowestState = CO_SRDO_state_deleted;
1501
1502 for (i = 0; i < CO_GET_CNT(SRDO); i++) {
1503 CO_SRDO_state_t state = CO_SRDO_process(&co->SRDO[i], timeDifference_us, timerNext_us, NMTisOperational);
1504 if (state < lowestState) {
1505 lowestState = state;
1506 }
1507 }
1508
1509 return lowestState;
1510}
1511#endif

Callers

nothing calls this directly

Calls 3

CO_NMT_getInternalStateFunction · 0.85
CO_SRDO_configFunction · 0.85
CO_SRDO_processFunction · 0.85

Tested by

no test coverage detected