master/fsm_slave_config.c
changeset 1338 eb31b5a135da
parent 1337 0253c74d0940
child 1342 a72b9b370277
--- a/master/fsm_slave_config.c	Mon Jan 26 13:22:05 2009 +0000
+++ b/master/fsm_slave_config.c	Mon Jan 26 13:28:19 2009 +0000
@@ -312,6 +312,10 @@
         ec_sync_page(&sync, 0, slave->sii.boot_rx_mailbox_size,
                 EC_DIR_INVALID, // use default direction
                 datagram->data);
+        slave->configured_rx_mailbox_offset =
+            slave->sii.boot_rx_mailbox_offset;
+        slave->configured_rx_mailbox_size =
+            slave->sii.boot_rx_mailbox_size;
 
         ec_sync_init(&sync, slave);
         sync.physical_start_address = slave->sii.boot_tx_mailbox_offset;
@@ -320,6 +324,11 @@
         ec_sync_page(&sync, 1, slave->sii.boot_tx_mailbox_size,
                 EC_DIR_INVALID, // use default direction
                 datagram->data + EC_SYNC_PAGE_SIZE);
+        slave->configured_tx_mailbox_offset =
+            slave->sii.boot_tx_mailbox_offset;
+        slave->configured_tx_mailbox_size =
+            slave->sii.boot_tx_mailbox_size;
+
     } else if (slave->sii.sync_count >= 2) { // mailbox configuration provided
         ec_datagram_fpwr(datagram, slave->station_address, 0x0800,
                 EC_SYNC_PAGE_SIZE * slave->sii.sync_count);
@@ -331,6 +340,15 @@
                     EC_DIR_INVALID, // use default direction
                     datagram->data + EC_SYNC_PAGE_SIZE * i);
         }
+
+        slave->configured_rx_mailbox_offset =
+            slave->sii.syncs[0].physical_start_address;
+        slave->configured_rx_mailbox_size =
+            slave->sii.syncs[0].default_length;
+        slave->configured_tx_mailbox_offset =
+            slave->sii.syncs[1].physical_start_address;
+        slave->configured_tx_mailbox_size =
+            slave->sii.syncs[1].default_length;
     } else { // no mailbox sync manager configurations provided
         ec_sync_t sync;
 
@@ -350,6 +368,10 @@
         ec_sync_page(&sync, 0, slave->sii.std_rx_mailbox_size,
                 EC_DIR_INVALID, // use default direction
                 datagram->data);
+        slave->configured_rx_mailbox_offset =
+            slave->sii.std_rx_mailbox_offset;
+        slave->configured_rx_mailbox_size =
+            slave->sii.std_rx_mailbox_size;
 
         ec_sync_init(&sync, slave);
         sync.physical_start_address = slave->sii.std_tx_mailbox_offset;
@@ -358,6 +380,10 @@
         ec_sync_page(&sync, 1, slave->sii.std_tx_mailbox_size,
                 EC_DIR_INVALID, // use default direction
                 datagram->data + EC_SYNC_PAGE_SIZE);
+        slave->configured_tx_mailbox_offset =
+            slave->sii.boot_tx_mailbox_offset;
+        slave->configured_tx_mailbox_size =
+            slave->sii.boot_tx_mailbox_size;
     }
 
     fsm->retries = EC_FSM_RETRIES;