master/fsm_master.c
changeset 2117 afb40fd6018e
parent 2113 26e61c7b75a1
child 2145 a63ed5513117
equal deleted inserted replaced
2116:1448a40b5af5 2117:afb40fd6018e
   584     if ((slave->current_state != slave->requested_state
   584     if ((slave->current_state != slave->requested_state
   585                 || slave->force_config) && !slave->error_flag) {
   585                 || slave->force_config) && !slave->error_flag) {
   586 
   586 
   587         // Start slave configuration, if it is allowed.
   587         // Start slave configuration, if it is allowed.
   588         ec_mutex_lock(&master->config_mutex);
   588         ec_mutex_lock(&master->config_mutex);
   589         if (!master->allow_config) {
   589         master->config_busy = 1;
   590             ec_mutex_unlock(&master->config_mutex);
   590         ec_mutex_unlock(&master->config_mutex);
   591         } else {
   591 
   592             master->config_busy = 1;
   592         if (master->debug_level) {
   593             ec_mutex_unlock(&master->config_mutex);
   593             char old_state[EC_STATE_STRING_SIZE],
   594 
   594                  new_state[EC_STATE_STRING_SIZE];
   595             if (master->debug_level) {
   595             ec_state_string(slave->current_state, old_state, 0);
   596                 char old_state[EC_STATE_STRING_SIZE],
   596             ec_state_string(slave->requested_state, new_state, 0);
   597                      new_state[EC_STATE_STRING_SIZE];
   597             EC_SLAVE_DBG(slave, 1, "Changing state from %s to %s%s.\n",
   598                 ec_state_string(slave->current_state, old_state, 0);
   598                     old_state, new_state,
   599                 ec_state_string(slave->requested_state, new_state, 0);
   599                     slave->force_config ? " (forced)" : "");
   600                 EC_SLAVE_DBG(slave, 1, "Changing state from %s to %s%s.\n",
       
   601                         old_state, new_state,
       
   602                         slave->force_config ? " (forced)" : "");
       
   603             }
       
   604 
       
   605             fsm->idle = 0;
       
   606             fsm->state = ec_fsm_master_state_configure_slave;
       
   607             ec_fsm_slave_config_start(&fsm->fsm_slave_config, slave);
       
   608             fsm->state(fsm); // execute immediately
       
   609             return;
       
   610         }
   600         }
       
   601 
       
   602         fsm->idle = 0;
       
   603         fsm->state = ec_fsm_master_state_configure_slave;
       
   604         ec_fsm_slave_config_start(&fsm->fsm_slave_config, slave);
       
   605         fsm->state(fsm); // execute immediately
       
   606         return;
   611     }
   607     }
   612 
   608 
   613     // slave has error flag set; process next one
   609     // slave has error flag set; process next one
   614     ec_fsm_master_action_next_slave_state(fsm);
   610     ec_fsm_master_action_next_slave_state(fsm);
   615 }
   611 }
   893         } else {
   889         } else {
   894             EC_MASTER_DBG(master, 1, "No app_time received up to now.\n");
   890             EC_MASTER_DBG(master, 1, "No app_time received up to now.\n");
   895         }
   891         }
   896     }
   892     }
   897 
   893 
       
   894     // scanning and setting system times complete
   898     ec_master_request_op(master);
   895     ec_master_request_op(master);
   899     ec_fsm_master_restart(fsm);
   896     ec_fsm_master_restart(fsm);
   900 }
   897 }
   901 
   898 
   902 /*****************************************************************************/
   899 /*****************************************************************************/