master/fsm_coe_map.c
changeset 1035 7fafc1a7451e
parent 1034 36cd81362f10
child 1036 dc2008bc8113
--- a/master/fsm_coe_map.c	Wed Jun 18 15:03:03 2008 +0000
+++ b/master/fsm_coe_map.c	Thu Jun 19 07:54:45 2008 +0000
@@ -44,10 +44,6 @@
 #include "sdo_request.h"
 #include "fsm_coe_map.h"
 
-/** Retry reading the number of assigned Pdos if this time is not elapsed.
- */
-#define EC_FSM_COE_MAP_TIMEOUT 5
-
 /*****************************************************************************/
 
 void ec_fsm_coe_map_state_start(ec_fsm_coe_map_t *);
@@ -186,8 +182,8 @@
         ec_pdo_list_clear_pdos(&fsm->pdos);
 
         ec_sdo_request_address(&fsm->request, fsm->sync_sdo_index, 0);
+        fsm->request.response_timeout = 10000;
         ecrt_sdo_request_read(&fsm->request);
-        fsm->jiffies_start = jiffies;
         fsm->state = ec_fsm_coe_map_state_pdo_count;
         ec_fsm_coe_transfer(fsm->fsm_coe, fsm->slave, &fsm->request);
         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
@@ -214,15 +210,6 @@
     if (ec_fsm_coe_exec(fsm->fsm_coe)) return;
 
     if (!ec_fsm_coe_success(fsm->fsm_coe)) {
-        if (jiffies - fsm->jiffies_start < HZ * EC_FSM_COE_MAP_TIMEOUT) {
-            if (fsm->slave->master->debug_level)
-                EC_DBG("Failed to read number of assigned Pdos from "
-                        "slave %u. Retrying...\n", fsm->slave->ring_position);
-            ecrt_sdo_request_read(&fsm->request);
-            ec_fsm_coe_transfer(fsm->fsm_coe, fsm->slave, &fsm->request);
-            ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
-            return;
-        }
         EC_ERR("Failed to read number of assigned Pdos from slave %u.\n",
                 fsm->slave->ring_position);
         fsm->state = ec_fsm_coe_map_state_error;
@@ -252,6 +239,7 @@
     if (fsm->sync_subindex <= fsm->sync_subindices) {
         ec_sdo_request_address(&fsm->request, fsm->sync_sdo_index,
                 fsm->sync_subindex);
+        fsm->request.response_timeout = 0;
         ecrt_sdo_request_read(&fsm->request);
         fsm->state = ec_fsm_coe_map_state_pdo;
         ec_fsm_coe_transfer(fsm->fsm_coe, fsm->slave, &fsm->request);
@@ -309,6 +297,7 @@
     list_add_tail(&fsm->pdo->list, &fsm->pdos.list);
 
     ec_sdo_request_address(&fsm->request, fsm->pdo->index, 0);
+    fsm->request.response_timeout = 0;
     ecrt_sdo_request_read(&fsm->request);
     fsm->state = ec_fsm_coe_map_state_pdo_entry_count;
     ec_fsm_coe_transfer(fsm->fsm_coe, fsm->slave, &fsm->request);
@@ -356,6 +345,7 @@
 {
     if (fsm->pdo_subindex <= fsm->pdo_subindices) {
         ec_sdo_request_address(&fsm->request, fsm->pdo->index, fsm->pdo_subindex);
+        fsm->request.response_timeout = 0;
         ecrt_sdo_request_read(&fsm->request);
         fsm->state = ec_fsm_coe_map_state_pdo_entry;
         ec_fsm_coe_transfer(fsm->fsm_coe, fsm->slave, &fsm->request);