--- a/master/fsm_slave_config.c Thu Mar 11 16:50:27 2010 +0100
+++ b/master/fsm_slave_config.c Fri Mar 19 10:48:16 2010 +0100
@@ -812,7 +812,7 @@
}
// All SDOs are now configured.
- ec_fsm_slave_config_enter_soe_conf(fsm);
+ ec_fsm_slave_config_enter_soe_conf(fsm);
}
/*****************************************************************************/
@@ -824,7 +824,7 @@
)
{
ec_slave_t *slave = fsm->slave;
- ec_fsm_soe_t *fsm_soe = &slave->fsm.fsm_soe;
+ ec_fsm_soe_t *fsm_soe = &slave->fsm.fsm_soe;
if (!slave->config) {
ec_fsm_slave_config_enter_pdo_sync(fsm);
@@ -842,9 +842,10 @@
fsm->soe_request = list_entry(fsm->slave->config->soe_configs.next,
ec_soe_request_t, list);
ec_soe_request_copy(&fsm->soe_request_copy, fsm->soe_request);
- ec_soe_request_write(&fsm->soe_request_copy);
+ ec_soe_request_write(&fsm->soe_request_copy);
ec_fsm_soe_transfer(fsm_soe, fsm->slave, &fsm->soe_request_copy);
ec_fsm_soe_exec(fsm_soe); // execute immediately
+ ec_master_queue_external_datagram(slave->master, fsm_soe->datagram);
}
/*****************************************************************************/
@@ -856,11 +857,12 @@
)
{
ec_slave_t *slave = fsm->slave;
- ec_fsm_soe_t *fsm_soe = &slave->fsm.fsm_soe;
+ ec_fsm_soe_t *fsm_soe = &slave->fsm.fsm_soe;
if (ec_fsm_soe_exec(fsm_soe)) {
- return;
- }
+ ec_master_queue_external_datagram(slave->master, fsm_soe->datagram);
+ return;
+ }
if (!ec_fsm_soe_success(fsm_soe)) {
EC_ERR("SoE configuration failed for slave %u.\n",
@@ -883,6 +885,7 @@
ec_soe_request_write(&fsm->soe_request_copy);
ec_fsm_soe_transfer(fsm_soe, fsm->slave, &fsm->soe_request_copy);
ec_fsm_soe_exec(fsm_soe); // execute immediately
+ ec_master_queue_external_datagram(slave->master, fsm_soe->datagram);
return;
}