Index: trunk/BNC/upload/bncsp3.cpp
===================================================================
--- trunk/BNC/upload/bncsp3.cpp	(revision 3176)
+++ trunk/BNC/upload/bncsp3.cpp	(revision 3176)
@@ -0,0 +1,124 @@
+
+/* -------------------------------------------------------------------------
+ * BKG NTRIP Server
+ * -------------------------------------------------------------------------
+ *
+ * Class:      bncSP3
+ *
+ * Purpose:    writes SP3 files
+ *
+ * Author:     L. Mervart
+ *
+ * Created:    25-Apr-2008
+ *
+ * Changes:    
+ *
+ * -----------------------------------------------------------------------*/
+
+#include <iomanip>
+#include <math.h>
+
+#include "bncsp3.h"
+#include "bncutils.h"
+
+using namespace std;
+
+// Constructor
+////////////////////////////////////////////////////////////////////////////
+bncSP3::bncSP3(const QString& prep, const QString& ext, const QString& path,
+               const QString& intr, int sampl) 
+  : bncoutf(prep, ext, path, intr, sampl) {
+
+  _lastGPSweek  = 0;
+  _lastGPSweeks = 0.0;
+}
+
+// Destructor
+////////////////////////////////////////////////////////////////////////////
+bncSP3::~bncSP3() {
+}
+
+// Write One Epoch
+////////////////////////////////////////////////////////////////////////////
+t_irc bncSP3::write(int GPSweek, double GPSweeks, const QString& prn, 
+                    const ColumnVector& xx, bool append) {
+
+  if ( bncoutf::write(GPSweek, GPSweeks, prn, xx, append) == success) {
+
+    if (_lastGPSweek != GPSweek || _lastGPSweeks != GPSweeks) {
+      _lastGPSweek  = GPSweek;
+      _lastGPSweeks = GPSweeks;
+    
+      QDateTime datTim = dateAndTimeFromGPSweek(GPSweek, GPSweeks);
+      double sec = fmod(GPSweeks, 60.0);
+    
+      _out << datTim.toString("*  yyyy MM dd hh mm").toAscii().data()
+           << setw(12) << setprecision(8) << sec << endl; 
+    }
+    _out << "P" << prn.toAscii().data()
+         << setw(14) << setprecision(6) << xx(1) / 1000.0
+         << setw(14) << setprecision(6) << xx(2) / 1000.0
+         << setw(14) << setprecision(6) << xx(3) / 1000.0
+         << setw(14) << setprecision(6) << xx(4) * 1e6 << endl;
+    
+    return success;
+  }
+  else {
+    return failure;
+  }
+}
+
+// Close File (write last line)
+////////////////////////////////////////////////////////////////////////////
+void bncSP3::closeFile() {
+  _out << "EOF" << endl;
+  bncoutf::closeFile();
+}
+
+// Write Header
+////////////////////////////////////////////////////////////////////////////
+void bncSP3::writeHeader(const QDateTime& datTim) {
+
+  int    GPSWeek;
+  double GPSWeeks;
+  GPSweekFromDateAndTime(datTim, GPSWeek, GPSWeeks);
+
+  double sec = fmod(GPSWeeks, 60.0);
+
+  int    mjd;
+  double dayfrac;
+  mjdFromDateAndTime(datTim, mjd, dayfrac);
+
+  _out << "#aP" << datTim.toString("yyyy MM dd hh mm").toAscii().data() 
+       << setw(12) << setprecision(8) << sec
+       << "      96 ORBIT IGS05 HLM  IGS" << endl;
+
+  _out << "## " 
+       << setw(4)  << GPSWeek
+       << setw(16) << setprecision(8) << GPSWeeks
+       << setw(15) << setprecision(8) << double(_sampl)
+       << setw(6)  << mjd
+       << setw(16) << setprecision(13) << dayfrac << endl;
+
+  _out << "+   32   G01G02G03G04G05G06G07G08G09G10G11G12G13G14G15G16G17\n"
+       << "+        G18G19G20G21G22G23G24G25G26G27G28G29G30G31G32  0  0\n"
+       << "+          0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0\n"
+       << "+          0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0\n"
+       << "+          0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0\n"
+       << "++         0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0\n"
+       << "++         0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0\n"
+       << "++         0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0\n"
+       << "++         0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0\n"
+       << "++         0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0\n"
+       << "%c cc cc ccc ccc cccc cccc cccc cccc ccccc ccccc ccccc ccccc\n"
+       << "%c cc cc ccc ccc cccc cccc cccc cccc ccccc ccccc ccccc ccccc\n"
+       << "%f  0.0000000  0.000000000  0.00000000000  0.000000000000000\n"
+       << "%f  0.0000000  0.000000000  0.00000000000  0.000000000000000\n"
+       << "%i    0    0    0    0      0      0      0      0         0\n"
+       << "%i    0    0    0    0      0      0      0      0         0\n"
+       << "/*                                                          \n"
+       << "/*                                                          \n"
+       << "/*                                                          \n"
+       << "/*                                                          \n";
+}
+
Index: trunk/BNC/upload/bncsp3.h
===================================================================
--- trunk/BNC/upload/bncsp3.h	(revision 3176)
+++ trunk/BNC/upload/bncsp3.h	(revision 3176)
@@ -0,0 +1,25 @@
+#ifndef BNCSP3_H
+#define BNCSP3_H
+
+#include <fstream>
+#include <newmat.h>
+#include <QtCore>
+
+#include "bncoutf.h"
+
+class bncSP3 : public bncoutf {
+ public:
+  bncSP3(const QString& prep, const QString& ext, const QString& path,
+         const QString& intr, int sampl);
+  virtual ~bncSP3();
+  virtual t_irc write(int GPSweek, double GPSweeks, const QString& prn, 
+                      const ColumnVector& xx, bool append);
+
+ private:
+  virtual void writeHeader(const QDateTime& datTim);
+  virtual void closeFile();
+  int    _lastGPSweek;
+  double _lastGPSweeks;
+};
+
+#endif
Index: trunk/BNC/upload/bncuploadcaster.h
===================================================================
--- trunk/BNC/upload/bncuploadcaster.h	(revision 3175)
+++ trunk/BNC/upload/bncuploadcaster.h	(revision 3176)
@@ -3,4 +3,7 @@
 
 #include <QtNetwork>
+
+class bncClockRinex;
+class bncSP3;
 
 class bncUploadCaster : public QObject {
@@ -25,15 +28,17 @@
 
  private:
-  QString      _mountpoint;
-  QString      _outHost;
-  int          _outPort;
-  QString      _password;
-  QString      _crdTrafo;
-  bool         _CoM;
-  QTcpSocket*  _outSocket;
-  int          _sOpenTrial;
-  QDateTime    _outSocketOpenTime;
-  QFile*       _outFile;
-  QTextStream* _outStream;
+  QString        _mountpoint;
+  QString        _outHost;
+  int            _outPort;
+  QString        _password;
+  QString        _crdTrafo;
+  bool           _CoM;
+  QTcpSocket*    _outSocket;
+  int            _sOpenTrial;
+  QDateTime      _outSocketOpenTime;
+  QFile*         _outFile;
+  QTextStream*   _outStream;
+  bncClockRinex* _rnx;
+  bncSP3*        _sp3;
 };
 
