#ifndef PPPCLIENT_H #define PPPCLIENT_H #include #include #include "ppp.h" #include "ephemeris.h" #include "options.h" class bncAntex; namespace BNC { class t_ephPool; class t_obsPool; class t_satObs; class t_station; class t_filter; class t_pppClient { public: t_pppClient(const t_options* opt); ~t_pppClient(); void putGPSEphemeris(const t_ephGPS* eph); void putGloEphemeris(const t_ephGlo* eph); void putOrbCorrections(int numCorr, const t_orbCorr* corr); void putClkCorrections(int numCorr, const t_clkCorr* corr); void putBiases(int numBiases, const t_satBiases* biases); void processEpoch(int numSatRover, const t_pppSatObs* satObsRover, t_output* output); const t_ephPool* ephPool() const {return _ephPool;} const t_obsPool* obsPool() const {return _obsPool;} const bncAntex* antex() const {return _antex;} const t_station* staRover() const {return _staRover;} double offGG() const {return _offGG;} std::ostringstream& log() {return *_log;} const t_options* opt() const {return _opt;} static void bancroft(const Matrix& BBpass, ColumnVector& pos); static t_pppClient* instance(); private: void initOutput(t_output* output); void finish(t_irc irc); void clearObs(); t_irc prepareObs(int numSat, const t_pppSatObs* satObs, std::vector& obsVector, bncTime& epoTime); t_irc cmpModel(t_station* station, const ColumnVector& xyzc, std::vector& obsVector); t_irc cmpBancroft(const bncTime& epoTime, std::vector& obsVector, ColumnVector& xyzc, bool print); double cmpOffGG(std::vector& obsVector); t_output* _output; t_ephPool* _ephPool; t_obsPool* _obsPool; bncTime _epoTimeRover; t_station* _staRover; bncAntex* _antex; t_filter* _filter; double _offGG; std::vector _obsRover; std::ostringstream* _log; t_options* _opt; }; }; // namespace BNC #define PPP_CLIENT (BNC::t_pppClient::instance()) #define LOG (BNC::t_pppClient::instance()->log()) #define OPT (BNC::t_pppClient::instance()->opt()) #endif