master/fsm.c
changeset 520 d778acff9592
parent 505 bc443ca0077f
child 521 a25593417791
equal deleted inserted replaced
519:54787e1b57d4 520:d778acff9592
   323     // check if any slaves are not in the state, they're supposed to be
   323     // check if any slaves are not in the state, they're supposed to be
   324     list_for_each_entry(slave, &master->slaves, list) {
   324     list_for_each_entry(slave, &master->slaves, list) {
   325         if (slave->error_flag
   325         if (slave->error_flag
   326             || !slave->online
   326             || !slave->online
   327             || slave->requested_state == EC_SLAVE_STATE_UNKNOWN
   327             || slave->requested_state == EC_SLAVE_STATE_UNKNOWN
   328             || (slave->current_state == slave->requested_state
   328             || slave->current_state == slave->requested_state) continue;
   329                 && slave->configured)) continue;
       
   330 
   329 
   331         if (master->debug_level) {
   330         if (master->debug_level) {
   332             ec_state_string(slave->current_state, old_state);
   331             ec_state_string(slave->current_state, old_state);
   333             if (slave->current_state != slave->requested_state) {
   332             ec_state_string(slave->requested_state, new_state);
   334                 ec_state_string(slave->requested_state, new_state);
   333             EC_DBG("Changing state of slave %i (%s -> %s).\n",
   335                 EC_DBG("Changing state of slave %i (%s -> %s).\n",
   334                    slave->ring_position, old_state, new_state);
   336                        slave->ring_position, old_state, new_state);
       
   337             }
       
   338             else if (!slave->configured) {
       
   339                 EC_DBG("Reconfiguring slave %i (%s).\n",
       
   340                        slave->ring_position, old_state);
       
   341             }
       
   342         }
   335         }
   343 
   336 
   344         fsm->master_state = ec_fsm_master_configure_slave;
   337         fsm->master_state = ec_fsm_master_configure_slave;
   345         fsm->slave = slave;
   338         fsm->slave = slave;
   346         fsm->slave_state = ec_fsm_slaveconf_state_start;
   339         fsm->slave_state = ec_fsm_slaveconf_state_start;
  1313         slave->error_flag = 1;
  1306         slave->error_flag = 1;
  1314         fsm->slave_state = ec_fsm_slave_state_error;
  1307         fsm->slave_state = ec_fsm_slave_state_error;
  1315         return;
  1308         return;
  1316     }
  1309     }
  1317 
  1310 
  1318     slave->configured = 1;
       
  1319 
       
  1320     if (master->debug_level) {
  1311     if (master->debug_level) {
  1321         EC_DBG("Slave %i is now in INIT.\n", slave->ring_position);
  1312         EC_DBG("Slave %i is now in INIT.\n", slave->ring_position);
  1322     }
  1313     }
  1323 
  1314 
  1324     // check and reset CRC fault counters
  1315     // check and reset CRC fault counters