master/master.c
changeset 462 e6fac0c8bc92
parent 461 b9eda9235173
child 467 2274de57ca84
equal deleted inserted replaced
461:b9eda9235173 462:e6fac0c8bc92
   434     // set states for all slaves
   434     // set states for all slaves
   435     list_for_each_entry(slave, &master->slaves, list) {
   435     list_for_each_entry(slave, &master->slaves, list) {
   436         ec_slave_request_state(slave, EC_SLAVE_STATE_PREOP);
   436         ec_slave_request_state(slave, EC_SLAVE_STATE_PREOP);
   437 
   437 
   438         fsm->slave = slave;
   438         fsm->slave = slave;
   439         fsm->slave_state = ec_fsm_slaveconf_start;
   439         fsm->slave_state = ec_fsm_slaveconf_state_start;
   440 
   440 
   441         do {
   441         do {
   442             fsm->slave_state(fsm);
   442             fsm->slave_state(fsm);
   443             ec_master_sync_io(master);
   443             ec_master_sync_io(master);
   444         }
   444         }
   445         while (fsm->slave_state != ec_fsm_slave_end
   445         while (fsm->slave_state != ec_fsm_slave_state_end
   446                && fsm->slave_state != ec_fsm_slave_error);
   446                && fsm->slave_state != ec_fsm_slave_state_error);
   447     }
   447     }
   448 
   448 
   449     ec_master_destroy_domains(master);
   449     ec_master_destroy_domains(master);
   450 
   450 
   451     master->request_cb = NULL;
   451     master->request_cb = NULL;
  1331     }
  1331     }
  1332 
  1332 
  1333     // configure all slaves
  1333     // configure all slaves
  1334     list_for_each_entry(slave, &master->slaves, list) {
  1334     list_for_each_entry(slave, &master->slaves, list) {
  1335         fsm->slave = slave;
  1335         fsm->slave = slave;
  1336         fsm->slave_state = ec_fsm_slaveconf_start;
  1336         fsm->slave_state = ec_fsm_slaveconf_state_start;
  1337 
  1337 
  1338         do {
  1338         do {
  1339             fsm->slave_state(fsm);
  1339             fsm->slave_state(fsm);
  1340             ec_master_sync_io(master);
  1340             ec_master_sync_io(master);
  1341         }
  1341         }
  1342         while (fsm->slave_state != ec_fsm_slave_end
  1342         while (fsm->slave_state != ec_fsm_slave_state_end
  1343                && fsm->slave_state != ec_fsm_slave_error);
  1343                && fsm->slave_state != ec_fsm_slave_state_error);
  1344 
  1344 
  1345         if (fsm->slave_state == ec_fsm_slave_error) {
  1345         if (fsm->slave_state == ec_fsm_slave_state_error) {
  1346             EC_ERR("Failed to configure slave %i!\n", slave->ring_position);
  1346             EC_ERR("Failed to configure slave %i!\n", slave->ring_position);
  1347             return -1;
  1347             return -1;
  1348         }
  1348         }
  1349     }
  1349     }
  1350 
  1350