--- 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__ */