mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-12-15 04:30:33 +00:00
Merge branch 'next' of https://github.com/gnss-sdr/gnss-sdr into next
This commit is contained in:
commit
0bab0a414d
22
README.md
22
README.md
@ -6,20 +6,20 @@
|
|||||||
|
|
||||||
This program is a software-defined receiver which is able to process (that is, to perform detection, synchronization, demodulation and decoding of the navigation message, computation of observables and, finally, computation of position fixes) the following Global Navigation Satellite System's signals:
|
This program is a software-defined receiver which is able to process (that is, to perform detection, synchronization, demodulation and decoding of the navigation message, computation of observables and, finally, computation of position fixes) the following Global Navigation Satellite System's signals:
|
||||||
|
|
||||||
In the L1 band (centered at 1575.42 MHz):
|
In the L1 band:
|
||||||
- 🛰 GPS L1 C/A :white_check_mark:
|
- 🛰 GPS L1 C/A (centered at 1575.42 MHz) :white_check_mark:
|
||||||
- 🛰 Galileo E1b/c :white_check_mark:
|
- 🛰 Galileo E1b/c (centered at 1575.42 MHz) :white_check_mark:
|
||||||
- 🛰 GLONASS L1 C/A :white_check_mark:
|
- 🛰 GLONASS L1 C/A (centered at 1601.72 MHz) :white_check_mark:
|
||||||
|
|
||||||
In the L2 band (centered at 1227.60 MHz):
|
In the L2 band:
|
||||||
- 🛰 GPS L2C :white_check_mark:
|
- 🛰 GPS L2C (centered at 1227.60 MHz) :white_check_mark:
|
||||||
- 🛰 GLONASS L2 C/A :white_check_mark:
|
- 🛰 GLONASS L2 C/A (centered at 1246 MHz) :white_check_mark:
|
||||||
|
|
||||||
In the L5 band (centered at 1176.45 MHz):
|
In the L5 band:
|
||||||
- 🛰 GPS L5 :white_check_mark:
|
- 🛰 GPS L5 (centered at 1176.45 MHz) :white_check_mark:
|
||||||
- 🛰 Galileo E5a :white_check_mark:
|
- 🛰 Galileo E5a (centered at 1176.45 MHz) :white_check_mark:
|
||||||
|
|
||||||
GNSS-SDR provides interfaces for a wide range of radio frequency front-ends, generates processing outputs in standard formats, allows for the full inspection of the whole signal processing chain, and offers a framework for the development of new features. Please visit [https://gnss-sdr.org](https://gnss-sdr.org "GNSS-SDR website") for more information about this open source software-defined GNSS receiver.
|
GNSS-SDR provides interfaces for a wide range of radio frequency front-ends and raw sample file formats, generates processing outputs in standard formats, allows for the full inspection of the whole signal processing chain, and offers a framework for the development of new features. Please visit [https://gnss-sdr.org](https://gnss-sdr.org "GNSS-SDR website") for more information about this open source software-defined GNSS receiver.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,7 +18,4 @@
|
|||||||
|
|
||||||
add_subdirectory(adapters)
|
add_subdirectory(adapters)
|
||||||
add_subdirectory(gnuradio_blocks)
|
add_subdirectory(gnuradio_blocks)
|
||||||
if(ENABLE_FPGA)
|
add_subdirectory(libs)
|
||||||
add_subdirectory(libs)
|
|
||||||
endif(ENABLE_FPGA)
|
|
||||||
|
|
||||||
|
@ -65,4 +65,4 @@ file(GLOB ACQ_ADAPTER_HEADERS "*.h")
|
|||||||
list(SORT ACQ_ADAPTER_HEADERS)
|
list(SORT ACQ_ADAPTER_HEADERS)
|
||||||
add_library(acq_adapters ${ACQ_ADAPTER_SOURCES} ${ACQ_ADAPTER_HEADERS})
|
add_library(acq_adapters ${ACQ_ADAPTER_SOURCES} ${ACQ_ADAPTER_HEADERS})
|
||||||
source_group(Headers FILES ${ACQ_ADAPTER_HEADERS})
|
source_group(Headers FILES ${ACQ_ADAPTER_HEADERS})
|
||||||
target_link_libraries(acq_adapters gnss_sp_libs gnss_sdr_flags acq_gr_blocks ${Boost_LIBRARIES} ${GNURADIO_RUNTIME_LIBRARIES} ${GNURADIO_BLOCKS_LIBRARIES})
|
target_link_libraries(acq_adapters acquisition_lib gnss_sp_libs gnss_sdr_flags acq_gr_blocks ${Boost_LIBRARIES} ${GNURADIO_RUNTIME_LIBRARIES} ${GNURADIO_BLOCKS_LIBRARIES})
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
#include "galileo_e1_signal_processing.h"
|
#include "galileo_e1_signal_processing.h"
|
||||||
#include "Galileo_E1.h"
|
#include "Galileo_E1.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
|
#include "acq_conf.h"
|
||||||
#include <boost/lexical_cast.hpp>
|
#include <boost/lexical_cast.hpp>
|
||||||
#include <boost/math/distributions/exponential.hpp>
|
#include <boost/math/distributions/exponential.hpp>
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
@ -45,7 +46,7 @@ GalileoE1PcpsAmbiguousAcquisition::GalileoE1PcpsAmbiguousAcquisition(
|
|||||||
ConfigurationInterface* configuration, std::string role,
|
ConfigurationInterface* configuration, std::string role,
|
||||||
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
pcpsconf_t acq_parameters;
|
Acq_Conf acq_parameters;
|
||||||
configuration_ = configuration;
|
configuration_ = configuration;
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
std::string default_dump_filename = "./data/acquisition.dat";
|
std::string default_dump_filename = "./data/acquisition.dat";
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
#include "galileo_e5_signal_processing.h"
|
#include "galileo_e5_signal_processing.h"
|
||||||
#include "Galileo_E5a.h"
|
#include "Galileo_E5a.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
|
#include "acq_conf.h"
|
||||||
#include <boost/lexical_cast.hpp>
|
#include <boost/lexical_cast.hpp>
|
||||||
#include <boost/math/distributions/exponential.hpp>
|
#include <boost/math/distributions/exponential.hpp>
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
@ -44,7 +45,7 @@ using google::LogMessage;
|
|||||||
GalileoE5aPcpsAcquisition::GalileoE5aPcpsAcquisition(ConfigurationInterface* configuration,
|
GalileoE5aPcpsAcquisition::GalileoE5aPcpsAcquisition(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 role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
pcpsconf_t acq_parameters;
|
Acq_Conf acq_parameters = Acq_Conf();
|
||||||
configuration_ = configuration;
|
configuration_ = configuration;
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
std::string default_dump_filename = "../data/acquisition.dat";
|
std::string default_dump_filename = "../data/acquisition.dat";
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include "configuration_interface.h"
|
#include "configuration_interface.h"
|
||||||
#include "glonass_l1_signal_processing.h"
|
#include "glonass_l1_signal_processing.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
|
#include "acq_conf.h"
|
||||||
#include "GLONASS_L1_L2_CA.h"
|
#include "GLONASS_L1_L2_CA.h"
|
||||||
#include <boost/math/distributions/exponential.hpp>
|
#include <boost/math/distributions/exponential.hpp>
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
@ -46,7 +47,7 @@ GlonassL1CaPcpsAcquisition::GlonassL1CaPcpsAcquisition(
|
|||||||
ConfigurationInterface* configuration, std::string role,
|
ConfigurationInterface* configuration, std::string role,
|
||||||
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
pcpsconf_t acq_parameters;
|
Acq_Conf acq_parameters = Acq_Conf();
|
||||||
configuration_ = configuration;
|
configuration_ = configuration;
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
std::string default_dump_filename = "./data/acquisition.dat";
|
std::string default_dump_filename = "./data/acquisition.dat";
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include "glonass_l2_signal_processing.h"
|
#include "glonass_l2_signal_processing.h"
|
||||||
#include "GLONASS_L1_L2_CA.h"
|
#include "GLONASS_L1_L2_CA.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
|
#include "acq_conf.h"
|
||||||
#include <boost/math/distributions/exponential.hpp>
|
#include <boost/math/distributions/exponential.hpp>
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
|
|
||||||
@ -45,7 +46,7 @@ GlonassL2CaPcpsAcquisition::GlonassL2CaPcpsAcquisition(
|
|||||||
ConfigurationInterface* configuration, std::string role,
|
ConfigurationInterface* configuration, std::string role,
|
||||||
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
pcpsconf_t acq_parameters;
|
Acq_Conf acq_parameters = Acq_Conf();
|
||||||
configuration_ = configuration;
|
configuration_ = configuration;
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
std::string default_dump_filename = "./data/acquisition.dat";
|
std::string default_dump_filename = "./data/acquisition.dat";
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
#include "gps_sdr_signal_processing.h"
|
#include "gps_sdr_signal_processing.h"
|
||||||
#include "GPS_L1_CA.h"
|
#include "GPS_L1_CA.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
|
#include "acq_conf.h"
|
||||||
#include <boost/math/distributions/exponential.hpp>
|
#include <boost/math/distributions/exponential.hpp>
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
|
|
||||||
@ -48,7 +49,7 @@ GpsL1CaPcpsAcquisition::GpsL1CaPcpsAcquisition(
|
|||||||
ConfigurationInterface* configuration, std::string role,
|
ConfigurationInterface* configuration, std::string role,
|
||||||
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
pcpsconf_t acq_parameters;
|
Acq_Conf acq_parameters = Acq_Conf();
|
||||||
configuration_ = configuration;
|
configuration_ = configuration;
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
std::string default_dump_filename = "./data/acquisition.dat";
|
std::string default_dump_filename = "./data/acquisition.dat";
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
#include "gps_l2c_signal.h"
|
#include "gps_l2c_signal.h"
|
||||||
#include "GPS_L2C.h"
|
#include "GPS_L2C.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
|
#include "acq_conf.h"
|
||||||
#include <boost/math/distributions/exponential.hpp>
|
#include <boost/math/distributions/exponential.hpp>
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
|
|
||||||
@ -46,7 +47,7 @@ GpsL2MPcpsAcquisition::GpsL2MPcpsAcquisition(
|
|||||||
ConfigurationInterface* configuration, std::string role,
|
ConfigurationInterface* configuration, std::string role,
|
||||||
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
pcpsconf_t acq_parameters;
|
Acq_Conf acq_parameters = Acq_Conf();
|
||||||
configuration_ = configuration;
|
configuration_ = configuration;
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
std::string default_dump_filename = "./data/acquisition.dat";
|
std::string default_dump_filename = "./data/acquisition.dat";
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
#include "gps_l5_signal.h"
|
#include "gps_l5_signal.h"
|
||||||
#include "GPS_L5.h"
|
#include "GPS_L5.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
|
#include "acq_conf.h"
|
||||||
#include <boost/math/distributions/exponential.hpp>
|
#include <boost/math/distributions/exponential.hpp>
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
|
|
||||||
@ -46,7 +47,7 @@ GpsL5iPcpsAcquisition::GpsL5iPcpsAcquisition(
|
|||||||
ConfigurationInterface* configuration, std::string role,
|
ConfigurationInterface* configuration, std::string role,
|
||||||
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
pcpsconf_t acq_parameters;
|
Acq_Conf acq_parameters = Acq_Conf();
|
||||||
configuration_ = configuration;
|
configuration_ = configuration;
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
std::string default_dump_filename = "./data/acquisition.dat";
|
std::string default_dump_filename = "./data/acquisition.dat";
|
||||||
|
@ -45,13 +45,13 @@
|
|||||||
|
|
||||||
using google::LogMessage;
|
using google::LogMessage;
|
||||||
|
|
||||||
pcps_acquisition_sptr pcps_make_acquisition(pcpsconf_t conf_)
|
pcps_acquisition_sptr pcps_make_acquisition(const Acq_Conf& conf_)
|
||||||
{
|
{
|
||||||
return pcps_acquisition_sptr(new pcps_acquisition(conf_));
|
return pcps_acquisition_sptr(new pcps_acquisition(conf_));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
pcps_acquisition::pcps_acquisition(pcpsconf_t conf_) : gr::block("pcps_acquisition",
|
pcps_acquisition::pcps_acquisition(const Acq_Conf& conf_) : gr::block("pcps_acquisition",
|
||||||
gr::io_signature::make(1, 1, conf_.it_size * conf_.sampled_ms * conf_.samples_per_ms * (conf_.bit_transition_flag ? 2 : 1)),
|
gr::io_signature::make(1, 1, conf_.it_size * conf_.sampled_ms * conf_.samples_per_ms * (conf_.bit_transition_flag ? 2 : 1)),
|
||||||
gr::io_signature::make(0, 0, conf_.it_size * conf_.sampled_ms * conf_.samples_per_ms * (conf_.bit_transition_flag ? 2 : 1)))
|
gr::io_signature::make(0, 0, conf_.it_size * conf_.sampled_ms * conf_.samples_per_ms * (conf_.bit_transition_flag ? 2 : 1)))
|
||||||
{
|
{
|
||||||
|
@ -53,38 +53,20 @@
|
|||||||
#define GNSS_SDR_PCPS_ACQUISITION_H_
|
#define GNSS_SDR_PCPS_ACQUISITION_H_
|
||||||
|
|
||||||
#include "gnss_synchro.h"
|
#include "gnss_synchro.h"
|
||||||
|
#include "acq_conf.h"
|
||||||
#include <armadillo>
|
#include <armadillo>
|
||||||
#include <gnuradio/block.h>
|
#include <gnuradio/block.h>
|
||||||
#include <gnuradio/fft/fft.h>
|
#include <gnuradio/fft/fft.h>
|
||||||
#include <volk/volk.h>
|
#include <volk/volk.h>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
/* pcps acquisition configuration */
|
|
||||||
unsigned int sampled_ms;
|
|
||||||
unsigned int max_dwells;
|
|
||||||
unsigned int doppler_max;
|
|
||||||
unsigned int num_doppler_bins_step2;
|
|
||||||
float doppler_step2;
|
|
||||||
long fs_in;
|
|
||||||
int samples_per_ms;
|
|
||||||
int samples_per_code;
|
|
||||||
bool bit_transition_flag;
|
|
||||||
bool use_CFAR_algorithm_flag;
|
|
||||||
bool dump;
|
|
||||||
bool blocking;
|
|
||||||
bool make_2_steps;
|
|
||||||
std::string dump_filename;
|
|
||||||
size_t it_size;
|
|
||||||
} pcpsconf_t;
|
|
||||||
|
|
||||||
class pcps_acquisition;
|
class pcps_acquisition;
|
||||||
|
|
||||||
typedef boost::shared_ptr<pcps_acquisition> pcps_acquisition_sptr;
|
typedef boost::shared_ptr<pcps_acquisition> pcps_acquisition_sptr;
|
||||||
|
|
||||||
pcps_acquisition_sptr
|
pcps_acquisition_sptr
|
||||||
pcps_make_acquisition(pcpsconf_t conf_);
|
pcps_make_acquisition(const Acq_Conf& conf_);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief This class implements a Parallel Code Phase Search Acquisition.
|
* \brief This class implements a Parallel Code Phase Search Acquisition.
|
||||||
@ -96,9 +78,9 @@ class pcps_acquisition : public gr::block
|
|||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
friend pcps_acquisition_sptr
|
friend pcps_acquisition_sptr
|
||||||
pcps_make_acquisition(pcpsconf_t conf_);
|
pcps_make_acquisition(const Acq_Conf& conf_);
|
||||||
|
|
||||||
pcps_acquisition(pcpsconf_t conf_);
|
pcps_acquisition(const Acq_Conf& conf_);
|
||||||
|
|
||||||
void update_local_carrier(gr_complex* carrier_vector, int correlator_length_samples, float freq);
|
void update_local_carrier(gr_complex* carrier_vector, int correlator_length_samples, float freq);
|
||||||
void update_grid_doppler_wipeoffs();
|
void update_grid_doppler_wipeoffs();
|
||||||
@ -111,7 +93,7 @@ private:
|
|||||||
|
|
||||||
void send_positive_acquisition();
|
void send_positive_acquisition();
|
||||||
|
|
||||||
pcpsconf_t acq_parameters;
|
Acq_Conf acq_parameters;
|
||||||
bool d_active;
|
bool d_active;
|
||||||
bool d_worker_active;
|
bool d_worker_active;
|
||||||
bool d_cshort;
|
bool d_cshort;
|
||||||
|
@ -16,12 +16,9 @@
|
|||||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
if(ENABLE_FPGA)
|
||||||
set(ACQUISITION_LIB_SOURCES
|
set(ACQUISITION_LIB_SOURCES fpga_acquisition.cc )
|
||||||
fpga_acquisition.cc
|
include_directories(
|
||||||
)
|
|
||||||
|
|
||||||
include_directories(
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${CMAKE_SOURCE_DIR}/src/core/system_parameters
|
${CMAKE_SOURCE_DIR}/src/core/system_parameters
|
||||||
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
||||||
@ -31,10 +28,16 @@ include_directories(
|
|||||||
${GLOG_INCLUDE_DIRS}
|
${GLOG_INCLUDE_DIRS}
|
||||||
${GFlags_INCLUDE_DIRS}
|
${GFlags_INCLUDE_DIRS}
|
||||||
${VOLK_GNSSSDR_INCLUDE_DIRS}
|
${VOLK_GNSSSDR_INCLUDE_DIRS}
|
||||||
)
|
)
|
||||||
|
|
||||||
file(GLOB ACQUISITION_LIB_HEADERS "*.h")
|
file(GLOB ACQUISITION_LIB_HEADERS "*.h")
|
||||||
|
endif(ENABLE_FPGA)
|
||||||
|
|
||||||
|
set(ACQUISITION_LIB_HEADERS ${ACQUISITION_LIB_HEADERS} acq_conf.h)
|
||||||
list(SORT ACQUISITION_LIB_HEADERS)
|
list(SORT ACQUISITION_LIB_HEADERS)
|
||||||
|
|
||||||
|
set(ACQUISITION_LIB_SOURCES ${ACQUISITION_LIB_SOURCES} acq_conf.cc)
|
||||||
|
|
||||||
add_library(acquisition_lib ${ACQUISITION_LIB_SOURCES} ${ACQUISITION_LIB_HEADERS})
|
add_library(acquisition_lib ${ACQUISITION_LIB_SOURCES} ${ACQUISITION_LIB_HEADERS})
|
||||||
source_group(Headers FILES ${ACQUISITION_LIB_HEADERS})
|
source_group(Headers FILES ${ACQUISITION_LIB_HEADERS})
|
||||||
target_link_libraries(acquisition_lib ${VOLK_LIBRARIES} ${VOLK_GNSSSDR_LIBRARIES} ${GNURADIO_RUNTIME_LIBRARIES})
|
target_link_libraries(acquisition_lib ${VOLK_LIBRARIES} ${VOLK_GNSSSDR_LIBRARIES} ${GNURADIO_RUNTIME_LIBRARIES})
|
||||||
@ -43,4 +46,3 @@ if(VOLK_GNSSSDR_FOUND)
|
|||||||
else(VOLK_GNSSSDR_FOUND)
|
else(VOLK_GNSSSDR_FOUND)
|
||||||
add_dependencies(acquisition_lib glog-${glog_RELEASE} volk_gnsssdr_module)
|
add_dependencies(acquisition_lib glog-${glog_RELEASE} volk_gnsssdr_module)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
52
src/algorithms/acquisition/libs/acq_conf.cc
Normal file
52
src/algorithms/acquisition/libs/acq_conf.cc
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
/*!
|
||||||
|
* \file acq_conf.cc
|
||||||
|
* \brief Class that contains all the configuration parameters for generic
|
||||||
|
* acquisition block based on the PCPS algoritm.
|
||||||
|
* \author Carles Fernandez, 2018. cfernandez(at)cttc.es
|
||||||
|
*
|
||||||
|
* -------------------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010-2018 (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 <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* -------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "acq_conf.h"
|
||||||
|
|
||||||
|
Acq_Conf::Acq_Conf()
|
||||||
|
{
|
||||||
|
/* PCPS acquisition configuration */
|
||||||
|
sampled_ms = 0;
|
||||||
|
max_dwells = 0;
|
||||||
|
unsigned int doppler_max = 0;
|
||||||
|
unsigned int num_doppler_bins_step2 = 0;
|
||||||
|
float doppler_step2 = 0.0;
|
||||||
|
long fs_in = 0;
|
||||||
|
int samples_per_ms = 0;
|
||||||
|
int samples_per_code = 0;
|
||||||
|
bool bit_transition_flag = false;
|
||||||
|
bool use_CFAR_algorithm_flag = false;
|
||||||
|
bool dump = false;
|
||||||
|
bool blocking = false;
|
||||||
|
bool make_2_steps = false;
|
||||||
|
std::string dump_filename = "";
|
||||||
|
it_size = sizeof(char);
|
||||||
|
}
|
61
src/algorithms/acquisition/libs/acq_conf.h
Normal file
61
src/algorithms/acquisition/libs/acq_conf.h
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
/*!
|
||||||
|
* \file acq_conf.cc
|
||||||
|
* \brief Class that contains all the configuration parameters for generic
|
||||||
|
* acquisition block based on the PCPS algoritm.
|
||||||
|
* \author Carles Fernandez, 2018. cfernandez(at)cttc.es
|
||||||
|
*
|
||||||
|
* -------------------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010-2018 (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 <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* -------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef GNSS_SDR_ACQ_CONF_H_
|
||||||
|
#define GNSS_SDR_ACQ_CONF_H_
|
||||||
|
|
||||||
|
#include <cstddef>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class Acq_Conf
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/* PCPS Acquisition configuration */
|
||||||
|
unsigned int sampled_ms;
|
||||||
|
unsigned int max_dwells;
|
||||||
|
unsigned int doppler_max;
|
||||||
|
unsigned int num_doppler_bins_step2;
|
||||||
|
float doppler_step2;
|
||||||
|
long fs_in;
|
||||||
|
int samples_per_ms;
|
||||||
|
int samples_per_code;
|
||||||
|
bool bit_transition_flag;
|
||||||
|
bool use_CFAR_algorithm_flag;
|
||||||
|
bool dump;
|
||||||
|
bool blocking;
|
||||||
|
bool make_2_steps;
|
||||||
|
std::string dump_filename;
|
||||||
|
size_t it_size;
|
||||||
|
|
||||||
|
Acq_Conf();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -34,6 +34,7 @@
|
|||||||
* -------------------------------------------------------------------------
|
* -------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "dll_pll_conf.h"
|
||||||
#include "galileo_e1_dll_pll_veml_tracking.h"
|
#include "galileo_e1_dll_pll_veml_tracking.h"
|
||||||
#include "configuration_interface.h"
|
#include "configuration_interface.h"
|
||||||
#include "Galileo_E1.h"
|
#include "Galileo_E1.h"
|
||||||
@ -48,7 +49,7 @@ GalileoE1DllPllVemlTracking::GalileoE1DllPllVemlTracking(
|
|||||||
ConfigurationInterface* configuration, std::string role,
|
ConfigurationInterface* configuration, std::string role,
|
||||||
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
dllpllconf_t trk_param;
|
Dll_Pll_Conf trk_param = Dll_Pll_Conf();
|
||||||
DLOG(INFO) << "role " << role;
|
DLOG(INFO) << "role " << role;
|
||||||
//################# CONFIGURATION PARAMETERS ########################
|
//################# CONFIGURATION PARAMETERS ########################
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
*
|
*
|
||||||
* -------------------------------------------------------------------------
|
* -------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
#include "dll_pll_conf.h"
|
||||||
#include "galileo_e5a_dll_pll_tracking.h"
|
#include "galileo_e5a_dll_pll_tracking.h"
|
||||||
#include "configuration_interface.h"
|
#include "configuration_interface.h"
|
||||||
#include "Galileo_E5a.h"
|
#include "Galileo_E5a.h"
|
||||||
@ -49,7 +49,7 @@ GalileoE5aDllPllTracking::GalileoE5aDllPllTracking(
|
|||||||
ConfigurationInterface* configuration, std::string role,
|
ConfigurationInterface* configuration, std::string role,
|
||||||
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
dllpllconf_t trk_param;
|
Dll_Pll_Conf trk_param = Dll_Pll_Conf();
|
||||||
DLOG(INFO) << "role " << role;
|
DLOG(INFO) << "role " << role;
|
||||||
//################# CONFIGURATION PARAMETERS ########################
|
//################# CONFIGURATION PARAMETERS ########################
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
* -------------------------------------------------------------------------
|
* -------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "dll_pll_conf.h"
|
||||||
#include "gps_l1_ca_dll_pll_tracking.h"
|
#include "gps_l1_ca_dll_pll_tracking.h"
|
||||||
#include "configuration_interface.h"
|
#include "configuration_interface.h"
|
||||||
#include "GPS_L1_CA.h"
|
#include "GPS_L1_CA.h"
|
||||||
@ -49,7 +49,7 @@ GpsL1CaDllPllTracking::GpsL1CaDllPllTracking(
|
|||||||
ConfigurationInterface* configuration, std::string role,
|
ConfigurationInterface* configuration, std::string role,
|
||||||
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
dllpllconf_t trk_param;
|
Dll_Pll_Conf trk_param = Dll_Pll_Conf();
|
||||||
DLOG(INFO) << "role " << role;
|
DLOG(INFO) << "role " << role;
|
||||||
//################# CONFIGURATION PARAMETERS ########################
|
//################# CONFIGURATION PARAMETERS ########################
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
@ -108,13 +108,13 @@ GpsL1CaDllPllTracking::GpsL1CaDllPllTracking(
|
|||||||
int cn0_samples = configuration->property(role + ".cn0_samples", 20);
|
int cn0_samples = configuration->property(role + ".cn0_samples", 20);
|
||||||
if (FLAGS_cn0_samples != 20) cn0_samples = FLAGS_cn0_samples;
|
if (FLAGS_cn0_samples != 20) cn0_samples = FLAGS_cn0_samples;
|
||||||
trk_param.cn0_samples = cn0_samples;
|
trk_param.cn0_samples = cn0_samples;
|
||||||
int cn0_min = configuration->property(role + ".cn0_min", 25);
|
int cn0_min = configuration->property(role + ".cn0_min", 30);
|
||||||
if (FLAGS_cn0_min != 25) cn0_min = FLAGS_cn0_min;
|
if (FLAGS_cn0_min != 25) cn0_min = FLAGS_cn0_min;
|
||||||
trk_param.cn0_min = cn0_min;
|
trk_param.cn0_min = cn0_min;
|
||||||
int max_lock_fail = configuration->property(role + ".max_lock_fail", 50);
|
int max_lock_fail = configuration->property(role + ".max_lock_fail", 50);
|
||||||
if (FLAGS_max_lock_fail != 50) max_lock_fail = FLAGS_max_lock_fail;
|
if (FLAGS_max_lock_fail != 50) max_lock_fail = FLAGS_max_lock_fail;
|
||||||
trk_param.max_lock_fail = max_lock_fail;
|
trk_param.max_lock_fail = max_lock_fail;
|
||||||
double carrier_lock_th = configuration->property(role + ".carrier_lock_th", 0.85);
|
double carrier_lock_th = configuration->property(role + ".carrier_lock_th", 0.80);
|
||||||
if (FLAGS_carrier_lock_th != 0.85) carrier_lock_th = FLAGS_carrier_lock_th;
|
if (FLAGS_carrier_lock_th != 0.85) carrier_lock_th = FLAGS_carrier_lock_th;
|
||||||
trk_param.carrier_lock_th = carrier_lock_th;
|
trk_param.carrier_lock_th = carrier_lock_th;
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
* -------------------------------------------------------------------------
|
* -------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "dll_pll_conf.h"
|
||||||
#include "gps_l2_m_dll_pll_tracking.h"
|
#include "gps_l2_m_dll_pll_tracking.h"
|
||||||
#include "configuration_interface.h"
|
#include "configuration_interface.h"
|
||||||
#include "GPS_L2C.h"
|
#include "GPS_L2C.h"
|
||||||
@ -49,7 +49,7 @@ GpsL2MDllPllTracking::GpsL2MDllPllTracking(
|
|||||||
ConfigurationInterface* configuration, std::string role,
|
ConfigurationInterface* configuration, std::string role,
|
||||||
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
dllpllconf_t trk_param;
|
Dll_Pll_Conf trk_param = Dll_Pll_Conf();
|
||||||
DLOG(INFO) << "role " << role;
|
DLOG(INFO) << "role " << role;
|
||||||
//################# CONFIGURATION PARAMETERS ########################
|
//################# CONFIGURATION PARAMETERS ########################
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
* -------------------------------------------------------------------------
|
* -------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "dll_pll_conf.h"
|
||||||
#include "gps_l5_dll_pll_tracking.h"
|
#include "gps_l5_dll_pll_tracking.h"
|
||||||
#include "configuration_interface.h"
|
#include "configuration_interface.h"
|
||||||
#include "GPS_L5.h"
|
#include "GPS_L5.h"
|
||||||
@ -49,7 +49,7 @@ GpsL5DllPllTracking::GpsL5DllPllTracking(
|
|||||||
ConfigurationInterface* configuration, std::string role,
|
ConfigurationInterface* configuration, std::string role,
|
||||||
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
dllpllconf_t trk_param;
|
Dll_Pll_Conf trk_param = Dll_Pll_Conf();
|
||||||
DLOG(INFO) << "role " << role;
|
DLOG(INFO) << "role " << role;
|
||||||
//################# CONFIGURATION PARAMETERS ########################
|
//################# CONFIGURATION PARAMETERS ########################
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
|
@ -60,7 +60,7 @@
|
|||||||
|
|
||||||
using google::LogMessage;
|
using google::LogMessage;
|
||||||
|
|
||||||
dll_pll_veml_tracking_sptr dll_pll_veml_make_tracking(dllpllconf_t conf_)
|
dll_pll_veml_tracking_sptr dll_pll_veml_make_tracking(const Dll_Pll_Conf &conf_)
|
||||||
{
|
{
|
||||||
return dll_pll_veml_tracking_sptr(new dll_pll_veml_tracking(conf_));
|
return dll_pll_veml_tracking_sptr(new dll_pll_veml_tracking(conf_));
|
||||||
}
|
}
|
||||||
@ -76,7 +76,7 @@ void dll_pll_veml_tracking::forecast(int noutput_items,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
dll_pll_veml_tracking::dll_pll_veml_tracking(dllpllconf_t conf_) : gr::block("dll_pll_veml_tracking", gr::io_signature::make(1, 1, sizeof(gr_complex)),
|
dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::block("dll_pll_veml_tracking", gr::io_signature::make(1, 1, sizeof(gr_complex)),
|
||||||
gr::io_signature::make(1, 1, sizeof(Gnss_Synchro)))
|
gr::io_signature::make(1, 1, sizeof(Gnss_Synchro)))
|
||||||
{
|
{
|
||||||
trk_parameters = conf_;
|
trk_parameters = conf_;
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#ifndef GNSS_SDR_DLL_PLL_VEML_TRACKING_H
|
#ifndef GNSS_SDR_DLL_PLL_VEML_TRACKING_H
|
||||||
#define GNSS_SDR_DLL_PLL_VEML_TRACKING_H
|
#define GNSS_SDR_DLL_PLL_VEML_TRACKING_H
|
||||||
|
|
||||||
|
#include "dll_pll_conf.h"
|
||||||
#include "gnss_synchro.h"
|
#include "gnss_synchro.h"
|
||||||
#include "tracking_2nd_DLL_filter.h"
|
#include "tracking_2nd_DLL_filter.h"
|
||||||
#include "tracking_2nd_PLL_filter.h"
|
#include "tracking_2nd_PLL_filter.h"
|
||||||
@ -39,37 +40,13 @@
|
|||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <map>
|
#include <map>
|
||||||
|
#include <queue>
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
/* DLL/PLL tracking configuration */
|
|
||||||
double fs_in;
|
|
||||||
unsigned int vector_length;
|
|
||||||
bool dump;
|
|
||||||
std::string dump_filename;
|
|
||||||
float pll_bw_hz;
|
|
||||||
float dll_bw_hz;
|
|
||||||
float pll_bw_narrow_hz;
|
|
||||||
float dll_bw_narrow_hz;
|
|
||||||
float early_late_space_chips;
|
|
||||||
float very_early_late_space_chips;
|
|
||||||
float early_late_space_narrow_chips;
|
|
||||||
float very_early_late_space_narrow_chips;
|
|
||||||
int extend_correlation_symbols;
|
|
||||||
int cn0_samples;
|
|
||||||
int cn0_min;
|
|
||||||
int max_lock_fail;
|
|
||||||
double carrier_lock_th;
|
|
||||||
bool track_pilot;
|
|
||||||
char system;
|
|
||||||
char signal[3];
|
|
||||||
} dllpllconf_t;
|
|
||||||
|
|
||||||
class dll_pll_veml_tracking;
|
class dll_pll_veml_tracking;
|
||||||
|
|
||||||
typedef boost::shared_ptr<dll_pll_veml_tracking> dll_pll_veml_tracking_sptr;
|
typedef boost::shared_ptr<dll_pll_veml_tracking> dll_pll_veml_tracking_sptr;
|
||||||
|
|
||||||
dll_pll_veml_tracking_sptr dll_pll_veml_make_tracking(dllpllconf_t conf_);
|
dll_pll_veml_tracking_sptr dll_pll_veml_make_tracking(const Dll_Pll_Conf &conf_);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief This class implements a code DLL + carrier PLL tracking block.
|
* \brief This class implements a code DLL + carrier PLL tracking block.
|
||||||
@ -89,9 +66,9 @@ public:
|
|||||||
void forecast(int noutput_items, gr_vector_int &ninput_items_required);
|
void forecast(int noutput_items, gr_vector_int &ninput_items_required);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend dll_pll_veml_tracking_sptr dll_pll_veml_make_tracking(dllpllconf_t conf_);
|
friend dll_pll_veml_tracking_sptr dll_pll_veml_make_tracking(const Dll_Pll_Conf &conf_);
|
||||||
|
|
||||||
dll_pll_veml_tracking(dllpllconf_t conf_);
|
dll_pll_veml_tracking(const Dll_Pll_Conf &conf_);
|
||||||
|
|
||||||
bool cn0_and_tracking_lock_status(double coh_integration_time_s);
|
bool cn0_and_tracking_lock_status(double coh_integration_time_s);
|
||||||
bool acquire_secondary();
|
bool acquire_secondary();
|
||||||
@ -104,7 +81,7 @@ private:
|
|||||||
int save_matfile();
|
int save_matfile();
|
||||||
|
|
||||||
// tracking configuration vars
|
// tracking configuration vars
|
||||||
dllpllconf_t trk_parameters;
|
Dll_Pll_Conf trk_parameters;
|
||||||
bool d_veml;
|
bool d_veml;
|
||||||
bool d_cloop;
|
bool d_cloop;
|
||||||
unsigned int d_channel;
|
unsigned int d_channel;
|
||||||
@ -201,6 +178,7 @@ private:
|
|||||||
// CN0 estimation and lock detector
|
// CN0 estimation and lock detector
|
||||||
int d_cn0_estimation_counter;
|
int d_cn0_estimation_counter;
|
||||||
int d_carrier_lock_fail_counter;
|
int d_carrier_lock_fail_counter;
|
||||||
|
std::deque<float> d_carrier_lock_detector_queue;
|
||||||
double d_carrier_lock_test;
|
double d_carrier_lock_test;
|
||||||
double d_CN0_SNV_dB_Hz;
|
double d_CN0_SNV_dB_Hz;
|
||||||
double d_carrier_lock_threshold;
|
double d_carrier_lock_threshold;
|
||||||
|
@ -43,6 +43,7 @@ set(TRACKING_LIB_SOURCES
|
|||||||
tracking_discriminators.cc
|
tracking_discriminators.cc
|
||||||
tracking_FLL_PLL_filter.cc
|
tracking_FLL_PLL_filter.cc
|
||||||
tracking_loop_filter.cc
|
tracking_loop_filter.cc
|
||||||
|
dll_pll_conf.cc
|
||||||
)
|
)
|
||||||
|
|
||||||
if(ENABLE_FPGA)
|
if(ENABLE_FPGA)
|
||||||
|
61
src/algorithms/tracking/libs/dll_pll_conf.cc
Normal file
61
src/algorithms/tracking/libs/dll_pll_conf.cc
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
/*!
|
||||||
|
* \file dll_pll_conf.cc
|
||||||
|
* \brief Class that contains all the configuration parameters for generic
|
||||||
|
* tracking block based on a DLL and a PLL.
|
||||||
|
* \author Javier Arribas, 2018. jarribas(at)cttc.es
|
||||||
|
*
|
||||||
|
* -------------------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010-2018 (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 <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* -------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "dll_pll_conf.h"
|
||||||
|
#include <cstring>
|
||||||
|
|
||||||
|
Dll_Pll_Conf::Dll_Pll_Conf()
|
||||||
|
{
|
||||||
|
/* DLL/PLL tracking configuration */
|
||||||
|
fs_in = 0.0;
|
||||||
|
vector_length = 0;
|
||||||
|
dump = false;
|
||||||
|
dump_filename = "./dll_pll_dump.dat";
|
||||||
|
pll_bw_hz = 40.0;
|
||||||
|
dll_bw_hz = 2.0;
|
||||||
|
pll_bw_narrow_hz = 5.0;
|
||||||
|
dll_bw_narrow_hz = 0.75;
|
||||||
|
early_late_space_chips = 0.5;
|
||||||
|
very_early_late_space_chips = 0.5;
|
||||||
|
early_late_space_narrow_chips = 0.1;
|
||||||
|
very_early_late_space_narrow_chips = 0.1;
|
||||||
|
extend_correlation_symbols = 5;
|
||||||
|
cn0_samples = 20;
|
||||||
|
carrier_lock_det_mav_samples = 20;
|
||||||
|
cn0_min = 25;
|
||||||
|
max_lock_fail = 50;
|
||||||
|
carrier_lock_th = 0.85;
|
||||||
|
track_pilot = false;
|
||||||
|
system = 'G';
|
||||||
|
char sig_[3] = "1C";
|
||||||
|
std::memcpy(signal, sig_, 3);
|
||||||
|
}
|
68
src/algorithms/tracking/libs/dll_pll_conf.h
Normal file
68
src/algorithms/tracking/libs/dll_pll_conf.h
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
/*!
|
||||||
|
* \file dll_pll_conf.h
|
||||||
|
* \brief Class that contains all the configuration parameters for generic tracking block based on a DLL and a PLL.
|
||||||
|
* \author Javier Arribas, 2018. jarribas(at)cttc.es
|
||||||
|
*
|
||||||
|
* Class that contains all the configuration parameters for generic tracking block based on a DLL and a PLL.
|
||||||
|
*
|
||||||
|
* -------------------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010-2018 (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 <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* -------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef GNSS_SDR_DLL_PLL_CONF_H_
|
||||||
|
#define GNSS_SDR_DLL_PLL_CONF_H_
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class Dll_Pll_Conf
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
public:
|
||||||
|
/* DLL/PLL tracking configuration */
|
||||||
|
double fs_in;
|
||||||
|
unsigned int vector_length;
|
||||||
|
bool dump;
|
||||||
|
std::string dump_filename;
|
||||||
|
float pll_bw_hz;
|
||||||
|
float dll_bw_hz;
|
||||||
|
float pll_bw_narrow_hz;
|
||||||
|
float dll_bw_narrow_hz;
|
||||||
|
float early_late_space_chips;
|
||||||
|
float very_early_late_space_chips;
|
||||||
|
float early_late_space_narrow_chips;
|
||||||
|
float very_early_late_space_narrow_chips;
|
||||||
|
int extend_correlation_symbols;
|
||||||
|
int cn0_samples;
|
||||||
|
int carrier_lock_det_mav_samples;
|
||||||
|
int cn0_min;
|
||||||
|
int max_lock_fail;
|
||||||
|
double carrier_lock_th;
|
||||||
|
bool track_pilot;
|
||||||
|
char system;
|
||||||
|
char signal[3];
|
||||||
|
|
||||||
|
Dll_Pll_Conf();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -1304,6 +1304,7 @@ void GNSSFlowgraph::set_channels_state()
|
|||||||
}
|
}
|
||||||
DLOG(INFO) << "Channel " << i << " in state " << channels_state_[i];
|
DLOG(INFO) << "Channel " << i << " in state " << channels_state_[i];
|
||||||
}
|
}
|
||||||
|
std::lock_guard<std::mutex> lock(signal_list_mutex);
|
||||||
acq_channels_count_ = max_acq_channels_;
|
acq_channels_count_ = max_acq_channels_;
|
||||||
DLOG(INFO) << acq_channels_count_ << " channels in acquisition state";
|
DLOG(INFO) << acq_channels_count_ << " channels in acquisition state";
|
||||||
}
|
}
|
||||||
|
@ -107,17 +107,17 @@ public:
|
|||||||
|
|
||||||
void set_configuration(std::shared_ptr<ConfigurationInterface> configuration);
|
void set_configuration(std::shared_ptr<ConfigurationInterface> configuration);
|
||||||
|
|
||||||
unsigned int applied_actions()
|
unsigned int applied_actions() const
|
||||||
{
|
{
|
||||||
return applied_actions_;
|
return applied_actions_;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool connected()
|
bool connected() const
|
||||||
{
|
{
|
||||||
return connected_;
|
return connected_;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool running()
|
bool running() const
|
||||||
{
|
{
|
||||||
return running_;
|
return running_;
|
||||||
}
|
}
|
||||||
|
18
src/utils/matlab/plot_tracking_quality_indicators.m
Normal file
18
src/utils/matlab/plot_tracking_quality_indicators.m
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
%plot tracking quality indicators
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
title('Carrier lock test output for all the channels');
|
||||||
|
for n=1:1:length(GNSS_tracking)
|
||||||
|
plot(GNSS_tracking(n).carrier_lock_test)
|
||||||
|
plotnames{n}=['SV ' num2str(round(mean(GNSS_tracking(n).PRN)))];
|
||||||
|
end
|
||||||
|
legend(plotnames);
|
||||||
|
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
title('Carrier CN0 output for all the channels');
|
||||||
|
for n=1:1:length(GNSS_tracking)
|
||||||
|
plot(GNSS_tracking(n).CN0_SNV_dB_Hz)
|
||||||
|
plotnames{n}=['SV ' num2str(round(mean(GNSS_tracking(n).PRN)))];
|
||||||
|
end
|
||||||
|
legend(plotnames);
|
Loading…
Reference in New Issue
Block a user