]> rtime.felk.cvut.cz Git - CanFestival-3.git/commitdiff
Added NMT reset callbacks, patch from Edward
authoretisserant <etisserant>
Wed, 4 Jun 2008 09:23:49 +0000 (09:23 +0000)
committeretisserant <etisserant>
Wed, 4 Jun 2008 09:23:49 +0000 (09:23 +0000)
include/data.h
src/nmtSlave.c

index 4631cc34d1336fc866f1aa3eee1ff141936f8dbb..ceba1702573c438236bc6a13b6d499255f5e1c35 100644 (file)
@@ -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 */\
index ff883bddeb5c48ee009d9d9b31cfb8a8039585dc..e9bce15609f1a3bf66cacc0a1b7d63b7b8da7b3c 100644 (file)
@@ -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);