master/fsm_master.c
branchstable-1.5
changeset 2115 2ec1239216e5
parent 2111 d9d56e56f2a2
child 2119 79d44885021f
equal deleted inserted replaced
2114:b91bb9b96823 2115:2ec1239216e5
   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 /*****************************************************************************/