From b662560ff202eaf731c555cf4902a577a41d53c9 Mon Sep 17 00:00:00 2001 From: Florian Pose Date: Sat, 23 Sep 2006 10:56:02 +0000 Subject: [PATCH] Bugfix: ecrt_domain_state() always returned -1. --- master/domain.c | 12 +++++------- master/domain.h | 1 + 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/master/domain.c b/master/domain.c index 48e67407..e430f2c3 100644 --- a/master/domain.c +++ b/master/domain.c @@ -515,10 +515,14 @@ void ecrt_domain_process(ec_domain_t *domain /**< EtherCAT domain */) ec_datagram_t *datagram; working_counter_sum = 0; + domain->state = 0; list_for_each_entry(datagram, &domain->datagrams, list) { if (datagram->state == EC_DATAGRAM_RECEIVED) { working_counter_sum += datagram->working_counter; } + else { + domain->state = -1; + } } if (working_counter_sum != domain->response_count) { @@ -554,13 +558,7 @@ void ecrt_domain_process(ec_domain_t *domain /**< EtherCAT domain */) int ecrt_domain_state(const ec_domain_t *domain /**< EtherCAT domain */) { - ec_datagram_t *datagram; - - list_for_each_entry(datagram, &domain->datagrams, list) { - if (datagram->state != EC_DATAGRAM_RECEIVED) return -1; - } - - return 0; + return domain->state; } /*****************************************************************************/ diff --git a/master/domain.h b/master/domain.h index c7ae0f34..72511063 100644 --- a/master/domain.h +++ b/master/domain.h @@ -66,6 +66,7 @@ struct ec_domain struct list_head datagrams; /**< process data datagrams */ uint32_t base_address; /**< logical offset address of the process data */ unsigned int response_count; /**< number of responding slaves */ + unsigned int state; /**< domain error state */ struct list_head data_regs; /**< PDO data registrations */ unsigned int working_counter_changes; /**< working counter changes since last notification */