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  #include "../RTCM3/crs.h"


12  #include "../RTCM3/crsEncoder.h"


13 


14  class bncEphUser;


15  class bncoutf;


16  class bncClockRinex;


17  class bncSP3;


18  class bncBiasSinex;


19 


20  class bncRtnetUploadCaster : public bncUploadCaster {


21  Q_OBJECT


22  public:


23  bncRtnetUploadCaster(const QString& mountpoint,


24  const QString& outHost, int outPort,


25  const QString& ntripVersion, const QString& userName,


26  const QString& password,


27  const QString& crdTrafo, const QString& ssrFormat,


28  bool CoM,


29  const QString& sp3FileName,


30  const QString& rnxFileName,


31  const QString& bsxFileName,


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


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


34  protected:


35  virtual ~bncRtnetUploadCaster();


36  private:


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


38  double GPSweeks, const QString& prn,


39  const ColumnVector& rtnAPC,


40  double ura,


41  const ColumnVector& rtnClk,


42  const ColumnVector& rtnVel,


43  const ColumnVector& rtnCoM,


44  const ColumnVector& rtnClkSig,


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


46  QString& outLine);


47  void decodeRtnetEpoch(QStringList epochLines);


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


49 


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


51  // TODO: the following line can be deleted if all parameters are updated regarding ITRF2020


52  void crdTrafo14(int GPSWeek, ColumnVector& xyz, double& dc);


53 


54  int determineUpdateInd(double samplingRate);


55 


56  QString _casterID;


57  bncEphUser* _ephUser;


58  QString _rtnetStreamBuffer;


59  QString _crdTrafoStr;


60  SsrCorr* _ssrCorr;


61  QString _ssrFormat;


62  bool _CoM;


63  bool _phaseBiasInformationDecoded;


64  int _PID;


65  int _SID;


66  int _IOD;


67  int _samplRtcmClkCorr;


68  double _samplRtcmEphCorr;


69 


70  double _dx;


71  double _dy;


72  double _dz;


73  double _dxr;


74  double _dyr;


75  double _dzr;


76  double _ox;


77  double _oy;


78  double _oz;


79  double _oxr;


80  double _oyr;


81  double _ozr;


82  double _sc;


83  double _scr;


84  double _t0;


85  /* TODO: the following lines can be deleted if all parameters are updated regarding ITRF2020*/


86  double _dx14;


87  double _dy14;


88  double _dz14;


89  double _dxr14;


90  double _dyr14;


91  double _dzr14;


92  double _ox14;


93  double _oy14;


94  double _oz14;


95  double _oxr14;


96  double _oyr14;


97  double _ozr14;


98  double _sc14;


99  double _scr14;


100  double _t014;


101 


102  bncClockRinex* _rnx;


103  bncSP3* _sp3;


104  bncBiasSinex* _bsx;


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


106  };


107 


108  struct phaseBiasesSat {


109  phaseBiasesSat() {


110  yawAngle = 0.0;


111  yawRate = 0.0;


112  }


113  double yawAngle;


114  double yawRate;


115  };


116 


117  struct phaseBiasSignal {


118  phaseBiasSignal() {


119  bias = 0.0;


120  integerIndicator = 0;


121  wlIndicator = 0;


122  discontinuityCounter = 0;


123  }


124  QString type;


125  double bias;


126  unsigned int integerIndicator;


127  unsigned int wlIndicator;


128  unsigned int discontinuityCounter;


129  };


130 


131  #endif

