Skip to content
Snippets Groups Projects
Commit f6f80a77 authored by Florian Pose's avatar Florian Pose
Browse files

Re-added slave.configured flag as slave.self_configured.

parent fb429b62
No related branches found
No related tags found
No related merge requests found
...@@ -325,13 +325,20 @@ void ec_fsm_master_action_process_states(ec_fsm_t *fsm ...@@ -325,13 +325,20 @@ void ec_fsm_master_action_process_states(ec_fsm_t *fsm
if (slave->error_flag if (slave->error_flag
|| !slave->online || !slave->online
|| slave->requested_state == EC_SLAVE_STATE_UNKNOWN || 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) { if (master->debug_level) {
ec_state_string(slave->current_state, old_state); ec_state_string(slave->current_state, old_state);
ec_state_string(slave->requested_state, new_state); if (slave->current_state != slave->requested_state) {
EC_DBG("Changing state of slave %i (%s -> %s).\n", ec_state_string(slave->requested_state, new_state);
slave->ring_position, old_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; 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 */) ...@@ -1308,6 +1315,8 @@ void ec_fsm_slaveconf_state_init(ec_fsm_t *fsm /**< finite state machine */)
return; return;
} }
slave->self_configured = 1;
if (master->debug_level) { if (master->debug_level) {
EC_DBG("Slave %i is now in INIT.\n", slave->ring_position); EC_DBG("Slave %i is now in INIT.\n", slave->ring_position);
} }
......
...@@ -112,6 +112,7 @@ int ec_slave_init(ec_slave_t *slave, /**< EtherCAT slave */ ...@@ -112,6 +112,7 @@ int ec_slave_init(ec_slave_t *slave, /**< EtherCAT slave */
slave->requested_state = EC_SLAVE_STATE_UNKNOWN; slave->requested_state = EC_SLAVE_STATE_UNKNOWN;
slave->current_state = EC_SLAVE_STATE_UNKNOWN; slave->current_state = EC_SLAVE_STATE_UNKNOWN;
slave->self_configured = 0;
slave->error_flag = 0; slave->error_flag = 0;
slave->online = 1; slave->online = 1;
slave->fmmu_count = 0; slave->fmmu_count = 0;
......
...@@ -197,6 +197,7 @@ struct ec_slave ...@@ -197,6 +197,7 @@ struct ec_slave
ec_slave_state_t requested_state; /**< requested slave state */ ec_slave_state_t requested_state; /**< requested slave state */
ec_slave_state_t current_state; /**< current 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 error_flag; /**< stop processing after an error */
unsigned int online; /**< non-zero, if the slave responds. */ unsigned int online; /**< non-zero, if the slave responds. */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment