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);
 
 /*****************************************************************************/