Index: /trunk/FACT++/gui/MainWindow.cc
===================================================================
--- /trunk/FACT++/gui/MainWindow.cc	(revision 11341)
+++ /trunk/FACT++/gui/MainWindow.cc	(revision 11342)
@@ -263,7 +263,12 @@
 }
 
-void MainWindow::on_fFadReset_clicked()
-{
-    Dim::SendCommand("FAD_CONTROL/RESET");
+void MainWindow::on_fFadSoftReset_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/SOFT_RESET");
+}
+
+void MainWindow::on_fFadHardReset_clicked()
+{
+    Dim::SendCommand("FAD_CONTROL/HARD_RESET");
 }
 
Index: /trunk/FACT++/gui/MainWindow.h
===================================================================
--- /trunk/FACT++/gui/MainWindow.h	(revision 11341)
+++ /trunk/FACT++/gui/MainWindow.h	(revision 11342)
@@ -37,5 +37,6 @@
     void on_fFadStop_clicked();
     void on_fFadAbort_clicked();
-    void on_fFadReset_clicked();
+    void on_fFadSoftReset_clicked();
+    void on_fFadHardReset_clicked();
 
     void on_fLoggerStart_clicked();
Index: /trunk/FACT++/gui/design.ui
===================================================================
--- /trunk/FACT++/gui/design.ui	(revision 11341)
+++ /trunk/FACT++/gui/design.ui	(revision 11342)
@@ -53,5 +53,5 @@
       </property>
       <property name="currentIndex">
-       <number>6</number>
+       <number>3</number>
       </property>
       <property name="documentMode">
@@ -4867,5 +4867,5 @@
                  <property name="geometry">
                   <rect>
-                   <x>40</x>
+                   <x>10</x>
                    <y>20</y>
                    <width>423</width>
@@ -7248,6 +7248,6 @@
    <property name="minimumSize">
     <size>
-     <width>223</width>
-     <height>596</height>
+     <width>0</width>
+     <height>620</height>
     </size>
    </property>
@@ -7951,5 +7951,5 @@
         </widget>
        </item>
-       <item row="1" column="1">
+       <item row="0" column="2">
         <widget class="QPushButton" name="fFadAbort">
          <property name="text">
@@ -7958,10 +7958,24 @@
         </widget>
        </item>
-       <item row="1" column="0">
-        <widget class="QPushButton" name="fFadReset">
-         <property name="text">
-          <string>Reset</string>
-         </property>
-        </widget>
+       <item row="1" column="0" colspan="3">
+        <layout class="QHBoxLayout" name="horizontalLayout_26">
+         <property name="topMargin">
+          <number>0</number>
+         </property>
+         <item>
+          <widget class="QPushButton" name="fFadSoftReset">
+           <property name="text">
+            <string>Soft Reset</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QPushButton" name="fFadHardReset">
+           <property name="text">
+            <string>Hard Reset</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
        </item>
       </layout>
Index: /trunk/FACT++/src/fadctrl.cc
===================================================================
--- /trunk/FACT++/src/fadctrl.cc	(revision 11341)
+++ /trunk/FACT++/src/fadctrl.cc	(revision 11342)
@@ -1184,7 +1184,7 @@
     }
 
-    int Reset()
-    {
-        ResetThread();
+    int Reset(bool soft)
+    {
+        ResetThread(soft);
         return T::GetCurrentState();
     }
@@ -1532,7 +1532,11 @@
             ("Immediately abort EventBuilder thread and disconnect all slots.");
 
-        T::AddEvent("RESET", FAD::kDisconnected)
-            (boost::bind(&StateMachineFAD::Reset, this))
-            ("Flush all buffers, close all files  and reinitialize event builder thread.");
+        T::AddEvent("SOFT_RESET", FAD::kConnected)
+            (boost::bind(&StateMachineFAD::Reset, this, true))
+            ("Wait for buffers to drain, close all files and reinitialize event builder thread.");
+
+        T::AddEvent("HARD_RESET", FAD::kConnected)
+            (boost::bind(&StateMachineFAD::Reset, this, false))
+            ("Free all buffers, close all files and reinitialize event builder thread.");
 
         T::AddEvent("CONNECT", "S:1", FAD::kDisconnected, FAD::kConnecting, FAD::kConnected)
