1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2025-11-21 01:24:52 +00:00

bds b11: Get latest changes and add bds functions in rtk module

Merge branch 'next' into bds_b1i. Also fixes multiple bugs with the
addition of bds b1i signals into code. Major changes where fixed and
code to support RINEX and RTCM is needed
This commit is contained in:
Damian Miralles
2018-11-29 09:53:40 -06:00
334 changed files with 13511 additions and 8054 deletions

View File

@@ -17,86 +17,120 @@
#
if(ENABLE_CUDA)
set(OPT_TRACKING_BLOCKS_SOURCES ${OPT_TRACKING_BLOCKS_SOURCES} gps_l1_ca_dll_pll_tracking_gpu_cc.cc)
set(OPT_TRACKING_BLOCKS_HEADERS ${OPT_TRACKING_BLOCKS_HEADERS} gps_l1_ca_dll_pll_tracking_gpu_cc.h)
set(OPT_TRACKING_INCLUDES ${OPT_TRACKING_INCLUDES} ${CUDA_INCLUDE_DIRS})
set(OPT_TRACKING_LIBRARIES ${OPT_TRACKING_LIBRARIES} ${CUDA_LIBRARIES})
endif(ENABLE_CUDA)
set(OPT_TRACKING_BLOCKS_SOURCES
${OPT_TRACKING_BLOCKS_SOURCES}
gps_l1_ca_dll_pll_tracking_gpu_cc.cc
)
set(OPT_TRACKING_BLOCKS_HEADERS
${OPT_TRACKING_BLOCKS_HEADERS}
gps_l1_ca_dll_pll_tracking_gpu_cc.h
)
set(OPT_TRACKING_INCLUDES
${OPT_TRACKING_INCLUDES}
${CUDA_INCLUDE_DIRS}
)
set(OPT_TRACKING_LIBRARIES
${OPT_TRACKING_LIBRARIES}
${CUDA_LIBRARIES}
)
endif()
if(ENABLE_FPGA)
set(OPT_TRACKING_BLOCKS_SOURCES ${OPT_TRACKING_BLOCKS_SOURCES} dll_pll_veml_tracking_fpga.cc)
set(OPT_TRACKING_BLOCKS_HEADERS ${OPT_TRACKING_BLOCKS_HEADERS} dll_pll_veml_tracking_fpga.h)
endif(ENABLE_FPGA)
set(OPT_TRACKING_BLOCKS_SOURCES
${OPT_TRACKING_BLOCKS_SOURCES}
dll_pll_veml_tracking_fpga.cc
)
set(OPT_TRACKING_BLOCKS_HEADERS
${OPT_TRACKING_BLOCKS_HEADERS}
dll_pll_veml_tracking_fpga.h
)
endif()
set(TRACKING_GR_BLOCKS_SOURCES
galileo_e1_tcp_connector_tracking_cc.cc
gps_l1_ca_tcp_connector_tracking_cc.cc
gps_l1_ca_dll_pll_c_aid_tracking_cc.cc
gps_l1_ca_dll_pll_c_aid_tracking_sc.cc
glonass_l1_ca_dll_pll_tracking_cc.cc
glonass_l1_ca_dll_pll_c_aid_tracking_cc.cc
glonass_l1_ca_dll_pll_c_aid_tracking_sc.cc
gps_l1_ca_kf_tracking_cc.cc
glonass_l2_ca_dll_pll_tracking_cc.cc
glonass_l2_ca_dll_pll_c_aid_tracking_cc.cc
glonass_l2_ca_dll_pll_c_aid_tracking_sc.cc
dll_pll_veml_tracking.cc
${OPT_TRACKING_BLOCKS_SOURCES}
galileo_e1_tcp_connector_tracking_cc.cc
gps_l1_ca_tcp_connector_tracking_cc.cc
gps_l1_ca_dll_pll_c_aid_tracking_cc.cc
gps_l1_ca_dll_pll_c_aid_tracking_sc.cc
glonass_l1_ca_dll_pll_tracking_cc.cc
glonass_l1_ca_dll_pll_c_aid_tracking_cc.cc
glonass_l1_ca_dll_pll_c_aid_tracking_sc.cc
gps_l1_ca_kf_tracking_cc.cc
glonass_l2_ca_dll_pll_tracking_cc.cc
glonass_l2_ca_dll_pll_c_aid_tracking_cc.cc
glonass_l2_ca_dll_pll_c_aid_tracking_sc.cc
dll_pll_veml_tracking.cc
${OPT_TRACKING_BLOCKS_SOURCES}
)
set(TRACKING_GR_BLOCKS_HEADERS
galileo_e1_tcp_connector_tracking_cc.h
gps_l1_ca_tcp_connector_tracking_cc.h
gps_l1_ca_dll_pll_c_aid_tracking_cc.h
gps_l1_ca_dll_pll_c_aid_tracking_sc.h
glonass_l1_ca_dll_pll_tracking_cc.h
glonass_l1_ca_dll_pll_c_aid_tracking_cc.h
glonass_l1_ca_dll_pll_c_aid_tracking_sc.h
gps_l1_ca_kf_tracking_cc.h
glonass_l2_ca_dll_pll_tracking_cc.h
glonass_l2_ca_dll_pll_c_aid_tracking_cc.h
glonass_l2_ca_dll_pll_c_aid_tracking_sc.h
dll_pll_veml_tracking.h
${OPT_TRACKING_BLOCKS_HEADERS}
galileo_e1_tcp_connector_tracking_cc.h
gps_l1_ca_tcp_connector_tracking_cc.h
gps_l1_ca_dll_pll_c_aid_tracking_cc.h
gps_l1_ca_dll_pll_c_aid_tracking_sc.h
glonass_l1_ca_dll_pll_tracking_cc.h
glonass_l1_ca_dll_pll_c_aid_tracking_cc.h
glonass_l1_ca_dll_pll_c_aid_tracking_sc.h
gps_l1_ca_kf_tracking_cc.h
glonass_l2_ca_dll_pll_tracking_cc.h
glonass_l2_ca_dll_pll_c_aid_tracking_cc.h
glonass_l2_ca_dll_pll_c_aid_tracking_sc.h
dll_pll_veml_tracking.h
${OPT_TRACKING_BLOCKS_HEADERS}
)
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_SOURCE_DIR}/src/core/system_parameters
${CMAKE_SOURCE_DIR}/src/core/interfaces
${CMAKE_SOURCE_DIR}/src/core/receiver
${CMAKE_SOURCE_DIR}/src/algorithms/tracking/libs
${CMAKE_SOURCE_DIR}/src/algorithms/libs
${ARMADILLO_INCLUDE_DIRS}
${GLOG_INCLUDE_DIRS}
${GFlags_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
${VOLK_GNSSSDR_INCLUDE_DIRS}
${OPT_TRACKING_INCLUDES}
${MATIO_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_SOURCE_DIR}/src/core/system_parameters
${CMAKE_SOURCE_DIR}/src/core/interfaces
${CMAKE_SOURCE_DIR}/src/core/receiver
${CMAKE_SOURCE_DIR}/src/algorithms/tracking/libs
${CMAKE_SOURCE_DIR}/src/algorithms/libs
${ARMADILLO_INCLUDE_DIRS}
${GLOG_INCLUDE_DIRS}
${GFlags_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
${VOLK_GNSSSDR_INCLUDE_DIRS}
${OPT_TRACKING_INCLUDES}
${MATIO_INCLUDE_DIRS}
)
if(ENABLE_GENERIC_ARCH)
add_definitions( -DGENERIC_ARCH=1 )
endif(ENABLE_GENERIC_ARCH)
add_definitions(-DGENERIC_ARCH=1)
endif()
list(SORT TRACKING_GR_BLOCKS_HEADERS)
list(SORT TRACKING_GR_BLOCKS_SOURCES)
add_library(tracking_gr_blocks ${TRACKING_GR_BLOCKS_SOURCES} ${TRACKING_GR_BLOCKS_HEADERS})
add_library(tracking_gr_blocks
${TRACKING_GR_BLOCKS_SOURCES}
${TRACKING_GR_BLOCKS_HEADERS}
)
source_group(Headers FILES ${TRACKING_GR_BLOCKS_HEADERS})
target_link_libraries(tracking_gr_blocks tracking_lib ${GNURADIO_RUNTIME_LIBRARIES} gnss_sdr_flags gnss_sp_libs ${Boost_LIBRARIES} ${VOLK_GNSSSDR_LIBRARIES} ${MATIO_LIBRARIES} ${OPT_TRACKING_LIBRARIES})
target_link_libraries(tracking_gr_blocks
tracking_lib
${GNURADIO_RUNTIME_LIBRARIES}
gnss_sdr_flags gnss_sp_libs
${Boost_LIBRARIES}
${VOLK_GNSSSDR_LIBRARIES}
${MATIO_LIBRARIES}
${OPT_TRACKING_LIBRARIES}
)
if(NOT VOLK_GNSSSDR_FOUND)
if(NOT VOLKGNSSSDR_FOUND)
if(MATIO_FOUND)
add_dependencies(tracking_gr_blocks volk_gnsssdr_module)
else(MATIO_FOUND)
add_dependencies(tracking_gr_blocks volk_gnsssdr_module matio-${GNSSSDR_MATIO_LOCAL_VERSION})
endif(MATIO_FOUND)
else(NOT VOLK_GNSSSDR_FOUND)
else()
add_dependencies(tracking_gr_blocks volk_gnsssdr_module
matio-${GNSSSDR_MATIO_LOCAL_VERSION}
)
endif()
else()
if(NOT MATIO_FOUND)
add_dependencies(tracking_gr_blocks matio-${GNSSSDR_MATIO_LOCAL_VERSION})
endif(NOT MATIO_FOUND)
endif(NOT VOLK_GNSSSDR_FOUND)
add_dependencies(tracking_gr_blocks
matio-${GNSSSDR_MATIO_LOCAL_VERSION}
)
endif()
endif()

View File

@@ -49,7 +49,8 @@
#include "gps_l2c_signal.h"
#include "GPS_L5.h"
#include "gps_l5_signal.h"
#include <boost/lexical_cast.hpp>
#include "gnss_sdr_create_directory.h"
#include <boost/filesystem/path.hpp>
#include <glog/logging.h>
#include <gnuradio/io_signature.h>
#include <matio.h>
@@ -452,6 +453,42 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl
d_carr_ph_history.resize(1);
d_code_ph_history.resize(1);
}
d_dump = trk_parameters.dump;
d_dump_mat = trk_parameters.dump_mat and d_dump;
if (d_dump)
{
d_dump_filename = trk_parameters.dump_filename;
std::string dump_path;
// Get path
if (d_dump_filename.find_last_of("/") != std::string::npos)
{
std::string dump_filename_ = d_dump_filename.substr(d_dump_filename.find_last_of("/") + 1);
dump_path = d_dump_filename.substr(0, d_dump_filename.find_last_of("/"));
d_dump_filename = dump_filename_;
}
else
{
dump_path = std::string(".");
}
if (d_dump_filename.empty())
{
d_dump_filename = "trk_channel_";
}
// remove extension if any
if (d_dump_filename.substr(1).find_last_of(".") != std::string::npos)
{
d_dump_filename = d_dump_filename.substr(0, d_dump_filename.find_last_of("."));
}
d_dump_filename = dump_path + boost::filesystem::path::preferred_separator + d_dump_filename;
// create directory
if (!gnss_sdr_create_directory(dump_path))
{
std::cerr << "GNSS-SDR cannot create dump files for the tracking block. Wrong permissions?" << std::endl;
d_dump = false;
}
}
}
@@ -633,17 +670,9 @@ dll_pll_veml_tracking::~dll_pll_veml_tracking()
LOG(WARNING) << "Exception in destructor " << ex.what();
}
}
if (trk_parameters.dump)
if (d_dump_mat)
{
if (d_channel == 0)
{
std::cout << "Writing .mat files ...";
}
save_matfile();
if (d_channel == 0)
{
std::cout << " done." << std::endl;
}
}
try
{
@@ -969,7 +998,7 @@ void dll_pll_veml_tracking::save_correlation_results()
void dll_pll_veml_tracking::log_data(bool integrating)
{
if (trk_parameters.dump)
if (d_dump)
{
// Dump results to file
float prompt_I;
@@ -1101,10 +1130,16 @@ int32_t dll_pll_veml_tracking::save_matfile()
int32_t epoch_size_bytes = sizeof(uint64_t) + sizeof(double) * number_of_double_vars +
sizeof(float) * number_of_float_vars + sizeof(uint32_t);
std::ifstream dump_file;
std::string dump_filename_ = d_dump_filename;
// add channel number to the filename
dump_filename_.append(std::to_string(d_channel));
// add extension
dump_filename_.append(".dat");
std::cout << "Generating .mat file for " << dump_filename_ << std::endl;
dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit);
try
{
dump_file.open(trk_parameters.dump_filename.c_str(), std::ios::binary | std::ios::ate);
dump_file.open(dump_filename_.c_str(), std::ios::binary | std::ios::ate);
}
catch (const std::ifstream::failure &e)
{
@@ -1209,7 +1244,7 @@ int32_t dll_pll_veml_tracking::save_matfile()
// WRITE MAT FILE
mat_t *matfp;
matvar_t *matvar;
std::string filename = trk_parameters.dump_filename;
std::string filename = dump_filename_;
filename.erase(filename.length() - 4, 4);
filename.append(".mat");
matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT73);
@@ -1337,17 +1372,23 @@ void dll_pll_veml_tracking::set_channel(uint32_t channel)
d_channel = channel;
LOG(INFO) << "Tracking Channel set to " << d_channel;
// ############# ENABLE DATA FILE LOG #################
if (trk_parameters.dump)
if (d_dump)
{
std::string dump_filename_ = d_dump_filename;
// add channel number to the filename
dump_filename_.append(std::to_string(d_channel));
// add extension
dump_filename_.append(".dat");
if (!d_dump_file.is_open())
{
try
{
trk_parameters.dump_filename.append(boost::lexical_cast<std::string>(d_channel));
trk_parameters.dump_filename.append(".dat");
//trk_parameters.dump_filename.append(boost::lexical_cast<std::string>(d_channel));
//trk_parameters.dump_filename.append(".dat");
d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit);
d_dump_file.open(trk_parameters.dump_filename.c_str(), std::ios::out | std::ios::binary);
LOG(INFO) << "Tracking dump enabled on channel " << d_channel << " Log file: " << trk_parameters.dump_filename.c_str();
d_dump_file.open(dump_filename_.c_str(), std::ios::out | std::ios::binary);
LOG(INFO) << "Tracking dump enabled on channel " << d_channel << " Log file: " << dump_filename_.c_str();
}
catch (const std::ifstream::failure &e)
{
@@ -1365,6 +1406,12 @@ void dll_pll_veml_tracking::set_gnss_synchro(Gnss_Synchro *p_gnss_synchro)
}
void dll_pll_veml_tracking::stop_tracking()
{
gr::thread::scoped_lock l(d_setlock);
d_state = 0;
}
int dll_pll_veml_tracking::general_work(int noutput_items __attribute__((unused)), gr_vector_int &ninput_items,
gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
{

View File

@@ -61,6 +61,7 @@ public:
void set_channel(uint32_t channel);
void set_gnss_synchro(Gnss_Synchro *p_gnss_synchro);
void start_tracking();
void stop_tracking();
int general_work(int noutput_items, gr_vector_int &ninput_items,
gr_vector_const_void_star &input_items, gr_vector_void_star &output_items);
@@ -195,6 +196,9 @@ private:
// file dump
std::ofstream d_dump_file;
std::string d_dump_filename;
bool d_dump;
bool d_dump_mat;
};
#endif // GNSS_SDR_DLL_PLL_VEML_TRACKING_H

View File

@@ -47,7 +47,8 @@
#include "gps_l2c_signal.h"
#include "GPS_L5.h"
#include "gps_l5_signal.h"
#include <boost/lexical_cast.hpp>
#include "gnss_sdr_create_directory.h"
#include <boost/filesystem/path.hpp>
#include <glog/logging.h>
#include <gnuradio/io_signature.h>
#include <matio.h>
@@ -420,6 +421,42 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga &
multicorrelator_fpga->set_output_vectors(d_correlator_outs, d_Prompt_Data);
d_pull_in = 0;
d_dump = trk_parameters.dump;
d_dump_mat = trk_parameters.dump_mat and d_dump;
if (d_dump)
{
d_dump_filename = trk_parameters.dump_filename;
std::string dump_path;
if (d_dump_filename.find_last_of("/") != std::string::npos)
{
std::string dump_filename_ = d_dump_filename.substr(d_dump_filename.find_last_of("/") + 1);
dump_path = d_dump_filename.substr(0, d_dump_filename.find_last_of("/"));
d_dump_filename = dump_filename_;
}
else
{
dump_path = std::string(".");
}
if (d_dump_filename.empty())
{
d_dump_filename = "trk_channel_";
}
// remove extension if any
if (d_dump_filename.substr(1).find_last_of(".") != std::string::npos)
{
d_dump_filename = d_dump_filename.substr(0, d_dump_filename.find_last_of("."));
}
d_dump_filename = dump_path + boost::filesystem::path::preferred_separator + d_dump_filename;
// create directory
if (!gnss_sdr_create_directory(dump_path))
{
std::cerr << "GNSS-SDR cannot create dump files for the tracking block. Wrong permissions?" << std::endl;
d_dump = false;
};
}
}
@@ -583,17 +620,9 @@ dll_pll_veml_tracking_fpga::~dll_pll_veml_tracking_fpga()
LOG(WARNING) << "Exception in destructor " << ex.what();
}
}
if (trk_parameters.dump)
if (d_dump_mat)
{
if (d_channel == 0)
{
std::cout << "Writing .mat files ...";
}
save_matfile();
if (d_channel == 0)
{
std::cout << " done." << std::endl;
}
}
try
{
@@ -842,7 +871,7 @@ void dll_pll_veml_tracking_fpga::save_correlation_results()
void dll_pll_veml_tracking_fpga::log_data(bool integrating)
{
if (trk_parameters.dump)
if (d_dump)
{
// Dump results to file
float prompt_I;
@@ -968,10 +997,16 @@ int32_t dll_pll_veml_tracking_fpga::save_matfile()
int32_t epoch_size_bytes = sizeof(uint64_t) + sizeof(double) * number_of_double_vars +
sizeof(float) * number_of_float_vars + sizeof(uint32_t);
std::ifstream dump_file;
std::string dump_filename_ = d_dump_filename;
// add channel number to the filename
dump_filename_.append(std::to_string(d_channel));
// add extension
dump_filename_.append(".dat");
std::cout << "Generating .mat file for " << dump_filename_ << std::endl;
dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit);
try
{
dump_file.open(trk_parameters.dump_filename.c_str(), std::ios::binary | std::ios::ate);
dump_file.open(dump_filename_.c_str(), std::ios::binary | std::ios::ate);
}
catch (const std::ifstream::failure &e)
{
@@ -1070,7 +1105,7 @@ int32_t dll_pll_veml_tracking_fpga::save_matfile()
// WRITE MAT FILE
mat_t *matfp;
matvar_t *matvar;
std::string filename = trk_parameters.dump_filename;
std::string filename = dump_filename_;
filename.erase(filename.length() - 4, 4);
filename.append(".mat");
matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT73);
@@ -1188,17 +1223,21 @@ void dll_pll_veml_tracking_fpga::set_channel(uint32_t channel)
multicorrelator_fpga->set_channel(d_channel);
LOG(INFO) << "Tracking Channel set to " << d_channel;
// ############# ENABLE DATA FILE LOG #################
if (trk_parameters.dump)
if (d_dump)
{
std::string dump_filename_ = d_dump_filename;
// add channel number to the filename
dump_filename_.append(std::to_string(d_channel));
// add extension
dump_filename_.append(".dat");
if (!d_dump_file.is_open())
{
try
{
trk_parameters.dump_filename.append(boost::lexical_cast<std::string>(d_channel));
trk_parameters.dump_filename.append(".dat");
d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit);
d_dump_file.open(trk_parameters.dump_filename.c_str(), std::ios::out | std::ios::binary);
LOG(INFO) << "Tracking dump enabled on channel " << d_channel << " Log file: " << trk_parameters.dump_filename.c_str();
d_dump_file.open(dump_filename_.c_str(), std::ios::out | std::ios::binary);
LOG(INFO) << "Tracking dump enabled on channel " << d_channel << " Log file: " << dump_filename_.c_str();
}
catch (const std::ifstream::failure &e)
{
@@ -1214,10 +1253,16 @@ void dll_pll_veml_tracking_fpga::set_gnss_synchro(Gnss_Synchro *p_gnss_synchro)
d_acquisition_gnss_synchro = p_gnss_synchro;
}
void dll_pll_veml_tracking_fpga::stop_tracking()
{
gr::thread::scoped_lock l(d_setlock);
d_state = 0;
}
int dll_pll_veml_tracking_fpga::general_work(int noutput_items __attribute__((unused)), gr_vector_int &ninput_items __attribute__((unused)),
gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
{
gr::thread::scoped_lock l(d_setlock);
// Block input data and block output stream pointers
Gnss_Synchro **out = reinterpret_cast<Gnss_Synchro **>(&output_items[0]);

View File

@@ -52,44 +52,11 @@
#include <boost/circular_buffer.hpp>
#include "fpga_multicorrelator.h"
//typedef struct
//{
// /* DLL/PLL tracking configuration */
// double fs_in;
// uint32_t 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;
// int32_t extend_correlation_symbols;
// int32_t cn0_samples;
// int32_t cn0_min;
// int32_t max_lock_fail;
// double carrier_lock_th;
// bool track_pilot;
// char system;
// char signal[3];
// std::string device_name;
// uint32_t device_base;
// uint32_t multicorr_type;
// uint32_t code_length_chips;
// uint32_t code_samples_per_chip;
// int* ca_codes;
// int* data_codes;
//} dllpllconf_fpga_t;
class dll_pll_veml_tracking_fpga;
typedef boost::shared_ptr<dll_pll_veml_tracking_fpga>
dll_pll_veml_tracking_fpga_sptr;
//dll_pll_veml_tracking_fpga_sptr dll_pll_veml_make_tracking_fpga(const dllpllconf_fpga_t &conf_);
dll_pll_veml_tracking_fpga_sptr dll_pll_veml_make_tracking_fpga(const Dll_Pll_Conf_Fpga &conf_);
@@ -104,7 +71,7 @@ public:
void set_channel(uint32_t channel);
void set_gnss_synchro(Gnss_Synchro *p_gnss_synchro);
void start_tracking();
void stop_tracking();
int general_work(int noutput_items, gr_vector_int &ninput_items,
gr_vector_const_void_star &input_items, gr_vector_void_star &output_items);
@@ -228,6 +195,9 @@ private:
// file dump
std::ofstream d_dump_file;
std::string d_dump_filename;
bool d_dump;
bool d_dump_mat;
// extra
int32_t d_correlation_length_samples;

View File

@@ -1,5 +1,5 @@
/*!
* \file glonass_l1_ca_dll_pll_c_aid_tracking_cc.h
* \file glonass_l1_ca_dll_pll_c_aid_tracking_cc.cc
* \brief Implementation of a code DLL + carrier PLL tracking block
* \author Gabriel Araujo, 2017. gabriel.araujo.5000(at)gmail.com
* \author Luis Esteve, 2017. luis(at)epsilon-formacion.com

View File

@@ -1,5 +1,5 @@
/*!
* \file glonass_l2_ca_dll_pll_c_aid_tracking_cc.h
* \file glonass_l2_ca_dll_pll_c_aid_tracking_cc.cc
* \brief Implementation of a code DLL + carrier PLL tracking block
* \author Damian Miralles, 2018. dmiralles2009(at)gmail.com
*

View File

@@ -1,5 +1,5 @@
/*!
* \file gps_l1_ca_kf_tracking_cc.cc
* \file gps_l1_ca_kf_tracking_cc.h
* \brief Interface of a processing block of a DLL + Kalman carrier
* tracking loop for GPS L1 C/A signals
* \author Javier Arribas, 2018. jarribas(at)cttc.es