1  #ifndef BNCRTNETUPLOADCASTER_H


2  #define BNCRTNETUPLOADCASTER_H


3 


4  #include <newmat.h>


5  #include <iostream>


6  #include "bncuploadcaster.h"


7  #include "bnctime.h"


8  #include "ephemeris.h"


9  #include "../RTCM3/clock_and_orbit/clock_orbit_rtcm.h"


10  #include "../RTCM3/clock_and_orbit/clock_orbit_igs.h"


11 


12  class bncEphUser;


13  class bncoutf;


14  class bncClockRinex;


15  class bncSP3;


16  class bncBiasSinex;


17 


18  class bncRtnetUploadCaster : public bncUploadCaster {


19  Q_OBJECT


20  public:


21  bncRtnetUploadCaster(const QString& mountpoint,


22  const QString& outHost, int outPort,


23  const QString& ntripVersion, const QString& userName,


24  const QString& password,


25  const QString& crdTrafo, const QString& ssrFormat,


26  bool CoM,


27  const QString& sp3FileName,


28  const QString& rnxFileName,


29  const QString& bsxFileName,


30  int PID, int SID, int IOD, int iRow);


31  void decodeRtnetStream(char* buffer, int bufLen);


32  protected:


33  virtual ~bncRtnetUploadCaster();


34  private:


35  t_irc processSatellite(const t_eph* eph, int GPSweek,


36  double GPSweeks, const QString& prn,


37  const ColumnVector& rtnAPC,


38  double ura,


39  const ColumnVector& rtnClk,


40  const ColumnVector& rtnVel,


41  const ColumnVector& rtnCoM,


42  const ColumnVector& rtnClkSig,


43  struct SsrCorr::ClockOrbit::SatData* sd,


44  QString& outLine);


45  void decodeRtnetEpoch(QStringList epochLines);


46  bool corrIsOutOfRange(struct SsrCorr::ClockOrbit::SatData* sd);


47 


48  void crdTrafo(int GPSWeek, ColumnVector& xyz, double& dc);


49 


50  int determineUpdateInd(double samplingRate);


51 


52  QString _casterID;


53  bncEphUser* _ephUser;


54  QString _rtnetStreamBuffer;


55  QString _crdTrafo;


56  SsrCorr* _ssrCorr;


57  QString _ssrFormat;


58  bool _CoM;


59  bool _phaseBiasInformationDecoded;


60  int _PID;


61  int _SID;


62  int _IOD;


63  int _samplRtcmClkCorr;


64  double _samplRtcmEphCorr;


65  double _dx;


66  double _dy;


67  double _dz;


68  double _dxr;


69  double _dyr;


70  double _dzr;


71  double _ox;


72  double _oy;


73  double _oz;


74  double _oxr;


75  double _oyr;


76  double _ozr;


77  double _sc;


78  double _scr;


79  double _t0;


80  bncClockRinex* _rnx;


81  bncSP3* _sp3;


82  bncBiasSinex* _bsx;


83  QMap<QString, const t_eph*>* _usedEph;


84  };


85 


86  struct phaseBiasesSat {


87  phaseBiasesSat() {


88  yawAngle = 0.0;


89  yawRate = 0.0;


90  }


91  double yawAngle;


92  double yawRate;


93  };


94 


95  struct phaseBiasSignal {


96  phaseBiasSignal() {


97  bias = 0.0;


98  integerIndicator = 0;


99  wlIndicator = 0;


100  discontinuityCounter = 0;


101  }


102  QString type;


103  double bias;


104  unsigned int integerIndicator;


105  unsigned int wlIndicator;


106  unsigned int discontinuityCounter;


107  };


108 


109  #endif

