581 |
581 |
582 // Does the slave have to be configured? |
582 // Does the slave have to be configured? |
583 if ((slave->current_state != slave->requested_state |
583 if ((slave->current_state != slave->requested_state |
584 || slave->force_config) && !slave->error_flag) { |
584 || slave->force_config) && !slave->error_flag) { |
585 |
585 |
586 // Start slave configuration, if it is allowed. |
586 // Start slave configuration |
587 down(&master->config_sem); |
587 down(&master->config_sem); |
588 if (!master->allow_config) { |
588 master->config_busy = 1; |
589 up(&master->config_sem); |
589 up(&master->config_sem); |
590 } else { |
590 |
591 master->config_busy = 1; |
591 if (master->debug_level) { |
592 up(&master->config_sem); |
592 char old_state[EC_STATE_STRING_SIZE], |
593 |
593 new_state[EC_STATE_STRING_SIZE]; |
594 if (master->debug_level) { |
594 ec_state_string(slave->current_state, old_state, 0); |
595 char old_state[EC_STATE_STRING_SIZE], |
595 ec_state_string(slave->requested_state, new_state, 0); |
596 new_state[EC_STATE_STRING_SIZE]; |
596 EC_SLAVE_DBG(slave, 1, "Changing state from %s to %s%s.\n", |
597 ec_state_string(slave->current_state, old_state, 0); |
597 old_state, new_state, |
598 ec_state_string(slave->requested_state, new_state, 0); |
598 slave->force_config ? " (forced)" : ""); |
599 EC_SLAVE_DBG(slave, 1, "Changing state from %s to %s%s.\n", |
|
600 old_state, new_state, |
|
601 slave->force_config ? " (forced)" : ""); |
|
602 } |
|
603 |
|
604 fsm->idle = 0; |
|
605 fsm->state = ec_fsm_master_state_configure_slave; |
|
606 ec_fsm_slave_config_start(&fsm->fsm_slave_config, slave); |
|
607 fsm->state(fsm); // execute immediately |
|
608 return; |
|
609 } |
599 } |
|
600 |
|
601 fsm->idle = 0; |
|
602 fsm->state = ec_fsm_master_state_configure_slave; |
|
603 ec_fsm_slave_config_start(&fsm->fsm_slave_config, slave); |
|
604 fsm->state(fsm); // execute immediately |
|
605 return; |
610 } |
606 } |
611 |
607 |
612 // slave has error flag set; process next one |
608 // slave has error flag set; process next one |
613 ec_fsm_master_action_next_slave_state(fsm); |
609 ec_fsm_master_action_next_slave_state(fsm); |
614 } |
610 } |
897 } else { |
893 } else { |
898 EC_MASTER_DBG(master, 1, "No app_time received up to now.\n"); |
894 EC_MASTER_DBG(master, 1, "No app_time received up to now.\n"); |
899 } |
895 } |
900 } |
896 } |
901 |
897 |
|
898 // scanning and setting system times complete |
902 ec_master_request_op(master); |
899 ec_master_request_op(master); |
903 ec_fsm_master_restart(fsm); |
900 ec_fsm_master_restart(fsm); |
904 } |
901 } |
905 |
902 |
906 /*****************************************************************************/ |
903 /*****************************************************************************/ |