master/domain.c
changeset 2610 f0fdcce9874b
parent 2589 2b9c78543663
child 2611 f09b0623a2c1
--- a/master/domain.c	Thu Mar 26 15:16:21 2015 -0400
+++ b/master/domain.c	Thu Mar 26 17:41:57 2015 -0400
@@ -130,8 +130,8 @@
     list_add_tail(&fmmu->list, &domain->fmmu_configs);
 
     EC_MASTER_DBG(domain->master, 1, "Domain %u:"
-            " Added %u bytes, total %zu.\n",
-            domain->index, fmmu->data_size, domain->data_size);
+            " Added %u bytes.\n",
+            domain->index, fmmu->data_size);
 }
 
 /*****************************************************************************/
@@ -237,6 +237,15 @@
     const ec_datagram_pair_t *datagram_pair;
     int ret;
 
+#if 0
+    // Determine domain size from furthest extent of FMMU data
+    domain->data_size = 0;
+    list_for_each_entry(fmmu, &domain->fmmu_configs, list) {
+        domain->data_size = max(domain->data_size,
+            fmmu->logical_domain_offset + fmmu->data_size);
+    }
+#endif
+
     domain->logical_base_address = base_address;
 
     if (domain->data_size && domain->data_origin == EC_ORIG_INTERNAL) {
@@ -265,10 +274,6 @@
     }
 
     list_for_each_entry(fmmu, &domain->fmmu_configs, list) {
-
-        // Correct logical FMMU address
-        fmmu->logical_start_address += base_address;
-
         // Increment Input/Output counter to determine datagram types
         // and calculate expected working counters
         if (shall_count(fmmu, datagram_first_fmmu)) {
@@ -503,19 +508,17 @@
                     continue;
                 }
 
-                if (fmmu->logical_start_address >=
-                        logical_datagram_address + datagram_size) {
+                if (fmmu->logical_domain_offset >= datagram_size) {
                     // fmmu data contained in next datagram pair
                     break;
                 }
 
-                datagram_offset =
-                    fmmu->logical_start_address - logical_datagram_address;
+                datagram_offset = fmmu->logical_domain_offset;
 
 #if DEBUG_REDUNDANCY
                 EC_MASTER_DBG(domain->master, 1,
-                        "input fmmu log=%u size=%u offset=%u\n",
-                        fmmu->logical_start_address, fmmu->data_size,
+                        "input fmmu log_off=%u size=%u offset=%u\n",
+                        fmmu->logical_domain_offset, fmmu->data_size,
                         datagram_offset);
                 if (domain->master->debug_level > 0) {
                     ec_print_data(pair->send_buffer + datagram_offset,