src/lifegrd.c
changeset 53 73bc47a0db55
parent 0 4472ee7c6c3e
child 71 95cd3376cc9f
equal deleted inserted replaced
52:1dc256e8e49a 53:73bc47a0db55
    21 */
    21 */
    22 
    22 
    23 #include <data.h>
    23 #include <data.h>
    24 #include "lifegrd.h"
    24 #include "lifegrd.h"
    25 
    25 
       
    26 // Prototypes for internals functions
       
    27 void ConsumerHearbeatAlarm(CO_Data* d, UNS32 id);
       
    28 void ProducerHearbeatAlarm(CO_Data* d, UNS32 id);
       
    29 
       
    30 
       
    31 /*****************************************************************************/
    26 e_nodeState getNodeState (CO_Data* d, UNS8 nodeId)
    32 e_nodeState getNodeState (CO_Data* d, UNS8 nodeId)
    27 {
    33 {
    28 	e_nodeState networkNodeState = d->NMTable[nodeId];
    34 	e_nodeState networkNodeState = d->NMTable[nodeId];
    29 	return networkNodeState;
    35 	return networkNodeState;
    30 }
    36 }
    31 
    37 
       
    38 /*****************************************************************************/
    32 // The Consumer Timer Callback
    39 // The Consumer Timer Callback
    33 void ConsumerHearbeatAlarm(CO_Data* d, UNS32 id)
    40 void ConsumerHearbeatAlarm(CO_Data* d, UNS32 id)
    34 {
    41 {
    35         //MSG_WAR(0x00, "ConsumerHearbeatAlarm", 0x00);
    42         //MSG_WAR(0x00, "ConsumerHearbeatAlarm", 0x00);
    36 	
    43 	
    37 	// call heartbeat error with NodeId
    44 	// call heartbeat error with NodeId
    38 	(*d->heartbeatError)((UNS8)( ((d->ConsumerHeartbeatEntries[id]) & (UNS32)0x00FF0000) >> (UNS8)16 ));
    45 	(*d->heartbeatError)((UNS8)( ((d->ConsumerHeartbeatEntries[id]) & (UNS32)0x00FF0000) >> (UNS8)16 ));
    39 }
    46 }
    40 
    47 
    41 /* Retourne le node-id */
    48 /*****************************************************************************/
    42 void proceedNODE_GUARD(CO_Data* d, Message* m )
    49 void proceedNODE_GUARD(CO_Data* d, Message* m )
    43 {
    50 {
    44   UNS8 nodeId = (UNS8) GET_NODE_ID((*m));
    51   UNS8 nodeId = (UNS8) GET_NODE_ID((*m));
    45   
    52   
    46   if((m->rtr == 1) ) /* Notice that only the master can have sent this node guarding request */
    53   if((m->rtr == 1) ) /* Notice that only the master can have sent this node guarding request */
    98         }
   105         }
    99     }
   106     }
   100   }
   107   }
   101 }
   108 }
   102 
   109 
       
   110 /*****************************************************************************/
   103 // The Consumer Timer Callback
   111 // The Consumer Timer Callback
   104 void ProducerHearbeatAlarm(CO_Data* d, UNS32 id)
   112 void ProducerHearbeatAlarm(CO_Data* d, UNS32 id)
   105 {
   113 {
   106 	if(*d->ProducerHeartBeatTime)
   114 	if(*d->ProducerHeartBeatTime)
   107 	{
   115 	{
   120 	}else{
   128 	}else{
   121 		d->ProducerHeartBeatTimer = DelAlarm(d->ProducerHeartBeatTimer);
   129 		d->ProducerHeartBeatTimer = DelAlarm(d->ProducerHeartBeatTimer);
   122 	}
   130 	}
   123 }
   131 }
   124 
   132 
   125 
   133 /*****************************************************************************/
   126 void heartbeatInit(CO_Data* d)
   134 void heartbeatInit(CO_Data* d)
   127 {
   135 {
   128     UNS8 index; // Index to scan the table of heartbeat consumers
   136     UNS8 index; // Index to scan the table of heartbeat consumers
   129 
   137 
   130     d->toggle = 0;
   138     d->toggle = 0;
   144     	TIMEVAL time = *d->ProducerHeartBeatTime;
   152     	TIMEVAL time = *d->ProducerHeartBeatTime;
   145     	d->ProducerHeartBeatTimer = SetAlarm(d, 0, &ProducerHearbeatAlarm, MS_TO_TIMEVAL(time), MS_TO_TIMEVAL(time));
   153     	d->ProducerHeartBeatTimer = SetAlarm(d, 0, &ProducerHearbeatAlarm, MS_TO_TIMEVAL(time), MS_TO_TIMEVAL(time));
   146     }
   154     }
   147 }
   155 }
   148 
   156 
   149 
   157 /*****************************************************************************/
   150 void heartbeatStop(CO_Data* d)
   158 void heartbeatStop(CO_Data* d)
   151 {
   159 {
   152     UNS8 index;
   160     UNS8 index;
   153     for( index = (UNS8)0x00; index < *d->ConsumerHeartbeatCount; index++ )
   161     for( index = (UNS8)0x00; index < *d->ConsumerHeartbeatCount; index++ )
   154     {
   162     {