Index: trunk/BNC/src/RTRover/bncrtrover.cpp
===================================================================
--- trunk/BNC/src/RTRover/bncrtrover.cpp	(revision 4762)
+++ trunk/BNC/src/RTRover/bncrtrover.cpp	(revision 4763)
@@ -14,30 +14,6 @@
 // Constructor
 ////////////////////////////////////////////////////////////////////////////
-t_bncRtrover::t_bncRtrover() {
-
-  bncSettings settings;
-
-  // Processed Station, Corrections Source
-  // -------------------------------------
-  _pppCorrMount = settings.value("pppCorrMount").toString();
-
-  // Define Input Options
-  // --------------------
-  rtrover_opt opt;
-  rtrover_setOptions(&opt);
-
-  // Connect to BNC Signals
-  // ----------------------
-  connect(((bncApp*)qApp), SIGNAL(newCorrections(QList<QString>)),
-          this, SLOT(slotNewCorrections(QList<QString>)));
-
-  connect(((bncApp*)qApp), SIGNAL(newEphGPS(gpsephemeris)),
-          this, SLOT(slotNewEphGPS(gpsephemeris)));
-
-  connect(((bncApp*)qApp), SIGNAL(newEphGlonass(glonassephemeris)),
-          this, SLOT(slotNewEphGlonass(glonassephemeris)));
-
-  connect(((bncApp*)qApp), SIGNAL(newEphGalileo(galileoephemeris)),
-          this, SLOT(slotNewEphGalileo(galileoephemeris)));
+t_bncRtrover::t_bncRtrover() : QThread(0) {
+
 }
 
@@ -51,4 +27,33 @@
   }
   rtrover_destroy();
+}
+
+// Run (virtual)
+////////////////////////////////////////////////////////////////////////////
+void t_bncRtrover::run() {
+  bncSettings settings;
+
+  // Processed Station, Corrections Source
+  // -------------------------------------
+  _pppCorrMount = settings.value("pppCorrMount").toString();
+
+  // Define Input Options
+  // --------------------
+  rtrover_opt opt;
+  rtrover_setOptions(&opt);
+
+  // Connect to BNC Signals
+  // ----------------------
+  connect(((bncApp*)qApp), SIGNAL(newCorrections(QList<QString>)),
+          this, SLOT(slotNewCorrections(QList<QString>)));
+
+  connect(((bncApp*)qApp), SIGNAL(newEphGPS(gpsephemeris)),
+          this, SLOT(slotNewEphGPS(gpsephemeris)));
+
+  connect(((bncApp*)qApp), SIGNAL(newEphGlonass(glonassephemeris)),
+          this, SLOT(slotNewEphGlonass(glonassephemeris)));
+
+  connect(((bncApp*)qApp), SIGNAL(newEphGalileo(galileoephemeris)),
+          this, SLOT(slotNewEphGalileo(galileoephemeris)));
 }
 
@@ -201,5 +206,5 @@
 //
 ////////////////////////////////////////////////////////////////////////////
-void t_bncRtrover::putNewObs(const t_obs& obsIn) {
+void t_bncRtrover::slotNewObs(QByteArray staID, bool firstObs, t_obs obsIn) {
   QMutexLocker locker(&_mutex);
 
Index: trunk/BNC/src/RTRover/bncrtrover.h
===================================================================
--- trunk/BNC/src/RTRover/bncrtrover.h	(revision 4762)
+++ trunk/BNC/src/RTRover/bncrtrover.h	(revision 4763)
@@ -7,5 +7,5 @@
 #include "bncephuser.h"
 
-class t_bncRtrover : QObject {
+class t_bncRtrover : public QThread {
  Q_OBJECT
 
@@ -13,5 +13,5 @@
   t_bncRtrover();
   ~t_bncRtrover();
-  void putNewObs(const t_obs& pp);
+  virtual void run();
 
  public slots:
@@ -20,4 +20,5 @@
   void slotNewEphGalileo(galileoephemeris galeph);
   void slotNewCorrections(QList<QString> corrList);
+  void slotNewObs(QByteArray staID, bool firstObs, t_obs obs);
 
  private:
Index: trunk/BNC/src/bnccaster.cpp
===================================================================
--- trunk/BNC/src/bnccaster.cpp	(revision 4762)
+++ trunk/BNC/src/bnccaster.cpp	(revision 4763)
@@ -52,4 +52,7 @@
 #include "bncsettings.h"
 #include "RTCM/GPSDecoder.h"
+#ifdef RTROVER_INTERFACE
+#  include "RTRover/bncrtrover.h"
+#endif
 
 using namespace std;
@@ -131,4 +134,8 @@
   _lastDumpSec  = 0; 
   _confInterval = -1;
+#ifdef RTROVER_INTERFACE
+    _bncRtrover = new t_bncRtrover();
+    _bncRtrover->start();
+#endif
 }
 
@@ -267,4 +274,9 @@
   connect(getThread, SIGNAL(newObs(QByteArray, bool, t_obs)),
           this,      SLOT(newObs(QByteArray, bool, t_obs)));
+
+#ifdef RTROVER_INTERFACE
+  connect(getThread, SIGNAL(newObs(QByteArray, bool, t_obs)),
+          _bncRtrover, SLOT(slotNewObs(QByteArray, bool, t_obs)));
+#endif
 
   connect(getThread, SIGNAL(getThreadFinished(QByteArray)), 
Index: trunk/BNC/src/bnccaster.h
===================================================================
--- trunk/BNC/src/bnccaster.h	(revision 4762)
+++ trunk/BNC/src/bnccaster.h	(revision 4763)
@@ -33,4 +33,7 @@
 
 class bncGetThread;
+#ifdef RTROVER_INTERFACE
+ class t_bncRtrover;
+#endif
 
 class bncCaster : public QObject {
@@ -81,4 +84,7 @@
    QMutex                   _mutex;
    int                      _confInterval;
+#ifdef RTROVER_INTERFACE
+   t_bncRtrover*            _bncRtrover;
+#endif
 };
 
Index: trunk/BNC/src/bncgetthread.cpp
===================================================================
--- trunk/BNC/src/bncgetthread.cpp	(revision 4762)
+++ trunk/BNC/src/bncgetthread.cpp	(revision 4763)
@@ -63,7 +63,4 @@
 #include "latencychecker.h"
 #include "bncpppclient.h"
-#ifdef RTROVER_INTERFACE
-#include "RTRover/bncrtrover.h"
-#endif
 #include "upload/bncrtnetdecoder.h"
 #include "RTCM/RTCM2Decoder.h"
@@ -133,7 +130,4 @@
   _nextSleep     = 0;
   _PPPclient     = 0;
-#ifdef RTROVER_INTERFACE
-  _bncRtrover    = 0;
-#endif
   _miscMount     = settings.value("miscMount").toString();
   _decoder   = 0;
@@ -345,7 +339,4 @@
     connect(_PPPclient, SIGNAL(newNMEAstr(QByteArray)), 
             this,       SIGNAL(newNMEAstr(QByteArray)));
-#ifdef RTROVER_INTERFACE
-    _bncRtrover = new t_bncRtrover();
-#endif
   }
 #endif
@@ -379,7 +370,4 @@
   }
   delete _PPPclient;
-#ifdef RTROVER_INTERFACE
-    delete _bncRtrover;
-#endif
   if (_rawFile) {
     QMapIterator<QString, GPSDecoder*> it(_decodersRaw);
@@ -563,7 +551,4 @@
         if (_PPPclient && _staID == _PPPclient->staID()) {
           _PPPclient->putNewObs(obs);
-#ifdef RTROVER_INTERFACE
-          _bncRtrover->putNewObs(obs);
-#endif
         }
 #endif
Index: trunk/BNC/src/bncgetthread.h
===================================================================
--- trunk/BNC/src/bncgetthread.h	(revision 4762)
+++ trunk/BNC/src/bncgetthread.h	(revision 4763)
@@ -41,7 +41,4 @@
 class latencyChecker;
 class bncPPPclient;
-#ifdef RTROVER_INTERFACE
-class t_bncRtrover;
-#endif
 
 class bncGetThread : public QThread {
@@ -128,7 +125,4 @@
    bool                       _rawOutput;
    QMap<QString, long>        _prnLastEpo;
-#ifdef RTROVER_INTERFACE
-   t_bncRtrover*              _bncRtrover;
-#endif
    QMap<char, QVector<QString> > _rnxTypes;
 };
