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 


17  class bncRtnetUploadCaster : public bncUploadCaster {


18  Q_OBJECT


19  public:


20  bncRtnetUploadCaster(const QString& mountpoint,


21  const QString& outHost, int outPort,


22  const QString& ntripVersion, const QString& userName,


23  const QString& password,


24  const QString& crdTrafo, const QString& ssrFormat,


25  bool CoM,


26  const QString& sp3FileName,


27  const QString& rnxFileName,


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


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


30  protected:


31  virtual ~bncRtnetUploadCaster();


32  private:


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


34  double GPSweeks, const QString& prn,


35  const ColumnVector& rtnAPC,


36  double ura,


37  const ColumnVector& rtnClk,


38  const ColumnVector& rtnVel,


39  const ColumnVector& rtnCoM,


40  const ColumnVector& rtnClkSig,


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


42  QString& outLine);


43 


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


45 


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


47 


48  int determineUpdateInd(double samplingRate);


49 


50  QString _casterID;


51  bncEphUser* _ephUser;


52  QString _rtnetStreamBuffer;


53  QString _crdTrafo;


54  SsrCorr* _ssrCorr;


55  QString _ssrFormat;


56  bool _CoM;


57  bool _phaseBiasInformationDecoded;


58  int _PID;


59  int _SID;


60  int _IOD;


61  int _samplRtcmClkCorr;


62  double _samplRtcmEphCorr;


63  double _dx;


64  double _dy;


65  double _dz;


66  double _dxr;


67  double _dyr;


68  double _dzr;


69  double _ox;


70  double _oy;


71  double _oz;


72  double _oxr;


73  double _oyr;


74  double _ozr;


75  double _sc;


76  double _scr;


77  double _t0;


78  bncClockRinex* _rnx;


79  bncSP3* _sp3;


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


81  };


82 


83  struct phaseBiasesSat {


84  phaseBiasesSat() {


85  yawAngle = 0.0;


86  yawRate = 0.0;


87  }


88  double yawAngle;


89  double yawRate;


90  };


91 


92  struct phaseBiasSignal {


93  phaseBiasSignal() {


94  bias = 0.0;


95  integerIndicator = 0;


96  wlIndicator = 0;


97  discontinuityCounter = 0;


98  }


99  QString type;


100  double bias;


101  unsigned int integerIndicator;


102  unsigned int wlIndicator;


103  unsigned int discontinuityCounter;


104  };


105 


106  #endif

