diff --git a/CANopen.c b/CANopen.c index a484489..5230ac4 100644 --- a/CANopen.c +++ b/CANopen.c @@ -972,6 +972,7 @@ CO_NMT_reset_cmd_t CO_process( #if CO_NODE_GUARDING_SLAVE > 0 CO_nodeGuardingSlave_process(CO->NGslave, CO_NMT_getInternalState(CO->NMT), + (OD_producerHeartbeatTime > 0), timeDifference_ms, OD_guardTime, OD_lifeTimeFactor); diff --git a/stack/CO_Node_Guarding.c b/stack/CO_Node_Guarding.c index c1cf24f..8efac92 100644 --- a/stack/CO_Node_Guarding.c +++ b/stack/CO_Node_Guarding.c @@ -99,11 +99,19 @@ CO_ReturnError_t CO_nodeGuardingSlave_init(CO_nodeGuardingSlave_t *ngs, /******************************************************************************/ void CO_nodeGuardingSlave_process(CO_nodeGuardingSlave_t *ngs, CO_NMT_internalState_t NMTstate, + uint8_t slaveDisable, uint16_t timeDifference_ms, uint16_t guardTime, uint8_t lifeTimeFactor) { + if (slaveDisable) { + ngs->toggle = 0; + ngs->lifeTimer = 0; + CLEAR_CANrxNew(ngs->CANrxNew); + return; + } + /* was RTR just received */ if (IS_CANrxNew(ngs->CANrxNew)) { ngs->lifeTimer = (uint32_t)guardTime * lifeTimeFactor; diff --git a/stack/CO_Node_Guarding.h b/stack/CO_Node_Guarding.h index 9add3b2..b461ff9 100644 --- a/stack/CO_Node_Guarding.h +++ b/stack/CO_Node_Guarding.h @@ -119,6 +119,7 @@ CO_ReturnError_t CO_nodeGuardingSlave_init(CO_nodeGuardingSlave_t *ngs, * * @param ngs This object. * @param NMTstate NMT operating state. + * @param slaveDisable If true, then Node guarding slave is disabled. * @param timeDifference_ms Time difference from previous function call in * milliseconds. * @param guardTime OD entry from 0x100C -"Guard time" @@ -126,6 +127,7 @@ CO_ReturnError_t CO_nodeGuardingSlave_init(CO_nodeGuardingSlave_t *ngs, */ void CO_nodeGuardingSlave_process(CO_nodeGuardingSlave_t *ngs, CO_NMT_internalState_t NMTstate, + uint8_t slaveDisable, uint16_t timeDifference_ms, uint16_t guardTime, uint8_t lifeTimeFactor); @@ -244,7 +246,6 @@ CO_ReturnError_t CO_nodeGuardingMaster_init(CO_nodeGuardingMaster_t *ngm, * configures monitoring of the remote node. * * @param ngm Node Guarding master object. - * @param em Emergency object. * @param index Index of the slot, which will be configured. * 0 <= index < CO_NODE_GUARDING_MASTER. * @param nodeId Node Id of the monitored node.