Index: trunk/FACT++/src/ftmctrl.cc
===================================================================
--- trunk/FACT++/src/ftmctrl.cc	(revision 12167)
+++ trunk/FACT++/src/ftmctrl.cc	(revision 12177)
@@ -1106,5 +1106,21 @@
 
         for (int i=0; i<=FTM::StaticData::kMaxPixelIdx; i++)
-            data.EnablePixel(i, i<0 || i/9==idx);
+            data.EnablePixel(i, i/9==idx);
+
+        CmdSendStatDat(data);
+
+        return true;
+    }
+
+    bool EnablePatch(int16_t idx, bool enable)
+    {
+        if (idx>FTM::StaticData::kMaxPatchIdx)
+            return false;
+
+        FTM::StaticData data(fStaticData);
+
+        for (int i=0; i<=FTM::StaticData::kMaxPixelIdx; i++)
+            if (i/9==idx)
+                data.EnablePixel(i, enable);
 
         CmdSendStatDat(data);
@@ -1703,4 +1719,15 @@
     }
 
+    int EnablePatch(const EventImp &evt, bool enable)
+    {
+        if (!CheckEventSize(evt.GetSize(), "EnablePatch", 2))
+            return T::kSM_FatalError;
+
+        if (!fFTM.EnablePatch(evt.GetUShort(), enable))
+            T::Warn("EnablePatch -  Value out of range.");
+
+        return T::GetCurrentState();
+    }
+
     int TogglePixel(const EventImp &evt)
     {
@@ -2000,4 +2027,12 @@
         T::AddEvent("DISABLE_ALL_PATCHES_EXCEPT", "S:1", FTM::kIdle)
             (bind(&StateMachineFTM::DisableAllPatchesExcept, this, placeholders::_1))
+            ("");
+
+        T::AddEvent("ENABLE_PATCH", "S:1", FTM::kIdle)
+            (bind(&StateMachineFTM::EnablePatch, this, placeholders::_1, true))
+            ("");
+
+        T::AddEvent("DISABLE_PATCH", "S:1", FTM::kIdle)
+            (bind(&StateMachineFTM::EnablePatch, this, placeholders::_1, false))
             ("");
 
