diff -r 7e9deec7742d -r 73896ef6d077 master/slave_config.c --- a/master/slave_config.c Sun Jun 06 21:32:50 2010 +0200 +++ b/master/slave_config.c Sun Jun 06 22:40:22 2010 +0200 @@ -939,14 +939,21 @@ /*****************************************************************************/ int ecrt_slave_config_idn(ec_slave_config_t *sc, uint16_t idn, - const uint8_t *data, size_t size) + ec_al_state_t state, const uint8_t *data, size_t size) { ec_slave_t *slave = sc->slave; ec_soe_request_t *req; int ret; - EC_CONFIG_DBG(sc, 1, "%s(sc = 0x%p, idn = 0x%04X, " - "data = 0x%p, size = %zu)\n", __func__, sc, idn, data, size); + EC_CONFIG_DBG(sc, 1, "%s(sc = 0x%p, idn = 0x%04X, state = %u, " + "data = 0x%p, size = %zu)\n", + __func__, sc, idn, state, data, size); + + if (state != EC_AL_STATE_PREOP && state != EC_AL_STATE_SAFEOP) { + EC_CONFIG_ERR(sc, "AL state for IDN config" + " must be PREOP or SAFEOP!\n"); + return -EINVAL; + } if (slave && !(slave->sii.mailbox_protocols & EC_MBOX_SOE)) { EC_CONFIG_WARN(sc, "Attached slave does not support SoE!\n"); @@ -961,6 +968,7 @@ ec_soe_request_init(req); ec_soe_request_set_idn(req, idn); + req->al_state = state; ret = ec_soe_request_copy_data(req, data, size); if (ret < 0) {