[hamradio-commits] [gnss-sdr] 94/126: fixing defects detected by coverity scan
Carles Fernandez
carles_fernandez-guest at moszumanska.debian.org
Sat Dec 26 18:38:05 UTC 2015
This is an automated email from the git hooks/post-receive script.
carles_fernandez-guest pushed a commit to branch next
in repository gnss-sdr.
commit 6c9a90abe447af0d48332e7ed718b2c23158d278
Author: Carles Fernandez <carles.fernandez at gmail.com>
Date: Tue Dec 8 20:24:36 2015 +0100
fixing defects detected by coverity scan
---
.../PVT/gnuradio_blocks/galileo_e1_pvt_cc.cc | 2 +-
src/algorithms/PVT/libs/galileo_e1_ls_pvt.cc | 37 +++-------------
src/algorithms/PVT/libs/hybrid_ls_pvt.cc | 51 ++++++++--------------
src/core/system_parameters/gnss_satellite.cc | 6 +++
4 files changed, 32 insertions(+), 64 deletions(-)
diff --git a/src/algorithms/PVT/gnuradio_blocks/galileo_e1_pvt_cc.cc b/src/algorithms/PVT/gnuradio_blocks/galileo_e1_pvt_cc.cc
index 8f196a7..b5d4ec4 100644
--- a/src/algorithms/PVT/gnuradio_blocks/galileo_e1_pvt_cc.cc
+++ b/src/algorithms/PVT/gnuradio_blocks/galileo_e1_pvt_cc.cc
@@ -270,7 +270,7 @@ int galileo_e1_pvt_cc::general_work (int noutput_items, gr_vector_int &ninput_it
// DEBUG MESSAGE: Display position in console output
if (((d_sample_counter % d_display_rate_ms) == 0) and d_ls_pvt->b_valid_position == true)
{
- std::cout << "Position at " << boost::posix_time::to_simple_string(d_ls_pvt->d_position_UTC_time)
+ std::cout << "Galileo Position at " << boost::posix_time::to_simple_string(d_ls_pvt->d_position_UTC_time)
<< " UTC is Lat = " << d_ls_pvt->d_latitude_d << " [deg], Long = " << d_ls_pvt->d_longitude_d
<< " [deg], Height= " << d_ls_pvt->d_height_m << " [m]" << std::endl;
diff --git a/src/algorithms/PVT/libs/galileo_e1_ls_pvt.cc b/src/algorithms/PVT/libs/galileo_e1_ls_pvt.cc
index 926eb77..23ff0ef 100644
--- a/src/algorithms/PVT/libs/galileo_e1_ls_pvt.cc
+++ b/src/algorithms/PVT/libs/galileo_e1_ls_pvt.cc
@@ -86,6 +86,7 @@ bool galileo_e1_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map
int Galileo_week_number = 0;
double utc = 0.0;
+ double GST = 0.0;
double TX_time_corrected_s = 0.0;
double SV_clock_bias_s = 0.0;
@@ -109,19 +110,8 @@ bool galileo_e1_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map
*/
W(obs_counter, obs_counter) = 1.0;
- // COMMON RX TIME PVT ALGORITHM MODIFICATION (Like RINEX files)
- // first estimate of transmit time
- //Galileo_week_number = galileo_ephemeris_iter->second.WN_5;//for GST
- //double sec_in_day = 86400;
- //double day_in_week = 7;
- // t = WN*sec_in_day*day_in_week + TOW; // t is Galileo System Time to use to compute satellite positions
-
- //JAVIER VERSION:
+ // COMMON RX TIME PVT ALGORITHM
double Rx_time = galileo_current_time;
-
- //to compute satellite position we need GST = WN+TOW (everything expressed in seconds)
- //double Rx_time = galileo_current_time + Galileo_week_number*sec_in_day*day_in_week;
-
double Tx_time = Rx_time - gnss_pseudoranges_iter->second.Pseudorange_m / GALILEO_C_m_s;
// 2- compute the clock drift using the clock model (broadcast) for this SV, including relativistic effect
@@ -142,16 +132,7 @@ bool galileo_e1_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map
valid_obs++;
Galileo_week_number = galileo_ephemeris_iter->second.WN_5; //for GST
-
- double GST = galileo_ephemeris_map.find(gnss_pseudoranges_iter->first)->second.Galileo_System_Time(Galileo_week_number, galileo_current_time);
- utc = galileo_utc_model.GST_to_UTC_time(GST, Galileo_week_number);
- // get time string gregorian calendar
- boost::posix_time::time_duration t = boost::posix_time::seconds(utc);
- // 22 August 1999 00:00 last Galileo start GST epoch (ICD sec 5.1.2)
- boost::posix_time::ptime p_time(boost::gregorian::date(1999, 8, 22), t);
- d_position_UTC_time = p_time;
- LOG(INFO) << "Galileo RX time at " << boost::posix_time::to_simple_string(p_time);
- //end debug
+ GST = galileo_ephemeris_map.find(gnss_pseudoranges_iter->first)->second.Galileo_System_Time(Galileo_week_number, galileo_current_time);
// SV ECEF DEBUG OUTPUT
DLOG(INFO) << "ECEF satellite SV ID=" << galileo_ephemeris_iter->second.i_satellite_PRN
@@ -169,6 +150,7 @@ bool galileo_e1_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map
}
obs_counter++;
}
+
// ********************************************************************************
// ****** SOLVE LEAST SQUARES******************************************************
// ********************************************************************************
@@ -184,15 +166,14 @@ bool galileo_e1_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map
mypos = galileo_e1_ls_pvt::leastSquarePos(satpos, obs, W);
- // Compute GST and Gregorian time
- //double GST = galileo_ephemeris_iter->second.Galileo_System_Time(Galileo_week_number, galileo_current_time);
- double GST = galileo_ephemeris_map.find(gnss_pseudoranges_iter->first)->second.Galileo_System_Time(Galileo_week_number, galileo_current_time);
+ // Compute Gregorian time
utc = galileo_utc_model.GST_to_UTC_time(GST, Galileo_week_number);
// get time string Gregorian calendar
boost::posix_time::time_duration t = boost::posix_time::seconds(utc);
// 22 August 1999 00:00 last Galileo start GST epoch (ICD sec 5.1.2)
boost::posix_time::ptime p_time(boost::gregorian::date(1999, 8, 22), t);
d_position_UTC_time = p_time;
+
DLOG(INFO) << "Galileo Position at TOW=" << galileo_current_time << " in ECEF (X,Y,Z) = " << mypos;
galileo_e1_ls_pvt::cart2geo(static_cast<double>(mypos(0)), static_cast<double>(mypos(1)), static_cast<double>(mypos(2)), 4);
@@ -202,14 +183,10 @@ bool galileo_e1_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map
b_valid_position = false;
return false;
}
- LOG(INFO) << "Galileo Position at " << boost::posix_time::to_simple_string(p_time)
+ DLOG(INFO) << "Galileo Position at " << boost::posix_time::to_simple_string(p_time)
<< " is Lat = " << d_latitude_d << " [deg], Long = " << d_longitude_d
<< " [deg], Height= " << d_height_m << " [m]";
- std::cout << "Galileo Position at " << boost::posix_time::to_simple_string(p_time)
- << " is Lat = " << d_latitude_d << " [deg], Long = " << d_longitude_d
- << " [deg], Height= " << d_height_m << " [m]" << std::endl;
-
// ###### Compute DOPs ########
galileo_e1_ls_pvt::compute_DOP();
diff --git a/src/algorithms/PVT/libs/hybrid_ls_pvt.cc b/src/algorithms/PVT/libs/hybrid_ls_pvt.cc
index 016fa3a..e5e332a 100644
--- a/src/algorithms/PVT/libs/hybrid_ls_pvt.cc
+++ b/src/algorithms/PVT/libs/hybrid_ls_pvt.cc
@@ -95,11 +95,12 @@ bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, do
arma::mat satpos = arma::zeros(3, valid_pseudoranges); // satellite positions matrix
int Galileo_week_number = 0;
- int GPS_week;
- double utc = 0;
- double utc_tx_corrected = 0; //utc computed at tx_time_corrected, added for Galileo constellation (in GPS utc is directly computed at TX_time_corrected_s)
+ int GPS_week = 0;
+ double utc = 0.0;
+ double GST = 0.0;
+ double utc_tx_corrected = 0.0; //utc computed at tx_time_corrected, added for Galileo constellation (in GPS utc is directly computed at TX_time_corrected_s)
double TX_time_corrected_s;
- double SV_clock_bias_s = 0;
+ double SV_clock_bias_s = 0.0;
d_flag_averaging = flag_averaging;
@@ -127,13 +128,7 @@ bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, do
*/
W(obs_counter, obs_counter) = 1;
- // COMMON RX TIME PVT ALGORITHM MODIFICATION (Like RINEX files)
- // first estimate of transmit time
- //Galileo_week_number = galileo_ephemeris_iter->second.WN_5;//for GST
- //double sec_in_day = 86400;
- //double day_in_week = 7;
- // t = WN*sec_in_day*day_in_week + TOW; // t is Galileo System Time to use to compute satellite positions
-
+ // COMMON RX TIME PVT ALGORITHM
double Rx_time = hybrid_current_time;
double Tx_time = Rx_time - gnss_pseudoranges_iter->second.Pseudorange_m/GALILEO_C_m_s;
@@ -154,22 +149,9 @@ bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, do
d_visible_satellites_CN0_dB[valid_obs] = gnss_pseudoranges_iter->second.CN0_dB_hz;
valid_obs++;
valid_obs_GALILEO_counter ++;
- Galileo_week_number = galileo_ephemeris_iter->second.WN_5; //for GST
- //debug
- double GST = galileo_ephemeris_iter->second.Galileo_System_Time(Galileo_week_number, hybrid_current_time);
- utc = galileo_utc_model.GST_to_UTC_time(GST, Galileo_week_number); // this shoud be removed and it should be considered the utc_tx_corrected
- utc_tx_corrected = galileo_utc_model.GST_to_UTC_time(TX_time_corrected_s, Galileo_week_number);
- //std::cout<<"Gal UTC at TX_time_corrected_s = "<<utc_tx_corrected<< std::endl;
- //std::cout<<"Gal_week = "<<Galileo_week_number<< std::endl;
- //std::cout << "Gal UTC = " << utc << std::endl;
- // get time string gregorian calendar
- boost::posix_time::time_duration t = boost::posix_time::seconds(utc);
- // 22 August 1999 00:00 last Galileo start GST epoch (ICD sec 5.1.2)
- boost::posix_time::ptime p_time(boost::gregorian::date(1999, 8, 22), t);
- d_position_UTC_time = p_time;
- LOG(INFO) << "Galileo RX time at " << boost::posix_time::to_simple_string(p_time);
- //end debug
+ Galileo_week_number = galileo_ephemeris_iter->second.WN_5; //for GST
+ GST = galileo_ephemeris_iter->second.Galileo_System_Time(Galileo_week_number, hybrid_current_time);
// SV ECEF DEBUG OUTPUT
DLOG(INFO) << "ECEF satellite SV ID=" << galileo_ephemeris_iter->second.i_satellite_PRN
@@ -222,16 +204,14 @@ bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, do
d_visible_satellites_CN0_dB[valid_obs] = gnss_pseudoranges_iter->second.CN0_dB_hz;
valid_obs++;
valid_obs_GPS_counter++;
+ GPS_week = gps_ephemeris_iter->second.i_GPS_week;
+
// SV ECEF DEBUG OUTPUT
DLOG(INFO) << "(new)ECEF satellite SV ID=" << gps_ephemeris_iter->second.i_satellite_PRN
<< " X=" << gps_ephemeris_iter->second.d_satpos_X
<< " [m] Y=" << gps_ephemeris_iter->second.d_satpos_Y
<< " [m] Z=" << gps_ephemeris_iter->second.d_satpos_Z
<< " [m] PR_obs=" << obs(obs_counter) << " [m]";
-
- // compute the UTC time for this SV (just to print the asociated UTC timestamp)
- GPS_week = gps_ephemeris_iter->second.i_GPS_week;
- utc = gps_utc_model.utc_time(TX_time_corrected_s, GPS_week);
}
else // the ephemeris are not available for this SV
{
@@ -262,8 +242,14 @@ bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, do
mypos = hybrid_ls_pvt::leastSquarePos(satpos, obs, W);
// Compute GST and Gregorian time
- double GST = galileo_ephemeris_map.find(gnss_pseudoranges_iter->first)->second.Galileo_System_Time(Galileo_week_number, hybrid_current_time);
- utc = galileo_utc_model.GST_to_UTC_time(GST, Galileo_week_number);
+ if( GST != 0.0)
+ {
+ utc = galileo_utc_model.GST_to_UTC_time(GST, Galileo_week_number);
+ }
+ else
+ {
+ utc = gps_utc_model.utc_time(TX_time_corrected_s, GPS_week);
+ }
// get time string Gregorian calendar
boost::posix_time::time_duration t = boost::posix_time::seconds(utc);
// 22 August 1999 00:00 last Galileo start GST epoch (ICD sec 5.1.2)
@@ -290,7 +276,6 @@ bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, do
<< " is Lat = " << d_latitude_d << " [deg], Long = " << d_longitude_d
<< " [deg], Height= " << d_height_m << " [m]";
-
// ###### Compute DOPs ########
hybrid_ls_pvt::compute_DOP();
diff --git a/src/core/system_parameters/gnss_satellite.cc b/src/core/system_parameters/gnss_satellite.cc
index 712b8af..8fa1017 100644
--- a/src/core/system_parameters/gnss_satellite.cc
+++ b/src/core/system_parameters/gnss_satellite.cc
@@ -512,6 +512,12 @@ std::string Gnss_Satellite::what_block(const std::string& system_, unsigned int
case 22 :
block_ = std::string("FOC-FM4"); // Galileo Full Operational Capability (FOC) satellite FM4, launched on March 27, 2015.
break;
+ case 24 :
+ block_ = std::string("FOC-FM5"); // Galileo Full Operational Capability (FOC) satellite FM5, launched on Sept. 11, 2015.
+ break;
+ case 30 :
+ block_ = std::string("FOC-FM6"); // Galileo Full Operational Capability (FOC) satellite FM6, launched on Sept. 11, 2015.
+ break;
default:
block_ = std::string("Unknown(Simulated)");
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/gnss-sdr.git
More information about the pkg-hamradio-commits
mailing list