#ifndef PPPCLIENT_H #define PPPCLIENT_H #include #include #include "pppInclude.h" #include "ephemeris.h" #include "pppOptions.h" #include "pppModel.h" class bncAntex; class t_pppRefSat; namespace BNC_PPP { class t_pppEphPool; class t_pppObsPool; class t_pppSatObs; class t_pppStation; class t_pppFilter; class t_pppClient : public interface_pppClient { public: t_pppClient(const t_pppOptions* opt); ~t_pppClient(); void putEphemeris(const t_eph* eph); void putTec(const t_vTec* vTec); void putOrbCorrections(const std::vector& corr); void putClkCorrections(const std::vector& corr); void putCodeBiases(const std::vector& biases); void putPhaseBiases(const std::vector& biases); void processEpoch(const std::vector& satObs, t_output* output); const t_pppEphPool* ephPool() const {return _ephPool;} const t_pppObsPool* obsPool() const {return _obsPool;} const bncAntex* antex() const {return _antex;} const t_pppStation* staRover() const {return _staRover;} double offGG() const {return _offGG;} std::ostringstream& log() {return *_log;} const t_pppOptions* opt() const {return _opt;} static void bancroft(const Matrix& BBpass, ColumnVector& pos); static t_pppClient* instance(); void reset(); private: void initOutput(t_output* output); void finish(t_irc irc); void clearObs(); t_irc prepareObs(const std::vector& satObs, std::vector& obsVector, bncTime& epoTime); bool preparePseudoObs(std::vector& obsVector); t_irc cmpModel(t_pppStation* 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_pppEphPool* _ephPool; t_pppObsPool* _obsPool; bncTime _epoTimeRover; t_pppStation* _staRover; bncAntex* _antex; t_pppFilter* _filter; double _offGG; std::vector _obsRover; std::ostringstream* _log; t_pppOptions* _opt; t_tides* _tides; bool _pseudoObsIono; int _num; }; }; // namespace BNC_PPP #define PPP_CLIENT (BNC_PPP::t_pppClient::instance()) #define LOG (BNC_PPP::t_pppClient::instance()->log()) #define OPT (BNC_PPP::t_pppClient::instance()->opt()) #endif