66 ** @param d |
66 ** @param d |
67 ** @param id |
67 ** @param id |
68 **/ |
68 **/ |
69 void ConsumerHearbeatAlarm(CO_Data* d, UNS32 id) |
69 void ConsumerHearbeatAlarm(CO_Data* d, UNS32 id) |
70 { |
70 { |
|
71 UNS8 nodeId = (UNS8)(((d->ConsumerHeartbeatEntries[id]) & (UNS32)0x00FF0000) >> (UNS8)16); |
71 /*MSG_WAR(0x00, "ConsumerHearbeatAlarm", 0x00);*/ |
72 /*MSG_WAR(0x00, "ConsumerHearbeatAlarm", 0x00);*/ |
72 |
73 |
73 /* timer have been notified and is now free (non periodic)*/ |
74 /* timer have been notified and is now free (non periodic)*/ |
74 /* -> avoid deleting re-assigned timer if message is received too late*/ |
75 /* -> avoid deleting re-assigned timer if message is received too late*/ |
75 d->ConsumerHeartBeatTimers[id]=TIMER_NONE; |
76 d->ConsumerHeartBeatTimers[id]=TIMER_NONE; |
|
77 |
|
78 /* set node state */ |
|
79 d->NMTable[nodeId] = Disconnected; |
76 /*! call heartbeat error with NodeId */ |
80 /*! call heartbeat error with NodeId */ |
77 (*d->heartbeatError)(d, (UNS8)( ((d->ConsumerHeartbeatEntries[id]) & (UNS32)0x00FF0000) >> (UNS8)16 )); |
81 (*d->heartbeatError)(d, nodeId); |
78 } |
82 } |
79 |
83 |
80 /*! |
84 /*! |
81 ** |
85 ** |
82 ** |
86 ** |
118 MSG_WAR(0x3130, "Sending NMT Nodeguard to master, state: ", d->nodeState); |
122 MSG_WAR(0x3130, "Sending NMT Nodeguard to master, state: ", d->nodeState); |
119 canSend(d->canHandle,&msg ); |
123 canSend(d->canHandle,&msg ); |
120 } |
124 } |
121 |
125 |
122 }else{ /* Not a request CAN */ |
126 }else{ /* Not a request CAN */ |
|
127 /* The state is stored on 7 bit */ |
|
128 e_nodeState newNodeState = (e_nodeState) ((*m).data[0] & 0x7F); |
123 |
129 |
124 MSG_WAR(0x3110, "Received NMT nodeId : ", nodeId); |
130 MSG_WAR(0x3110, "Received NMT nodeId : ", nodeId); |
125 /* the slave's state receievd is stored in the NMTable */ |
131 |
126 /* The state is stored on 7 bit */ |
132 if (d->NMTable[nodeId] != newNodeState) |
127 d->NMTable[nodeId] = (e_nodeState) ((*m).data[0] & 0x7F) ; |
133 { |
|
134 (*d->post_SlaveStateChange)(d, nodeId, newNodeState); |
|
135 /* the slave's state receievd is stored in the NMTable */ |
|
136 d->NMTable[nodeId] = newNodeState; |
|
137 } |
128 |
138 |
129 /* Boot-Up frame reception */ |
139 /* Boot-Up frame reception */ |
130 if ( d->NMTable[nodeId] == Initialisation) |
140 if ( d->NMTable[nodeId] == Initialisation) |
131 { |
141 { |
132 /* |
142 /* |
260 ** |
270 ** |
261 ** @param heartbeatID |
271 ** @param heartbeatID |
262 **/ |
272 **/ |
263 void _heartbeatError(CO_Data* d, UNS8 heartbeatID){} |
273 void _heartbeatError(CO_Data* d, UNS8 heartbeatID){} |
264 void _post_SlaveBootup(CO_Data* d, UNS8 SlaveID){} |
274 void _post_SlaveBootup(CO_Data* d, UNS8 SlaveID){} |
|
275 void _post_SlaveStateChange(CO_Data* d, UNS8 nodeId, e_nodeState newNodeState){} |
|
276 |