diff --git a/include/ecrt.h b/include/ecrt.h index 110eea5adf3dc1573eff6cfb2f446a68926e3acb..39bf82cafc7165da42ce81cb0aee64b86a905219 100644 --- a/include/ecrt.h +++ b/include/ecrt.h @@ -78,6 +78,7 @@ int ecrt_domain_register_field_list(ec_domain_t *domain, ec_field_init_t *fields); void ecrt_domain_queue(ec_domain_t *domain); void ecrt_domain_process(ec_domain_t *domain); +int ecrt_domain_state(ec_domain_t *domain); /*****************************************************************************/ // Slave Methods diff --git a/master/domain.c b/master/domain.c index ac73d7e2bbeca3b835602e72c7f5062a41470c88..72b4c9ba7eb6d0a9d0c2306ddfad4cff0926638e 100644 --- a/master/domain.c +++ b/master/domain.c @@ -394,10 +394,32 @@ void ecrt_domain_process(ec_domain_t *domain /**< Dom /*****************************************************************************/ +/** + Gibt den Status einer Domäne zurück. + + \return 0 wenn alle Kommandos empfangen wurden, sonst -1. +*/ + +int ecrt_domain_state(ec_domain_t *domain /**< Domäne */) +{ + unsigned int i; + ec_command_t *command; + + for (i = 0; i < domain->command_count; i++) { + command = domain->commands + i; + if (command->state != EC_CMD_RECEIVED) return -1; + } + + return 0; +} + +/*****************************************************************************/ + EXPORT_SYMBOL(ecrt_domain_register_field); EXPORT_SYMBOL(ecrt_domain_register_field_list); EXPORT_SYMBOL(ecrt_domain_queue); EXPORT_SYMBOL(ecrt_domain_process); +EXPORT_SYMBOL(ecrt_domain_state); /*****************************************************************************/