00001 #pragma ident "$Id: SolverPPPFB.hpp 1914 2009-05-24 22:09:30Z architest $"
00002
00008 #ifndef GPSTK_SOLVERPPPFB_HPP
00009 #define GPSTK_SOLVERPPPFB_HPP
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #include "SolverPPP.hpp"
00035 #include <list>
00036 #include <set>
00037
00038
00039 namespace gpstk
00040 {
00041
00043
00044
00046
00285 class SolverPPPFB : public SolverPPP
00286 {
00287 public:
00288
00294 SolverPPPFB(bool useNEU = false);
00295
00296
00302 virtual gnssSatTypeValue& Process(gnssSatTypeValue& gData)
00303 throw(ProcessingException);
00304
00305
00311 virtual gnssRinex& Process(gnssRinex& gData)
00312 throw(ProcessingException);
00313
00314
00322 virtual void ReProcess( int cycles )
00323 throw(ProcessingException);
00324
00325
00332 virtual void ReProcess( void )
00333 throw(ProcessingException);
00334
00335
00343 virtual bool LastProcess(gnssSatTypeValue& gData)
00344 throw(ProcessingException);
00345
00346
00354 virtual bool LastProcess(gnssRinex& gData)
00355 throw(ProcessingException);
00356
00357
00359 virtual std::list<double> getCodeList( void ) const
00360 { return limitsCodeList; };
00361
00362
00369 virtual SolverPPPFB& setCodeList( std::list<double> codeList )
00370 { limitsCodeList = codeList; return (*this); };
00371
00372
00379 virtual SolverPPPFB& addCodeLimit( double codeLimit )
00380 { limitsCodeList.push_back( codeLimit ); return (*this); };
00381
00382
00384 virtual SolverPPPFB& clearCodeList( void )
00385 { limitsCodeList.clear(); return (*this); };
00386
00387
00389 virtual std::list<double> getPhaseList( void ) const
00390 { return limitsPhaseList; };
00391
00392
00399 virtual SolverPPPFB& setPhaseList( std::list<double> phaseList )
00400 { limitsPhaseList = phaseList; return (*this); };
00401
00402
00409 virtual SolverPPPFB& addPhaseLimit( double phaseLimit )
00410 { limitsPhaseList.push_back( phaseLimit ); return (*this); };
00411
00412
00414 virtual SolverPPPFB& clearPhaseList( void )
00415 { limitsPhaseList.clear(); return (*this); };
00416
00417
00419 virtual int getProcessedMeasurements(void) const
00420 { return processedMeasurements; };
00421
00422
00425 virtual int getRejectedMeasurements(void) const
00426 { return rejectedMeasurements; };
00427
00428
00435 virtual SolverPPPFB& setNEU( bool useNEU );
00436
00437
00439 virtual int getIndex(void) const;
00440
00441
00443 virtual std::string getClassName(void) const;
00444
00445
00447 virtual ~SolverPPPFB() {};
00448
00449
00450 private:
00451
00452
00454 bool firstIteration;
00455
00456
00458 std::list<gnssRinex> ObsData;
00459
00460
00462 TypeIDSet keepTypeSet;
00463
00464
00466 int processedMeasurements;
00467
00468
00470 int rejectedMeasurements;
00471
00472
00474 std::list<double> limitsCodeList;
00475
00476
00478 std::list<double> limitsPhaseList;
00479
00480
00482 static int classIndex;
00483
00484
00486 void checkLimits( gnssRinex& gData, double codeLimit, double phaseLimit );
00487
00488
00490 int index;
00491
00493 void setIndex(void)
00494 { index = classIndex++; };
00495
00496
00497
00498 virtual int Compute( const Vector<double>& prefitResiduals,
00499 const Matrix<double>& designMatrix )
00500 throw(InvalidSolver)
00501 { return 0; };
00502
00503
00504 virtual SolverPPPFB& setDefaultEqDefinition(
00505 const gnssEquationDefinition& eqDef )
00506 { return (*this); };
00507
00508
00509 virtual SolverPPPFB& Reset( const Vector<double>& newState,
00510 const Matrix<double>& newErrorCov )
00511 { return (*this); };
00512
00513
00514 };
00515
00516
00518
00519 }
00520
00521 #endif // GPSTK_SOLVERPPPFB_HPP