[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