15#include "canfestival.h"
35 e_nodeState networkNodeState = d->NMTable[nodeId];
36 return networkNodeState;
51 d->ConsumerHeartBeatTimers[id]=TIMER_NONE;
55 (*d->heartbeatError)(d, (
UNS8)( ((d->ConsumerHeartbeatEntries[
id]) & (
UNS32)0x00FF0000) >> (
UNS8)16 ));
70 UNS8 nodeId = (
UNS8) GET_NODE_ID((*m));
84 if (nodeId == *d->bDeviceNodeId )
87 UNS16 tmp = *d->bDeviceNodeId + 0x700;
88 msg.
cob_id = UNS16_LE(tmp);
91 msg.
data[0] = d->nodeState;
100 MSG_WAR(0x3130,
"Sending NMT Nodeguard to master, state: ", d->nodeState);
101 canSend(d->canHandle, &msg);
107 MSG_WAR(0x3110,
"Received NMT nodeId : ", nodeId);
110 d->NMTable[nodeId] = (e_nodeState) ((*m).data[0] & 0x7F) ;
114 if( d->NMTable[nodeId] != Unknown_state )
116 UNS8 index, ConsummerHeartBeat_nodeId ;
117 for( index = (
UNS8)0x00; index < *d->ConsumerHeartbeatCount; index++ )
119 ConsummerHeartBeat_nodeId = (
UNS8)( ((d->ConsumerHeartbeatEntries[index]) & (
UNS32)0x00FF0000) >> (
UNS8)16 );
120 if ( nodeId == ConsummerHeartBeat_nodeId )
122 TIMEVAL time = ( (d->ConsumerHeartbeatEntries[index]) & (
UNS32)0x0000FFFF ) ;
125 DelAlarm(d->ConsumerHeartBeatTimers[index]);
143 if(*d->ProducerHeartBeatTime)
151 UNS16 tmp = *d->bDeviceNodeId + 0x700;
152 msg.
cob_id = UNS16_LE(tmp);
155 msg.
data[0] = d->nodeState;
157 MSG_WAR(0x3130,
"Producing heartbeat: ", d->nodeState);
158 canSend(d->canHandle, &msg);
163 d->ProducerHeartBeatTimer =
DelAlarm(d->ProducerHeartBeatTimer);
195 for( index = (
UNS8)0x00; index < *d->ConsumerHeartbeatCount; index++ )
197 TIMEVAL time = (
UNS16) ( (d->ConsumerHeartbeatEntries[index]) & (
UNS32)0x0000FFFF ) ;
205 if ( *d->ProducerHeartBeatTime )
207 TIMEVAL time = *d->ProducerHeartBeatTime;
222 for( index = (
UNS8)0x00; index < *d->ConsumerHeartbeatCount; index++ )
224 d->ConsumerHeartBeatTimers[index] =
DelAlarm(d->ConsumerHeartBeatTimers[index]);
227 d->ProducerHeartBeatTimer =
DelAlarm(d->ProducerHeartBeatTimer);
This file is generated by the NNP Tool – Object Dictionary Editor, as originally developed by CAN Fes...
#define UNS8
Unsigned int8 representation in CANFest.
#define UNS16
Unsigned int16 representation in CANFest.
#define MSG_WAR(num, str, val)
Definition of MSG_WAR.
#define UNS32
Unsigned int32 representation in CANFest.
UNS32 OnHeartbeatProducerUpdate(CO_Data *d, const indextable *unsused_indextable, UNS8 unsused_bSubindex)
This is called when Index 0x1017 is updated.
void heartbeatStop(CO_Data *d)
Stop heartbeat consumer and producer.
void ProducerHearbeatAlarm(CO_Data *d, UNS32 id)
the Consumer Timer Callback. Heartbeat has been modified to include module Serial Number
void processNODE_GUARD(CO_Data *d, Message *m)
This function is responsible to process a canopen-message which seams to be an NMT Error Control Mess...
void heartbeatInit(CO_Data *d)
Start heartbeat consumer and producer with respect to 0x1016 and 0x1017 object dictionary entries.
void _heartbeatError(CO_Data *d, UNS8 heartbeatID)
heartbeat Error
void _post_SlaveBootup(CO_Data *d, UNS8 SlaveID)
post slave bootup
UNS32 RegisterSetODentryCallBack(CO_Data *d, UNS16 wIndex, UNS8 bSubindex, ODCallback_t Callback)
<BRIEF>
e_nodeState getNodeState(CO_Data *d, UNS8 nodeId)
To read the state of a node This can be used by the master after having sent a life guard request,...
TIMER_HANDLE SetAlarm(CO_Data *d, UNS32 id, TimerCallback_t callback, TIMEVAL value, TIMEVAL period)
Set an alarm to execute a callback function when expired.
TIMER_HANDLE DelAlarm(TIMER_HANDLE handle)
Delete an alarm before expiring.
void ConsumerHearbeatAlarm(CO_Data *d, UNS32 id)
This structure contains all necessary informations to define a CANOpen node.