From 962dcb9e38e52a023c078bd9ef4f117b0a328ed4 Mon Sep 17 00:00:00 2001 From: Florian Pose <fp@igh-essen.com> Date: Wed, 24 Sep 2008 08:32:55 +0000 Subject: [PATCH] Only query Sdo information service, if slave supports it. --- master/fsm_coe.c | 7 +++++++ master/fsm_master.c | 3 +++ 2 files changed, 10 insertions(+) diff --git a/master/fsm_coe.c b/master/fsm_coe.c index 903d457a..e2634e10 100644 --- a/master/fsm_coe.c +++ b/master/fsm_coe.c @@ -281,6 +281,13 @@ void ec_fsm_coe_dict_start(ec_fsm_coe_t *fsm /**< finite state machine */) return; } + if (slave->sii.has_general && !slave->sii.coe_details.enable_sdo_info) { + EC_ERR("Slave %u does not support Sdo information service!\n", + slave->ring_position); + fsm->state = ec_fsm_coe_error; + return; + } + if (!(data = ec_slave_mbox_prepare_send(slave, datagram, 0x03, 8))) { fsm->state = ec_fsm_coe_error; return; diff --git a/master/fsm_master.c b/master/fsm_master.c index 3d4b4515..002fc7b5 100644 --- a/master/fsm_master.c +++ b/master/fsm_master.c @@ -489,8 +489,11 @@ void ec_fsm_master_action_idle( slave < master->slaves + master->slave_count; slave++) { if (!(slave->sii.mailbox_protocols & EC_MBOX_COE) + || (slave->sii.has_general + && !slave->sii.coe_details.enable_sdo_info) || slave->sdo_dictionary_fetched || slave->current_state == EC_SLAVE_STATE_INIT + || slave->current_state == EC_SLAVE_STATE_UNKNOWN || jiffies - slave->jiffies_preop < EC_WAIT_SDO_DICT * HZ ) continue; -- GitLab