--- a/master/fsm_master.c Mon Jan 19 10:18:41 2009 +0000
+++ b/master/fsm_master.c Mon Jan 19 12:36:18 2009 +0000
@@ -436,17 +436,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;
}
@@ -471,6 +468,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;
@@ -850,10 +851,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_REQUEST_FAILURE;
wake_up(&master->foe_queue);
@@ -861,10 +863,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_REQUEST_SUCCESS;
wake_up(&master->foe_queue);