master/domain.c
changeset 104 052bc82d5442
parent 101 b0c19892145a
child 105 fad6709a526f
--- a/master/domain.c	Wed Mar 15 20:19:05 2006 +0000
+++ b/master/domain.c	Fri Mar 17 14:21:35 2006 +0000
@@ -21,15 +21,10 @@
 */
 
 void ec_domain_init(ec_domain_t *domain, /**< Domäne */
-                    ec_master_t *master, /**< Zugehöriger Master */
-                    ec_domain_mode_t mode, /**< Synchron/Asynchron */
-                    unsigned int timeout_us /**< Timeout in Mikrosekunden */
+                    ec_master_t *master /**< Zugehöriger Master */
                     )
 {
     domain->master = master;
-    domain->mode = mode;
-    domain->timeout_us = timeout_us;
-
     domain->data = NULL;
     domain->data_size = 0;
     domain->commands = NULL;
@@ -232,28 +227,27 @@
    \return Zeiger auf den Slave bei Erfolg, sonst NULL
 */
 
-ec_slave_t *EtherCAT_rt_register_slave_field(ec_domain_t *domain,
-                                             /**< Domäne */
-                                             const char *address,
-                                             /**< ASCII-Addresse des Slaves,
-                                                siehe ec_master_slave_address()
-                                             */
-                                             const char *vendor_name,
-                                             /**< Herstellername */
-                                             const char *product_name,
-                                             /**< Produktname */
-                                             void **data_ptr,
-                                             /**< Adresse des Zeigers auf die
-                                                Prozessdaten */
-                                             ec_field_type_t field_type,
-                                             /**< Typ des Datenfeldes */
-                                             unsigned int field_index,
-                                             /**< Gibt an, ab welchem Feld mit
-                                                Typ \a field_type gezählt
-                                                werden soll. */
-                                             unsigned int field_count
-                                             /**< Anzahl Felder selben Typs */
-                                             )
+ec_slave_t *ecrt_domain_register_field(ec_domain_t *domain,
+                                       /**< Domäne */
+                                       const char *address,
+                                       /**< ASCII-Addresse des Slaves,
+                                          siehe ec_master_slave_address() */
+                                       const char *vendor_name,
+                                       /**< Herstellername */
+                                       const char *product_name,
+                                       /**< Produktname */
+                                       void **data_ptr,
+                                       /**< Adresse des Zeigers auf die
+                                          Prozessdaten */
+                                       const char *field_name,
+                                       /**< Name des Datenfeldes */
+                                       unsigned int field_index,
+                                       /**< Gibt an, ab welchem Feld mit
+                                          Typ \a field_type gezählt
+                                          werden soll. */
+                                       unsigned int field_count
+                                       /**< Anzahl Felder selben Typs */
+                                       )
 {
     ec_slave_t *slave;
     const ec_slave_type_t *type;
@@ -293,7 +287,7 @@
         field_offset = 0;
         for (j = 0; sync->fields[j]; j++) {
             field = sync->fields[j];
-            if (field->type == field_type) {
+            if (!strcmp(field->name, field_name)) {
                 if (field_idx == field_index) {
                     ec_domain_reg_field(domain, slave, sync, field_offset,
                                         data_ptr++);
@@ -305,9 +299,9 @@
         }
     }
 
-    EC_ERR("Slave %i (\"%s %s\") registration mismatch: Type %i, index %i,"
-           " count %i.\n", slave->ring_position, vendor_name, product_name,
-           field_type, field_index, field_count);
+    EC_ERR("Slave %i (\"%s %s\") registration mismatch: Field \"%s\","
+           " index %i, count %i.\n", slave->ring_position, vendor_name,
+           product_name, field_name, field_index, field_count);
     return NULL;
 }
 
@@ -321,23 +315,21 @@
    \return 0 bei Erfolg, sonst < 0
 */
 
-int EtherCAT_rt_register_domain_fields(ec_domain_t *domain,
-                                       /**< Domäne */
-                                       ec_field_init_t *fields
-                                       /**< Array mit Datenfeldern */
-                                       )
+int ecrt_domain_register_field_list(ec_domain_t *domain,
+                                    /**< Domäne */
+                                    ec_field_init_t *fields
+                                    /**< Array mit Datenfeldern */
+                                    )
 {
     ec_field_init_t *field;
 
-    for (field = fields; field->data; field++) {
-        if (!EtherCAT_rt_register_slave_field(domain, field->address,
-                                              field->vendor, field->product,
-                                              field->data, field->field_type,
-                                              field->field_index,
-                                              field->field_count)) {
+    for (field = fields; field->data_ptr; field++)
+        if (!ecrt_domain_register_field(domain, field->slave_address,
+                                        field->vendor_name,
+                                        field->product_name, field->data_ptr,
+                                        field->field_name, field->field_index,
+                                        field->field_count))
             return -1;
-        }
-    }
 
     return 0;
 }
@@ -348,7 +340,7 @@
    Setzt Prozessdaten-Kommandos in die Warteschlange des Masters.
 */
 
-void EtherCAT_rt_domain_queue(ec_domain_t *domain /**< Domäne */)
+void ecrt_domain_queue(ec_domain_t *domain /**< Domäne */)
 {
     unsigned int i;
     size_t size;
@@ -372,7 +364,7 @@
    Verarbeitet empfangene Prozessdaten.
 */
 
-void EtherCAT_rt_domain_process(ec_domain_t *domain /**< Domäne */)
+void ecrt_domain_process(ec_domain_t *domain /**< Domäne */)
 {
     unsigned int working_counter_sum, i;
     ec_command_t *command;
@@ -402,10 +394,10 @@
 
 /*****************************************************************************/
 
-EXPORT_SYMBOL(EtherCAT_rt_register_slave_field);
-EXPORT_SYMBOL(EtherCAT_rt_register_domain_fields);
-EXPORT_SYMBOL(EtherCAT_rt_domain_queue);
-EXPORT_SYMBOL(EtherCAT_rt_domain_process);
+EXPORT_SYMBOL(ecrt_domain_register_field);
+EXPORT_SYMBOL(ecrt_domain_register_field_list);
+EXPORT_SYMBOL(ecrt_domain_queue);
+EXPORT_SYMBOL(ecrt_domain_process);
 
 /*****************************************************************************/