master/fsm.c
changeset 523 584a4f60b067
parent 522 de914aa62273
--- a/master/fsm.c	Tue Jan 09 14:19:37 2007 +0000
+++ b/master/fsm.c	Tue Jan 09 14:36:08 2007 +0000
@@ -325,13 +325,20 @@
         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 @@
         return;
     }
 
+    slave->self_configured = 1;
+
     if (master->debug_level) {
         EC_DBG("Slave %i is now in INIT.\n", slave->ring_position);
     }