Index: trunk/MagicSoft/Cosy/candrv/network.cc
===================================================================
--- trunk/MagicSoft/Cosy/candrv/network.cc	(revision 732)
+++ trunk/MagicSoft/Cosy/candrv/network.cc	(revision 808)
@@ -166,2 +166,10 @@
 }
 
+bool Network::HasError()
+{
+    for (int i=0; i<32; i++)
+        if (fNodes[i] && fNodes[i]->HasError())
+            return true;
+
+    return false;
+}
Index: trunk/MagicSoft/Cosy/candrv/network.h
===================================================================
--- trunk/MagicSoft/Cosy/candrv/network.h	(revision 732)
+++ trunk/MagicSoft/Cosy/candrv/network.h	(revision 808)
@@ -30,4 +30,6 @@
     virtual void Start();
     virtual void Stop();
+
+    bool HasError();
 };
 
Index: trunk/MagicSoft/Cosy/candrv/nodedrv.cc
===================================================================
--- trunk/MagicSoft/Cosy/candrv/nodedrv.cc	(revision 732)
+++ trunk/MagicSoft/Cosy/candrv/nodedrv.cc	(revision 808)
@@ -6,5 +6,5 @@
 #include "network.h"
 
-NodeDrv::NodeDrv(BYTE_t nodeid, ostream &out) : Log(out), fNetwork(NULL), fId(32)
+NodeDrv::NodeDrv(BYTE_t nodeid, ostream &out) : Log(out), fNetwork(NULL), fId(32), fError(0)
 {
     if (nodeid>31)
Index: trunk/MagicSoft/Cosy/candrv/nodedrv.h
===================================================================
--- trunk/MagicSoft/Cosy/candrv/nodedrv.h	(revision 732)
+++ trunk/MagicSoft/Cosy/candrv/nodedrv.h	(revision 808)
@@ -13,4 +13,11 @@
     BYTE_t   fId;
 
+    int fError;
+
+protected:
+    void SetError(int err) { fError = err; }
+    void DelError()        { fError = 0; }
+    int  GetError()        { return fError; }
+
 public:
     NodeDrv(BYTE_t nodeid, ostream &out=cout);
@@ -21,4 +28,6 @@
     virtual void InitDevice(Network *net);
     virtual void StopDevice() = 0;
+
+    bool HasError()        { return fError; }
 
     virtual void HandleSDO(WORD_t idx, BYTE_t subidx, LWORD_t val, struct timeval *tv);
