From 281fd62849c59a0ad6b927fab6578fbc253b35ac Mon Sep 17 00:00:00 2001
From: Florian Pose <fp@igh-essen.com>
Date: Sat, 5 Aug 2006 07:11:59 +0000
Subject: [PATCH] New transition in slave conf state machine: Skip fmmu and SDO
 configuration.

---
 master/fsm.c | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/master/fsm.c b/master/fsm.c
index 9d30e4af..87406b41 100644
--- a/master/fsm.c
+++ b/master/fsm.c
@@ -1382,11 +1382,18 @@ void ec_fsm_slaveconf_preop(ec_fsm_t *fsm /**< finite state machine */)
         return;
     }
 
-    if (!slave->base_fmmu_count) {
-        fsm->slave_state = ec_fsm_slaveconf_saveop;
-        fsm->change_new = EC_SLAVE_STATE_SAVEOP;
-        fsm->change_state = ec_fsm_change_start;
-        fsm->change_state(fsm); // execute immediately
+    if (!slave->base_fmmu_count) { // skip FMMU configuration
+        if (list_empty(&slave->sdo_confs)) { // skip SDO configuration
+            fsm->slave_state = ec_fsm_slaveconf_saveop;
+            fsm->change_new = EC_SLAVE_STATE_SAVEOP;
+            fsm->change_state = ec_fsm_change_start;
+            fsm->change_state(fsm); // execute immediately
+            return;
+        }
+        fsm->slave_state = ec_fsm_slaveconf_sdoconf;
+        fsm->sdodata = list_entry(slave->sdo_confs.next, ec_sdo_data_t, list);
+        fsm->coe_state = ec_fsm_coe_down_start;
+        fsm->coe_state(fsm); // execute immediately
         return;
     }
 
@@ -1424,7 +1431,7 @@ void ec_fsm_slaveconf_fmmu(ec_fsm_t *fsm /**< finite state machine */)
     }
 
     // No CoE configuration to be applied? Jump to SAVEOP state.
-    if (list_empty(&slave->sdo_confs)) {
+    if (list_empty(&slave->sdo_confs)) { // skip SDO configuration
         // set state to SAVEOP
         fsm->slave_state = ec_fsm_slaveconf_saveop;
         fsm->change_new = EC_SLAVE_STATE_SAVEOP;
-- 
GitLab