master/fsm_coe.c
changeset 825 3771f5a0ed90
parent 814 a51f857b1b2d
child 831 ded9519c8d6e
--- a/master/fsm_coe.c	Fri Feb 22 18:22:05 2008 +0000
+++ b/master/fsm_coe.c	Fri Feb 22 18:25:44 2008 +0000
@@ -249,6 +249,12 @@
     ec_slave_t *slave = fsm->slave;
     uint8_t *data;
 
+    if (!(slave->sii_mailbox_protocols & EC_MBOX_COE)) {
+        EC_ERR("Slave %u does not support CoE!\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;
@@ -955,6 +961,12 @@
         EC_DBG("Downloading Sdo 0x%04X:%i to slave %i.\n",
                sdodata->index, sdodata->subindex, slave->ring_position);
 
+    if (!(slave->sii_mailbox_protocols & EC_MBOX_COE)) {
+        EC_ERR("Slave %u does not support CoE!\n", slave->ring_position);
+        fsm->state = ec_fsm_coe_error;
+        return;
+    }
+
     if (slave->sii_rx_mailbox_size < 6 + 10 + sdodata->size) {
         EC_ERR("Sdo fragmenting not supported yet!\n");
         fsm->state = ec_fsm_coe_error;
@@ -1170,6 +1182,12 @@
         EC_DBG("Uploading Sdo 0x%04X:%i from slave %i.\n",
                entry->sdo->index, entry->subindex, slave->ring_position);
 
+    if (!(slave->sii_mailbox_protocols & EC_MBOX_COE)) {
+        EC_ERR("Slave %u does not support CoE!\n", slave->ring_position);
+        fsm->state = ec_fsm_coe_error;
+        return;
+    }
+
     if (!(data = ec_slave_mbox_prepare_send(slave, datagram, 0x03, 10))) {
         fsm->state = ec_fsm_coe_error;
         return;