--- 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: ***
+*/