1  #ifndef BNCRTNETUPLOADCASTER_H


2  #define BNCRTNETUPLOADCASTER_H


3 


4  #include <newmat.h>


5  #include "bncuploadcaster.h"


6  #include "bnctime.h"


7  #include "ephemeris.h"


8  extern "C" {


9  #ifdef USE_SSR_RTCM


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


11  #elif USE_SSR_IGS


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


13  #endif


14  }


15 


16  class bncEphUser;


17  class bncoutf;


18  class bncClockRinex;


19  class bncSP3;


20 


21  class bncRtnetUploadCaster : public bncUploadCaster {


22  Q_OBJECT


23  public:


24  bncRtnetUploadCaster(const QString& mountpoint,


25  const QString& outHost, int outPort,


26  const QString& password,


27  const QString& crdTrafo, bool CoM,


28  const QString& sp3FileName,


29  const QString& rnxFileName,


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 ClockOrbit::SatData* sd,


44  QString& outLine);


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


46 


47  int determineUpdateInd(double samplingRate);


48 


49  QString _casterID;


50  bncEphUser* _ephUser;


51  QString _rtnetStreamBuffer;


52  QString _crdTrafo;


53  bool _CoM;


54  int _PID;


55  int _SID;


56  int _IOD;


57  int _samplRtcmClkCorr;


58  double _samplRtcmEphCorr;


59  double _dx;


60  double _dy;


61  double _dz;


62  double _dxr;


63  double _dyr;


64  double _dzr;


65  double _ox;


66  double _oy;


67  double _oz;


68  double _oxr;


69  double _oyr;


70  double _ozr;


71  double _sc;


72  double _scr;


73  double _t0;


74  bncClockRinex* _rnx;


75  bncSP3* _sp3;


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


77  };


78 


79  struct phaseBiasesSat {


80  phaseBiasesSat() {


81  yawAngle = 0.0;


82  yawRate = 0.0;


83  }


84  double yawAngle;


85  double yawRate;


86  };


87 


88  struct phaseBiasSignal {


89  phaseBiasSignal() {


90  bias = 0.0;


91  integerIndicator = 0;


92  wlIndicator = 0;


93  discontinuityCounter = 0;


94  }


95  QString type;


96  double bias;


97  unsigned int integerIndicator;


98  unsigned int wlIndicator;


99  unsigned int discontinuityCounter;


100  };


101 


102  #endif

