master/fsm_master.c
changeset 1400 3c4923051e43
parent 1388 3c886ec376f5
child 1402 4c1203ec569d
--- a/master/fsm_master.c	Fri Apr 17 12:03:12 2009 +0000
+++ b/master/fsm_master.c	Fri Apr 17 12:41:57 2009 +0000
@@ -73,6 +73,7 @@
     fsm->datagram = datagram;
     fsm->state = ec_fsm_master_state_start;
     fsm->idle = 0;
+    fsm->link_state = 0;
     fsm->slaves_responding = 0;
     fsm->topology_change_pending = 0;
     fsm->slave_states = EC_SLAVE_STATE_UNKNOWN;
@@ -194,6 +195,16 @@
         EC_INFO("%u slave(s) responding.\n", fsm->slaves_responding);
     }
 
+    if (fsm->link_state && !master->main_device.link_state) { // link went down
+        // clear slave list
+#ifdef EC_EOE
+        ec_master_eoe_stop(master);
+        ec_master_clear_eoe_handlers(master);
+#endif
+        ec_master_clear_slaves(master);
+    }
+    fsm->link_state = master->main_device.link_state;
+
     if (datagram->state != EC_DATAGRAM_RECEIVED) { // link is down
         ec_fsm_master_restart(fsm);
         return;