master/fsm_master.c
changeset 1336 e27b37e80a99
parent 1335 09c6fce1ae45
child 1337 0253c74d0940
--- 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);