[hamradio-commits] [gnss-sdr] 148/251: Keep the list of satellite's block in a single place

Carles Fernandez carles_fernandez-guest at moszumanska.debian.org
Wed Sep 2 00:22:44 UTC 2015


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

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

commit 8f0c0cdd4c482e6512e728fa48275f98c4f7423d
Author: Carles Fernandez <carles.fernandez at gmail.com>
Date:   Mon May 25 19:43:29 2015 +0200

    Keep the list of satellite's block in a single place
---
 src/core/system_parameters/gnss_satellite.cc       | 185 +++++++++++----------
 src/core/system_parameters/gnss_satellite.h        |   2 +-
 .../gps_cnav_navigation_message.cc                 |  55 ++----
 3 files changed, 108 insertions(+), 134 deletions(-)

diff --git a/src/core/system_parameters/gnss_satellite.cc b/src/core/system_parameters/gnss_satellite.cc
index bce7f66..712b8af 100644
--- a/src/core/system_parameters/gnss_satellite.cc
+++ b/src/core/system_parameters/gnss_satellite.cc
@@ -242,9 +242,9 @@ std::string Gnss_Satellite::get_block() const
 
 
 
-
-void Gnss_Satellite::set_block(const std::string& system_, unsigned int PRN_ )
+std::string Gnss_Satellite::what_block(const std::string& system_, unsigned int PRN_)
 {
+    std::string block_ = "Unknown";
     if (system_.compare("GPS") == 0)
         {
             switch ( PRN_ )
@@ -252,103 +252,103 @@ void Gnss_Satellite::set_block(const std::string& system_, unsigned int PRN_ )
             // info from http://www.navcen.uscg.gov/?Do=constellationStatus
 
             case 1 :
-                block = std::string("IIF");   //Plane D
+                block_ = std::string("IIF");   //Plane D
                 break;
             case 2 :
-                block = std::string("IIR");   //Plane D
+                block_ = std::string("IIR");   //Plane D
                 break;
             case 3 :
-                block = std::string("IIF");   //Plane E
+                block_ = std::string("IIF");   //Plane E
                 break;
             case 4 :
-                block = std::string("IIA");   //Plane D
+                block_ = std::string("IIA");   //Plane D
                 break;
             case 5 :
-                block = std::string("IIR-M"); //Plane E
+                block_ = std::string("IIR-M"); //Plane E
                 break;
             case 6 :
-                block = std::string("IIF");   //Plane D
+                block_ = std::string("IIF");   //Plane D
                 break;
             case 7 :
-                block = std::string("IIR-M"); //Plane A
+                block_ = std::string("IIR-M"); //Plane A
                 break;
             case 8 :
-                block = std::string("IIA*");   // Decommissed
+                block_ = std::string("IIA*");   // Decommissed
                 break;
             case 9 :
-                block = std::string("IIF");   //Plane F
+                block_ = std::string("IIF");   //Plane F
                 break;
             case 10 :
-                block = std::string("IIA");   //Plane E
+                block_ = std::string("IIA");   //Plane E
                 break;
             case 11 :
-                block = std::string("IIR");   //Plane D
+                block_ = std::string("IIR");   //Plane D
                 break;
             case 12 :
-                block = std::string("IIR-M"); //Plane B
+                block_ = std::string("IIR-M"); //Plane B
                 break;
             case 13 :
-                block = std::string("IIR");   //Plane F
+                block_ = std::string("IIR");   //Plane F
                 break;
             case 14 :
-                block = std::string("IIR");   //Plane F
+                block_ = std::string("IIR");   //Plane F
                 break;
             case 15 :
-                block = std::string("IIR-M"); //Plane F
+                block_ = std::string("IIR-M"); //Plane F
                 break;
             case 16 :
-                block = std::string("IIR");   //Plane B
+                block_ = std::string("IIR");   //Plane B
                 break;
             case 17 :
-                block = std::string("IIR-M"); //Plane C
+                block_ = std::string("IIR-M"); //Plane C
                 break;
             case 18 :
-                block = std::string("IIR");   //Plane E
+                block_ = std::string("IIR");   //Plane E
                 break;
             case 19 :
-                block = std::string("IIR");   //Plane D
+                block_ = std::string("IIR");   //Plane D
                 break;
             case 20 :
-                block = std::string("IIR");   //Plane B
+                block_ = std::string("IIR");   //Plane B
                 break;
             case 21 :
-                block = std::string("IIR");   //Plane D
+                block_ = std::string("IIR");   //Plane D
                 break;
             case 22 :
-                block = std::string("IIR");   //Plane E
+                block_ = std::string("IIR");   //Plane E
                 break;
             case 23 :
-                block = std::string("IIR");   //Plane F
+                block_ = std::string("IIR");   //Plane F
                 break;
             case 24 :
-                block = std::string("IIF");   //Plane A
+                block_ = std::string("IIF");   //Plane A
                 break;
             case 25 :
-                block = std::string("IIF");   //Plane B
+                block_ = std::string("IIF");   //Plane B
                 break;
             case 26 :
-                block = std::string("IIF");   //Plane B
+                block_ = std::string("IIF");   //Plane B
                 break;
             case 27 :
-                block = std::string("IIF");   //Plane C
+                block_ = std::string("IIF");   //Plane C
                 break;
             case 28 :
-                block = std::string("IIR");   //Plane B
+                block_ = std::string("IIR");   //Plane B
                 break;
             case 29 :
-                block = std::string("IIR-M"); //Plane C
+                block_ = std::string("IIR-M"); //Plane C
                 break;
             case 30 :
-                block = std::string("IIF");   //Plane A
+                block_ = std::string("IIF");   //Plane A
                 break;
             case 31 :
-                block = std::string("IIR-M"); //Plane A
+                block_ = std::string("IIR-M"); //Plane A
                 break;
             case 32 :
-                block = std::string("IIA");   //Plane E
+                block_ = std::string("IIA");   //Plane E
                 break;
             default :
-                block = std::string("Unknown");
+                block_ = std::string("Unknown");
             }
         }
 
@@ -361,161 +361,168 @@ void Gnss_Satellite::set_block(const std::string& system_, unsigned int PRN_ )
             // See also http://www.glonass-center.ru/en/GLONASS/
 
             case 1 :
-                block = std::string("1");   //Plane 1
+                block_ = std::string("1");   //Plane 1
                 rf_link = 1;
                 break;
             case 2 :
-                block = std::string("-4");  //Plane 1
+                block_ = std::string("-4");  //Plane 1
                 rf_link = -4;
                 break;
             case 3 :
-                block = std::string("5");   //Plane 1
+                block_ = std::string("5");   //Plane 1
                 rf_link = 5;
                 break;
             case 4 :
-                block = std::string("6");   //Plane 1
+                block_ = std::string("6");   //Plane 1
                 rf_link = 6;
                 break;
             case 5 :
-                block = std::string("1");   //Plane 1
+                block_ = std::string("1");   //Plane 1
                 rf_link = 1;
                 break;
             case 6 :
-                block = std::string("-4");  //Plane 1
+                block_ = std::string("-4");  //Plane 1
                 rf_link = -4;
                 break;
             case 7 :
-                block = std::string("5");   //Plane 1
+                block_ = std::string("5");   //Plane 1
                 rf_link = 5;
                 break;
             case 8 :
-                block = std::string("6");   //Plane 1
+                block_ = std::string("6");   //Plane 1
                 rf_link = 6;
                 break;
             case 9 :
-                block = std::string("-2");  //Plane 2
+                block_ = std::string("-2");  //Plane 2
                 rf_link = -2;
                 break;
             case 10 :
-                block = std::string("-7");  //Plane 2
+                block_ = std::string("-7");  //Plane 2
                 rf_link = -7;
                 break;
             case 11 :
-                block = std::string("0");   //Plane 2
+                block_ = std::string("0");   //Plane 2
                 rf_link = 0;
                 break;
             case 12 :
-                block = std::string("-1");  //Plane 2
+                block_ = std::string("-1");  //Plane 2
                 rf_link = -1;
                 break;
             case 13 :
-                block = std::string("-2");  //Plane 2
+                block_ = std::string("-2");  //Plane 2
                 rf_link = -2;
                 break;
             case 14 :
-                block = std::string("-7");  //Plane 2
+                block_ = std::string("-7");  //Plane 2
                 rf_link = -7;
                 break;
             case 15 :
-                block = std::string("0");   //Plane 2
+                block_ = std::string("0");   //Plane 2
                 rf_link = 0;
                 break;
             case 16 :
-                block = std::string("-1");  //Plane 2
+                block_ = std::string("-1");  //Plane 2
                 rf_link = -1;
                 break;
             case 17 :
-                block = std::string("4");   //Plane 3
+                block_ = std::string("4");   //Plane 3
                 rf_link = 4;
                 break;
             case 18 :
-                block = std::string("-3");  //Plane 3
+                block_ = std::string("-3");  //Plane 3
                 rf_link = -3;
                 break;
             case 19 :
-                block = std::string("3");   //Plane 3
+                block_ = std::string("3");   //Plane 3
                 rf_link = 3;
                 break;
             case 20 :
-                block = std::string("2");   //Plane 3
+                block_ = std::string("2");   //Plane 3
                 rf_link = 2;
                 break;
             case 21 :
-                block = std::string("4");   //Plane 3
+                block_ = std::string("4");   //Plane 3
                 rf_link = 4;
                 break;
             case 22 :
-                block = std::string("-3");  //Plane 3
+                block_ = std::string("-3");  //Plane 3
                 rf_link = -3;
                 break;
             case 23 :
-                block = std::string("3");   //Plane 3
+                block_ = std::string("3");   //Plane 3
                 rf_link = 3;
                 break;
             case 24 :
-                block = std::string("2");   //Plane 3
+                block_ = std::string("2");   //Plane 3
                 rf_link = 2;
                 break;
             default :
-                block = std::string("Unknown");
+                block_ = std::string("Unknown");
             }
         }
     if (system_.compare("SBAS") == 0)
+        {
+            switch ( PRN_ )
             {
-                switch ( PRN_ )
-                {
-                case 122 :
-                    block = std::string("WAAS");  // WAAS Inmarsat 3F4 (AOR-W)
-                    break;
-                case 134 :
-                    block = std::string("WAAS");  // WAAS Inmarsat 3F3 (POR)
-                    break;
-                case 120 :
-                    block = std::string("EGNOS"); // EGNOS AOR-E Broadcast satellite http://www.egnos-pro.esa.int/index.html
-                    break;
-                case 124 :
-                    block = std::string("EGNOS"); // EGNOS ESA ARTEMIS used for EGNOS Operations
-                    break;
-                case 126 :
-                    block = std::string("EGNOS"); // EGNOS IOR-W  currently used by Industry to perform various tests on the system.
-                    break;
-                default:
-                    block = std::string("Unknown");
-                }
+            case 122 :
+                block_ = std::string("WAAS");  // WAAS Inmarsat 3F4 (AOR-W)
+                break;
+            case 134 :
+                block_ = std::string("WAAS");  // WAAS Inmarsat 3F3 (POR)
+                break;
+            case 120 :
+                block_ = std::string("EGNOS"); // EGNOS AOR-E Broadcast satellite http://www.egnos-pro.esa.int/index.html
+                break;
+            case 124 :
+                block_ = std::string("EGNOS"); // EGNOS ESA ARTEMIS used for EGNOS Operations
+                break;
+            case 126 :
+                block_ = std::string("EGNOS"); // EGNOS IOR-W  currently used by Industry to perform various tests on the system.
+                break;
+            default:
+                block_ = std::string("Unknown");
             }
+        }
     if (system_.compare("Galileo") == 0)
         {
             // Check http://en.wikipedia.org/wiki/List_of_Galileo_satellites
             switch ( PRN_ )
             {
             case 11 :
-                block = std::string("IOV-PFM"); //  PFM, the ProtoFlight Model (GSAT0101), launched from French Guiana at 10:30 GMT on October 21, 2011
+                block_ = std::string("IOV-PFM"); //  PFM, the ProtoFlight Model (GSAT0101), launched from French Guiana at 10:30 GMT on October 21, 2011
                 break;
             case 12 :
-                block = std::string("IOV-FM2"); // Galileo In-Orbit Validation (IOV) satellite FM2 (Flight Model 2) also known as GSAT0102, from French Guiana at 10:30 GMT on October 21, 2011
+                block_ = std::string("IOV-FM2"); // Galileo In-Orbit Validation (IOV) satellite FM2 (Flight Model 2) also known as GSAT0102, from French Guiana at 10:30 GMT on October 21, 2011
                 break;
             case 19 :
-                block = std::string("IOV-FM3"); // Galileo In-Orbit Validation (IOV) satellite FM3 (Flight Model 3), launched on October 12, 2012
+                block_ = std::string("IOV-FM3"); // Galileo In-Orbit Validation (IOV) satellite FM3 (Flight Model 3), launched on October 12, 2012
                 break;
             case 20 :
-                block = std::string("IOV-FM4"); // Galileo In-Orbit Validation (IOV) satellite FM4 (Flight Model 4), launched on October 12, 2012. Unavailable.
+                block_ = std::string("IOV-FM4"); // Galileo In-Orbit Validation (IOV) satellite FM4 (Flight Model 4), launched on October 12, 2012. Unavailable.
                 break;
             case 18 :
-                block = std::string("FOC-FM1"); // Galileo Full Operational Capability (FOC) satellite FM1, launched into incorrect orbit on August 22, 2014.
+                block_ = std::string("FOC-FM1"); // Galileo Full Operational Capability (FOC) satellite FM1, launched into incorrect orbit on August 22, 2014.
                 break;
             case 14 :
-                block = std::string("FOC-FM2"); // Galileo Full Operational Capability (FOC) satellite FM2, launched into incorrect orbit on August 22, 2014.
+                block_ = std::string("FOC-FM2"); // Galileo Full Operational Capability (FOC) satellite FM2, launched into incorrect orbit on August 22, 2014.
                 break;
             case 26 :
-                block = std::string("FOC-FM3"); // Galileo Full Operational Capability (FOC) satellite FM3, launched on March 27, 2015.
+                block_ = std::string("FOC-FM3"); // Galileo Full Operational Capability (FOC) satellite FM3, launched on March 27, 2015.
                 break;
             case 22 :
-                block = std::string("FOC-FM4"); // Galileo Full Operational Capability (FOC) satellite FM4, launched on March 27, 2015.
+                block_ = std::string("FOC-FM4"); // Galileo Full Operational Capability (FOC) satellite FM4, launched on March 27, 2015.
                 break;
             default:
-                block = std::string("Unknown(Simulated)");
+                block_ = std::string("Unknown(Simulated)");
             }
         }
+    return block_;
+}
+
+
+void Gnss_Satellite::set_block(const std::string& system_, unsigned int PRN_)
+{
+    block = what_block(system_, PRN_);
 }
 
 
diff --git a/src/core/system_parameters/gnss_satellite.h b/src/core/system_parameters/gnss_satellite.h
index a3ec17e..cfdf136 100644
--- a/src/core/system_parameters/gnss_satellite.h
+++ b/src/core/system_parameters/gnss_satellite.h
@@ -54,6 +54,7 @@ public:
     std::string get_system() const;            //!< Gets the satellite system {"GPS", "GLONASS", "SBAS", "Galileo", "Beidou"}
     std::string get_system_short() const;      //!< Gets the satellite system {"G", "R", "SBAS", "E", "C"}
     std::string get_block() const;             //!< Gets the satellite block. If GPS, returns {"IIA", "IIR", "IIR-M", "IIF"}
+    std::string what_block(const std::string& system_, unsigned int PRN_); //!< Gets the block of a given satellite
     friend bool operator== (const Gnss_Satellite &, const Gnss_Satellite &);  //!< operator== for comparison
     friend std::ostream& operator<<(std::ostream &, const Gnss_Satellite &);  //!< operator<< for pretty printing
     //Gnss_Satellite& operator=(const Gnss_Satellite &);
@@ -68,6 +69,5 @@ private:
     void set_block(const std::string& system_, unsigned int PRN_ );
     std::set<std::string> system_set;     // = {"GPS", "GLONASS", "SBAS", "Galileo", "Compass"};
     void reset();
-
 };
 #endif
diff --git a/src/core/system_parameters/gps_cnav_navigation_message.cc b/src/core/system_parameters/gps_cnav_navigation_message.cc
index bac4dc9..7c6d34d 100644
--- a/src/core/system_parameters/gps_cnav_navigation_message.cc
+++ b/src/core/system_parameters/gps_cnav_navigation_message.cc
@@ -1,9 +1,9 @@
 /*!
- * \file Gps_CNAV_Navigation_Message.cc
- * \brief  Implementation of a GPS NAV Data message decoder as described in IS-GPS-200E
+ * \file gps_cnav_navigation_message.cc
+ * \brief Implementation of a GPS CNAV Data message decoder as described in IS-GPS-200H
  *
- * See http://www.gps.gov/technical/icwg/IS-GPS-200E.pdf Appendix II
- * \author Javier Arribas, 2011. jarribas(at)cttc.es
+ * See http://www.gps.gov/technical/icwg/IS-GPS-200H.pdf Appendix III
+ * \author Javier Arribas, 2015. jarribas(at)cttc.es
  *
  * -------------------------------------------------------------------------
  *
@@ -32,7 +32,8 @@
 
 #include "gps_cnav_navigation_message.h"
 #include <cmath>
-#include "boost/date_time/posix_time/posix_time.hpp"
+#include <boost/date_time/posix_time/posix_time.hpp>
+#include "gnss_satellite.h"
 
 
 void Gps_CNAV_Navigation_Message::reset()
@@ -52,50 +53,16 @@ void Gps_CNAV_Navigation_Message::reset()
     d_satvel_X = 0;
     d_satvel_Y = 0;
     d_satvel_Z = 0;
-
-    //Plane A (info from http://www.navcen.uscg.gov/?Do=constellationStatus)
-    satelliteBlock[9] = "IIA";
-    satelliteBlock[31] = "IIR-M";
-    satelliteBlock[8] = "IIA";
-    satelliteBlock[7] = "IIR-M";
-    satelliteBlock[27] = "IIA";
-    //Plane B
-    satelliteBlock[16] = "IIR";
-    satelliteBlock[25] = "IIF";
-    satelliteBlock[28] = "IIR";
-    satelliteBlock[12] = "IIR-M";
-    satelliteBlock[30] = "IIA";
-    //Plane C
-    satelliteBlock[29] = "IIR-M";
-    satelliteBlock[3] = "IIA";
-    satelliteBlock[19] = "IIR";
-    satelliteBlock[17] = "IIR-M";
-    satelliteBlock[6] = "IIA";
-    //Plane D
-    satelliteBlock[2] = "IIR";
-    satelliteBlock[1] = "IIF";
-    satelliteBlock[21] = "IIR";
-    satelliteBlock[4] = "IIA";
-    satelliteBlock[11] = "IIR";
-    satelliteBlock[24] = "IIA"; // Decommissioned from active service on 04 Nov 2011
-    //Plane E
-    satelliteBlock[20] = "IIR";
-    satelliteBlock[22] = "IIR";
-    satelliteBlock[5] = "IIR-M";
-    satelliteBlock[18] = "IIR";
-    satelliteBlock[32] = "IIA";
-    satelliteBlock[10] = "IIA";
-    //Plane F
-    satelliteBlock[14] = "IIR";
-    satelliteBlock[15] = "IIR-M";
-    satelliteBlock[13] = "IIR";
-    satelliteBlock[23] = "IIR";
-    satelliteBlock[26] = "IIA";
 }
 
 Gps_CNAV_Navigation_Message::Gps_CNAV_Navigation_Message()
 {
     reset();
+    Gnss_Satellite gnss_satellite_ = Gnss_Satellite();
+    for(unsigned int prn_ = 1; prn_ < 33; prn_++)
+        {
+            satelliteBlock[prn_] = gnss_satellite_.what_block("GPS", prn_);
+        }
 }
 
 void Gps_CNAV_Navigation_Message::print_gps_word_bytes(unsigned int GPS_word)

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