From 49b67e8e9a0d9c50a510a533af9f7c7760e2dfb0 Mon Sep 17 00:00:00 2001 From: etisserant Date: Wed, 4 Jun 2008 09:23:49 +0000 Subject: [PATCH] Added NMT reset callbacks, patch from Edward --- include/data.h | 12 ++++++++---- src/nmtSlave.c | 4 ++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/include/data.h b/include/data.h index 4631cc3..ceba170 100644 --- a/include/data.h +++ b/include/data.h @@ -55,9 +55,9 @@ struct struct_CO_Data { UNS8 *bDeviceNodeId; const indextable *objdict; s_PDO_status *PDO_status; - quick_index *firstIndex; - quick_index *lastIndex; - UNS16 *ObjdictSize; + const quick_index *firstIndex; + const quick_index *lastIndex; + const UNS16 *ObjdictSize; const UNS8 *iam_a_slave; valueRangeTest_t valueRangeTest; @@ -72,7 +72,9 @@ struct struct_CO_Data { preOperational_t preOperational; operational_t operational; stopped_t stopped; - + void (*NMT_Slave_Node_Reset_Callback)(CO_Data*); + void (*NMT_Slave_Communications_Reset_Callback)(CO_Data*); + /* NMT-heartbeat */ UNS8 *ConsumerHeartbeatCount; UNS32 *ConsumerHeartbeatEntries; @@ -219,6 +221,8 @@ struct struct_CO_Data { _preOperational, /* preOperational */\ _operational, /* operational */\ _stopped, /* stopped */\ + NULL, /* NMT node reset callback */\ + NULL, /* NMT communications reset callback */\ \ /* NMT-heartbeat */\ & NODE_PREFIX ## _highestSubIndex_obj1016, /* ConsumerHeartbeatCount */\ diff --git a/src/nmtSlave.c b/src/nmtSlave.c index ff883bd..e9bce15 100644 --- a/src/nmtSlave.c +++ b/src/nmtSlave.c @@ -73,6 +73,8 @@ void proceedNMTstateChange(CO_Data* d, Message *m) break; case NMT_Reset_Node: + if(d->NMT_Slave_Node_Reset_Callback != NULL) + d->NMT_Slave_Node_Reset_Callback(d); #ifdef CO_ENABLE_LSS if(getNodeId(d)!=d->lss_transfer.nodeID) setNodeId(d, d->lss_transfer.nodeID); @@ -81,6 +83,8 @@ void proceedNMTstateChange(CO_Data* d, Message *m) break; case NMT_Reset_Comunication: + if(d->NMT_Slave_Communications_Reset_Callback != NULL) + d->NMT_Slave_Communications_Reset_Callback(d); #ifdef CO_ENABLE_LSS if(getNodeId(d)!=d->lss_transfer.nodeID && getNodeId(d)>0 && getNodeId(d)<=127) setNodeId(d, d->lss_transfer.nodeID); -- 2.39.2