--- 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) {