diff -r c0e6adec1aee -r 846907b8cc4b master/fsm_slave_config.c --- 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); }