include/lifegrd.h
changeset 750 bfb63ff7106e
parent 635 30a0e926bb2e
--- a/include/lifegrd.h	Mon Oct 01 16:58:35 2012 +0200
+++ b/include/lifegrd.h	Mon Oct 01 17:01:36 2012 +0200
@@ -27,7 +27,28 @@
  *	informed about that event.
  *  @ingroup comobj
  */
-					 
+
+/** @defgroup nodeguardo Node-guarding Object
+ *  The node-guarding mechanism for a device is established through cyclically polling all slaves by the NMT
+ *    	master. If one polled slave does not respond during a specified time (LifeTime), the local application
+ * 	will be informed about that event.<br>
+ *	It is also possible for the slaves to monitor the node-guarding requests coming from the master to
+ * 	determine, if the master operates in a right way
+ *  @ingroup comobj
+ *
+ * @todo The implementation is very basic. The toggle bit of the nodes confirmation is not checked at the moment
+ */
+	
+/**
+** @file   lifegrd.h
+** @author Markus WILDBOLZ
+** @date   Mon Oct 01 14:44:36 CEST 2012 
+**
+** @brief
+**
+**
+*/
+				 
 #ifndef __lifegrd_h__
 #define __lifegrd_h__
 
@@ -43,11 +64,47 @@
 typedef void (*post_SlaveStateChange_t)(CO_Data*, UNS8, e_nodeState);
 void _post_SlaveStateChange(CO_Data* d, UNS8 nodeId, e_nodeState newNodeState);
 
+typedef void (*nodeguardError_t)(CO_Data*, UNS8);
+void _nodeguardError(CO_Data* d, UNS8 id);
+
 #include "data.h"
 
 /*************************************************************************
  * Functions
  *************************************************************************/
+/** 
+ * @brief Start node guarding with respect to 0x100C and 0x100D
+ * in the object dictionary
+ * 
+ * @param *d Pointer on a CAN object data structure
+ * @ingroup nodeguardo
+ */
+void nodeguardInit(CO_Data* d);
+
+/** 
+ * @brief Stop producing node guarding messages
+ *
+ * @param *d Pointer on a CAN object data structure
+ * @ingroup nodeguardo
+ */
+void nodeguardStop(CO_Data* d);
+
+/** 
+ * @brief Start the life guarding service (heartbeat/node guarding).
+ * This service handles NMT error control messages either by using
+ * heartbeats and/or by using node guarding messages (defined via the
+ * object dictionary)
+ *
+ * @param *d Pointer on a CAN object data structure
+ */
+void lifeGuardInit(CO_Data* d);
+
+/** 
+ * @brief Stop the life guarding service (heartbeat/node guarding).
+ *
+ * @param *d Pointer on a CAN object data structure
+ */
+void lifeGuardStop(CO_Data* d);
 
 /** 
  * @ingroup statemachine
@@ -65,23 +122,26 @@
  * with respect to 0x1016 and 0x1017
  * object dictionary entries
  * @param *d Pointer on a CAN object data structure
+ * @ingroup heartbeato
  */
 void heartbeatInit(CO_Data* d);
 
 /** 
  * @brief Stop heartbeat consumer and producer
  * @param *d Pointer on a CAN object data structure
+ * @ingroup heartbeato
  */
 void heartbeatStop(CO_Data* d);
 
 /** 
  * @brief This function is responsible to process a canopen-message which seams to be an NMT Error Control
- * Messages. At them moment we assume that every NMT error control message
- * is a heartbeat message.
+ * Messages.
  * If a BootUp message is detected, it will return the nodeId of the Slave who booted up
  * @param *d Pointer on a CAN object data structure 
  * @param *m Pointer on the CAN-message which has to be analysed.
+ * @ingroup nodeguardo
  */
 void proceedNODE_GUARD (CO_Data* d, Message* m);
 
+
 #endif /*__lifegrd_h__ */