master/fsm_slave_config.c
changeset 1180 846907b8cc4b
parent 1174 235f34ca50e2
child 1225 4d5b739edcb5
child 1647 dd648d1786e9
--- a/master/fsm_slave_config.c	Fri Aug 01 08:11:23 2008 +0000
+++ b/master/fsm_slave_config.c	Fri Aug 01 08:58:35 2008 +0000
@@ -61,6 +61,7 @@
 void ec_fsm_slave_config_enter_mbox_sync(ec_fsm_slave_config_t *);
 void ec_fsm_slave_config_enter_preop(ec_fsm_slave_config_t *);
 void ec_fsm_slave_config_enter_sdo_conf(ec_fsm_slave_config_t *);
+void ec_fsm_slave_config_enter_pdo_conf(ec_fsm_slave_config_t *);
 void ec_fsm_slave_config_enter_pdo_sync(ec_fsm_slave_config_t *);
 void ec_fsm_slave_config_enter_fmmu(ec_fsm_slave_config_t *);
 void ec_fsm_slave_config_enter_safeop(ec_fsm_slave_config_t *);
@@ -440,7 +441,7 @@
 
     // No CoE configuration to be applied?
     if (list_empty(&slave->config->sdo_configs)) { // skip Sdo configuration
-        ec_fsm_slave_config_enter_pdo_sync(fsm);
+        ec_fsm_slave_config_enter_pdo_conf(fsm);
         return;
     }
 
@@ -482,6 +483,39 @@
     }
 
     // All Sdos are now configured.
+    ec_fsm_slave_config_enter_pdo_conf(fsm);
+}
+
+/*****************************************************************************/
+
+/** PDO_CONF entry function.
+ */
+void ec_fsm_slave_config_enter_pdo_conf(
+        ec_fsm_slave_config_t *fsm /**< slave state machine */
+        )
+{
+    // Start configuring Pdos
+    ec_fsm_pdo_start_configuration(fsm->fsm_pdo, fsm->slave);
+    fsm->state = ec_fsm_slave_config_state_pdo_conf;
+    fsm->state(fsm); // execute immediately
+}
+
+/*****************************************************************************/
+
+/** Slave configuration state: PDO_CONF.
+ */
+void ec_fsm_slave_config_state_pdo_conf(
+        ec_fsm_slave_config_t *fsm /**< slave state machine */
+        )
+{
+    if (ec_fsm_pdo_exec(fsm->fsm_pdo))
+        return;
+
+    if (!ec_fsm_pdo_success(fsm->fsm_pdo)) {
+        EC_WARN("Pdo configuration failed on slave %u.\n",
+                fsm->slave->ring_position);
+    }
+
     ec_fsm_slave_config_enter_pdo_sync(fsm);
 }
 
@@ -509,7 +543,7 @@
 
     if (slave->sii.sync_count <= offset) {
         // no Pdo sync managers to configure
-        ec_fsm_slave_config_enter_safeop(fsm);
+        ec_fsm_slave_config_enter_fmmu(fsm);
         return;
     }
 
@@ -565,28 +599,6 @@
         return;
     }
 
-    // Start configuring Pdos
-    ec_fsm_pdo_start_configuration(fsm->fsm_pdo, fsm->slave);
-    fsm->state = ec_fsm_slave_config_state_pdo_conf;
-    fsm->state(fsm); // execute immediately
-}
-
-/*****************************************************************************/
-
-/** Slave configuration state: PDO_CONF.
- */
-void ec_fsm_slave_config_state_pdo_conf(
-        ec_fsm_slave_config_t *fsm /**< slave state machine */
-        )
-{
-    if (ec_fsm_pdo_exec(fsm->fsm_pdo))
-        return;
-
-    if (!ec_fsm_pdo_success(fsm->fsm_pdo)) {
-        EC_WARN("Pdo configuration failed on slave %u.\n",
-                fsm->slave->ring_position);
-    }
-
     ec_fsm_slave_config_enter_fmmu(fsm);
 }