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