Index: /trunk/FACT++/src/smartfact.cc
===================================================================
--- /trunk/FACT++/src/smartfact.cc	(revision 13551)
+++ /trunk/FACT++/src/smartfact.cc	(revision 13552)
@@ -196,5 +196,5 @@
     void HandleDriveControlPointing(const DimData &d)
     {
-        if (!CheckDataSize(d, "DriveControl:Pointing", 7*4+2))
+        if (!CheckDataSize(d, "DriveControl:Pointing", 16))
             return;
 
@@ -211,5 +211,5 @@
         };
 
-        const uint16_t i = uint16_t(floor(fmod(az+11.25, 360)/22));
+        const uint16_t i = uint16_t(floor(fmod(az+360+11.25, 360)/22));
         fDriveControlPointingAz = dir[i];
 
@@ -227,5 +227,5 @@
     void HandleDriveControlTracking(const DimData &d)
     {
-        if (!CheckDataSize(d, "DriveControl:Tracking", 7*4+2))
+        if (!CheckDataSize(d, "DriveControl:Tracking", 56))
             return;
 
@@ -239,11 +239,13 @@
         // Simplified:
         const double dev = cos(dzd) - sin(zd)*sin(zd)*(1.-cos(daz));
-        fDriveControlTrackingDev = acos(dev) * 180 / M_PI;
+        fDriveControlTrackingDev = acos(dev) * 180 / M_PI * 3600;
+        if (fDriveControlTrackingDev<0.01)
+            fDriveControlTrackingDev=0;
     }
 
     void HandleDriveControlSource(const DimData &d)
     {
-        if (!CheckDataSize(d, "DriveControl:Source", 7*4+2))
-            return;
+        //if (!CheckDataSize(d, "DriveControl:Source", 7*4+2))
+        //    return;
 
         const double *ptr = d.ptr<double>();
@@ -266,5 +268,5 @@
         out << "#ffffff\t" << woff << '\n';
         out << "#ffffff\t" << wang << '\n';
-            
+
         ofstream fout("www/drive.txt");
         fout << out.str();
@@ -364,4 +366,14 @@
         WriteBinary("ftmcontrol-patchrates",
                     vector<float>(prates, prates+160), 10);
+
+//        for (int i=0; i<160; i++) cout << prates[i] << endl;
+
+        ostringstream out;
+        out << setprecision(3);
+        out << uint64_t(d.time.UnixTime()*1000) << '\n';
+        out << "#ffffff\t" << fFtmControlTriggerRateCam << '\n';
+
+        ofstream fout("www/trigger.txt");
+        fout << out.str();
     }
 
@@ -371,6 +383,6 @@
             return;
 
-        if (fFadControlEventCounter++%30)
-            return;
+        //if (fFadControlEventCounter++%30)
+        //    return;
 
         //const float *avg = d.ptr<float>();
@@ -518,13 +530,18 @@
         {
             const State rc = fNetwork.GetState("DRIVE_CONTROL", fStatusDriveControl.second);
-            out << kWhite << "\t";
+            out << kWhite << '\t';
             out << rc.name << '\t';
             out << fDriveControlPointingZd  << '\t';
             out << fDriveControlPointingAz  << '\t';
-            out << fDriveControlTrackingDev << '\t';
-            out << fDriveControlSourceName  << '\n';
+            if (fStatusDriveControl.second==7)
+            {
+                out << fDriveControlTrackingDev << '\t';
+                out << fDriveControlSourceName  << '\n';
+            }
+            else
+                out << "\t\n";
         }
         else
-            out << kWhite << "\n";
+            out << kWhite << '\n';
 
         // --------------- MagicWeather -------------
@@ -545,8 +562,8 @@
                 col2 = kRed;
 
-            out << col1 << "\t";
+            out << col1 << '\t';
             out << fMagicWeatherData[kTemp]  << '\t';
             out << fMagicWeatherData[kDew]   << '\n';
-            out << col2 << "\t";
+            out << col2 << '\t';
             out << fMagicWeatherData[kGusts] << '\n';
         }
@@ -582,5 +599,5 @@
                 col = kBlue;
 
-            out << col << "\t";
+            out << col << '\t';
             out << fBiasControlCurrentMed << '\t';
             out << fBiasControlCurrentMax << '\t';
@@ -588,5 +605,5 @@
         }
         else
-            out << kWhite << "\n";
+            out << kWhite << '\n';
 
 
