merge -r1446:1448 trunk: Plugfest6 fixes.
--- a/NEWS Wed Aug 27 15:52:24 2008 +0000
+++ b/NEWS Wed Sep 24 08:48:23 2008 +0000
@@ -4,6 +4,13 @@
-------------------------------------------------------------------------------
+Changes since 1.4.0-rc2:
+
+* Minor fix in 'slaves' command that fixed duplicate display of supported
+ mailbox protocols.
+* The Sdo Information Service is only queried, if the slave has the
+ corresponding SII bit set.
+
Changes in version 1.4.0-rc2:
* Fixed a deadlock causing race condition concerning thread signaling when the
--- a/master/fsm_coe.c Wed Aug 27 15:52:24 2008 +0000
+++ b/master/fsm_coe.c Wed Sep 24 08:48:23 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 Wed Aug 27 15:52:24 2008 +0000
+++ b/master/fsm_master.c Wed Sep 24 08:48:23 2008 +0000
@@ -435,8 +435,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;
--- a/tool/CommandSlaves.cpp Wed Aug 27 15:52:24 2008 +0000
+++ b/tool/CommandSlaves.cpp Wed Sep 24 08:48:23 2008 +0000
@@ -189,8 +189,6 @@
)
{
SlaveList::const_iterator si;
- list<string> protoList;
- list<string>::const_iterator protoIter;
for (si = slaves.begin(); si != slaves.end(); si++) {
cout << "=== Slave " << dec << si->position << " ===" << endl;
@@ -213,6 +211,9 @@
<< setw(8) << si->serial_number << endl;
if (si->mailbox_protocols) {
+ list<string> protoList;
+ list<string>::const_iterator protoIter;
+
cout << "Mailboxes:" << endl
<< " RX: 0x"
<< hex << setw(4) << si->rx_mailbox_offset << "/"