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 /*****************************************************************************/ |