diff --git a/master/fsm.c b/master/fsm.c index cf3852364e111abfdedfcfac581c01376ede9f22..4c59bff978b72c62c9a9737cf3ab4af8a0b504f2 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 5bb2fa388cdd27eb995d1189dcd15714f5e5dde2..6e5e46cc8809d53fe225d91c87fd6b4e399c7223 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 0f0fd2094abbe0d4cf85845c26afbf8f932b07b8..c3af5d243239ea76feef6f265a8f5c1f364dcb54 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 002502447f0f60c602bef5d57ac4999751c97b89..2bb8bdec5bc74108d336ffc5bc3d077851fc4230 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;