master/slave_config.c
changeset 1944 73896ef6d077
parent 1933 d11036537092
child 1952 7d9fb723fc4b
--- 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) {