diff --git a/master/fsm_master.c b/master/fsm_master.c index 1ae6466e..c1cb5b46 100644 --- a/master/fsm_master.c +++ b/master/fsm_master.c @@ -580,13 +580,6 @@ void ec_fsm_master_action_idle( return; } - // enable processing of requests - for (slave = master->slaves; - slave < master->slaves + master->slave_count; - slave++) { - ec_fsm_slave_set_ready(&slave->fsm); - } - // check, if slaves have an SDO dictionary to read out. for (slave = master->slaves; slave < master->slaves + master->slave_count; @@ -598,7 +591,16 @@ void ec_fsm_master_action_idle( || slave->current_state == EC_SLAVE_STATE_INIT || slave->current_state == EC_SLAVE_STATE_UNKNOWN || jiffies - slave->jiffies_preop < EC_WAIT_SDO_DICT * HZ - ) continue; + ) { + if (!(slave->sii.mailbox_protocols & EC_MBOX_COE) + || (slave->sii.has_general + && !slave->sii.coe_details.enable_sdo_info) + ){ + // SDO info not supported. Enable processing of requests + ec_fsm_slave_set_ready(&slave->fsm); + } + continue; + } EC_SLAVE_DBG(slave, 1, "Fetching SDO dictionary.\n"); @@ -1624,6 +1626,9 @@ void ec_fsm_master_state_sdo_dictionary( sdo_count, entry_count); } + // enable processing of requests + ec_fsm_slave_set_ready(&slave->fsm); + // attach pdo names from dictionary ec_slave_attach_pdo_names(slave);