master/fsm.c
changeset 428 2731a2fcc18d
parent 427 f70c7c6db7f4
child 429 b21b000e88e3
equal deleted inserted replaced
427:f70c7c6db7f4 428:2731a2fcc18d
   944 
   944 
   945     EC_INFO("Bus scanning completed.\n");
   945     EC_INFO("Bus scanning completed.\n");
   946 
   946 
   947     ec_master_calc_addressing(master);
   947     ec_master_calc_addressing(master);
   948 
   948 
   949     // determine initial states.
   949     // set initial states of all slaves to PREOP to make mailbox
       
   950     // communication possible
   950     list_for_each_entry(slave, &master->slaves, list) {
   951     list_for_each_entry(slave, &master->slaves, list) {
   951         if (ec_slave_is_coupler(slave)) {
   952         slave->requested_state = EC_SLAVE_STATE_PREOP;
   952             slave->requested_state = EC_SLAVE_STATE_OP;
       
   953         }
       
   954         else {
       
   955             if (master->mode == EC_MASTER_MODE_OPERATION)
       
   956                 slave->requested_state = EC_SLAVE_STATE_PREOP;
       
   957             else
       
   958                 slave->requested_state = EC_SLAVE_STATE_INIT;
       
   959         }
       
   960     }
   953     }
   961 
   954 
   962     fsm->master_state = ec_fsm_master_start;
   955     fsm->master_state = ec_fsm_master_start;
   963     fsm->master_state(fsm); // execute immediately
   956     fsm->master_state(fsm); // execute immediately
   964 }
   957 }