diff --git a/master/slave_config.c b/master/slave_config.c index 30f176f5..df57917e 100644 --- a/master/slave_config.c +++ b/master/slave_config.c @@ -357,6 +357,26 @@ const ec_sdo_request_t *ec_slave_config_get_sdo_by_pos_const( /*****************************************************************************/ +/** Finds a VoE handler via its position in the list. + */ +ec_sdo_request_t *ec_slave_config_find_sdo_request( + ec_slave_config_t *sc, /**< Slave configuration. */ + unsigned int pos /**< Position in the list. */ + ) +{ + ec_sdo_request_t *req; + + list_for_each_entry(req, &sc->sdo_requests, list) { + if (pos--) + continue; + return req; + } + + return NULL; +} + +/*****************************************************************************/ + /** Finds a VoE handler via its position in the list. */ ec_voe_handler_t *ec_slave_config_find_voe_handler( diff --git a/master/slave_config.h b/master/slave_config.h index 8d98e5a9..2a02f6f1 100644 --- a/master/slave_config.h +++ b/master/slave_config.h @@ -82,6 +82,8 @@ void ec_slave_config_load_default_sync_config(ec_slave_config_t *); unsigned int ec_slave_config_sdo_count(const ec_slave_config_t *); const ec_sdo_request_t *ec_slave_config_get_sdo_by_pos_const( const ec_slave_config_t *, unsigned int); +ec_sdo_request_t *ec_slave_config_find_sdo_request(ec_slave_config_t *, + unsigned int); ec_voe_handler_t *ec_slave_config_find_voe_handler(ec_slave_config_t *, unsigned int);