Only query Sdo information service, if slave supports it.
--- a/master/fsm_coe.c Mon Sep 22 15:27:50 2008 +0000
+++ b/master/fsm_coe.c Wed Sep 24 08:32:55 2008 +0000
@@ -281,6 +281,13 @@
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;
--- a/master/fsm_master.c Mon Sep 22 15:27:50 2008 +0000
+++ b/master/fsm_master.c Wed Sep 24 08:32:55 2008 +0000
@@ -489,8 +489,11 @@
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;