From 4279687952d70788f874d7b69d1e956b57c11c3f Mon Sep 17 00:00:00 2001
From: Florian Pose <fp@igh-essen.com>
Date: Tue, 27 Jun 2006 19:46:25 +0000
Subject: [PATCH] Introducing infrastructural slaves that do not contain
 process data.

---
 master/fsm.c   | 4 +++-
 master/slave.c | 2 ++
 master/types.c | 2 +-
 master/types.h | 1 +
 4 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/master/fsm.c b/master/fsm.c
index cf385236..4c59bff9 100644
--- a/master/fsm.c
+++ b/master/fsm.c
@@ -636,7 +636,9 @@ void ec_fsm_master_scan(ec_fsm_t *fsm /**< finite state machine */)
             }
 
             // determine initial state.
-            if ((slave->type && slave->type->special == EC_TYPE_BUS_COUPLER)) {
+            if ((slave->type &&
+		 (slave->type->special == EC_TYPE_BUS_COUPLER ||
+		  slave->type->special == EC_TYPE_INFRA))) {
                 slave->requested_state = EC_SLAVE_STATE_OP;
             }
             else {
diff --git a/master/slave.c b/master/slave.c
index 5bb2fa38..6e5e46cc 100644
--- a/master/slave.c
+++ b/master/slave.c
@@ -1369,6 +1369,8 @@ ssize_t ec_show_slave_attribute(struct kobject *kobj, /**< slave's kobject */
         if (slave->type) {
             if (slave->type->special == EC_TYPE_BUS_COUPLER)
                 return sprintf(buffer, "coupler\n");
+	    else if (slave->type->special == EC_TYPE_INFRA)
+                return sprintf(buffer, "infrastructure\n");
             else
                 return sprintf(buffer, "normal\n");
         }
diff --git a/master/types.c b/master/types.c
index 0f0fd209..c3af5d24 100644
--- a/master/types.c
+++ b/master/types.c
@@ -61,7 +61,7 @@ const ec_slave_type_t Beckhoff_EK1100 = {
 /*****************************************************************************/
 
 const ec_slave_type_t Beckhoff_EK1110 = {
-    "Beckhoff", "EK1110", "Extension terminal", EC_TYPE_NORMAL,
+    "Beckhoff", "EK1110", "Extension terminal", EC_TYPE_INFRA,
     {NULL} // no sync managers
 };
 
diff --git a/master/types.h b/master/types.h
index 00250244..2bb8bdec 100644
--- a/master/types.h
+++ b/master/types.h
@@ -60,6 +60,7 @@ typedef enum
 {
     EC_TYPE_NORMAL, /**< no special slave */
     EC_TYPE_BUS_COUPLER, /**< slave is a bus coupler */
+    EC_TYPE_INFRA, /**< infrastructure slaves, that contain no process data */
     EC_TYPE_EOE /**< slave is an EoE switch */
 }
 ec_special_type_t;
-- 
GitLab