drivers/ec_slave.c
changeset 42 a22a202d0f42
parent 39 6965c23a6826
child 52 c0405659a74a
--- a/drivers/ec_slave.c	Fri Dec 23 08:23:35 2005 +0000
+++ b/drivers/ec_slave.c	Thu Jan 05 13:39:39 2006 +0000
@@ -20,6 +20,9 @@
 
    Initialisiert einen EtherCAT-Slave.
 
+   ACHTUNG! Dieser Konstruktor wird quasi nie aufgerufen. Bitte immer das
+   Makro ECAT_INIT_SLAVE() in ec_slave.h anpassen!
+
    @param slave Zeiger auf den zu initialisierenden Slave
 */
 
@@ -35,9 +38,11 @@
   slave->revision_number = 0;
   slave->serial_number = 0;
   slave->desc = NULL;
-  slave->logical_address0 = 0;
+  slave->logical_address = 0;
   slave->current_state = ECAT_STATE_UNKNOWN;
   slave->requested_state = ECAT_STATE_UNKNOWN;
+  slave->process_data = NULL;
+  slave->domain = 0;
   slave->error_reported = 0;
 }
 
@@ -97,7 +102,7 @@
     return 0;
   }
 
-  if (unlikely(channel >= slave->desc->channels)) {
+  if (unlikely(channel >= slave->desc->channel_count)) {
     if (likely(slave->error_reported)) {
       printk(KERN_WARNING "EtherCAT: Reading failed on slave %4X (addr %0X)"
              " - Type (%s %s) has no channel %i.\n",
@@ -109,6 +114,16 @@
     return 0;
   }
 
+  if (unlikely(!slave->process_data)) {
+    if (likely(slave->error_reported)) {
+      printk(KERN_WARNING "EtherCAT: Reading failed on slave %4X (addr %0X)"
+             " - Slave does not belong to any process data object!\n",
+             slave->station_address, (unsigned int) slave);
+      slave->error_reported = 1;
+    }
+    return 0;
+  }
+
   if (unlikely(slave->error_reported))
     slave->error_reported = 0;
 
@@ -156,7 +171,7 @@
     return;
   }
 
-  if (unlikely(channel >= slave->desc->channels)) {
+  if (unlikely(channel >= slave->desc->channel_count)) {
     if (likely(slave->error_reported)) {
       printk(KERN_WARNING "EtherCAT: Writing failed on slave %4X (addr %0X)"
              " - Type (%s %s) has no channel %i.\n",
@@ -168,6 +183,16 @@
     return;
   }
 
+  if (unlikely(!slave->process_data)) {
+    if (likely(slave->error_reported)) {
+      printk(KERN_WARNING "EtherCAT: Writing failed on slave %4X (addr %0X)"
+             " - Slave does not belong to any process data object!\n",
+             slave->station_address, (unsigned int) slave);
+      slave->error_reported = 1;
+    }
+    return;
+  }
+
   if (unlikely(slave->error_reported))
     slave->error_reported = 0;
 
@@ -180,3 +205,9 @@
 EXPORT_SYMBOL(EtherCAT_read_value);
 
 /*****************************************************************************/
+
+/* Emacs-Konfiguration
+;;; Local Variables: ***
+;;; c-basic-offset:2 ***
+;;; End: ***
+*/