#ifndef BNCCOMB_H #define BNCCOMB_H #include #include #include "bncephuser.h" class bncRtnetDecoder; class bncSP3; class bncAntex; class cmbParam { public: enum parType {AC_offset, Sat_offset, clk}; cmbParam(parType type_, int index_, const QString& ac_, const QString& prn_, double sig_0_, double sig_P_); ~cmbParam(); double partial(const QString& AC_, t_corr* corr); QString toString() const; parType type; int index; QString AC; QString prn; double xx; double sig_0; double sig_P; }; class bncComb : public bncEphUser { Q_OBJECT public: bncComb(); virtual ~bncComb(); void processCorrLine(const QString& staID, const QString& line); int nStreams() const {return _ACs.size();} signals: void newMessage(QByteArray msg, bool showOnScreen); private: class cmbEpoch { public: cmbEpoch(const QString& name) {acName = name;} ~cmbEpoch() { QMapIterator it(corr); while (it.hasNext()) { it.next(); delete it.value(); } } QString acName; bncTime time; QMap corr; // Corrections (key is PRN) }; class cmbAC { public: cmbAC() {} ~cmbAC() { QListIterator it(epochs); while (it.hasNext()) { delete it.next(); } } QString mountPoint; QString name; double weight; QQueue epochs; // List of Epochs with Corrections }; void processEpochs(const QList& epochs); void dumpResults(const bncTime& resTime, const QMap& resCorr); void printResults(QTextStream& out, const bncTime& resTime, const QMap& resCorr); void switchToLastEph(const t_eph* lastEph, t_corr* corr); QMap _ACs; // Analytical Centers (key is mountpoint) bncTime _lastCorrTime; QVector _params; bncRtnetDecoder* _rtnetDecoder; SymmetricMatrix _QQ; bool _firstReg; QByteArray _log; QString _masterAC; bncAntex* _antex; double _MAXRES; }; #endif