[hamradio-commits] [gnss-sdr] 141/303: Add Galileo E5a observables block

Carles Fernandez carles_fernandez-guest at moszumanska.debian.org
Mon Feb 13 22:35:55 UTC 2017


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 866bb1537f3f2da3ce70a22a6bc496fb550d5c33
Author: Carles Fernandez <carlesfernandez at gmail.com>
Date:   Thu Nov 3 12:18:56 2016 +0100

    Add Galileo E5a observables block
---
 src/algorithms/observables/adapters/CMakeLists.txt |  3 +-
 .../adapters/galileo_e5a_observables.cc            | 96 ++++++++++++++++++++++
 .../observables/adapters/galileo_e5a_observables.h | 88 ++++++++++++++++++++
 src/core/receiver/gnss_block_factory.cc            |  7 ++
 src/core/system_parameters/Galileo_E5a.h           |  5 ++
 5 files changed, 198 insertions(+), 1 deletion(-)

diff --git a/src/algorithms/observables/adapters/CMakeLists.txt b/src/algorithms/observables/adapters/CMakeLists.txt
index 28f7460..3f3e95a 100644
--- a/src/algorithms/observables/adapters/CMakeLists.txt
+++ b/src/algorithms/observables/adapters/CMakeLists.txt
@@ -16,10 +16,11 @@
 # along with GNSS-SDR. If not, see <http://www.gnu.org/licenses/>.
 #
 
-set(OBS_ADAPTER_SOURCES 
+set(OBS_ADAPTER_SOURCES
 	gps_l1_ca_observables.cc
 	gps_l2_m_observables.cc
 	galileo_e1_observables.cc
+     galileo_e5a_observables.cc
 	hybrid_observables.cc
 )
 
diff --git a/src/algorithms/observables/adapters/galileo_e5a_observables.cc b/src/algorithms/observables/adapters/galileo_e5a_observables.cc
new file mode 100644
index 0000000..239b4b1
--- /dev/null
+++ b/src/algorithms/observables/adapters/galileo_e5a_observables.cc
@@ -0,0 +1,96 @@
+/*!
+ * \file galileo_e5a_observables.cc
+ * \brief Implementation of an adapter of a Galileo E5a observables block
+ * to a ObservablesInterface
+ * \author Carles Fernandez 2016. carles.fernandez(at)cttc.es
+ *
+ * -------------------------------------------------------------------------
+ *
+ * Copyright (C) 2010-2016  (see AUTHORS file for a list of contributors)
+ *
+ * GNSS-SDR is a software defined Global Navigation
+ *          Satellite Systems receiver
+ *
+ * This file is part of GNSS-SDR.
+ *
+ * GNSS-SDR is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GNSS-SDR is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNSS-SDR. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * -------------------------------------------------------------------------
+ */
+
+
+ #include "galileo_e5a_observables.h"
+ #include "configuration_interface.h"
+ #include <glog/logging.h>
+ #include "Galileo_E5a.h"
+
+ using google::LogMessage;
+
+ GalileoE5aObservables::GalileoE5aObservables(ConfigurationInterface* configuration,
+         std::string role,
+         unsigned int in_streams,
+         unsigned int out_streams) :
+                             role_(role),
+                             in_streams_(in_streams),
+                             out_streams_(out_streams)
+ {
+     std::string default_dump_filename = "./observables.dat";
+     DLOG(INFO) << "role " << role;
+     dump_ = configuration->property(role + ".dump", false);
+     dump_filename_ = configuration->property(role + ".dump_filename", default_dump_filename);
+     unsigned int default_depth = GALILEO_E5A_HISTORY_DEEP;
+     unsigned int history_deep = configuration->property(role + ".averaging_depth", default_depth);
+     observables_ = hybrid_make_observables_cc(in_streams_, dump_, dump_filename_, history_deep);
+     DLOG(INFO) << "pseudorange(" << observables_->unique_id() << ")";
+ }
+
+
+
+
+ GalileoE5aObservables::~GalileoE5aObservables()
+ {}
+
+
+
+
+ void GalileoE5aObservables::connect(gr::top_block_sptr top_block)
+ {
+     if(top_block) { /* top_block is not null */};
+     // Nothing to connect internally
+     DLOG(INFO) << "nothing to connect internally";
+ }
+
+
+
+ void GalileoE5aObservables::disconnect(gr::top_block_sptr top_block)
+ {
+     if(top_block) { /* top_block is not null */};
+     // Nothing to disconnect
+ }
+
+
+
+
+ gr::basic_block_sptr GalileoE5aObservables::get_left_block()
+ {
+     return observables_;
+ }
+
+
+
+
+ gr::basic_block_sptr GalileoE5aObservables::get_right_block()
+ {
+     return observables_;
+ }
diff --git a/src/algorithms/observables/adapters/galileo_e5a_observables.h b/src/algorithms/observables/adapters/galileo_e5a_observables.h
new file mode 100644
index 0000000..018881f
--- /dev/null
+++ b/src/algorithms/observables/adapters/galileo_e5a_observables.h
@@ -0,0 +1,88 @@
+/*!
+ * \file galileo_e5a_observables.h
+ * \brief Implementation of an adapter of a Galileo E5a observables block
+ * to a ObservablesInterface
+ * \author Carles Fernandez 2016. carles.fernandez(at)cttc.es
+ *
+ * -------------------------------------------------------------------------
+ *
+ * Copyright (C) 2010-2016  (see AUTHORS file for a list of contributors)
+ *
+ * GNSS-SDR is a software defined Global Navigation
+ *          Satellite Systems receiver
+ *
+ * This file is part of GNSS-SDR.
+ *
+ * GNSS-SDR is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GNSS-SDR is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNSS-SDR. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * -------------------------------------------------------------------------
+ */
+
+
+#ifndef GNSS_SDR_GALILEO_E5A_OBSERVABLES_H_
+#define GNSS_SDR_GALILEO_E5A_OBSERVABLES_H_
+
+#include <string>
+#include "observables_interface.h"
+#include "hybrid_observables_cc.h"
+
+
+class ConfigurationInterface;
+
+/*!
+ * \brief This class implements an ObservablesInterface for Galileo E1B
+ */
+class GalileoE5aObservables : public ObservablesInterface
+{
+public:
+    GalileoE5aObservables(ConfigurationInterface* configuration,
+            std::string role,
+            unsigned int in_streams,
+            unsigned int out_streams);
+    virtual ~GalileoE5aObservables();
+    std::string role()
+    {
+        return role_;
+    }
+
+    //!  Returns "Galileo_E5A_Observables"
+    std::string implementation()
+    {
+        return "Galileo_E5A_Observables";
+    }
+    void connect(gr::top_block_sptr top_block);
+    void disconnect(gr::top_block_sptr top_block);
+    gr::basic_block_sptr get_left_block();
+    gr::basic_block_sptr get_right_block();
+    void reset()
+    {
+        return;
+    }
+
+    //! All blocks must have an item_size() function implementation
+    size_t item_size()
+    {
+        return sizeof(gr_complex);
+    }
+
+private:
+    hybrid_observables_cc_sptr observables_;
+    bool dump_;
+    std::string dump_filename_;
+    std::string role_;
+    unsigned int in_streams_;
+    unsigned int out_streams_;
+};
+
+#endif
diff --git a/src/core/receiver/gnss_block_factory.cc b/src/core/receiver/gnss_block_factory.cc
index fb601e4..894a3bf 100644
--- a/src/core/receiver/gnss_block_factory.cc
+++ b/src/core/receiver/gnss_block_factory.cc
@@ -92,6 +92,7 @@
 #include "gps_l1_ca_observables.h"
 #include "gps_l2_m_observables.h"
 #include "galileo_e1_observables.h"
+#include "galileo_e5a_observables.h"
 #include "hybrid_observables.h"
 #include "gps_l1_ca_pvt.h"
 #include "galileo_e1_pvt.h"
@@ -1068,6 +1069,12 @@ std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetBlock(
                     out_streams));
             block = std::move(block_);
         }
+    else if (implementation.compare("Galileo_E5A_Observables") == 0)
+        {
+            std::unique_ptr<GNSSBlockInterface> block_(new GalileoE5aObservables(configuration.get(), role, in_streams,
+                    out_streams));
+            block = std::move(block_);
+        }
     else if (implementation.compare("Hybrid_Observables") == 0)
         {
             std::unique_ptr<GNSSBlockInterface> block_(new HybridObservables(configuration.get(), role, in_streams,
diff --git a/src/core/system_parameters/Galileo_E5a.h b/src/core/system_parameters/Galileo_E5a.h
index 55514aa..70ec19a 100644
--- a/src/core/system_parameters/Galileo_E5a.h
+++ b/src/core/system_parameters/Galileo_E5a.h
@@ -50,6 +50,11 @@ const double GALILEO_E5a_CODE_PERIOD = 0.001;
 const int Galileo_E5a_SYMBOL_RATE_BPS = 50;       //!< Galileo E5a symbol rate [bits/second]
 const int Galileo_E5a_NUMBER_OF_CODES = 50;
 
+
+// OBSERVABLE HISTORY DEEP FOR INTERPOLATION
+const int GALILEO_E5A_HISTORY_DEEP = 20;
+
+
 // F/NAV message structure
 
 const int GALILEO_FNAV_PREAMBLE_LENGTH_BITS = 12;

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