Index: /trunk/FACT++/src/HeadersFAD.h
===================================================================
--- /trunk/FACT++/src/HeadersFAD.h	(revision 10972)
+++ /trunk/FACT++/src/HeadersFAD.h	(revision 10973)
@@ -33,4 +33,6 @@
     enum Commands
     {
+        kCmdWriteExecute      = 0x0400,         // Configure FAD with the current config ram
+
         kCmdWrite             = 0x0500,         // write to Config-RAM
         kCmdWriteRoi          = kCmdWrite|0x00, // Baseaddress ROI-Values
Index: /trunk/FACT++/src/fad.cc
===================================================================
--- /trunk/FACT++/src/fad.cc	(revision 10972)
+++ /trunk/FACT++/src/fad.cc	(revision 10973)
@@ -32,5 +32,4 @@
 
     double   fStartTime;
-    uint32_t fRunNumber;
 
     void AsyncRead(ba::mutable_buffers_1 buffers)
@@ -72,5 +71,8 @@
 
     FAD::EventHeader   fHeader;
+    FAD::EventHeader   fRam;
     FAD::ChannelHeader fChHeader[kNumChannels];
+
+    uint16_t fRamRoi[kNumChannels];
 
     ba::deadline_timer fTriggerSendData;
@@ -89,6 +91,4 @@
         fHeader.fEventCounter++;
         fHeader.fTimeStamp = uint32_t((Time(Time::utc).UnixTime()-fStartTime)*10000);
-        fHeader.fRunNumber = fRunNumber;
-
 
         fBuffer.resize(0);
@@ -228,4 +228,12 @@
                 cout << "-> Trigger" << endl;
                 SendData();
+                break;
+
+            case kCmdWriteExecute:
+                cout << "-> Execute" << endl;
+                memcpy(fHeader.fDac, fRam.fDac, sizeof(fHeader.fDac));
+                for (int i=0; i<kNumChannels; i++)
+                    fChHeader[i].fRegionOfInterest = fRamRoi[i];
+                fHeader.fRunNumber = fRam.fRunNumber;
                 break;
 
@@ -270,21 +278,22 @@
         {
         case kCmdWriteRunNumberMSW:
-            fRunNumber &= 0xffff;
-            fRunNumber |= fBufCommand[0]<<16;
+            fRam.fRunNumber &= 0xffff;
+            fRam.fRunNumber |= fBufCommand[0]<<16;
             cout << "-> Set RunNumber MSW" << endl;
             break;
         case kCmdWriteRunNumberLSW:
-            fRunNumber &= 0xffff0000;
-            fRunNumber |= fBufCommand[0];
+            fRam.fRunNumber &= 0xffff0000;
+            fRam.fRunNumber |= fBufCommand[0];
             cout << "-> Set RunNumber LSW" << endl;
             break;
         case kCmdWriteRoi:
             cout << "-> Set Roi[" << fCommand[1] << "]=" << fBufCommand[0] << endl;
-            fChHeader[fCommand[1]].fRegionOfInterest = fBufCommand[0];
+            //fChHeader[fCommand[1]].fRegionOfInterest = fBufCommand[0];
+            fRamRoi[fCommand[1]] = fBufCommand[0];
             break;
 
         case kCmdWriteDac:
             cout << "-> Set Dac[" << fCommand[1] << "]=" << fBufCommand[0] << endl;
-            fHeader.fDac[fCommand[1]] = fBufCommand[0];
+            fRam.fDac[fCommand[1]] = fBufCommand[0];
             break;
         }
@@ -310,9 +319,9 @@
         fTriggerEnabled=false;
         fCommandSocket=true;
-        fRunNumber = 1;
 
         fHeader.fStartDelimiter = FAD::kDelimiterStart;
         fHeader.fVersion = 0x104;
         fHeader.fBoardId = (fBoardId%10) | ((fBoardId/10)<<8);
+        fHeader.fRunNumber = 1;
         fHeader.fStatus = 0xf<<12 |
             FAD::EventHeader::kDenable    |
Index: /trunk/FACT++/src/fadctrl.cc
===================================================================
--- /trunk/FACT++/src/fadctrl.cc	(revision 10972)
+++ /trunk/FACT++/src/fadctrl.cc	(revision 10973)
@@ -378,4 +378,5 @@
 
         PostCmd(FAD::kCmdWriteRate, val);//uint8_t(1000./val/12.5));
+        PostCmd(FAD::kCmdWriteExecute);
         //PostCmd(kCmdContTriggerRate, uint8_t(80/val));
 
@@ -387,4 +388,5 @@
         PostCmd(FAD::kCmdWriteRunNumberLSW, num&0xffff);
         PostCmd(FAD::kCmdWriteRunNumberMSW, num>>16);
+        PostCmd(FAD::kCmdWriteExecute);
     }
 
@@ -394,4 +396,5 @@
         // Allowed value: [0, MAX_VAL]
         PostCmd(FAD::kCmdWrite + addr, val);
+        PostCmd(FAD::kCmdWriteExecute);
     }
 
@@ -401,5 +404,5 @@
             return false;
 
-        PostCmd(FAD::kCmdWriteDac + addr, val);
+        PostCmd(FAD::kCmdWriteExecute);
         return true;
     }
@@ -414,4 +417,5 @@
             for (unsigned int i=0; i<=FAD::kMaxRoiAddr; i++)
                 PostCmd(FAD::kCmdWriteRoi + i, val);
+            PostCmd(FAD::kCmdWriteExecute);
             return true;
         }
@@ -421,4 +425,5 @@
 
         PostCmd(FAD::kCmdWriteRoi + addr, val);
+        PostCmd(FAD::kCmdWriteExecute);
         return true;
     }
