Index: trunk/BNC/src/bncnetquery.h
===================================================================
--- trunk/BNC/src/bncnetquery.h	(revision 6786)
+++ trunk/BNC/src/bncnetquery.h	(revision 6787)
@@ -21,9 +21,9 @@
   virtual void waitForRequestResult(const QUrl& url, QByteArray& outData) = 0;
   virtual void startRequest(const QUrl& url, const QByteArray& gga) = 0;
+  virtual void keepAliveRequest(const QUrl& url, const QByteArray& gga) = 0;
   virtual void waitForReadyRead(QByteArray& outData) = 0;
   
   void sendNMEA(const QByteArray& gga) {
-    stop();
-    startRequest(_url, gga);
+    keepAliveRequest(_url, gga);
   }
 
Index: trunk/BNC/src/bncnetqueryrtp.cpp
===================================================================
--- trunk/BNC/src/bncnetqueryrtp.cpp	(revision 6786)
+++ trunk/BNC/src/bncnetqueryrtp.cpp	(revision 6787)
@@ -237,2 +237,4 @@
 }
 
+void bncNetQueryRtp::keepAliveRequest(const QUrl& /* url */, const QByteArray& /* gga */) {
+}
Index: trunk/BNC/src/bncnetqueryrtp.h
===================================================================
--- trunk/BNC/src/bncnetqueryrtp.h	(revision 6786)
+++ trunk/BNC/src/bncnetqueryrtp.h	(revision 6787)
@@ -13,4 +13,5 @@
   virtual void waitForRequestResult(const QUrl& url, QByteArray& outData);
   virtual void startRequest(const QUrl& url, const QByteArray& gga);
+  virtual void keepAliveRequest(const QUrl& url, const QByteArray& gga);
   virtual void waitForReadyRead(QByteArray& outData);
 
Index: trunk/BNC/src/bncnetquerys.cpp
===================================================================
--- trunk/BNC/src/bncnetquerys.cpp	(revision 6786)
+++ trunk/BNC/src/bncnetquerys.cpp	(revision 6787)
@@ -196,2 +196,4 @@
 }
 
+void bncNetQueryS::keepAliveRequest(const QUrl& /* url */, const QByteArray& /* gga */) {
+}
Index: trunk/BNC/src/bncnetquerys.h
===================================================================
--- trunk/BNC/src/bncnetquerys.h	(revision 6786)
+++ trunk/BNC/src/bncnetquerys.h	(revision 6787)
@@ -13,4 +13,5 @@
   virtual void waitForRequestResult(const QUrl& url, QByteArray& outData);
   virtual void startRequest(const QUrl& url, const QByteArray& gga);
+  virtual void keepAliveRequest(const QUrl& url, const QByteArray& gga);
   virtual void waitForReadyRead(QByteArray& outData);
 
Index: trunk/BNC/src/bncnetqueryudp.cpp
===================================================================
--- trunk/BNC/src/bncnetqueryudp.cpp	(revision 6786)
+++ trunk/BNC/src/bncnetqueryudp.cpp	(revision 6787)
@@ -177,2 +177,4 @@
 }
 
+void bncNetQueryUdp::keepAliveRequest(const QUrl& /* url */ , const QByteArray& /* gga */) {
+}
Index: trunk/BNC/src/bncnetqueryudp.h
===================================================================
--- trunk/BNC/src/bncnetqueryudp.h	(revision 6786)
+++ trunk/BNC/src/bncnetqueryudp.h	(revision 6787)
@@ -13,4 +13,5 @@
   virtual void waitForRequestResult(const QUrl& url, QByteArray& outData);
   virtual void startRequest(const QUrl& url, const QByteArray& gga);
+  virtual void keepAliveRequest(const QUrl& url, const QByteArray& gga);
   virtual void waitForReadyRead(QByteArray& outData);
 
Index: trunk/BNC/src/bncnetqueryudp0.cpp
===================================================================
--- trunk/BNC/src/bncnetqueryudp0.cpp	(revision 6786)
+++ trunk/BNC/src/bncnetqueryudp0.cpp	(revision 6787)
@@ -75,2 +75,4 @@
 }
 
+void bncNetQueryUdp0::keepAliveRequest(const QUrl& /* url */, const QByteArray& /* gga */) {
+}
Index: trunk/BNC/src/bncnetqueryudp0.h
===================================================================
--- trunk/BNC/src/bncnetqueryudp0.h	(revision 6786)
+++ trunk/BNC/src/bncnetqueryudp0.h	(revision 6787)
@@ -13,4 +13,5 @@
   virtual void waitForRequestResult(const QUrl& url, QByteArray& outData);
   virtual void startRequest(const QUrl& url, const QByteArray& gga);
+  virtual void keepAliveRequest(const QUrl& url, const QByteArray& gga);
   virtual void waitForReadyRead(QByteArray& outData);
  private:
Index: trunk/BNC/src/bncnetqueryv0.cpp
===================================================================
--- trunk/BNC/src/bncnetqueryv0.cpp	(revision 6786)
+++ trunk/BNC/src/bncnetqueryv0.cpp	(revision 6787)
@@ -128,2 +128,4 @@
 }
 
+void bncNetQueryV0::keepAliveRequest(const QUrl& /* url */, const QByteArray& /* gga */) {
+}
Index: trunk/BNC/src/bncnetqueryv0.h
===================================================================
--- trunk/BNC/src/bncnetqueryv0.h	(revision 6786)
+++ trunk/BNC/src/bncnetqueryv0.h	(revision 6787)
@@ -12,4 +12,5 @@
   virtual void waitForRequestResult(const QUrl& url, QByteArray& outData);
   virtual void startRequest(const QUrl& url, const QByteArray& gga);
+  virtual void keepAliveRequest(const QUrl& url, const QByteArray& gga);
   virtual void waitForReadyRead(QByteArray& outData);
 
Index: trunk/BNC/src/bncnetqueryv1.cpp
===================================================================
--- trunk/BNC/src/bncnetqueryv1.cpp	(revision 6786)
+++ trunk/BNC/src/bncnetqueryv1.cpp	(revision 6787)
@@ -105,4 +105,63 @@
 }
 
+
+// Already connected to Caster, send another Request
+////////////////////////////////////////////////////////////////////////////
+void bncNetQueryV1::keepAliveRequest(const QUrl& url, const QByteArray& gga) {
+
+  _status = running;
+
+  // Default scheme and path
+  // -----------------------
+  _url = url;
+  if (_url.scheme().isEmpty()) {
+    _url.setScheme("http");
+  }
+  if (_url.path().isEmpty()) {
+    _url.setPath("/");
+  }
+
+  // Connect the Socket
+  // ------------------
+  bncSettings settings;
+  QString proxyHost = settings.value("proxyHost").toString();
+  int     proxyPort = settings.value("proxyPort").toInt();
+
+  if ( proxyHost.isEmpty() ) {
+    _socket->connectToHost(_url.host(), _url.port());
+  }
+  else {
+    _socket->connectToHost(proxyHost, proxyPort);
+  }
+  if (!_socket->waitForConnected(_timeOut)) {
+    delete _socket;
+    _socket = 0;
+    _status = error;
+    return;
+  }
+
+  // Send Request
+  // ------------
+   QByteArray reqStr;
+
+   // NMEA string to handle VRS stream
+   // --------------------------------
+   if (!gga.isEmpty()) {
+     reqStr += gga + "\r\n";
+   }
+
+   _socket->write(reqStr, reqStr.length());
+
+   if (!_socket->waitForBytesWritten(_timeOut)) {
+     delete _socket;
+     _socket = 0;
+     _status = error;
+     emit newMessage(_url.path().toAscii().replace(0,1,"")
+                     + ": Write timeout", true);
+     return;
+   }
+
+}
+
 // Connect to Caster, send the Request
 ////////////////////////////////////////////////////////////////////////////
Index: trunk/BNC/src/bncnetqueryv1.h
===================================================================
--- trunk/BNC/src/bncnetqueryv1.h	(revision 6786)
+++ trunk/BNC/src/bncnetqueryv1.h	(revision 6787)
@@ -12,4 +12,5 @@
   virtual void waitForRequestResult(const QUrl& url, QByteArray& outData);
   virtual void startRequest(const QUrl& url, const QByteArray& gga);
+  virtual void keepAliveRequest(const QUrl& url, const QByteArray& gga);
   virtual void waitForReadyRead(QByteArray& outData);
 
Index: trunk/BNC/src/bncnetqueryv2.cpp
===================================================================
--- trunk/BNC/src/bncnetqueryv2.cpp	(revision 6786)
+++ trunk/BNC/src/bncnetqueryv2.cpp	(revision 6787)
@@ -91,4 +91,10 @@
 ////////////////////////////////////////////////////////////////////////////
 void bncNetQueryV2::startRequest(const QUrl& url, const QByteArray& gga) {
+  startRequestPrivate(url, gga, false);
+}
+
+// Start request, block till the next read
+////////////////////////////////////////////////////////////////////////////
+void bncNetQueryV2::keepAliveRequest(const QUrl& url, const QByteArray& gga) {
   startRequestPrivate(url, gga, false);
 }
Index: trunk/BNC/src/bncnetqueryv2.h
===================================================================
--- trunk/BNC/src/bncnetqueryv2.h	(revision 6786)
+++ trunk/BNC/src/bncnetqueryv2.h	(revision 6787)
@@ -14,4 +14,5 @@
   virtual void waitForRequestResult(const QUrl& url, QByteArray& outData);
   virtual void startRequest(const QUrl& url, const QByteArray& gga);
+  virtual void keepAliveRequest(const QUrl& url, const QByteArray& gga);
   virtual void waitForReadyRead(QByteArray& outData);
 
