From f6f80a773364b77bb45fd32f53285d62eaf1d21f Mon Sep 17 00:00:00 2001 From: Florian Pose <fp@igh-essen.com> Date: Tue, 9 Jan 2007 14:36:08 +0000 Subject: [PATCH] Re-added slave.configured flag as slave.self_configured. --- master/fsm.c | 17 +++++++++++++---- master/slave.c | 1 + master/slave.h | 1 + 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/master/fsm.c b/master/fsm.c index 9d8e5c98..1780eea4 100644 --- a/master/fsm.c +++ b/master/fsm.c @@ -325,13 +325,20 @@ void ec_fsm_master_action_process_states(ec_fsm_t *fsm if (slave->error_flag || !slave->online || slave->requested_state == EC_SLAVE_STATE_UNKNOWN - || slave->current_state == slave->requested_state) continue; + || (slave->current_state == slave->requested_state + && slave->self_configured)) continue; if (master->debug_level) { ec_state_string(slave->current_state, old_state); - ec_state_string(slave->requested_state, new_state); - EC_DBG("Changing state of slave %i (%s -> %s).\n", - slave->ring_position, old_state, new_state); + if (slave->current_state != slave->requested_state) { + ec_state_string(slave->requested_state, new_state); + EC_DBG("Changing state of slave %i (%s -> %s).\n", + slave->ring_position, old_state, new_state); + } + else if (!slave->self_configured) { + EC_DBG("Reconfiguring slave %i (%s).\n", + slave->ring_position, old_state); + } } fsm->master_state = ec_fsm_master_configure_slave; @@ -1308,6 +1315,8 @@ void ec_fsm_slaveconf_state_init(ec_fsm_t *fsm /**< finite state machine */) return; } + slave->self_configured = 1; + if (master->debug_level) { EC_DBG("Slave %i is now in INIT.\n", slave->ring_position); } diff --git a/master/slave.c b/master/slave.c index d23cdebf..b3fbae1c 100644 --- a/master/slave.c +++ b/master/slave.c @@ -112,6 +112,7 @@ int ec_slave_init(ec_slave_t *slave, /**< EtherCAT slave */ slave->requested_state = EC_SLAVE_STATE_UNKNOWN; slave->current_state = EC_SLAVE_STATE_UNKNOWN; + slave->self_configured = 0; slave->error_flag = 0; slave->online = 1; slave->fmmu_count = 0; diff --git a/master/slave.h b/master/slave.h index aabdd0d5..a9d19c36 100644 --- a/master/slave.h +++ b/master/slave.h @@ -197,6 +197,7 @@ struct ec_slave ec_slave_state_t requested_state; /**< requested slave state */ ec_slave_state_t current_state; /**< current slave state */ + unsigned int self_configured; /**< slave was configured by this master */ unsigned int error_flag; /**< stop processing after an error */ unsigned int online; /**< non-zero, if the slave responds. */ -- GitLab