Index: trunk/FACT++/src/fadctrl.cc
===================================================================
--- trunk/FACT++/src/fadctrl.cc	(revision 11496)
+++ trunk/FACT++/src/fadctrl.cc	(revision 11498)
@@ -1066,5 +1066,5 @@
     int StartConfigure(const EventImp &evt)
     {
-        const string name = evt.GetText();
+        const string name = evt.Ptr<char>(16);
 
         fTargetConfig = fConfigs.find(name);
@@ -1075,5 +1075,5 @@
         }
 
-        const uint32_t runno = StartNewRun();
+        const uint32_t runno = StartNewRun(evt.Get<uint64_t>(), evt.Get<uint64_t>(8));
 
         ostringstream str;
@@ -1616,5 +1616,5 @@
             "|val[short]:Value to be set");
 
-        T::AddEvent("CONFIGURE", "C", FAD::kConnected, FAD::kConfigured)
+        T::AddEvent("CONFIGURE", "X:2;C", FAD::kConnected, FAD::kConfigured)
             (bind(&StateMachineFAD::StartConfigure, this, placeholders::_1))
             ("");
Index: trunk/FACT++/src/mcp.cc
===================================================================
--- trunk/FACT++/src/mcp.cc	(revision 11496)
+++ trunk/FACT++/src/mcp.cc	(revision 11498)
@@ -211,11 +211,53 @@
     }
 
-    string fRunType;
+    uint64_t fMaxTime;
+    uint64_t fNumEvents;
+    string   fRunType;
 
     int StartRun(const EventImp &evt)
     {
-        Message("Starting configuration '"+evt.GetString()+"' for new run.");
-        fRunType = evt.GetString();
+        fMaxTime   = evt.Get<int64_t>();
+        fNumEvents = evt.Get<int64_t>(8);
+        fRunType   = evt.Ptr<char>(16);
+
+        ostringstream str;
+        str << "Starting configuration '" << fRunType << "' for new run";
+        if (fNumEvents>0 || fMaxTime>0)
+            str << " [";
+            str << fNumEvents << " events"
+        if (fNumEvents>0 && fMaxTime>0)
+            str << " / ";
+        if (fMaxTime>0)
+            str << fMaxTime << "s";
+        if (fNumEvents>0 || fMaxTime>0)
+            str << "]";
+        Message(str);
+
         return kStateConfiguring1;
+    }
+
+    void ConfigureFAD()
+    {
+        struct Value
+        {
+            uint64_t time;
+            uint64_t nevts;
+            char type[];
+        };
+
+        const size_t len = sizeof(Value)+fRunType.length()+1;
+
+        char *buf = new char[len];
+
+        Value *val = reinterpret_cast<Value*>(buf);
+
+        val->time  = fMaxTime;
+        val->nevts = fNumEvents;
+
+        strcpy(val->type, fRunType.c_str());
+
+        Dim::SendCommand("FAD_CONTROL/CONFIGURE", buf, len);
+
+        delete buf;
     }
 
@@ -251,5 +293,6 @@
                     return GetCurrentState();
 
-                Dim::SendCommand("FAD_CONTROL/CONFIGURE", fRunType);
+                Message("Starting FAD");
+                ConfigureFAD();
                 return kStateConfiguring3;
             }
@@ -261,7 +304,5 @@
                     return GetCurrentState();
 
-                Message("START DATA TAKING");
-                Fatal("Distribute run-number to start datalogger!");
-                //Fatal("Must configure if FTM should be started or not?");
+                Message("Starting Trigger (FTM)");
                 Dim::SendCommand("FTM_CONTROL/START_RUN");
                 return kStateConfigured;
@@ -343,5 +384,5 @@
 
 
-        AddEvent("START", "C", kStateIdle)
+        AddEvent("START", "X:2;C")//, kStateIdle)
             (bind(&StateMachineMCP::StartRun, this, placeholders::_1))
             ("");
