[hamradio-commits] [gnss-sdr] 60/80: Attempt to generate hybrid GPS L1 / Galileo E1 RTCM messages

Carles Fernandez carles_fernandez-guest at moszumanska.debian.org
Sun May 15 20:11:57 UTC 2016


This is an automated email from the git hooks/post-receive script.

carles_fernandez-guest pushed a commit to branch upstream
in repository gnss-sdr.

commit 94855ffa064fba5c509988ffc63213a2ff690bba
Author: Carles Fernandez <carles.fernandez at gmail.com>
Date:   Tue May 10 22:16:50 2016 +0200

    Attempt to generate hybrid GPS L1 / Galileo E1 RTCM messages
---
 src/algorithms/PVT/adapters/hybrid_pvt.cc          |   1 +
 .../PVT/gnuradio_blocks/hybrid_pvt_cc.cc           | 119 ++++++++++++++++++++-
 2 files changed, 117 insertions(+), 3 deletions(-)

diff --git a/src/algorithms/PVT/adapters/hybrid_pvt.cc b/src/algorithms/PVT/adapters/hybrid_pvt.cc
index ff50776..af08e9a 100644
--- a/src/algorithms/PVT/adapters/hybrid_pvt.cc
+++ b/src/algorithms/PVT/adapters/hybrid_pvt.cc
@@ -87,6 +87,7 @@ HybridPvt::HybridPvt(ConfigurationInterface* configuration,
     int rtcm_MT1077_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MT1077_rate_ms", rtcm_MSM_rate_ms), output_rate_ms);
     int rtcm_MT1097_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MT1097_rate_ms", rtcm_MSM_rate_ms), output_rate_ms);
     std::map<int,int> rtcm_msg_rate_ms;
+    rtcm_msg_rate_ms[1019] = rtcm_MT1019_rate_ms;
     rtcm_msg_rate_ms[1045] = rtcm_MT1045_rate_ms;
     for (int k = 1071; k < 1078; k++) // All GPS MSM
         {
diff --git a/src/algorithms/PVT/gnuradio_blocks/hybrid_pvt_cc.cc b/src/algorithms/PVT/gnuradio_blocks/hybrid_pvt_cc.cc
index ba7545c..af5f0b2 100644
--- a/src/algorithms/PVT/gnuradio_blocks/hybrid_pvt_cc.cc
+++ b/src/algorithms/PVT/gnuradio_blocks/hybrid_pvt_cc.cc
@@ -230,7 +230,7 @@ hybrid_pvt_cc::hybrid_pvt_cc(unsigned int nchannels, bool dump, std::string dump
         {
             d_rtcm_MT1077_rate_ms = boost::math::lcm(1000, d_output_rate_ms);  // default value if not set
         }
-    if(rtcm_msg_rate_ms.find(1097) != rtcm_msg_rate_ms.end()) // whatever between 1071 and 1077
+    if(rtcm_msg_rate_ms.find(1097) != rtcm_msg_rate_ms.end()) // whatever between 1091 and 1097
         {
             d_rtcm_MT1097_rate_ms = rtcm_msg_rate_ms[1097];
         }
@@ -405,6 +405,75 @@ int hybrid_pvt_cc::general_work (int noutput_items __attribute__((unused)), gr_v
                                         }
                                 }
 
+                            if(b_rtcm_writing_started)
+                                {
+                                    if(((d_sample_counter % (d_rtcm_MT1019_rate_ms / 4)) == 0) && (d_rtcm_MT1019_rate_ms != 0))
+                                        {
+                                            for(std::map<int,Gps_Ephemeris>::iterator gps_ephemeris_iter = d_ls_pvt->gps_ephemeris_map.begin(); gps_ephemeris_iter != d_ls_pvt->gps_ephemeris_map.end(); gps_ephemeris_iter++ )
+                                                {
+                                                    d_rtcm_printer->Print_Rtcm_MT1019(gps_ephemeris_iter->second);
+                                                }
+                                        }
+                                    if(((d_sample_counter % (d_rtcm_MT1045_rate_ms / 4)) == 0) && (d_rtcm_MT1045_rate_ms != 0))
+                                        {
+                                            for(std::map<int,Galileo_Ephemeris>::iterator gal_ephemeris_iter = d_ls_pvt->galileo_ephemeris_map.begin(); gal_ephemeris_iter != d_ls_pvt->galileo_ephemeris_map.end(); gal_ephemeris_iter++ )
+                                                {
+                                                    d_rtcm_printer->Print_Rtcm_MT1045(gal_ephemeris_iter->second);
+                                                }
+                                        }
+                                    if(((d_sample_counter % (d_rtcm_MT1097_rate_ms / 4) ) == 0) || ((d_sample_counter % (d_rtcm_MT1077_rate_ms / 4) ) == 0))
+                                        {
+                                            std::map<int,Gnss_Synchro>::iterator gnss_pseudoranges_iter;
+                                            std::map<int,Gps_Ephemeris>::iterator gps_ephemeris_iter;
+                                            gps_ephemeris_iter = d_ls_pvt->gps_ephemeris_map.end();
+                                            std::map<int,Galileo_Ephemeris>::iterator gal_ephemeris_iter;
+                                            gal_ephemeris_iter = d_ls_pvt->galileo_ephemeris_map.end();
+                                            unsigned int i = 0;
+                                            for (gnss_pseudoranges_iter = gnss_pseudoranges_map.begin(); gnss_pseudoranges_iter != gnss_pseudoranges_map.end(); gnss_pseudoranges_iter++)
+                                                {
+                                                    std::string system(&gnss_pseudoranges_iter->second.System, 1);
+                                                    if(gps_channel == 0)
+                                                        {
+                                                            if(system.compare("G") == 0)
+                                                                {
+                                                                    // This is a channel with valid GPS signal
+                                                                    gps_ephemeris_iter = d_ls_pvt->gps_ephemeris_map.find(gnss_pseudoranges_iter->second.PRN);
+                                                                    if (gps_ephemeris_iter != d_ls_pvt->gps_ephemeris_map.end())
+                                                                        {
+                                                                            gps_channel = i;
+                                                                        }
+                                                                }
+                                                        }
+                                                    if(gal_channel == 0)
+                                                        {
+                                                            if(system.compare("E") == 0)
+                                                                {
+                                                                    gal_ephemeris_iter = d_ls_pvt->galileo_ephemeris_map.find(gnss_pseudoranges_iter->second.PRN);
+                                                                    if (gal_ephemeris_iter != d_ls_pvt->galileo_ephemeris_map.end())
+                                                                        {
+                                                                            gal_channel = i;
+                                                                        }
+                                                                }
+                                                        }
+                                                    i++;
+                                                }
+                                            if(((d_sample_counter % (d_rtcm_MT1097_rate_ms / 4) ) == 0) && (d_rtcm_MT1097_rate_ms != 0) )
+                                                {
+
+                                                    if (gal_ephemeris_iter != d_ls_pvt->galileo_ephemeris_map.end())
+                                                        {
+                                                            d_rtcm_printer->Print_Rtcm_MSM(7, {}, {}, gal_ephemeris_iter->second, d_rx_time, gnss_pseudoranges_map, 0, 0, 0, 0, 0);
+                                                        }
+                                                }
+                                            if(((d_sample_counter % (d_rtcm_MT1077_rate_ms / 4) ) == 0) && (d_rtcm_MT1077_rate_ms != 0) )
+                                                {
+                                                    if (gps_ephemeris_iter != d_ls_pvt->gps_ephemeris_map.end())
+                                                        {
+                                                            d_rtcm_printer->Print_Rtcm_MSM(7, gps_ephemeris_iter->second, {}, {}, d_rx_time, gnss_pseudoranges_map, 0, 0, 0, 0, 0);
+                                                        }
+                                                }
+                                        }
+                                }
                             if(!b_rtcm_writing_started) // the first time
                                 {
                                     if(d_rtcm_MT1019_rate_ms != 0) // allows deactivating messages by setting rate = 0
@@ -421,8 +490,52 @@ int hybrid_pvt_cc::general_work (int noutput_items __attribute__((unused)), gr_v
                                                     d_rtcm_printer->Print_Rtcm_MT1045(gal_ephemeris_iter->second);
                                                 }
                                         }
-                                    // TODO: print observables...
-                                    // b_rtcm_writing_started = true;
+
+                                    std::map<int,Gnss_Synchro>::iterator gnss_pseudoranges_iter;
+                                    std::map<int,Gps_Ephemeris>::iterator gps_ephemeris_iter;
+                                    gps_ephemeris_iter = d_ls_pvt->gps_ephemeris_map.end();
+                                    std::map<int,Galileo_Ephemeris>::iterator gal_ephemeris_iter;
+                                    gal_ephemeris_iter = d_ls_pvt->galileo_ephemeris_map.end();
+                                    unsigned int i = 0;
+                                    for (gnss_pseudoranges_iter = gnss_pseudoranges_map.begin(); gnss_pseudoranges_iter != gnss_pseudoranges_map.end(); gnss_pseudoranges_iter++)
+                                        {
+                                            std::string system(&gnss_pseudoranges_iter->second.System, 1);
+                                            if(gps_channel == 0)
+                                                {
+                                                    if(system.compare("G") == 0)
+                                                        {
+                                                            // This is a channel with valid GPS signal
+                                                            gps_ephemeris_iter = d_ls_pvt->gps_ephemeris_map.find(gnss_pseudoranges_iter->second.PRN);
+                                                            if (gps_ephemeris_iter != d_ls_pvt->gps_ephemeris_map.end())
+                                                                {
+                                                                    gps_channel = i;
+                                                                }
+                                                        }
+                                                }
+                                            if(gal_channel == 0)
+                                                {
+                                                    if(system.compare("E") == 0)
+                                                        {
+                                                            gal_ephemeris_iter = d_ls_pvt->galileo_ephemeris_map.find(gnss_pseudoranges_iter->second.PRN);
+                                                            if (gal_ephemeris_iter != d_ls_pvt->galileo_ephemeris_map.end())
+                                                                {
+                                                                    gal_channel = i;
+                                                                }
+                                                        }
+                                                }
+                                            i++;
+                                        }
+
+                                    if (gps_ephemeris_iter != d_ls_pvt->gps_ephemeris_map.end() && (d_rtcm_MT1077_rate_ms != 0))
+                                        {
+                                            d_rtcm_printer->Print_Rtcm_MSM(7, gps_ephemeris_iter->second, {}, {}, d_rx_time, gnss_pseudoranges_map, 0, 0, 0, 0, 0);
+                                        }
+
+                                    if (gal_ephemeris_iter != d_ls_pvt->galileo_ephemeris_map.end() && (d_rtcm_MT1097_rate_ms != 0) )
+                                        {
+                                            d_rtcm_printer->Print_Rtcm_MSM(7, {}, {}, gal_ephemeris_iter->second, d_rx_time, gnss_pseudoranges_map, 0, 0, 0, 0, 0);
+                                        }
+                                    b_rtcm_writing_started = true;
                                 }
                         }
                 }

-- 
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