diff -r 36cd81362f10 -r 7fafc1a7451e master/fsm_coe_map.c --- 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);