diff -r 42c66194c0c8 -r a22a202d0f42 drivers/ec_slave.c --- 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: *** +*/