diff --git a/src/algorithms/PVT/libs/gps_l1_ca_ls_pvt.cc b/src/algorithms/PVT/libs/gps_l1_ca_ls_pvt.cc index 4ae26a22a..488f15296 100644 --- a/src/algorithms/PVT/libs/gps_l1_ca_ls_pvt.cc +++ b/src/algorithms/PVT/libs/gps_l1_ca_ls_pvt.cc @@ -336,7 +336,12 @@ bool gps_l1_ca_ls_pvt::get_PVT(std::map gnss_pseudoranges_map, mypos = leastSquarePos(satpos, obs, W); DLOG(INFO) << "(new)Position at TOW=" << GPS_current_time << " in ECEF (X,Y,Z) = " << mypos << std::endl; gps_l1_ca_ls_pvt::cart2geo(mypos(0), mypos(1), mypos(2), 4); - + //ToDo: Find an Observables/PVT random bug with some satellite configurations that gives an erratic PVT solution (i.e. height>50 km) + if (d_height_m>50000) + { + b_valid_position=false; + return false; //erratic PVT + } // Compute UTC time and print PVT solution double secondsperweek = 604800.0; // number of seconds in one week (7*24*60*60) boost::posix_time::time_duration t = boost::posix_time::seconds(utc + secondsperweek*(double)GPS_week); diff --git a/src/algorithms/channel/adapters/channel.cc b/src/algorithms/channel/adapters/channel.cc index 5709fee50..a862aef14 100644 --- a/src/algorithms/channel/adapters/channel.cc +++ b/src/algorithms/channel/adapters/channel.cc @@ -84,7 +84,7 @@ Channel::Channel(ConfigurationInterface *configuration, unsigned int channel, float threshold = configuration->property("Acquisition" + boost::lexical_cast(channel_) + ".threshold",0.0); - if(threshold==0.0) threshold = configuration->property("Acquisition.threshold",0); + if(threshold==0.0) threshold = configuration->property("Acquisition.threshold",0.0); acq_->set_threshold(threshold); diff --git a/src/core/receiver/gnss_block_factory.cc b/src/core/receiver/gnss_block_factory.cc index 22fff4a98..80d3ea220 100644 --- a/src/core/receiver/gnss_block_factory.cc +++ b/src/core/receiver/gnss_block_factory.cc @@ -55,6 +55,7 @@ #include "freq_xlating_fir_filter.h" #include "gps_l1_ca_pcps_acquisition.h" #include "gps_l1_ca_pcps_assisted_acquisition.h" +#include "gps_l1_ca_pcps_acquisition_fine_doppler.h" #include "galileo_e1_pcps_ambiguous_acquisition.h" #include "gps_l1_ca_dll_pll_tracking.h" #include "gps_l1_ca_dll_pll_optim_tracking.h" @@ -336,6 +337,11 @@ GNSSBlockInterface* GNSSBlockFactory::GetBlock( block = new GalileoE1PcpsAmbiguousAcquisition(configuration, role, in_streams, out_streams, queue); } + else if (implementation.compare("GPS_L1_CA_PCPS_Acquisition_Fine_Doppler") == 0) + { + block = new GpsL1CaPcpsAcquisitionFineDoppler(configuration, role, in_streams, + out_streams, queue); + } // TRACKING BLOCKS ------------------------------------------------------------- else if (implementation.compare("GPS_L1_CA_DLL_PLL_Tracking") == 0)