Index: /trunk/Cosy/tcpip/MDriveCom.cc
===================================================================
--- /trunk/Cosy/tcpip/MDriveCom.cc	(revision 12598)
+++ /trunk/Cosy/tcpip/MDriveCom.cc	(revision 12599)
@@ -268,4 +268,40 @@
     if (fQueue)
         fQueue->Proc(WM_STARGMODE, &on);
+
+    return true;
+}
+
+bool MDriveCom::CommandLEDS(TString &str)
+{
+    gLog << all << "CC-COMMAND " << MTime(-1) << " LEDS " << str << endl;
+
+    str = str.Strip(TString::kBoth);
+    if (str.IsNull())
+    {
+        gLog << err << "ERROR - LEDS command empty." << endl;
+        return false;
+    }
+
+    Int_t len;
+    Long_t u[2];
+    Int_t n=sscanf(str.Data(), "%ld %ld %n", &u[0], &u[1], &len);
+    if (n!=2)
+    {
+        gLog << warn << "WARNING - Not enough argmuents (LEDS)." << endl;
+        return kCONTINUE;
+    }
+
+    str.Remove(0, len);
+    str = str.Strip(TString::kBoth);
+
+    if (!str.IsNull())
+    {
+        gLog << err << "ERROR - Too many bytes in command LEDS" << endl;
+        return false;
+    }
+
+
+    if (fQueue)
+        fQueue->Proc(WM_LEDS, u);
 
     return true;
@@ -351,4 +387,13 @@
         return CommandSTGMD(str);
 
+    if (cmd==(TString)"LEDS")
+        return CommandLEDS(str);
+
+    if (cmd==(TString)"KEEP_ALIVE")
+    {
+        gLog << dbg << MTime(-1) << " KEEP_ALIVE" << endl;
+        return true;
+    }
+
     if (cmd.IsNull() && str.IsNull())
     {
@@ -371,5 +416,5 @@
 }
 
-bool MDriveCom::SendReport(UInt_t stat, RaDec rd, double ha, ZdAz so, ZdAz is, ZdAz er, Bool_t armed, Int_t stargmd)
+bool MDriveCom::SendReport(UInt_t stat, Double_t mjd, RaDec rd, double ha, ZdAz so, ZdAz is, ZdAz er, Bool_t armed, Int_t stargmd, UInt_t pdo3)
 {
     // rd [rad]
@@ -377,9 +422,11 @@
     // is [deg]
     // er [rad]
-    const MTime t(-1);
-
     rd *= kRad2Deg;
     so *= kRad2Deg;
+#ifdef FACT
+    er *= kRad2Deg*3600;
+#else
     er *= kRad2Deg;
+#endif
 
     rd.Ra(rd.Ra()/15);
@@ -399,5 +446,6 @@
     Print(str, rd.Dec());   // Dec
     Print(str, ha);         // HA
-    str += MString::Format("%12.6f ", t.GetMjd()); // mjd
+    //str += MString::Format("%12.6f ", mjd==0 ? MTime(-1).GetMjd() : mjd); // mjd
+    str += MString::Format("%12.6f ", mjd); // mjd
     Print(str, so.Zd());
     Print(str, so.Az());
@@ -408,4 +456,5 @@
     str += armed ? "1 " : "0 ";
     str += MString::Format("%d ", stargmd);           // Starguider mode: 0=none, 1=starguider, 2=starguider off
+    str += MString::Format("%x ", pdo3);              
 
     return SendRep("DRIVE-REPORT", str.Data(), kFALSE);
Index: /trunk/Cosy/tcpip/MDriveCom.h
===================================================================
--- /trunk/Cosy/tcpip/MDriveCom.h	(revision 12598)
+++ /trunk/Cosy/tcpip/MDriveCom.h	(revision 12599)
@@ -36,4 +36,5 @@
     bool CommandTPOINT(TString &str);
     bool CommandSTGMD(TString &str);
+    bool CommandLEDS(TString &str);
 
 public:
@@ -55,5 +56,5 @@
 
 
-    bool SendReport(UInt_t stat, RaDec rd, double ha, ZdAz so, ZdAz is, ZdAz er, Bool_t armed, Int_t stargmd);
+    bool SendReport(UInt_t stat, Double_t mjd, RaDec rd, double ha, ZdAz so, ZdAz is, ZdAz er, Bool_t armed, Int_t stargmd, UInt_t pdo3);
     bool SendStargReport(UInt_t stat, ZdAz miss, ZdAz nompos, Ring center, Int_t num, Int_t n, Double_t bright, Double_t mjd, Int_t numleds, Int_t numrings);
     bool SendTPoint(bool stat, char type, Float_t mag, const char *name, const AltAz &za0, const ZdAz &za1,
