diff -r 09c6fce1ae45 -r e27b37e80a99 master/fsm_master.c --- a/master/fsm_master.c Mon Jan 26 13:01:58 2009 +0000 +++ b/master/fsm_master.c Mon Jan 26 13:09:27 2009 +0000 @@ -493,17 +493,14 @@ request->req.state = EC_REQUEST_BUSY; slave = request->slave; - EC_DBG("---- Master read command from queue ----\n"); - // found pending FOE write operation. execute it! if (master->debug_level) - EC_DBG("Writing FOE data to slave %u...\n", - request->slave->ring_position); + EC_DBG("Processing FoE request for slave %u.\n", + slave->ring_position); fsm->foe_request = &request->req; fsm->slave = slave; fsm->state = ec_fsm_master_state_foe_request; ec_fsm_foe_transfer(&fsm->fsm_foe, slave, &request->req); - //(&fsm->fsm_foe, request->slave, request->offset, request->words); ec_fsm_foe_exec(&fsm->fsm_foe); return 1; } @@ -528,6 +525,10 @@ if (ec_fsm_master_action_process_sdo(fsm)) return; + // Check for pending FoE requests + if (ec_fsm_master_action_process_foe(fsm)) + return; + // check, if slaves have an SDO dictionary to read out. for (slave = master->slaves; slave < master->slaves + master->slave_count; @@ -912,10 +913,11 @@ ec_foe_request_t *request = fsm->foe_request; ec_slave_t *slave = fsm->slave; - if (ec_fsm_foe_exec(&fsm->fsm_foe)) return; + if (ec_fsm_foe_exec(&fsm->fsm_foe)) + return; if (!ec_fsm_foe_success(&fsm->fsm_foe)) { - EC_ERR("Failed to handle FOE request to slave %u.\n", + EC_ERR("Failed to handle FoE request to slave %u.\n", slave->ring_position); request->state = EC_INT_REQUEST_FAILURE; wake_up(&master->foe_queue); @@ -923,10 +925,10 @@ return; } - // finished writing FOE + // finished transferring FoE if (master->debug_level) - EC_DBG("Finished writing %u words of FOE data to slave %u.\n", - request->data_size, slave->ring_position); + EC_DBG("Successfully transferred %u bytes of FoE data from/to" + " slave %u.\n", request->data_size, slave->ring_position); request->state = EC_INT_REQUEST_SUCCESS; wake_up(&master->foe_queue);