master/fsm_master.c
branch1.4-foe
changeset 1708 fae3a1759126
parent 1707 11ec009e145d
child 1709 63e4bc918640
--- 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);