Removed allow_config flag and obsolete request to OP.
--- a/master/fsm_master.c Fri Sep 16 12:44:54 2011 +0200
+++ b/master/fsm_master.c Fri Sep 16 14:10:23 2011 +0200
@@ -583,30 +583,26 @@
if ((slave->current_state != slave->requested_state
|| slave->force_config) && !slave->error_flag) {
- // Start slave configuration, if it is allowed.
+ // Start slave configuration
down(&master->config_sem);
- if (!master->allow_config) {
- up(&master->config_sem);
- } else {
- master->config_busy = 1;
- up(&master->config_sem);
-
- if (master->debug_level) {
- char old_state[EC_STATE_STRING_SIZE],
- new_state[EC_STATE_STRING_SIZE];
- ec_state_string(slave->current_state, old_state, 0);
- ec_state_string(slave->requested_state, new_state, 0);
- EC_SLAVE_DBG(slave, 1, "Changing state from %s to %s%s.\n",
- old_state, new_state,
- slave->force_config ? " (forced)" : "");
- }
-
- fsm->idle = 0;
- fsm->state = ec_fsm_master_state_configure_slave;
- ec_fsm_slave_config_start(&fsm->fsm_slave_config, slave);
- fsm->state(fsm); // execute immediately
- return;
+ master->config_busy = 1;
+ up(&master->config_sem);
+
+ if (master->debug_level) {
+ char old_state[EC_STATE_STRING_SIZE],
+ new_state[EC_STATE_STRING_SIZE];
+ ec_state_string(slave->current_state, old_state, 0);
+ ec_state_string(slave->requested_state, new_state, 0);
+ EC_SLAVE_DBG(slave, 1, "Changing state from %s to %s%s.\n",
+ old_state, new_state,
+ slave->force_config ? " (forced)" : "");
}
+
+ fsm->idle = 0;
+ fsm->state = ec_fsm_master_state_configure_slave;
+ ec_fsm_slave_config_start(&fsm->fsm_slave_config, slave);
+ fsm->state(fsm); // execute immediately
+ return;
}
// slave has error flag set; process next one
@@ -899,6 +895,7 @@
}
}
+ // scanning and setting system times complete
ec_master_request_op(master);
ec_fsm_master_restart(fsm);
}
--- a/master/master.c Fri Sep 16 12:44:54 2011 +0200
+++ b/master/master.c Fri Sep 16 14:10:23 2011 +0200
@@ -158,7 +158,6 @@
init_waitqueue_head(&master->scan_queue);
master->config_busy = 0;
- master->allow_config = 1;
sema_init(&master->config_sem, 1);
init_waitqueue_head(&master->config_queue);
@@ -594,7 +593,6 @@
EC_MASTER_DBG(master, 1, "IDLE -> OPERATION.\n");
down(&master->config_sem);
- master->allow_config = 0; // temporarily disable slave configuration
if (master->config_busy) {
up(&master->config_sem);
@@ -655,7 +653,6 @@
out_allow:
master->allow_scan = 1;
- master->allow_config = 1;
return ret;
}
@@ -2013,7 +2010,6 @@
return ret;
}
- master->allow_config = 1; // request the current configuration
master->allow_scan = 1; // allow re-scanning on topology change
master->active = 1;
@@ -2087,7 +2083,6 @@
EC_MASTER_WARN(master, "Failed to restart master thread!\n");
master->allow_scan = 1;
- master->allow_config = 1;
master->active = 0;
}
--- a/master/master.h Fri Sep 16 12:44:54 2011 +0200
+++ b/master/master.h Fri Sep 16 14:10:23 2011 +0200
@@ -196,8 +196,6 @@
slave scanning. */
unsigned int config_busy; /**< State of slave configuration. */
- unsigned int allow_config; /**< \a True, if slave configuration is
- allowed. */
struct semaphore config_sem; /**< Semaphore protecting the \a config_busy
variable and the allow_config flag. */
wait_queue_head_t config_queue; /**< Queue for processes that wait for
--- a/master/slave_config.c Fri Sep 16 12:44:54 2011 +0200
+++ b/master/slave_config.c Fri Sep 16 14:10:23 2011 +0200
@@ -227,10 +227,7 @@
slave->config = sc;
sc->slave = slave;
- ec_slave_request_state(slave, EC_SLAVE_STATE_OP);
-
EC_CONFIG_DBG(sc, 1, "Attached slave %u.\n", slave->ring_position);
-
return 0;
}