Index: trunk/BNC/RTCM/GPSDecoder.cpp
===================================================================
--- trunk/BNC/RTCM/GPSDecoder.cpp	(revision 3528)
+++ trunk/BNC/RTCM/GPSDecoder.cpp	(revision 3528)
@@ -0,0 +1,81 @@
+// Part of BNC, a utility for retrieving decoding and
+// converting GNSS data streams from NTRIP broadcasters.
+//
+// Copyright (C) 2007
+// German Federal Agency for Cartography and Geodesy (BKG)
+// http://www.bkg.bund.de
+// Czech Technical University Prague, Department of Geodesy
+// http://www.fsv.cvut.cz
+//
+// Email: euref-ip@bkg.bund.de
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation, version 2.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+/* -------------------------------------------------------------------------
+ * BKG NTRIP Client
+ * -------------------------------------------------------------------------
+ *
+ * Class:      GPSDecoder
+ *
+ * Purpose:    Decoder Base Class
+ *
+ * Author:     L. Mervart
+ *
+ * Created:    16-Dec-2011
+ *
+ * Changes:    
+ *
+ * -----------------------------------------------------------------------*/
+
+#include <iomanip>
+#include <cmath>
+
+#include "GPSDecoder.h"
+#include "bncsettings.h"
+
+using namespace std;
+
+// Constructor
+//////////////////////////////////////////////////////////////////////////////
+GPSDecoder::GPSDecoder() {
+  bncSettings settings;
+  if ( settings.value("rnxPath").toString().isEmpty() ) { 
+    _rnx = 0;
+  }
+  else {
+//    _rnx = new bncRinex(_staID, _mountPoint, _latitude, _longitude, 
+//                        _nmea, _ntripVersion);
+  }
+} 
+
+// Write RINEX Epoch
+//////////////////////////////////////////////////////////////////////////////
+void GPSDecoder::dumpRinexEpoch(const t_obs& obs, const QByteArray& format) {
+  if (_rnx) {
+    long iSec    = long(floor(obs.GPSWeeks+0.5));
+    long obsTime = obs.GPSWeek * 7*24*3600 + iSec;
+    if (_rnx->samplingRate() == 0 || iSec % _rnx->samplingRate() == 0) {
+      _rnx->deepCopy(obs);
+    }
+    _rnx->dumpEpoch(format, obsTime);
+  }
+} 
+
+// Set RINEX Reconnect Flag
+//////////////////////////////////////////////////////////////////////////////
+void GPSDecoder::setRinexReconnectFlag(bool flag) {
+  if (_rnx) {
+    _rnx->setReconnectFlag(flag);
+  }
+}
Index: trunk/BNC/RTCM/GPSDecoder.h
===================================================================
--- trunk/BNC/RTCM/GPSDecoder.h	(revision 3342)
+++ trunk/BNC/RTCM/GPSDecoder.h	(revision 3528)
@@ -33,4 +33,5 @@
 
 #include "bncconst.h"
+#include "bncrinex.h"
 
 class t_obs {
@@ -119,9 +120,17 @@
 class GPSDecoder {
  public:
-  virtual t_irc Decode(char* buffer, int bufLen, std::vector<std::string>& errmsg) = 0;
+  GPSDecoder();
 
-  virtual ~GPSDecoder() {}
+  virtual ~GPSDecoder() {delete _rnx;}
+
+  virtual t_irc Decode(char* buffer, int bufLen, 
+                       std::vector<std::string>& errmsg) = 0;
+
 
   virtual int corrGPSEpochTime() const {return -1;}
+
+  void dumpRinexEpoch(const t_obs& obs, const QByteArray& format);
+
+  void setRinexReconnectFlag(bool flag);
 
   struct t_antInfo {
@@ -145,7 +154,8 @@
 
   QList<t_obs>     _obsList;
-  QList<int>       _typeList;  // RTCM   message types
-  QStringList      _antType;   // RTCM   antenna descriptor
-  QList<t_antInfo> _antList;   // RTCM   antenna XYZ
+  QList<int>       _typeList;  // RTCM message types
+  QStringList      _antType;   // RTCM antenna descriptor
+  QList<t_antInfo> _antList;   // RTCM antenna XYZ
+  bncRinex*        _rnx;       // RINEX writer
 };
 
