diff --git a/master/master.c b/master/master.c index 33677da1..50c07084 100644 --- a/master/master.c +++ b/master/master.c @@ -1305,6 +1305,40 @@ ec_slave_t *ec_master_find_slave( return NULL; } +/*****************************************************************************/ + +unsigned int ec_master_domain_count( + const ec_master_t *master /**< EtherCAT master. */ + ) +{ + const ec_domain_t *domain; + unsigned int count = 0; + + list_for_each_entry(domain, &master->domains, list) { + count++; + } + + return count; +} + +/*****************************************************************************/ + +ec_domain_t *ec_master_find_domain( + ec_master_t *master, /**< EtherCAT master. */ + unsigned int index /**< Domain index. */ + ) +{ + ec_domain_t *domain; + + list_for_each_entry(domain, &master->domains, list) { + if (index--) + continue; + return domain; + } + + return NULL; +} + /****************************************************************************** * Realtime interface *****************************************************************************/ diff --git a/master/master.h b/master/master.h index 29ea1b34..e3d271ab 100644 --- a/master/master.h +++ b/master/master.h @@ -197,6 +197,9 @@ void ec_master_clear_eoe_handlers(ec_master_t *); #endif void ec_master_destroy_slaves(ec_master_t *); +unsigned int ec_master_domain_count(const ec_master_t *); +ec_domain_t *ec_master_find_domain(ec_master_t *, unsigned int); + /*****************************************************************************/ #endif