Index: trunk/FACT++/src/smartfact.cc
===================================================================
--- trunk/FACT++/src/smartfact.cc	(revision 17932)
+++ trunk/FACT++/src/smartfact.cc	(revision 17934)
@@ -28,4 +28,5 @@
 #include "HeadersFSC.h"
 #include "HeadersGPS.h"
+#include "HeadersSQM.h"
 #include "HeadersMCP.h"
 #include "HeadersLid.h"
@@ -536,4 +537,5 @@
     DimDescribedState fDimFscControl;
     DimDescribedState fDimGpsControl;
+    DimDescribedState fDimSqmControl;
     DimDescribedState fDimAgilentControl24;
     DimDescribedState fDimAgilentControl50;
@@ -1834,4 +1836,27 @@
 
         ofstream(fPath+"/gps.data") << out.str();
+
+        return GetCurrentState();
+    }
+
+    int HandleSqmData(const EventImp &d)
+    {
+        if (!CheckDataSize(d, "SqmControl:Data", sizeof(SQM::Data)))
+            return GetCurrentState();
+
+        const SQM::Data &data = d.Ref<SQM::Data>();
+
+        ostringstream out;
+
+        out << fixed;
+        out << d.GetJavaDate() << '\n';
+        out << setprecision(4);
+        out << HTML::kWhite << '\t' << data.mag    << '\n';
+        out << HTML::kWhite << '\t' << data.freq   << '\n';
+        out << HTML::kWhite << '\t' << data.counts << '\n';
+        out << HTML::kWhite << '\t' << data.period << '\n';
+        out << HTML::kWhite << '\t' << data.temp   << "\n";
+
+        ofstream(fPath+"/sqm.data") << out.str();
 
         return GetCurrentState();
@@ -2951,4 +2976,5 @@
             out << GetStateHtml(fDimFscControl,     FSC::State::kConnected);
             out << GetStateHtml(fDimGpsControl,     GPS::State::kConnected);
+            out << GetStateHtml(fDimSqmControl,     SQM::State::kConnected);
             out << GetStateHtml(fDimAgilentControl24, Agilent::State::kVoltageOff);
             out << GetStateHtml(fDimAgilentControl50, Agilent::State::kVoltageOff);
@@ -3025,4 +3051,5 @@
         fDimFscControl    ("FSC_CONTROL"),
         fDimGpsControl    ("GPS_CONTROL"),
+        fDimSqmControl    ("SQM_CONTROL"),
         fDimAgilentControl24("AGILENT_CONTROL_24V"),
         fDimAgilentControl50("AGILENT_CONTROL_50V"),
@@ -3051,4 +3078,5 @@
         fDimFscControl.Subscribe(*this);
         fDimGpsControl.Subscribe(*this);
+        fDimSqmControl.Subscribe(*this);
         fDimAgilentControl24.Subscribe(*this);
         fDimAgilentControl50.Subscribe(*this);
@@ -3089,4 +3117,7 @@
         Subscribe("GPS_CONTROL/NEMA")
             (bind(&StateMachineSmartFACT::HandleGpsNema,             this, placeholders::_1));
+
+        Subscribe("SQM_CONTROL/DATA")
+            (bind(&StateMachineSmartFACT::HandleSqmData,             this, placeholders::_1));
 
         Subscribe("TEMPERATURE/DATA")
