master/fsm_master.c
changeset 713 ae41cadd25b6
parent 661 bc1de1362efb
child 715 f12ff7c08623
--- a/master/fsm_master.c	Wed Sep 12 10:00:39 2007 +0000
+++ b/master/fsm_master.c	Wed Sep 12 10:07:55 2007 +0000
@@ -587,18 +587,21 @@
 
     if (datagram->state != EC_DATAGRAM_RECEIVED) {
         EC_ERR("Failed to receive AL state datagram for slave %i"
-                " (datagram state %i)\n", slave->ring_position, datagram->state);
+                " (datagram state %i)\n",
+                slave->ring_position, datagram->state);
         fsm->state = ec_fsm_master_state_error;
         return;
     }
 
     // did the slave not respond to its station address?
-    if (datagram->working_counter != 1) {
+    if (datagram->working_counter == 0) {
         ec_slave_set_online_state(slave, EC_SLAVE_OFFLINE);
         ec_fsm_master_action_next_slave_state(fsm);
         return;
     }
 
+    // FIXME what to to on multiple response?
+
     // slave responded
     ec_slave_set_state(slave, EC_READ_U8(datagram->data)); // set app state first
     ec_slave_set_online_state(slave, EC_SLAVE_ONLINE);
@@ -774,8 +777,9 @@
     }
 
     if (datagram->working_counter != 1) {
-        EC_ERR("Failed to write station address - slave %i did not respond.\n",
+        EC_ERR("Failed to write station address of slave %i: ",
                slave->ring_position);
+        ec_datagram_print_wc_error(datagram);
         fsm->state = ec_fsm_master_state_error;
         return;
     }