master/fsm_master.c
changeset 830 d83d92e1a919
parent 815 002fe9ec778f
child 831 ded9519c8d6e
--- a/master/fsm_master.c	Tue Feb 26 10:25:52 2008 +0000
+++ b/master/fsm_master.c	Tue Feb 26 13:20:32 2008 +0000
@@ -87,7 +87,8 @@
     fsm->tainted = 0;
 
     // init sub-state-machines
-    ec_fsm_slave_init(&fsm->fsm_slave, fsm->datagram);
+    ec_fsm_slave_config_init(&fsm->fsm_slave_config, fsm->datagram);
+    ec_fsm_slave_scan_init(&fsm->fsm_slave_scan, fsm->datagram);
     ec_fsm_sii_init(&fsm->fsm_sii, fsm->datagram);
     ec_fsm_change_init(&fsm->fsm_change, fsm->datagram);
     ec_fsm_coe_init(&fsm->fsm_coe, fsm->datagram);
@@ -103,7 +104,8 @@
 void ec_fsm_master_clear(ec_fsm_master_t *fsm /**< master state machine */)
 {
     // clear sub-state machines
-    ec_fsm_slave_clear(&fsm->fsm_slave);
+    ec_fsm_slave_config_clear(&fsm->fsm_slave_config);
+    ec_fsm_slave_scan_clear(&fsm->fsm_slave_scan);
     ec_fsm_sii_clear(&fsm->fsm_sii);
     ec_fsm_change_clear(&fsm->fsm_change);
     ec_fsm_coe_clear(&fsm->fsm_coe);
@@ -453,8 +455,8 @@
         fsm->idle = 0;
         fsm->slave = slave;
         fsm->state = ec_fsm_master_state_configure_slave;
-        ec_fsm_slave_start_conf(&fsm->fsm_slave, slave);
-        ec_fsm_slave_exec(&fsm->fsm_slave); // execute immediately
+        ec_fsm_slave_config_start(&fsm->fsm_slave_config, slave);
+        ec_fsm_slave_config_exec(&fsm->fsm_slave_config); // execute immediately
         return 1;
     }
 
@@ -864,8 +866,8 @@
     // begin scanning of slaves
     fsm->slave = list_entry(master->slaves.next, ec_slave_t, list);
     fsm->state = ec_fsm_master_state_scan_slaves;
-    ec_fsm_slave_start_scan(&fsm->fsm_slave, fsm->slave);
-    ec_fsm_slave_exec(&fsm->fsm_slave); // execute immediately
+    ec_fsm_slave_scan_start(&fsm->fsm_slave_scan, fsm->slave);
+    ec_fsm_slave_scan_exec(&fsm->fsm_slave_scan); // execute immediately
 }
 
 /*****************************************************************************/
@@ -882,7 +884,7 @@
     ec_master_t *master = fsm->master;
     ec_slave_t *slave = fsm->slave;
 
-    if (ec_fsm_slave_exec(&fsm->fsm_slave)) // execute slave state machine
+    if (ec_fsm_slave_scan_exec(&fsm->fsm_slave_scan)) // execute slave state machine
         return;
 
 #ifdef EC_EOE
@@ -907,8 +909,8 @@
     // another slave to fetch?
     if (slave->list.next != &master->slaves) {
         fsm->slave = list_entry(slave->list.next, ec_slave_t, list);
-        ec_fsm_slave_start_scan(&fsm->fsm_slave, fsm->slave);
-        ec_fsm_slave_exec(&fsm->fsm_slave); // execute immediately
+        ec_fsm_slave_scan_start(&fsm->fsm_slave_scan, fsm->slave);
+        ec_fsm_slave_scan_exec(&fsm->fsm_slave_scan); // execute immediately
         return;
     }
 
@@ -940,10 +942,10 @@
                                    /**< master state machine */
                                    )
 {
-    if (ec_fsm_slave_exec(&fsm->fsm_slave)) // execute slave's state machine
-        return;
-
-    if (!ec_fsm_slave_success(&fsm->fsm_slave))
+    if (ec_fsm_slave_config_exec(&fsm->fsm_slave_config)) // execute slave's state machine
+        return;
+
+    if (!ec_fsm_slave_config_success(&fsm->fsm_slave_config))
         fsm->config_error = 1;
 
     // configure next slave, if necessary