[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