mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-01-28 18:04:51 +00:00
Merge branch 'next' of https://github.com/carlesfernandez/gnss-sdr into next
This commit is contained in:
commit
e6863b371d
@ -3,7 +3,8 @@
|
|||||||
### Improvements in Maintainability:
|
### Improvements in Maintainability:
|
||||||
|
|
||||||
- New CMake option ENABLE_ARMA_NO_DEBUG defines the macro ARMA_NO_DEBUG, which disables all run-time checks, such as bounds checking, in the Armadillo library. This will result in faster code. This option is disabled by default during development, but automatically set to ON if the option ENABLE_PACKAGING is set to ON.
|
- New CMake option ENABLE_ARMA_NO_DEBUG defines the macro ARMA_NO_DEBUG, which disables all run-time checks, such as bounds checking, in the Armadillo library. This will result in faster code. This option is disabled by default during development, but automatically set to ON if the option ENABLE_PACKAGING is set to ON.
|
||||||
- Apply more clang-tidy checks related to readability: readability-avoid-const-params-in-decls, readability-isolate-declaration, readability-redundant-control-flow, readability-uppercase-literal-suffix.
|
- Apply more clang-tidy checks related to readability: readability-avoid-const-params-in-decls, readability-isolate-declaration, readability-redundant-control-flow, readability-uppercase-literal-suffix. Fixed raised warnings.
|
||||||
|
- Fixed cpplint.py build/include_what_you_use, whitespace/tab, whitespace/blank_line errors.
|
||||||
- Add more check options to .clang-tidy file.
|
- Add more check options to .clang-tidy file.
|
||||||
|
|
||||||
|
|
||||||
@ -15,8 +16,14 @@
|
|||||||
### Improvements in Reliability:
|
### Improvements in Reliability:
|
||||||
|
|
||||||
- Decoding of navigation messages no longer rely on implementation defined behavior for shifting left a signed integer.
|
- Decoding of navigation messages no longer rely on implementation defined behavior for shifting left a signed integer.
|
||||||
- Removed usage of functions with insecure API (e.g., strcpy)
|
- Removed usage of functions with insecure API (e.g., strcpy).
|
||||||
- Added clang-tidy checks clang-analyzer-security.*
|
- Added clang-tidy checks clang-analyzer-security.*, clang-analyzer-optin.portability.UnixAPI clang-tidy checks. Fixed raised warnings.
|
||||||
|
|
||||||
|
|
||||||
|
### Improvements in Usability:
|
||||||
|
|
||||||
|
- Improved DLL-PLL binary dump MATLAB/Octave plot script. Old versions removed.
|
||||||
|
- Simplified RTKLIB error log.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -39,7 +39,6 @@
|
|||||||
#include <exception> // for exception
|
#include <exception> // for exception
|
||||||
#include <iostream> // for cout, cerr
|
#include <iostream> // for cout, cerr
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <string>
|
|
||||||
#include <sys/stat.h> // for S_IXUSR | S_IRWXG | S_IRWXO
|
#include <sys/stat.h> // for S_IXUSR | S_IRWXG | S_IRWXO
|
||||||
#include <sys/types.h> // for mode_t
|
#include <sys/types.h> // for mode_t
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
#include <fstream> // for ofstream
|
#include <fstream> // for ofstream
|
||||||
#include <memory> // for shared_ptr
|
#include <memory> // for shared_ptr
|
||||||
|
#include <string>
|
||||||
|
|
||||||
class Rtklib_Solver;
|
class Rtklib_Solver;
|
||||||
|
|
||||||
|
@ -35,6 +35,9 @@
|
|||||||
#include "monitor_pvt.h"
|
#include "monitor_pvt.h"
|
||||||
#include "serdes_monitor_pvt.h"
|
#include "serdes_monitor_pvt.h"
|
||||||
#include <boost/asio.hpp>
|
#include <boost/asio.hpp>
|
||||||
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
#if BOOST_GREATER_1_65
|
#if BOOST_GREATER_1_65
|
||||||
using b_io_context = boost::asio::io_context;
|
using b_io_context = boost::asio::io_context;
|
||||||
|
@ -43,6 +43,7 @@
|
|||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <iostream> // for cout, cerr
|
#include <iostream> // for cout, cerr
|
||||||
#include <termios.h>
|
#include <termios.h>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
#if HAS_STD_FILESYSTEM
|
#if HAS_STD_FILESYSTEM
|
||||||
#include <system_error>
|
#include <system_error>
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
#include <fstream> // for std::ofstream
|
#include <fstream> // for std::ofstream
|
||||||
#include <map> // for std::map
|
#include <map> // for std::map
|
||||||
#include <memory> // std::shared_ptr
|
#include <memory> // std::shared_ptr
|
||||||
|
#include <string>
|
||||||
|
|
||||||
class Galileo_Ephemeris;
|
class Galileo_Ephemeris;
|
||||||
class Glonass_Gnav_Ephemeris;
|
class Glonass_Gnav_Ephemeris;
|
||||||
|
@ -926,7 +926,7 @@ bool Rtklib_Solver::get_PVT(const std::map<int, Gnss_Synchro> &gnss_observables_
|
|||||||
if (result == 0)
|
if (result == 0)
|
||||||
{
|
{
|
||||||
LOG(INFO) << "RTKLIB rtkpos error: " << rtk_.errbuf;
|
LOG(INFO) << "RTKLIB rtkpos error: " << rtk_.errbuf;
|
||||||
rtk_.neb = 0; //clear error buffer to avoid repeating the error message
|
rtk_.neb = 0; // clear error buffer to avoid repeating the error message
|
||||||
this->set_time_offset_s(0.0); // reset rx time estimation
|
this->set_time_offset_s(0.0); // reset rx time estimation
|
||||||
this->set_num_valid_observations(0);
|
this->set_num_valid_observations(0);
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,8 @@
|
|||||||
#include "monitor_pvt.h"
|
#include "monitor_pvt.h"
|
||||||
#include "monitor_pvt.pb.h" // file created by Protocol Buffers at compile time
|
#include "monitor_pvt.pb.h" // file created by Protocol Buffers at compile time
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief This class implements serialization and deserialization of
|
* \brief This class implements serialization and deserialization of
|
||||||
|
@ -62,6 +62,7 @@
|
|||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
|
|
||||||
pcps_opencl_acquisition_cc_sptr pcps_make_opencl_acquisition_cc(
|
pcps_opencl_acquisition_cc_sptr pcps_make_opencl_acquisition_cc(
|
||||||
|
@ -61,6 +61,7 @@
|
|||||||
#include "opencl/cl.hpp"
|
#include "opencl/cl.hpp"
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include <memory> // for weak_ptr
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -60,6 +60,7 @@
|
|||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
#include <memory> // for weak_ptr
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
@ -57,6 +57,7 @@
|
|||||||
#include <gnuradio/fft/fft.h>
|
#include <gnuradio/fft/fft.h>
|
||||||
#include <gnuradio/gr_complex.h>
|
#include <gnuradio/gr_complex.h>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include <memory> // for weak_ptr
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "interleaved_byte_to_complex_byte.h"
|
#include "interleaved_byte_to_complex_byte.h"
|
||||||
#include <gnuradio/io_signature.h>
|
#include <gnuradio/io_signature.h>
|
||||||
#include <volk/volk.h>
|
#include <volk/volk.h>
|
||||||
|
#include <algorithm> // for max
|
||||||
|
|
||||||
|
|
||||||
interleaved_byte_to_complex_byte_sptr make_interleaved_byte_to_complex_byte()
|
interleaved_byte_to_complex_byte_sptr make_interleaved_byte_to_complex_byte()
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "interleaved_byte_to_complex_short.h"
|
#include "interleaved_byte_to_complex_short.h"
|
||||||
#include <gnuradio/io_signature.h>
|
#include <gnuradio/io_signature.h>
|
||||||
#include <volk/volk.h>
|
#include <volk/volk.h>
|
||||||
|
#include <algorithm> // for max
|
||||||
|
|
||||||
|
|
||||||
interleaved_byte_to_complex_short_sptr make_interleaved_byte_to_complex_short()
|
interleaved_byte_to_complex_short_sptr make_interleaved_byte_to_complex_short()
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "interleaved_short_to_complex_short.h"
|
#include "interleaved_short_to_complex_short.h"
|
||||||
#include <gnuradio/io_signature.h>
|
#include <gnuradio/io_signature.h>
|
||||||
#include <volk/volk.h>
|
#include <volk/volk.h>
|
||||||
|
#include <algorithm> // for max
|
||||||
|
|
||||||
|
|
||||||
interleaved_short_to_complex_short_sptr make_interleaved_short_to_complex_short()
|
interleaved_short_to_complex_short_sptr make_interleaved_short_to_complex_short()
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
#include "notch_lite_cc.h"
|
#include "notch_lite_cc.h"
|
||||||
#include <boost/lexical_cast.hpp>
|
#include <boost/lexical_cast.hpp>
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
#include <cmath>
|
#include <algorithm> // for max
|
||||||
|
|
||||||
|
|
||||||
NotchFilterLite::NotchFilterLite(ConfigurationInterface* configuration, const std::string& role,
|
NotchFilterLite::NotchFilterLite(ConfigurationInterface* configuration, const std::string& role,
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
#include <boost/math/distributions/chi_squared.hpp>
|
#include <boost/math/distributions/chi_squared.hpp>
|
||||||
#include <gnuradio/io_signature.h>
|
#include <gnuradio/io_signature.h>
|
||||||
#include <volk/volk.h>
|
#include <volk/volk.h>
|
||||||
#include <cmath>
|
#include <algorithm>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
#include <boost/math/distributions/chi_squared.hpp>
|
#include <boost/math/distributions/chi_squared.hpp>
|
||||||
#include <gnuradio/io_signature.h>
|
#include <gnuradio/io_signature.h>
|
||||||
#include <volk/volk.h>
|
#include <volk/volk.h>
|
||||||
#include <cmath>
|
#include <algorithm>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
#include <boost/math/distributions/chi_squared.hpp>
|
#include <boost/math/distributions/chi_squared.hpp>
|
||||||
#include <gnuradio/io_signature.h>
|
#include <gnuradio/io_signature.h>
|
||||||
#include <volk/volk.h>
|
#include <volk/volk.h>
|
||||||
#include <cmath>
|
#include <algorithm>
|
||||||
|
|
||||||
|
|
||||||
pulse_blanking_cc_sptr make_pulse_blanking_cc(float pfa, int32_t length_,
|
pulse_blanking_cc_sptr make_pulse_blanking_cc(float pfa, int32_t length_,
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include "gnss_signal_processing.h"
|
#include "gnss_signal_processing.h"
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
#include "gnss_signal_processing.h"
|
#include "gnss_signal_processing.h"
|
||||||
#include <gnuradio/gr_complex.h>
|
#include <gnuradio/gr_complex.h>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
|
|
||||||
void galileo_e5_a_code_gen_complex_primary(gsl::span<std::complex<float>> _dest, int32_t _prn, const std::array<char, 3>& _Signal)
|
void galileo_e5_a_code_gen_complex_primary(gsl::span<std::complex<float>> _dest, int32_t _prn, const std::array<char, 3>& _Signal)
|
||||||
|
@ -516,7 +516,7 @@ void cart2utm(const arma::vec &r_eb_e, int zone, arma::vec &r_enu)
|
|||||||
// Erster Band, Springer Verlag
|
// Erster Band, Springer Verlag
|
||||||
//
|
//
|
||||||
// Explanation of variables used:
|
// Explanation of variables used:
|
||||||
// f flattening of ellipsoid
|
// r flattening of ellipsoid
|
||||||
// a semi major axis in m
|
// a semi major axis in m
|
||||||
// m0 1 - scale at central meridian; for UTM 0.0004
|
// m0 1 - scale at central meridian; for UTM 0.0004
|
||||||
// Q_n normalized meridian quadrant
|
// Q_n normalized meridian quadrant
|
||||||
|
@ -68,7 +68,6 @@ extern "C"
|
|||||||
{
|
{
|
||||||
clFFT_Forward = -1,
|
clFFT_Forward = -1,
|
||||||
clFFT_Inverse = 1
|
clFFT_Inverse = 1
|
||||||
|
|
||||||
} clFFT_Direction;
|
} clFFT_Direction;
|
||||||
|
|
||||||
// XForm dimension
|
// XForm dimension
|
||||||
@ -77,7 +76,6 @@ extern "C"
|
|||||||
clFFT_1D = 0,
|
clFFT_1D = 0,
|
||||||
clFFT_2D = 1,
|
clFFT_2D = 1,
|
||||||
clFFT_3D = 3
|
clFFT_3D = 3
|
||||||
|
|
||||||
} clFFT_Dimension;
|
} clFFT_Dimension;
|
||||||
|
|
||||||
// XForm Data type
|
// XForm Data type
|
||||||
|
@ -77,7 +77,7 @@ obsd_t insert_obs_to_rtklib(obsd_t& rtklib_obs, const Gnss_Synchro& gnss_synchro
|
|||||||
}
|
}
|
||||||
auto CN0_dB_Hz = static_cast<unsigned char>(std::round(CN0_dB_Hz_est / 0.25));
|
auto CN0_dB_Hz = static_cast<unsigned char>(std::round(CN0_dB_Hz_est / 0.25));
|
||||||
rtklib_obs.SNR[band] = CN0_dB_Hz;
|
rtklib_obs.SNR[band] = CN0_dB_Hz;
|
||||||
//Galileo is the third satellite system for RTKLIB, so, add the required offset to discriminate Galileo ephemeris
|
// Galileo is the third satellite system for RTKLIB, so, add the required offset to discriminate Galileo ephemeris
|
||||||
switch (gnss_synchro.System)
|
switch (gnss_synchro.System)
|
||||||
{
|
{
|
||||||
case 'G':
|
case 'G':
|
||||||
@ -107,7 +107,7 @@ obsd_t insert_obs_to_rtklib(obsd_t& rtklib_obs, const Gnss_Synchro& gnss_synchro
|
|||||||
rtklib_obs.sat = gnss_synchro.PRN;
|
rtklib_obs.sat = gnss_synchro.PRN;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mote that BeiDou week numbers do not need adjustment for foreseeable future. Consider change
|
// Note that BeiDou week numbers do not need adjustment for foreseeable future. Consider change
|
||||||
// to more elegant solution
|
// to more elegant solution
|
||||||
// if(gnss_synchro.System == 'C')
|
// if(gnss_synchro.System == 'C')
|
||||||
// {
|
// {
|
||||||
@ -119,10 +119,9 @@ obsd_t insert_obs_to_rtklib(obsd_t& rtklib_obs, const Gnss_Synchro& gnss_synchro
|
|||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
rtklib_obs.time = gpst2time(adjgpsweek(week), gnss_synchro.RX_time);
|
rtklib_obs.time = gpst2time(adjgpsweek(week), gnss_synchro.RX_time);
|
||||||
//account for the TOW crossover transitory in the first 18 seconds where the week is not yet updated!
|
// account for the TOW crossover transitory in the first 18 seconds where the week is not yet updated!
|
||||||
if (gnss_synchro.RX_time < 18.0)
|
if (gnss_synchro.RX_time < 18.0)
|
||||||
{
|
{
|
||||||
//p_time += boost::posix_time::seconds(604800);
|
|
||||||
rtklib_obs.time = timeadd(rtklib_obs.time, 604800);
|
rtklib_obs.time = timeadd(rtklib_obs.time, 604800);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -130,6 +129,7 @@ obsd_t insert_obs_to_rtklib(obsd_t& rtklib_obs, const Gnss_Synchro& gnss_synchro
|
|||||||
return rtklib_obs;
|
return rtklib_obs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
geph_t eph_to_rtklib(const Glonass_Gnav_Ephemeris& glonass_gnav_eph, const Glonass_Gnav_Utc_Model& gnav_clock_model)
|
geph_t eph_to_rtklib(const Glonass_Gnav_Ephemeris& glonass_gnav_eph, const Glonass_Gnav_Utc_Model& gnav_clock_model)
|
||||||
{
|
{
|
||||||
double week;
|
double week;
|
||||||
@ -174,7 +174,7 @@ eph_t eph_to_rtklib(const Galileo_Ephemeris& gal_eph)
|
|||||||
{
|
{
|
||||||
eph_t rtklib_sat = {0, 0, 0, 0, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, 0.0, 0.0, 0.0, 0.0, 0.0,
|
eph_t rtklib_sat = {0, 0, 0, 0, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, 0.0, 0.0, 0.0, 0.0, 0.0,
|
||||||
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, {}, {}, 0.0, 0.0};
|
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, {}, {}, 0.0, 0.0};
|
||||||
//Galileo is the third satellite system for RTKLIB, so, add the required offset to discriminate Galileo ephemeris
|
// Galileo is the third satellite system for RTKLIB, so, add the required offset to discriminate Galileo ephemeris
|
||||||
rtklib_sat.sat = gal_eph.i_satellite_PRN + NSATGPS + NSATGLO;
|
rtklib_sat.sat = gal_eph.i_satellite_PRN + NSATGPS + NSATGLO;
|
||||||
rtklib_sat.A = gal_eph.A_1 * gal_eph.A_1;
|
rtklib_sat.A = gal_eph.A_1 * gal_eph.A_1;
|
||||||
rtklib_sat.M0 = gal_eph.M0_1;
|
rtklib_sat.M0 = gal_eph.M0_1;
|
||||||
@ -185,8 +185,8 @@ eph_t eph_to_rtklib(const Galileo_Ephemeris& gal_eph)
|
|||||||
rtklib_sat.i0 = gal_eph.i_0_2;
|
rtklib_sat.i0 = gal_eph.i_0_2;
|
||||||
rtklib_sat.idot = gal_eph.iDot_2;
|
rtklib_sat.idot = gal_eph.iDot_2;
|
||||||
rtklib_sat.e = gal_eph.e_1;
|
rtklib_sat.e = gal_eph.e_1;
|
||||||
rtklib_sat.Adot = 0; //only in CNAV;
|
rtklib_sat.Adot = 0; // only in CNAV;
|
||||||
rtklib_sat.ndot = 0; //only in CNAV;
|
rtklib_sat.ndot = 0; // only in CNAV;
|
||||||
|
|
||||||
rtklib_sat.week = adjgpsweek(gal_eph.WN_5); /* week of tow */
|
rtklib_sat.week = adjgpsweek(gal_eph.WN_5); /* week of tow */
|
||||||
rtklib_sat.cic = gal_eph.C_ic_4;
|
rtklib_sat.cic = gal_eph.C_ic_4;
|
||||||
@ -243,8 +243,8 @@ eph_t eph_to_rtklib(const Gps_Ephemeris& gps_eph)
|
|||||||
rtklib_sat.i0 = gps_eph.d_i_0;
|
rtklib_sat.i0 = gps_eph.d_i_0;
|
||||||
rtklib_sat.idot = gps_eph.d_IDOT;
|
rtklib_sat.idot = gps_eph.d_IDOT;
|
||||||
rtklib_sat.e = gps_eph.d_e_eccentricity;
|
rtklib_sat.e = gps_eph.d_e_eccentricity;
|
||||||
rtklib_sat.Adot = 0; //only in CNAV;
|
rtklib_sat.Adot = 0; // only in CNAV;
|
||||||
rtklib_sat.ndot = 0; //only in CNAV;
|
rtklib_sat.ndot = 0; // only in CNAV;
|
||||||
|
|
||||||
rtklib_sat.week = adjgpsweek(gps_eph.i_GPS_week); /* week of tow */
|
rtklib_sat.week = adjgpsweek(gps_eph.i_GPS_week); /* week of tow */
|
||||||
rtklib_sat.cic = gps_eph.d_Cic;
|
rtklib_sat.cic = gps_eph.d_Cic;
|
||||||
@ -301,14 +301,14 @@ eph_t eph_to_rtklib(const Beidou_Dnav_Ephemeris& bei_eph)
|
|||||||
rtklib_sat.i0 = bei_eph.d_i_0;
|
rtklib_sat.i0 = bei_eph.d_i_0;
|
||||||
rtklib_sat.idot = bei_eph.d_IDOT;
|
rtklib_sat.idot = bei_eph.d_IDOT;
|
||||||
rtklib_sat.e = bei_eph.d_eccentricity;
|
rtklib_sat.e = bei_eph.d_eccentricity;
|
||||||
rtklib_sat.Adot = 0; //only in CNAV;
|
rtklib_sat.Adot = 0; // only in CNAV;
|
||||||
rtklib_sat.ndot = 0; //only in CNAV;
|
rtklib_sat.ndot = 0; // only in CNAV;
|
||||||
|
|
||||||
rtklib_sat.svh = bei_eph.i_SV_health;
|
rtklib_sat.svh = bei_eph.i_SV_health;
|
||||||
rtklib_sat.sva = bei_eph.i_SV_accuracy;
|
rtklib_sat.sva = bei_eph.i_SV_accuracy;
|
||||||
|
|
||||||
rtklib_sat.code = bei_eph.i_sig_type; /*B1I data*/
|
rtklib_sat.code = bei_eph.i_sig_type; /* B1I data */
|
||||||
rtklib_sat.flag = bei_eph.i_nav_type; /*MEO/IGSO satellite*/
|
rtklib_sat.flag = bei_eph.i_nav_type; /* MEO/IGSO satellite */
|
||||||
rtklib_sat.iode = static_cast<int32_t>(bei_eph.d_AODE); /* AODE */
|
rtklib_sat.iode = static_cast<int32_t>(bei_eph.d_AODE); /* AODE */
|
||||||
rtklib_sat.iodc = static_cast<int32_t>(bei_eph.d_AODC); /* AODC */
|
rtklib_sat.iodc = static_cast<int32_t>(bei_eph.d_AODC); /* AODC */
|
||||||
|
|
||||||
@ -374,8 +374,8 @@ eph_t eph_to_rtklib(const Gps_CNAV_Ephemeris& gps_cnav_eph)
|
|||||||
rtklib_sat.i0 = gps_cnav_eph.d_i_0;
|
rtklib_sat.i0 = gps_cnav_eph.d_i_0;
|
||||||
rtklib_sat.idot = gps_cnav_eph.d_IDOT;
|
rtklib_sat.idot = gps_cnav_eph.d_IDOT;
|
||||||
rtklib_sat.e = gps_cnav_eph.d_e_eccentricity;
|
rtklib_sat.e = gps_cnav_eph.d_e_eccentricity;
|
||||||
rtklib_sat.Adot = gps_cnav_eph.d_A_DOT; //only in CNAV;
|
rtklib_sat.Adot = gps_cnav_eph.d_A_DOT; // only in CNAV;
|
||||||
rtklib_sat.ndot = gps_cnav_eph.d_DELTA_DOT_N; //only in CNAV;
|
rtklib_sat.ndot = gps_cnav_eph.d_DELTA_DOT_N; // only in CNAV;
|
||||||
|
|
||||||
rtklib_sat.week = adjgpsweek(gps_cnav_eph.i_GPS_week); /* week of tow */
|
rtklib_sat.week = adjgpsweek(gps_cnav_eph.i_GPS_week); /* week of tow */
|
||||||
rtklib_sat.cic = gps_cnav_eph.d_Cic;
|
rtklib_sat.cic = gps_cnav_eph.d_Cic;
|
||||||
|
@ -236,8 +236,8 @@ double prange(const obsd_t *obs, const nav_t *nav, const double *azel,
|
|||||||
|
|
||||||
//CHECK IF IT IS STILL NEEDED
|
//CHECK IF IT IS STILL NEEDED
|
||||||
if (opt->ionoopt == IONOOPT_IFLC)
|
if (opt->ionoopt == IONOOPT_IFLC)
|
||||||
{ /* dual-frequency */
|
{
|
||||||
|
/* dual-frequency */
|
||||||
if (P1 == 0.0 || P2 == 0.0)
|
if (P1 == 0.0 || P2 == 0.0)
|
||||||
{
|
{
|
||||||
return 0.0;
|
return 0.0;
|
||||||
|
@ -1689,7 +1689,6 @@ int res_ppp(int iter __attribute__((unused)), const obsd_t *obs, int n, const do
|
|||||||
|
|
||||||
for (j = 0; j < 2; j++)
|
for (j = 0; j < 2; j++)
|
||||||
{ /* for phase and code */
|
{ /* for phase and code */
|
||||||
|
|
||||||
if (meas[j] == 0.0)
|
if (meas[j] == 0.0)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
@ -79,6 +79,7 @@
|
|||||||
#define GNSS_SDR_RTKLIB_RTKCMN_H_
|
#define GNSS_SDR_RTKLIB_RTKCMN_H_
|
||||||
|
|
||||||
#include "rtklib.h"
|
#include "rtklib.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
/* coordinate rotation matrix ------------------------------------------------*/
|
/* coordinate rotation matrix ------------------------------------------------*/
|
||||||
|
@ -1657,7 +1657,6 @@ int ddres(rtk_t *rtk, const nav_t *nav, double dt, const double *x,
|
|||||||
}
|
}
|
||||||
for (m = 0; m < 4; m++)
|
for (m = 0; m < 4; m++)
|
||||||
{ /* m=0:gps/qzs/sbs, 1:glo, 2:gal, 3:bds */
|
{ /* m=0:gps/qzs/sbs, 1:glo, 2:gal, 3:bds */
|
||||||
|
|
||||||
for (f = opt->mode > PMODE_DGPS ? 0 : nf; f < nf * 2; f++)
|
for (f = opt->mode > PMODE_DGPS ? 0 : nf; f < nf * 2; f++)
|
||||||
{
|
{
|
||||||
/* search reference satellite with highest elevation */
|
/* search reference satellite with highest elevation */
|
||||||
@ -2863,7 +2862,6 @@ int rtkpos(rtk_t *rtk, const obsd_t *obs, int n, const nav_t *nav)
|
|||||||
}
|
}
|
||||||
if (opt->mode == PMODE_MOVEB)
|
if (opt->mode == PMODE_MOVEB)
|
||||||
{ /* moving baseline */
|
{ /* moving baseline */
|
||||||
|
|
||||||
/* estimate position/velocity of base station */
|
/* estimate position/velocity of base station */
|
||||||
if (!pntpos(obs + nu, nr, nav, &rtk->opt, &solb, nullptr, nullptr, msg))
|
if (!pntpos(obs + nu, nr, nav, &rtk->opt, &solb, nullptr, nullptr, msg))
|
||||||
{
|
{
|
||||||
|
@ -494,7 +494,6 @@ void decodefile(rtksvr_t *svr, int index)
|
|||||||
|
|
||||||
if (svr->format[index] == STRFMT_SP3)
|
if (svr->format[index] == STRFMT_SP3)
|
||||||
{ /* precise ephemeris */
|
{ /* precise ephemeris */
|
||||||
|
|
||||||
/* read sp3 precise ephemeris */
|
/* read sp3 precise ephemeris */
|
||||||
readsp3(file, &nav, 0);
|
readsp3(file, &nav, 0);
|
||||||
if (nav.ne <= 0)
|
if (nav.ne <= 0)
|
||||||
@ -517,8 +516,8 @@ void decodefile(rtksvr_t *svr, int index)
|
|||||||
rtksvrunlock(svr);
|
rtksvrunlock(svr);
|
||||||
}
|
}
|
||||||
else if (svr->format[index] == STRFMT_RNXCLK)
|
else if (svr->format[index] == STRFMT_RNXCLK)
|
||||||
{ /* precise clock */
|
{
|
||||||
|
/* precise clock */
|
||||||
/* read rinex clock */ // Disabled!!
|
/* read rinex clock */ // Disabled!!
|
||||||
if (true /*readrnxc(file, &nav)<=0 */)
|
if (true /*readrnxc(file, &nav)<=0 */)
|
||||||
{
|
{
|
||||||
|
@ -955,7 +955,6 @@ int gentcp(tcp_t *tcp, int type, char *msg)
|
|||||||
|
|
||||||
if (type == 0)
|
if (type == 0)
|
||||||
{ /* server socket */
|
{ /* server socket */
|
||||||
|
|
||||||
#ifdef SVR_REUSEADDR
|
#ifdef SVR_REUSEADDR
|
||||||
/* multiple-use of server socket */
|
/* multiple-use of server socket */
|
||||||
setsockopt(tcp->sock, SOL_SOCKET, SO_REUSEADDR, (const char *)&opt,
|
setsockopt(tcp->sock, SOL_SOCKET, SO_REUSEADDR, (const char *)&opt,
|
||||||
|
@ -355,7 +355,6 @@ void tidedisp(gtime_t tutc, const double *rr, int opt, const erp_t *erp,
|
|||||||
|
|
||||||
if (opt & 1)
|
if (opt & 1)
|
||||||
{ /* solid earth tides */
|
{ /* solid earth tides */
|
||||||
|
|
||||||
/* sun and moon position in ecef */
|
/* sun and moon position in ecef */
|
||||||
sunmoonpos(tutc, erpv, rs, rm, &gmst);
|
sunmoonpos(tutc, erpv, rs, rm, &gmst);
|
||||||
|
|
||||||
|
@ -28,7 +28,6 @@
|
|||||||
/* From gnuradio/gnuradio-runtime/lib/math/sine_table.h
|
/* From gnuradio/gnuradio-runtime/lib/math/sine_table.h
|
||||||
* max_error = 2.353084136763606e-06 */
|
* max_error = 2.353084136763606e-06 */
|
||||||
static const float sine_table_10bits[1 << 10][2] = {
|
static const float sine_table_10bits[1 << 10][2] = {
|
||||||
|
|
||||||
{2.925817799165007e-09, 7.219194364267018e-09},
|
{2.925817799165007e-09, 7.219194364267018e-09},
|
||||||
{2.925707643778599e-09, 2.526699001579799e-07},
|
{2.925707643778599e-09, 2.526699001579799e-07},
|
||||||
{2.925487337153070e-09, 1.191140162167675e-06},
|
{2.925487337153070e-09, 1.191140162167675e-06},
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
|
|
||||||
#include "qa_utils.h"
|
#include "qa_utils.h"
|
||||||
#include <volk_gnsssdr/volk_gnsssdr.h>
|
#include <volk_gnsssdr/volk_gnsssdr.h>
|
||||||
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
|
||||||
|
@ -45,7 +45,6 @@
|
|||||||
#include <iostream> // for cerr, cout
|
#include <iostream> // for cerr, cout
|
||||||
#include <limits> // for numeric_limits
|
#include <limits> // for numeric_limits
|
||||||
#include <utility> // for move
|
#include <utility> // for move
|
||||||
#include <vector> // for vector
|
|
||||||
|
|
||||||
#if HAS_STD_FILESYSTEM
|
#if HAS_STD_FILESYSTEM
|
||||||
#include <system_error>
|
#include <system_error>
|
||||||
|
@ -41,6 +41,8 @@
|
|||||||
#include <cstdint> // for int32_t
|
#include <cstdint> // for int32_t
|
||||||
#include <fstream> // for string, ofstream
|
#include <fstream> // for string, ofstream
|
||||||
#include <memory> // for shared_ptr
|
#include <memory> // for shared_ptr
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
class Gnss_Synchro;
|
class Gnss_Synchro;
|
||||||
class hybrid_observables_gs;
|
class hybrid_observables_gs;
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
#include <gnuradio/blocks/file_sink.h>
|
#include <gnuradio/blocks/file_sink.h>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
MmseResamplerConditioner::MmseResamplerConditioner(
|
MmseResamplerConditioner::MmseResamplerConditioner(
|
||||||
ConfigurationInterface* configuration, const std::string& role,
|
ConfigurationInterface* configuration, const std::string& role,
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
|
|
||||||
#include "direct_resampler_conditioner_cb.h"
|
#include "direct_resampler_conditioner_cb.h"
|
||||||
#include <gnuradio/io_signature.h>
|
#include <gnuradio/io_signature.h>
|
||||||
|
#include <algorithm> // for min
|
||||||
|
|
||||||
|
|
||||||
direct_resampler_conditioner_cb_sptr direct_resampler_make_conditioner_cb(
|
direct_resampler_conditioner_cb_sptr direct_resampler_make_conditioner_cb(
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
#include "direct_resampler_conditioner_cc.h"
|
#include "direct_resampler_conditioner_cc.h"
|
||||||
#include <gnuradio/io_signature.h>
|
#include <gnuradio/io_signature.h>
|
||||||
|
#include <algorithm> // for min
|
||||||
|
|
||||||
direct_resampler_conditioner_cc_sptr direct_resampler_make_conditioner_cc(
|
direct_resampler_conditioner_cc_sptr direct_resampler_make_conditioner_cc(
|
||||||
double sample_freq_in, double sample_freq_out)
|
double sample_freq_in, double sample_freq_out)
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
|
|
||||||
#include "direct_resampler_conditioner_cs.h"
|
#include "direct_resampler_conditioner_cs.h"
|
||||||
#include <gnuradio/io_signature.h>
|
#include <gnuradio/io_signature.h>
|
||||||
|
#include <algorithm> // for min
|
||||||
|
|
||||||
|
|
||||||
direct_resampler_conditioner_cs_sptr direct_resampler_make_conditioner_cs(
|
direct_resampler_conditioner_cs_sptr direct_resampler_make_conditioner_cs(
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
#include <gnuradio/blocks/vector_to_stream.h>
|
#include <gnuradio/blocks/vector_to_stream.h>
|
||||||
#include <gnuradio/hier_block2.h>
|
#include <gnuradio/hier_block2.h>
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class ConfigurationInterface;
|
class ConfigurationInterface;
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
#include <gnuradio/blocks/file_sink.h>
|
#include <gnuradio/blocks/file_sink.h>
|
||||||
#include <gnuradio/blocks/null_sink.h>
|
#include <gnuradio/blocks/null_sink.h>
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
|
#include <memory>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
@ -42,6 +42,7 @@
|
|||||||
#include <gnuradio/blocks/null_sink.h>
|
#include <gnuradio/blocks/null_sink.h>
|
||||||
#include <gnuradio/hier_block2.h>
|
#include <gnuradio/hier_block2.h>
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -43,6 +43,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#include "concurrent_queue.h"
|
#include "concurrent_queue.h"
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class ConfigurationInterface;
|
class ConfigurationInterface;
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
#include "concurrent_queue.h"
|
#include "concurrent_queue.h"
|
||||||
#include "gnss_block_interface.h"
|
#include "gnss_block_interface.h"
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
#include <gnuradio/blocks/file_sink.h>
|
#include <gnuradio/blocks/file_sink.h>
|
||||||
#include <gnuradio/hier_block2.h>
|
#include <gnuradio/hier_block2.h>
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
#include <gnuradio/blocks/file_sink.h>
|
#include <gnuradio/blocks/file_sink.h>
|
||||||
#include <gnuradio/hier_block2.h>
|
#include <gnuradio/hier_block2.h>
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class ConfigurationInterface;
|
class ConfigurationInterface;
|
||||||
|
@ -43,6 +43,7 @@
|
|||||||
#include <gnuradio/hier_block2.h>
|
#include <gnuradio/hier_block2.h>
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -43,6 +43,7 @@
|
|||||||
#include <gnuradio/blocks/throttle.h>
|
#include <gnuradio/blocks/throttle.h>
|
||||||
#include <gnuradio/hier_block2.h>
|
#include <gnuradio/hier_block2.h>
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class ConfigurationInterface;
|
class ConfigurationInterface;
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
#include <gnuradio/blocks/file_sink.h>
|
#include <gnuradio/blocks/file_sink.h>
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <memory>
|
||||||
#include <osmosdr/source.h>
|
#include <osmosdr/source.h>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
@ -42,6 +42,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#include "concurrent_queue.h"
|
#include "concurrent_queue.h"
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
#include <gnuradio/blocks/file_sink.h>
|
#include <gnuradio/blocks/file_sink.h>
|
||||||
#include <gnuradio/hier_block2.h>
|
#include <gnuradio/hier_block2.h>
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class ConfigurationInterface;
|
class ConfigurationInterface;
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
#include <gnuradio/blocks/file_sink.h>
|
#include <gnuradio/blocks/file_sink.h>
|
||||||
#include <gnuradio/blocks/float_to_complex.h>
|
#include <gnuradio/blocks/float_to_complex.h>
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
|
#include <memory>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
@ -41,6 +41,7 @@
|
|||||||
#include <gnuradio/hier_block2.h>
|
#include <gnuradio/hier_block2.h>
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class ConfigurationInterface;
|
class ConfigurationInterface;
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
#include <gnuradio/hier_block2.h>
|
#include <gnuradio/hier_block2.h>
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -44,6 +44,7 @@
|
|||||||
#include <gnuradio/hier_block2.h>
|
#include <gnuradio/hier_block2.h>
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
#include <gnuradio/hier_block2.h>
|
#include <gnuradio/hier_block2.h>
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
#include <gnuradio/uhd/usrp_source.h>
|
#include <gnuradio/uhd/usrp_source.h>
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
#include <gnuradio/sync_block.h>
|
#include <gnuradio/sync_block.h>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
class rtl_tcp_signal_source_c;
|
class rtl_tcp_signal_source_c;
|
||||||
|
|
||||||
|
@ -70,6 +70,7 @@
|
|||||||
|
|
||||||
#include <gnuradio/sync_interpolator.h>
|
#include <gnuradio/sync_interpolator.h>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
class unpack_2bit_samples;
|
class unpack_2bit_samples;
|
||||||
|
|
||||||
|
@ -41,6 +41,7 @@
|
|||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
#include <cstddef> // for size_t
|
#include <cstddef> // for size_t
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
class Gnss_Sdr_Valve;
|
class Gnss_Sdr_Valve;
|
||||||
|
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
#include "rtl_tcp_dongle_info.h"
|
#include "rtl_tcp_dongle_info.h"
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
using boost::asio::ip::tcp;
|
using boost::asio::ip::tcp;
|
||||||
|
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
#include <gnuradio/io_signature.h>
|
#include <gnuradio/io_signature.h>
|
||||||
#include <pmt/pmt_sugar.h> // for mp
|
#include <pmt/pmt_sugar.h> // for mp
|
||||||
|
#include <algorithm> // for copy
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <cmath> // for abs
|
#include <cmath> // for abs
|
||||||
#include <exception> // for exception
|
#include <exception> // for exception
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
#include <pmt/pmt.h> // for pmt_t
|
#include <pmt/pmt.h> // for pmt_t
|
||||||
#include <cstdint> // for int32_t
|
#include <cstdint> // for int32_t
|
||||||
#include <fstream> // for string, ofstream
|
#include <fstream> // for string, ofstream
|
||||||
|
#include <string>
|
||||||
#include <utility> // for pair
|
#include <utility> // for pair
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -44,6 +44,8 @@
|
|||||||
#include <pmt/pmt.h> // for pmt_t
|
#include <pmt/pmt.h> // for pmt_t
|
||||||
#include <cstdint> // for int32_t
|
#include <cstdint> // for int32_t
|
||||||
#include <fstream> // for string, ofstream
|
#include <fstream> // for string, ofstream
|
||||||
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
#include <utility> // for pair
|
#include <utility> // for pair
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
#include "tracking_FLL_PLL_filter.h"
|
#include "tracking_FLL_PLL_filter.h"
|
||||||
#include <gnuradio/block.h>
|
#include <gnuradio/block.h>
|
||||||
#include <volk_gnsssdr/volk_gnsssdr.h>
|
#include <volk_gnsssdr/volk_gnsssdr.h>
|
||||||
|
#include <deque>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
@ -44,6 +44,7 @@
|
|||||||
#include "tracking_FLL_PLL_filter.h"
|
#include "tracking_FLL_PLL_filter.h"
|
||||||
#include <gnuradio/block.h>
|
#include <gnuradio/block.h>
|
||||||
#include <volk_gnsssdr/volk_gnsssdr.h>
|
#include <volk_gnsssdr/volk_gnsssdr.h>
|
||||||
|
#include <deque>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
|
|
||||||
#include <gnuradio/block.h>
|
#include <gnuradio/block.h>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
|
|
||||||
#include "gnss_block_interface.h"
|
#include "gnss_block_interface.h"
|
||||||
#include "gnss_synchro.h"
|
#include "gnss_synchro.h"
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
template <typename Data>
|
template <typename Data>
|
||||||
class Concurrent_Queue;
|
class Concurrent_Queue;
|
||||||
|
@ -42,6 +42,7 @@
|
|||||||
#include "gnss_block_interface.h"
|
#include "gnss_block_interface.h"
|
||||||
#include "gps_almanac.h"
|
#include "gps_almanac.h"
|
||||||
#include "gps_ephemeris.h"
|
#include "gps_ephemeris.h"
|
||||||
|
#include <map>
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief This class represents an interface to a PVT block.
|
* \brief This class represents an interface to a PVT block.
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include "monitor_pvt.h"
|
#include "monitor_pvt.h"
|
||||||
#include <gnuradio/block.h>
|
#include <gnuradio/block.h>
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
|
#include <map>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
class channel_status_msg_receiver;
|
class channel_status_msg_receiver;
|
||||||
|
@ -25,7 +25,6 @@ extern "C"
|
|||||||
GANSSAlmanacElement_PR_NOTHING, /* No components present */
|
GANSSAlmanacElement_PR_NOTHING, /* No components present */
|
||||||
GANSSAlmanacElement_PR_keplerianAlmanacSet,
|
GANSSAlmanacElement_PR_keplerianAlmanacSet,
|
||||||
/* Extensions may appear below */
|
/* Extensions may appear below */
|
||||||
|
|
||||||
} GANSSAlmanacElement_PR;
|
} GANSSAlmanacElement_PR;
|
||||||
|
|
||||||
/* GANSSAlmanacElement */
|
/* GANSSAlmanacElement */
|
||||||
|
@ -25,7 +25,6 @@ extern "C"
|
|||||||
GANSSClockModel_PR_NOTHING, /* No components present */
|
GANSSClockModel_PR_NOTHING, /* No components present */
|
||||||
GANSSClockModel_PR_standardClockModelList,
|
GANSSClockModel_PR_standardClockModelList,
|
||||||
/* Extensions may appear below */
|
/* Extensions may appear below */
|
||||||
|
|
||||||
} GANSSClockModel_PR;
|
} GANSSClockModel_PR;
|
||||||
|
|
||||||
/* GANSSClockModel */
|
/* GANSSClockModel */
|
||||||
|
@ -25,7 +25,6 @@ extern "C"
|
|||||||
GANSSOrbitModel_PR_NOTHING, /* No components present */
|
GANSSOrbitModel_PR_NOTHING, /* No components present */
|
||||||
GANSSOrbitModel_PR_keplerianSet,
|
GANSSOrbitModel_PR_keplerianSet,
|
||||||
/* Extensions may appear below */
|
/* Extensions may appear below */
|
||||||
|
|
||||||
} GANSSOrbitModel_PR;
|
} GANSSOrbitModel_PR;
|
||||||
|
|
||||||
/* GANSSOrbitModel */
|
/* GANSSOrbitModel */
|
||||||
|
@ -33,7 +33,6 @@ extern "C"
|
|||||||
RRLP_Component_PR_assistanceDataAck,
|
RRLP_Component_PR_assistanceDataAck,
|
||||||
RRLP_Component_PR_protocolError,
|
RRLP_Component_PR_protocolError,
|
||||||
/* Extensions may appear below */
|
/* Extensions may appear below */
|
||||||
|
|
||||||
} RRLP_Component_PR;
|
} RRLP_Component_PR;
|
||||||
|
|
||||||
/* RRLP-Component */
|
/* RRLP-Component */
|
||||||
|
@ -28,7 +28,6 @@ extern "C"
|
|||||||
SatStatus_PR_oldSatelliteAndModel,
|
SatStatus_PR_oldSatelliteAndModel,
|
||||||
SatStatus_PR_newNaviModelUC,
|
SatStatus_PR_newNaviModelUC,
|
||||||
/* Extensions may appear below */
|
/* Extensions may appear below */
|
||||||
|
|
||||||
} SatStatus_PR;
|
} SatStatus_PR;
|
||||||
|
|
||||||
/* SatStatus */
|
/* SatStatus */
|
||||||
|
@ -29,7 +29,6 @@ extern "C"
|
|||||||
CellInfo_PR_wcdmaCell,
|
CellInfo_PR_wcdmaCell,
|
||||||
CellInfo_PR_cdmaCell,
|
CellInfo_PR_cdmaCell,
|
||||||
/* Extensions may appear below */
|
/* Extensions may appear below */
|
||||||
|
|
||||||
} CellInfo_PR;
|
} CellInfo_PR;
|
||||||
|
|
||||||
/* CellInfo */
|
/* CellInfo */
|
||||||
|
@ -28,7 +28,6 @@ extern "C"
|
|||||||
fmodeSpecificInfo_PR_fdd,
|
fmodeSpecificInfo_PR_fdd,
|
||||||
fmodeSpecificInfo_PR_tdd,
|
fmodeSpecificInfo_PR_tdd,
|
||||||
/* Extensions may appear below */
|
/* Extensions may appear below */
|
||||||
|
|
||||||
} fmodeSpecificInfo_PR;
|
} fmodeSpecificInfo_PR;
|
||||||
|
|
||||||
/* FrequencyInfo */
|
/* FrequencyInfo */
|
||||||
|
@ -50,7 +50,7 @@ INTEGER_encode_der(asn_TYPE_descriptor_t *td, void *sptr,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Canonicalize integer in the buffer.
|
* Canonicalize integer in the buffer.
|
||||||
* (Remove too long sign extension, remove some first 0x00 bytes)
|
* (Remove too int64_t sign extension, remove some first 0x00 bytes)
|
||||||
*/
|
*/
|
||||||
if(st->buf) {
|
if(st->buf) {
|
||||||
uint8_t *buf = st->buf;
|
uint8_t *buf = st->buf;
|
||||||
@ -106,7 +106,7 @@ INTEGER__dump(asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_by
|
|||||||
char scratch[32]; /* Enough for 64-bit integer */
|
char scratch[32]; /* Enough for 64-bit integer */
|
||||||
uint8_t *buf = st->buf;
|
uint8_t *buf = st->buf;
|
||||||
uint8_t *buf_end = st->buf + st->size;
|
uint8_t *buf_end = st->buf + st->size;
|
||||||
signed long accum;
|
int64_t accum;
|
||||||
ssize_t wrote = 0;
|
ssize_t wrote = 0;
|
||||||
char *p;
|
char *p;
|
||||||
int ret;
|
int ret;
|
||||||
@ -133,9 +133,9 @@ INTEGER__dump(asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_by
|
|||||||
char *scr;
|
char *scr;
|
||||||
|
|
||||||
if(buf == buf_end) {
|
if(buf == buf_end) {
|
||||||
accum = 0;
|
accum = 0LL;
|
||||||
} else {
|
} else {
|
||||||
accum = (*buf & 0x80) ? -1 : 0;
|
accum = (*buf & 0x80) ? -1LL : 0LL;
|
||||||
for(; buf < buf_end; buf++)
|
for(; buf < buf_end; buf++)
|
||||||
accum = (accum * 256) | *buf;
|
accum = (accum * 256) | *buf;
|
||||||
}
|
}
|
||||||
@ -146,7 +146,7 @@ INTEGER__dump(asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_by
|
|||||||
scr = (char *)alloca(scrsize);
|
scr = (char *)alloca(scrsize);
|
||||||
if(plainOrXER == 0)
|
if(plainOrXER == 0)
|
||||||
ret = snprintf(scr, scrsize,
|
ret = snprintf(scr, scrsize,
|
||||||
"%ld (%s)", accum, el->enum_name);
|
"%lld (%s)", accum, el->enum_name);
|
||||||
else
|
else
|
||||||
ret = snprintf(scr, scrsize,
|
ret = snprintf(scr, scrsize,
|
||||||
"<%s/>", el->enum_name);
|
"<%s/>", el->enum_name);
|
||||||
@ -160,7 +160,7 @@ INTEGER__dump(asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_by
|
|||||||
scr = scratch;
|
scr = scratch;
|
||||||
ret = snprintf(scr, scrsize,
|
ret = snprintf(scr, scrsize,
|
||||||
(specs && specs->field_unsigned)
|
(specs && specs->field_unsigned)
|
||||||
?"%lu":"%ld", accum);
|
?"%llu":"%lld", accum);
|
||||||
}
|
}
|
||||||
assert(ret > 0 && (size_t)ret < scrsize);
|
assert(ret > 0 && (size_t)ret < scrsize);
|
||||||
return (cb(scr, ret, app_key) < 0) ? -1 : ret;
|
return (cb(scr, ret, app_key) < 0) ? -1 : ret;
|
||||||
@ -175,7 +175,7 @@ INTEGER__dump(asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_by
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Output in the long xx:yy:zz... format */
|
/* Output in the int64_t xx:yy:zz... format */
|
||||||
/* TODO: replace with generic algorithm (Knuth TAOCP Vol 2, 4.3.1) */
|
/* TODO: replace with generic algorithm (Knuth TAOCP Vol 2, 4.3.1) */
|
||||||
for(p = scratch; buf < buf_end; buf++) {
|
for(p = scratch; buf < buf_end; buf++) {
|
||||||
static const char *h2c = "0123456789ABCDEF";
|
static const char *h2c = "0123456789ABCDEF";
|
||||||
@ -284,9 +284,9 @@ INTEGER_map_enum2value(asn_INTEGER_specifics_t *specs, const char *lstart, const
|
|||||||
|
|
||||||
static int
|
static int
|
||||||
INTEGER__compar_value2enum(const void *kp, const void *am) {
|
INTEGER__compar_value2enum(const void *kp, const void *am) {
|
||||||
long a = *(const long *)kp;
|
int64_t a = *(const int64_t *)kp;
|
||||||
const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am;
|
const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am;
|
||||||
long b = el->nat_value;
|
int64_t b = el->nat_value;
|
||||||
if(a < b) return -1;
|
if(a < b) return -1;
|
||||||
else if(a == b) return 0;
|
else if(a == b) return 0;
|
||||||
else return 1;
|
else return 1;
|
||||||
@ -321,8 +321,8 @@ INTEGER_st_prealloc(INTEGER_t *st, int min_size) {
|
|||||||
static enum xer_pbd_rval
|
static enum xer_pbd_rval
|
||||||
INTEGER__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, const void *chunk_buf, size_t chunk_size) {
|
INTEGER__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, const void *chunk_buf, size_t chunk_size) {
|
||||||
INTEGER_t *st = (INTEGER_t *)sptr;
|
INTEGER_t *st = (INTEGER_t *)sptr;
|
||||||
long sign = 1;
|
int64_t sign = 1LL;
|
||||||
long value;
|
int64_t value;
|
||||||
const char *lp;
|
const char *lp;
|
||||||
const char *lstart = (const char *)chunk_buf;
|
const char *lstart = (const char *)chunk_buf;
|
||||||
const char *lstop = lstart + chunk_size;
|
const char *lstop = lstart + chunk_size;
|
||||||
@ -339,7 +339,7 @@ INTEGER__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, const void *chun
|
|||||||
|
|
||||||
if(chunk_size)
|
if(chunk_size)
|
||||||
ASN_DEBUG("INTEGER body %ld 0x%2x..0x%2x",
|
ASN_DEBUG("INTEGER body %ld 0x%2x..0x%2x",
|
||||||
(long)chunk_size, *lstart, lstop[-1]);
|
(int64_t)chunk_size, *lstart, lstop[-1]);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We may have received a tag here. It will be processed inline.
|
* We may have received a tag here. It will be processed inline.
|
||||||
@ -398,7 +398,7 @@ INTEGER__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, const void *chun
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
long new_value = value * 10;
|
int64_t new_value = value * 10;
|
||||||
|
|
||||||
if(new_value / 10 != value)
|
if(new_value / 10 != value)
|
||||||
/* Overflow */
|
/* Overflow */
|
||||||
@ -409,8 +409,8 @@ INTEGER__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, const void *chun
|
|||||||
if(value < 0) {
|
if(value < 0) {
|
||||||
/* Check whether it is a LONG_MIN */
|
/* Check whether it is a LONG_MIN */
|
||||||
if(sign == -1
|
if(sign == -1
|
||||||
&& (unsigned long)value
|
&& (uint64_t)value
|
||||||
== ~((unsigned long)-1 >> 1)) {
|
== ~((uint64_t)-1 >> 1)) {
|
||||||
sign = 1;
|
sign = 1;
|
||||||
} else {
|
} else {
|
||||||
/* Overflow */
|
/* Overflow */
|
||||||
@ -601,9 +601,9 @@ INTEGER_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
|
|||||||
/* #10.5.6 */
|
/* #10.5.6 */
|
||||||
ASN_DEBUG("Integer with range %d bits", ct->range_bits);
|
ASN_DEBUG("Integer with range %d bits", ct->range_bits);
|
||||||
if(ct->range_bits >= 0) {
|
if(ct->range_bits >= 0) {
|
||||||
long value;
|
int64_t value;
|
||||||
if(ct->range_bits == 32) {
|
if(ct->range_bits == 32) {
|
||||||
long lhalf;
|
int64_t lhalf;
|
||||||
value = per_get_few_bits(pd, 16);
|
value = per_get_few_bits(pd, 16);
|
||||||
if(value < 0) _ASN_DECODE_STARVED;
|
if(value < 0) _ASN_DECODE_STARVED;
|
||||||
lhalf = per_get_few_bits(pd, 16);
|
lhalf = per_get_few_bits(pd, 16);
|
||||||
@ -687,11 +687,11 @@ INTEGER_encode_uper(asn_TYPE_descriptor_t *td,
|
|||||||
_ASN_ENCODE_FAILED;
|
_ASN_ENCODE_FAILED;
|
||||||
/* Check proper range */
|
/* Check proper range */
|
||||||
if(ct->flags & APC_SEMI_CONSTRAINED) {
|
if(ct->flags & APC_SEMI_CONSTRAINED) {
|
||||||
if(uval < (unsigned long)ct->lower_bound)
|
if(uval < (uint64_t)ct->lower_bound)
|
||||||
inext = 1;
|
inext = 1;
|
||||||
} else if(ct->range_bits >= 0) {
|
} else if(ct->range_bits >= 0) {
|
||||||
if(uval < (unsigned long)ct->lower_bound
|
if(uval < (uint64_t)ct->lower_bound
|
||||||
|| uval > (unsigned long)ct->upper_bound)
|
|| uval > (uint64_t)ct->upper_bound)
|
||||||
inext = 1;
|
inext = 1;
|
||||||
}
|
}
|
||||||
ASN_DEBUG("Value %lu (%02x/%d) lb %lu ub %lu %s",
|
ASN_DEBUG("Value %lu (%02x/%d) lb %lu ub %lu %s",
|
||||||
@ -733,7 +733,7 @@ INTEGER_encode_uper(asn_TYPE_descriptor_t *td,
|
|||||||
ct->range_bits);
|
ct->range_bits);
|
||||||
if(ct->range_bits == 32) {
|
if(ct->range_bits == 32) {
|
||||||
/* TODO: extend to >32 bits */
|
/* TODO: extend to >32 bits */
|
||||||
long v = value - ct->lower_bound;
|
int64_t v = value - ct->lower_bound;
|
||||||
if(per_put_few_bits(po, v >> 1, 31)
|
if(per_put_few_bits(po, v >> 1, 31)
|
||||||
|| per_put_few_bits(po, v, 1))
|
|| per_put_few_bits(po, v, 1))
|
||||||
_ASN_ENCODE_FAILED;
|
_ASN_ENCODE_FAILED;
|
||||||
@ -768,7 +768,7 @@ asn_INTEGER2long(const INTEGER_t *iptr, int64_t *lptr) {
|
|||||||
uint8_t *b;
|
uint8_t *b;
|
||||||
uint8_t *end;
|
uint8_t *end;
|
||||||
size_t size;
|
size_t size;
|
||||||
long l;
|
int64_t l;
|
||||||
|
|
||||||
/* Sanity checking */
|
/* Sanity checking */
|
||||||
if(!iptr || !iptr->buf || !lptr) {
|
if(!iptr || !iptr->buf || !lptr) {
|
||||||
@ -781,11 +781,11 @@ asn_INTEGER2long(const INTEGER_t *iptr, int64_t *lptr) {
|
|||||||
size = iptr->size;
|
size = iptr->size;
|
||||||
end = b + size; /* Where to stop */
|
end = b + size; /* Where to stop */
|
||||||
|
|
||||||
if(size > sizeof(long)) {
|
if(size > sizeof(int64_t)) {
|
||||||
uint8_t *end1 = end - 1;
|
uint8_t *end1 = end - 1;
|
||||||
/*
|
/*
|
||||||
* Slightly more advanced processing,
|
* Slightly more advanced processing,
|
||||||
* able to >sizeof(long) bytes,
|
* able to >sizeof(int64_t) bytes,
|
||||||
* when the actual value is small
|
* when the actual value is small
|
||||||
* (0x0000000000abcdef would yield a fine 0x00abcdef)
|
* (0x0000000000abcdef would yield a fine 0x00abcdef)
|
||||||
*/
|
*/
|
||||||
@ -799,8 +799,8 @@ asn_INTEGER2long(const INTEGER_t *iptr, int64_t *lptr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
size = end - b;
|
size = end - b;
|
||||||
if(size > sizeof(long)) {
|
if(size > sizeof(int64_t)) {
|
||||||
/* Still cannot fit the long */
|
/* Still cannot fit the int64_t */
|
||||||
errno = ERANGE;
|
errno = ERANGE;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -828,7 +828,7 @@ int
|
|||||||
asn_INTEGER2ulong(const INTEGER_t *iptr, uint64_t *lptr) {
|
asn_INTEGER2ulong(const INTEGER_t *iptr, uint64_t *lptr) {
|
||||||
uint8_t *b;
|
uint8_t *b;
|
||||||
uint8_t *end;
|
uint8_t *end;
|
||||||
unsigned long l;
|
uint64_t l;
|
||||||
size_t size;
|
size_t size;
|
||||||
|
|
||||||
if(!iptr || !iptr->buf || !lptr) {
|
if(!iptr || !iptr->buf || !lptr) {
|
||||||
@ -841,9 +841,9 @@ asn_INTEGER2ulong(const INTEGER_t *iptr, uint64_t *lptr) {
|
|||||||
end = b + size;
|
end = b + size;
|
||||||
|
|
||||||
/* If all extra leading bytes are zeroes, ignore them */
|
/* If all extra leading bytes are zeroes, ignore them */
|
||||||
for(; size > sizeof(unsigned long); b++, size--) {
|
for(; size > sizeof(uint64_t); b++, size--) {
|
||||||
if(*b) {
|
if(*b) {
|
||||||
/* Value won't fit unsigned long */
|
/* Value won't fit uint64_t */
|
||||||
errno = ERANGE;
|
errno = ERANGE;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -872,7 +872,7 @@ asn_ulong2INTEGER(INTEGER_t *st, uint64_t value) {
|
|||||||
|
|
||||||
end = buf + (sizeof(value) + 1);
|
end = buf + (sizeof(value) + 1);
|
||||||
buf[0] = 0;
|
buf[0] = 0;
|
||||||
for(b = buf + 1, shr = (sizeof(long)-1)*8; b < end; shr -= 8, b++)
|
for(b = buf + 1, shr = (sizeof(int64_t)-1)*8; b < end; shr -= 8, b++)
|
||||||
*b = (uint8_t)(value >> shr);
|
*b = (uint8_t)(value >> shr);
|
||||||
|
|
||||||
if(st->buf) FREEMEM(st->buf);
|
if(st->buf) FREEMEM(st->buf);
|
||||||
|
@ -27,7 +27,6 @@ extern "C"
|
|||||||
PosPayLoad_PR_rrcPayload,
|
PosPayLoad_PR_rrcPayload,
|
||||||
PosPayLoad_PR_rrlpPayload,
|
PosPayLoad_PR_rrlpPayload,
|
||||||
/* Extensions may appear below */
|
/* Extensions may appear below */
|
||||||
|
|
||||||
} PosPayLoad_PR;
|
} PosPayLoad_PR;
|
||||||
|
|
||||||
/* PosPayLoad */
|
/* PosPayLoad */
|
||||||
|
@ -26,7 +26,6 @@ extern "C"
|
|||||||
SETAuthKey_PR_shortKey,
|
SETAuthKey_PR_shortKey,
|
||||||
SETAuthKey_PR_longKey,
|
SETAuthKey_PR_longKey,
|
||||||
/* Extensions may appear below */
|
/* Extensions may appear below */
|
||||||
|
|
||||||
} SETAuthKey_PR;
|
} SETAuthKey_PR;
|
||||||
|
|
||||||
/* SETAuthKey */
|
/* SETAuthKey */
|
||||||
|
@ -33,7 +33,6 @@ extern "C"
|
|||||||
SETId_PR_nai,
|
SETId_PR_nai,
|
||||||
SETId_PR_iPAddress,
|
SETId_PR_iPAddress,
|
||||||
/* Extensions may appear below */
|
/* Extensions may appear below */
|
||||||
|
|
||||||
} SETId_PR;
|
} SETId_PR;
|
||||||
|
|
||||||
/* SETId */
|
/* SETId */
|
||||||
|
@ -27,7 +27,6 @@ extern "C"
|
|||||||
SLPAddress_PR_iPAddress,
|
SLPAddress_PR_iPAddress,
|
||||||
SLPAddress_PR_fQDN,
|
SLPAddress_PR_fQDN,
|
||||||
/* Extensions may appear below */
|
/* Extensions may appear below */
|
||||||
|
|
||||||
} SLPAddress_PR;
|
} SLPAddress_PR;
|
||||||
|
|
||||||
/* SLPAddress */
|
/* SLPAddress */
|
||||||
|
@ -38,7 +38,6 @@ extern "C"
|
|||||||
UlpMessage_PR_msDUMMY2,
|
UlpMessage_PR_msDUMMY2,
|
||||||
UlpMessage_PR_msDUMMY3,
|
UlpMessage_PR_msDUMMY3,
|
||||||
/* Extensions may appear below */
|
/* Extensions may appear below */
|
||||||
|
|
||||||
} UlpMessage_PR;
|
} UlpMessage_PR;
|
||||||
|
|
||||||
/* UlpMessage */
|
/* UlpMessage */
|
||||||
|
@ -31,7 +31,6 @@ extern "C"
|
|||||||
Velocity_PR_horveluncert,
|
Velocity_PR_horveluncert,
|
||||||
Velocity_PR_horandveruncert,
|
Velocity_PR_horandveruncert,
|
||||||
/* Extensions may appear below */
|
/* Extensions may appear below */
|
||||||
|
|
||||||
} Velocity_PR;
|
} Velocity_PR;
|
||||||
|
|
||||||
/* Velocity */
|
/* Velocity */
|
||||||
|
@ -191,7 +191,6 @@ typedef struct supl_rrlp_ctx_s
|
|||||||
int cnt_acq;
|
int cnt_acq;
|
||||||
int acq_time;
|
int acq_time;
|
||||||
struct supl_acquis_s acq[MAX_EPHEMERIS];
|
struct supl_acquis_s acq[MAX_EPHEMERIS];
|
||||||
|
|
||||||
} supl_assist_t;
|
} supl_assist_t;
|
||||||
|
|
||||||
typedef struct supl_param_s
|
typedef struct supl_param_s
|
||||||
@ -232,7 +231,6 @@ typedef struct supl_ctx_s
|
|||||||
void *buf;
|
void *buf;
|
||||||
size_t size;
|
size_t size;
|
||||||
} slp_session_id;
|
} slp_session_id;
|
||||||
|
|
||||||
} supl_ctx_t;
|
} supl_ctx_t;
|
||||||
|
|
||||||
int supl_ctx_new(supl_ctx_t *ctx);
|
int supl_ctx_new(supl_ctx_t *ctx);
|
||||||
|
@ -35,9 +35,10 @@
|
|||||||
#include "gnss_synchro.h"
|
#include "gnss_synchro.h"
|
||||||
#include "gnss_synchro.pb.h" // file created by Protocol Buffers at compile time
|
#include "gnss_synchro.pb.h" // file created by Protocol Buffers at compile time
|
||||||
#include <array>
|
#include <array>
|
||||||
|
#include <string>
|
||||||
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief This class implements serialization and deserialization of
|
* \brief This class implements serialization and deserialization of
|
||||||
* Gnss_Synchro objects using Protocol Buffers.
|
* Gnss_Synchro objects using Protocol Buffers.
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
#include "string_converter.h"
|
#include "string_converter.h"
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
|
|
||||||
FileConfiguration::FileConfiguration(std::string filename)
|
FileConfiguration::FileConfiguration(std::string filename)
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
|
|
||||||
#include "MATH_CONSTANTS.h"
|
#include "MATH_CONSTANTS.h"
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <string>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include "MATH_CONSTANTS.h"
|
#include "MATH_CONSTANTS.h"
|
||||||
#include "gnss_frequencies.h"
|
#include "gnss_frequencies.h"
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <string>
|
||||||
#include <utility> // std::pair
|
#include <utility> // std::pair
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include <boost/date_time/posix_time/posix_time.hpp>
|
#include <boost/date_time/posix_time/posix_time.hpp>
|
||||||
#include <boost/date_time/posix_time/time_formatters.hpp>
|
#include <boost/date_time/posix_time/time_formatters.hpp>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
Glonass_Gnav_Ephemeris::Glonass_Gnav_Ephemeris()
|
Glonass_Gnav_Ephemeris::Glonass_Gnav_Ephemeris()
|
||||||
|
@ -654,94 +654,94 @@ std::string Gnss_Satellite::what_block(const std::string& system_, uint32_t PRN_
|
|||||||
switch (PRN_)
|
switch (PRN_)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
block_ = std::string("Compass-G1"); //!<GEO 140.0°E; launched 2010/01/16
|
block_ = std::string("Compass-G1"); // GEO 140.0°E; launched 2010/01/16
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
block_ = std::string("Compass-G6"); //!<GEO 80°E; launched 2012/10/25
|
block_ = std::string("Compass-G6"); // GEO 80°E; launched 2012/10/25
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
block_ = std::string("Compass-G7"); //!<GEO 110.5°E; launched 2016/06/12
|
block_ = std::string("Compass-G7"); // GEO 110.5°E; launched 2016/06/12
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
block_ = std::string("Compass-G4"); //!<GEO 160.0°E; launched 2010/10/31
|
block_ = std::string("Compass-G4"); // GEO 160.0°E; launched 2010/10/31
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
block_ = std::string("Compass-G5"); //!<GEO 58.75°E; launched 2012/02/24
|
block_ = std::string("Compass-G5"); // GEO 58.75°E; launched 2012/02/24
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
block_ = std::string("Compass-IGS01"); //!<55° inclination IGSO 118°E; launched 2010/07/31
|
block_ = std::string("Compass-IGS01"); // 55° inclination IGSO 118°E; launched 2010/07/31
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
block_ = std::string("Compass-IGS02"); //!<55° inclination IGSO 118°E; launched 2010/12/17
|
block_ = std::string("Compass-IGS02"); // 55° inclination IGSO 118°E; launched 2010/12/17
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
block_ = std::string("Compass-IGS03"); //!<55° inclination IGSO 118°E; launched 2011/04/09
|
block_ = std::string("Compass-IGS03"); // 55° inclination IGSO 118°E; launched 2011/04/09
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
block_ = std::string("Compass-IGS04"); //!<55° inclination IGSO 95°E; launched 2011/07/27
|
block_ = std::string("Compass-IGS04"); // 55° inclination IGSO 95°E; launched 2011/07/27
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
block_ = std::string("Compass-IGS05"); //!<55° inclination IGSO 118°E; launched 2011/12/01
|
block_ = std::string("Compass-IGS05"); // 55° inclination IGSO 118°E; launched 2011/12/01
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
block_ = std::string("Compass-M3"); //!<Slot A07; launched 2012/04/29
|
block_ = std::string("Compass-M3"); // Slot A07; launched 2012/04/29
|
||||||
break;
|
break;
|
||||||
case 12:
|
case 12:
|
||||||
block_ = std::string("Compass-M4"); //!<Slot A08; launched 2012/04/29
|
block_ = std::string("Compass-M4"); // Slot A08; launched 2012/04/29
|
||||||
break;
|
break;
|
||||||
case 19:
|
case 19:
|
||||||
block_ = std::string("BEIDOU-3 M1"); //!<Slot B-7; launched 2017/11/05
|
block_ = std::string("BEIDOU-3 M1"); // Slot B-7; launched 2017/11/05
|
||||||
break;
|
break;
|
||||||
case 20:
|
case 20:
|
||||||
block_ = std::string("BEIDOU-3 M2"); //!<Slot B-5; launched 2017/11/05
|
block_ = std::string("BEIDOU-3 M2"); // Slot B-5; launched 2017/11/05
|
||||||
break;
|
break;
|
||||||
case 21:
|
case 21:
|
||||||
block_ = std::string("BEIDOU 3M5"); //!<Slot B-?; launched 2018/02/12
|
block_ = std::string("BEIDOU 3M5"); // Slot B-?; launched 2018/02/12
|
||||||
break;
|
break;
|
||||||
case 22:
|
case 22:
|
||||||
block_ = std::string("BEIDOU 3M6"); //!<Slot B-6; launched 2018/02/12
|
block_ = std::string("BEIDOU 3M6"); // Slot B-6; launched 2018/02/12
|
||||||
break;
|
break;
|
||||||
case 23:
|
case 23:
|
||||||
block_ = std::string("BEIDOU 3M9"); //!<Slot C-7; launched 2018/07/29
|
block_ = std::string("BEIDOU 3M9"); // Slot C-7; launched 2018/07/29
|
||||||
break;
|
break;
|
||||||
case 24:
|
case 24:
|
||||||
block_ = std::string("BEIDOU 3M10"); //!<Slot C-1; launched 2018/07/29
|
block_ = std::string("BEIDOU 3M10"); // Slot C-1; launched 2018/07/29
|
||||||
break;
|
break;
|
||||||
case 25:
|
case 25:
|
||||||
block_ = std::string("BEIDOU 3M12"); //!<Slot C-8; launched 2018/08/24
|
block_ = std::string("BEIDOU 3M12"); // Slot C-8; launched 2018/08/24
|
||||||
break;
|
break;
|
||||||
case 26:
|
case 26:
|
||||||
block_ = std::string("BEIDOU 3M11"); //!<Slot C-2; launched 2018/08/24
|
block_ = std::string("BEIDOU 3M11"); // Slot C-2; launched 2018/08/24
|
||||||
break;
|
break;
|
||||||
case 27:
|
case 27:
|
||||||
block_ = std::string("BEIDOU 3M3"); //!<Slot A-?; launched 2018/01/11
|
block_ = std::string("BEIDOU 3M3"); // Slot A-?; launched 2018/01/11
|
||||||
break;
|
break;
|
||||||
case 28:
|
case 28:
|
||||||
block_ = std::string("BEIDOU 3M4"); //!<Slot A-?; launched 2018/01/11
|
block_ = std::string("BEIDOU 3M4"); // Slot A-?; launched 2018/01/11
|
||||||
break;
|
break;
|
||||||
case 29:
|
case 29:
|
||||||
block_ = std::string("BEIDOU 3M7"); //!<Slot A-?; launched 2018/03/29
|
block_ = std::string("BEIDOU 3M7"); // Slot A-?; launched 2018/03/29
|
||||||
break;
|
break;
|
||||||
case 30:
|
case 30:
|
||||||
block_ = std::string("BEIDOU 3M8"); //!<Slot A-?; launched 2018/03/29
|
block_ = std::string("BEIDOU 3M8"); // Slot A-?; launched 2018/03/29
|
||||||
break;
|
break;
|
||||||
case 32:
|
case 32:
|
||||||
block_ = std::string("BEIDOU 3M13"); //!<Slot B-1?; launched 2018/09/19
|
block_ = std::string("BEIDOU 3M13"); // Slot B-1?; launched 2018/09/19
|
||||||
break;
|
break;
|
||||||
case 33:
|
case 33:
|
||||||
block_ = std::string("BEIDOU 3M14"); //!<Slot B-3; launched 2018/09/19
|
block_ = std::string("BEIDOU 3M14"); // Slot B-3; launched 2018/09/19
|
||||||
break;
|
break;
|
||||||
case 34:
|
case 34:
|
||||||
block_ = std::string("BEIDOU 3M15"); //!<Slot B-3; launched 2018/10/15
|
block_ = std::string("BEIDOU 3M15"); // Slot B-3; launched 2018/10/15
|
||||||
break;
|
break;
|
||||||
case 35:
|
case 35:
|
||||||
block_ = std::string("BEIDOU 3M16"); //!<Slot B-3; launched 2018/10/15
|
block_ = std::string("BEIDOU 3M16"); // Slot B-3; launched 2018/10/15
|
||||||
break;
|
break;
|
||||||
case 36:
|
case 36:
|
||||||
block_ = std::string("BEIDOU 3M17"); //!<Slot B-3; launched 2018/11/18
|
block_ = std::string("BEIDOU 3M17"); // Slot B-3; launched 2018/11/18
|
||||||
break;
|
break;
|
||||||
case 37:
|
case 37:
|
||||||
block_ = std::string("BEIDOU 3M18"); //!<Slot B-3; launched 2018/11/18
|
block_ = std::string("BEIDOU 3M18"); // Slot B-3; launched 2018/11/18
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
block_ = std::string("Unknown(Simulated)");
|
block_ = std::string("Unknown(Simulated)");
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
|
|
||||||
#include <gflags/gflags.h>
|
#include <gflags/gflags.h>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
DEFINE_bool(disable_generator, false, "Disable the signal generator (a external signal file must be available for the test)");
|
DEFINE_bool(disable_generator, false, "Disable the signal generator (a external signal file must be available for the test)");
|
||||||
DEFINE_string(generator_binary, std::string(SW_GENERATOR_BIN), "Path of software-defined signal generator binary");
|
DEFINE_string(generator_binary, std::string(SW_GENERATOR_BIN), "Path of software-defined signal generator binary");
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#define GNSS_SDR_TEST_FLAGS_H_
|
#define GNSS_SDR_TEST_FLAGS_H_
|
||||||
|
|
||||||
#include <gflags/gflags.h>
|
#include <gflags/gflags.h>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
#if defined GNUPLOT_EXECUTABLE
|
#if defined GNUPLOT_EXECUTABLE
|
||||||
DEFINE_string(gnuplot_executable, std::string(GNUPLOT_EXECUTABLE), "Gnuplot binary path");
|
DEFINE_string(gnuplot_executable, std::string(GNUPLOT_EXECUTABLE), "Gnuplot binary path");
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
|
|
||||||
#include <gflags/gflags.h>
|
#include <gflags/gflags.h>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
DEFINE_string(trk_test_implementation, std::string("GPS_L1_CA_DLL_PLL_Tracking"), "Tracking block implementation under test, defaults to GPS_L1_CA_DLL_PLL_Tracking");
|
DEFINE_string(trk_test_implementation, std::string("GPS_L1_CA_DLL_PLL_Tracking"), "Tracking block implementation under test, defaults to GPS_L1_CA_DLL_PLL_Tracking");
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
|
|
||||||
#include <gflags/gflags.h>
|
#include <gflags/gflags.h>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
DEFINE_string(config_file_ptest, std::string(""), "File containing the configuration parameters for the position test.");
|
DEFINE_string(config_file_ptest, std::string(""), "File containing the configuration parameters for the position test.");
|
||||||
DEFINE_bool(plot_position_test, false, "Plots results of with gnuplot");
|
DEFINE_bool(plot_position_test, false, "Plots results of with gnuplot");
|
||||||
|
@ -390,9 +390,10 @@ void* handler_DMA_obs_test(void* arguments)
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
// open input file
|
// open input file
|
||||||
rx_signal_file_id = fopen(file.c_str(), "rb");
|
rx_signal_file_id = fopen(file.c_str(), "rb");
|
||||||
|
}
|
||||||
if (rx_signal_file_id == nullptr)
|
if (rx_signal_file_id == nullptr)
|
||||||
{
|
{
|
||||||
std::cout << "DMA can't open input file" << std::endl;
|
std::cout << "DMA can't open input file" << std::endl;
|
||||||
@ -463,7 +464,6 @@ void* handler_DMA_obs_test(void* arguments)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
close(tx_fd);
|
close(tx_fd);
|
||||||
fclose(rx_signal_file_id);
|
fclose(rx_signal_file_id);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
@ -516,7 +516,6 @@ bool HybridObservablesTestFpga::acquire_signal()
|
|||||||
|
|
||||||
acquisition = std::make_shared<GalileoE1PcpsAmbiguousAcquisitionFpga>(config.get(), "Acquisition", 0, 0);
|
acquisition = std::make_shared<GalileoE1PcpsAmbiguousAcquisitionFpga>(config.get(), "Acquisition", 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (implementation == "Galileo_E5a_DLL_PLL_Tracking_Fpga")
|
else if (implementation == "Galileo_E5a_DLL_PLL_Tracking_Fpga")
|
||||||
{
|
{
|
||||||
tmp_gnss_synchro.System = 'E';
|
tmp_gnss_synchro.System = 'E';
|
||||||
@ -568,7 +567,6 @@ bool HybridObservablesTestFpga::acquire_signal()
|
|||||||
|
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
|
|
||||||
|
|
||||||
// 5. Run the flowgraph
|
// 5. Run the flowgraph
|
||||||
// Get visible GPS satellites (positive acquisitions with Doppler measurements)
|
// Get visible GPS satellites (positive acquisitions with Doppler measurements)
|
||||||
// record startup time
|
// record startup time
|
||||||
@ -615,7 +613,6 @@ bool HybridObservablesTestFpga::acquire_signal()
|
|||||||
int acq_doppler_max = config->property("Acquisition.doppler_max", FLAGS_external_signal_acquisition_doppler_max_hz);
|
int acq_doppler_max = config->property("Acquisition.doppler_max", FLAGS_external_signal_acquisition_doppler_max_hz);
|
||||||
int acq_doppler_step = config->property("Acquisition.doppler_step", FLAGS_external_signal_acquisition_doppler_step_hz);
|
int acq_doppler_step = config->property("Acquisition.doppler_step", FLAGS_external_signal_acquisition_doppler_step_hz);
|
||||||
|
|
||||||
|
|
||||||
for (unsigned int PRN = 1; PRN < MAX_PRN_IDX; PRN++)
|
for (unsigned int PRN = 1; PRN < MAX_PRN_IDX; PRN++)
|
||||||
{
|
{
|
||||||
tmp_gnss_synchro.PRN = PRN;
|
tmp_gnss_synchro.PRN = PRN;
|
||||||
@ -629,7 +626,6 @@ bool HybridObservablesTestFpga::acquire_signal()
|
|||||||
|
|
||||||
args.file = file;
|
args.file = file;
|
||||||
|
|
||||||
|
|
||||||
send_samples_start_obs_test = 0;
|
send_samples_start_obs_test = 0;
|
||||||
|
|
||||||
if ((implementation == "GPS_L1_CA_DLL_PLL_Tracking_Fpga") or (implementation == "Galileo_E1_DLL_PLL_VEML_Tracking_Fpga"))
|
if ((implementation == "GPS_L1_CA_DLL_PLL_Tracking_Fpga") or (implementation == "Galileo_E1_DLL_PLL_VEML_Tracking_Fpga"))
|
||||||
@ -659,7 +655,6 @@ bool HybridObservablesTestFpga::acquire_signal()
|
|||||||
args.skip_used_samples = 0;
|
args.skip_used_samples = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// create DMA child process
|
// create DMA child process
|
||||||
if (pthread_create(&thread_DMA, nullptr, handler_DMA_obs_test, (void*)&args) < 0)
|
if (pthread_create(&thread_DMA, nullptr, handler_DMA_obs_test, (void*)&args) < 0)
|
||||||
{
|
{
|
||||||
@ -709,7 +704,6 @@ bool HybridObservablesTestFpga::acquire_signal()
|
|||||||
tmp_gnss_synchro.Acq_samplestamp_samples = 0; // do not take into account the filter internal state initialisation
|
tmp_gnss_synchro.Acq_samplestamp_samples = 0; // do not take into account the filter internal state initialisation
|
||||||
tmp_gnss_synchro.Acq_samplestamp_samples = tmp_gnss_synchro.Acq_samplestamp_samples; // delay due to the downsampling filter in the acquisition
|
tmp_gnss_synchro.Acq_samplestamp_samples = tmp_gnss_synchro.Acq_samplestamp_samples; // delay due to the downsampling filter in the acquisition
|
||||||
|
|
||||||
|
|
||||||
gnss_synchro_vec.push_back(tmp_gnss_synchro);
|
gnss_synchro_vec.push_back(tmp_gnss_synchro);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -717,10 +711,7 @@ bool HybridObservablesTestFpga::acquire_signal()
|
|||||||
std::cout << " . ";
|
std::cout << " . ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
top_block->stop();
|
top_block->stop();
|
||||||
|
|
||||||
|
|
||||||
std::cout.flush();
|
std::cout.flush();
|
||||||
}
|
}
|
||||||
std::cout << "]" << std::endl;
|
std::cout << "]" << std::endl;
|
||||||
@ -749,9 +740,6 @@ bool HybridObservablesTestFpga::acquire_signal()
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -857,6 +845,7 @@ void HybridObservablesTestFpga::configure_receiver(
|
|||||||
std::cout << "*****************************************\n";
|
std::cout << "*****************************************\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void HybridObservablesTestFpga::check_results_carrier_phase(
|
void HybridObservablesTestFpga::check_results_carrier_phase(
|
||||||
arma::mat& true_ch0,
|
arma::mat& true_ch0,
|
||||||
arma::vec& true_tow_s,
|
arma::vec& true_tow_s,
|
||||||
@ -864,7 +853,6 @@ void HybridObservablesTestFpga::check_results_carrier_phase(
|
|||||||
const std::string& data_title)
|
const std::string& data_title)
|
||||||
{
|
{
|
||||||
//1. True value interpolation to match the measurement times
|
//1. True value interpolation to match the measurement times
|
||||||
|
|
||||||
double t0 = measured_ch0(0, 0);
|
double t0 = measured_ch0(0, 0);
|
||||||
int size1 = measured_ch0.col(0).n_rows;
|
int size1 = measured_ch0.col(0).n_rows;
|
||||||
double t1 = measured_ch0(size1 - 1, 0);
|
double t1 = measured_ch0(size1 - 1, 0);
|
||||||
@ -945,7 +933,6 @@ void HybridObservablesTestFpga::check_results_carrier_phase_double_diff(
|
|||||||
const std::string& data_title)
|
const std::string& data_title)
|
||||||
{
|
{
|
||||||
//1. True value interpolation to match the measurement times
|
//1. True value interpolation to match the measurement times
|
||||||
|
|
||||||
double t0 = std::max(measured_ch0(0, 0), measured_ch1(0, 0));
|
double t0 = std::max(measured_ch0(0, 0), measured_ch1(0, 0));
|
||||||
int size1 = measured_ch0.col(0).n_rows;
|
int size1 = measured_ch0.col(0).n_rows;
|
||||||
int size2 = measured_ch1.col(0).n_rows;
|
int size2 = measured_ch1.col(0).n_rows;
|
||||||
@ -956,7 +943,6 @@ void HybridObservablesTestFpga::check_results_carrier_phase_double_diff(
|
|||||||
arma::vec t_from_start = arma::linspace<arma::vec>(0, t1 - t0, floor((t1 - t0) * 1e3));
|
arma::vec t_from_start = arma::linspace<arma::vec>(0, t1 - t0, floor((t1 - t0) * 1e3));
|
||||||
std::vector<double> time_vector(t_from_start.colptr(0), t_from_start.colptr(0) + t_from_start.n_rows);
|
std::vector<double> time_vector(t_from_start.colptr(0), t_from_start.colptr(0) + t_from_start.n_rows);
|
||||||
|
|
||||||
|
|
||||||
arma::vec true_ch0_carrier_phase_interp;
|
arma::vec true_ch0_carrier_phase_interp;
|
||||||
arma::vec true_ch1_carrier_phase_interp;
|
arma::vec true_ch1_carrier_phase_interp;
|
||||||
arma::interp1(true_tow_ch0_s, true_ch0.col(3), t, true_ch0_carrier_phase_interp);
|
arma::interp1(true_tow_ch0_s, true_ch0.col(3), t, true_ch0_carrier_phase_interp);
|
||||||
@ -1036,7 +1022,6 @@ void HybridObservablesTestFpga::check_results_carrier_doppler_double_diff(
|
|||||||
const std::string& data_title)
|
const std::string& data_title)
|
||||||
{
|
{
|
||||||
//1. True value interpolation to match the measurement times
|
//1. True value interpolation to match the measurement times
|
||||||
|
|
||||||
double t0 = std::max(measured_ch0(0, 0), measured_ch1(0, 0));
|
double t0 = std::max(measured_ch0(0, 0), measured_ch1(0, 0));
|
||||||
int size1 = measured_ch0.col(0).n_rows;
|
int size1 = measured_ch0.col(0).n_rows;
|
||||||
int size2 = measured_ch1.col(0).n_rows;
|
int size2 = measured_ch1.col(0).n_rows;
|
||||||
@ -1047,7 +1032,6 @@ void HybridObservablesTestFpga::check_results_carrier_doppler_double_diff(
|
|||||||
arma::vec t_from_start = arma::linspace<arma::vec>(0, t1 - t0, floor((t1 - t0) * 1e3));
|
arma::vec t_from_start = arma::linspace<arma::vec>(0, t1 - t0, floor((t1 - t0) * 1e3));
|
||||||
std::vector<double> time_vector(t_from_start.colptr(0), t_from_start.colptr(0) + t_from_start.n_rows);
|
std::vector<double> time_vector(t_from_start.colptr(0), t_from_start.colptr(0) + t_from_start.n_rows);
|
||||||
|
|
||||||
|
|
||||||
arma::vec true_ch0_carrier_doppler_interp;
|
arma::vec true_ch0_carrier_doppler_interp;
|
||||||
arma::vec true_ch1_carrier_doppler_interp;
|
arma::vec true_ch1_carrier_doppler_interp;
|
||||||
arma::interp1(true_tow_ch0_s, true_ch0.col(2), t, true_ch0_carrier_doppler_interp);
|
arma::interp1(true_tow_ch0_s, true_ch0.col(2), t, true_ch0_carrier_doppler_interp);
|
||||||
@ -1124,7 +1108,6 @@ void HybridObservablesTestFpga::check_results_carrier_doppler(
|
|||||||
const std::string& data_title)
|
const std::string& data_title)
|
||||||
{
|
{
|
||||||
//1. True value interpolation to match the measurement times
|
//1. True value interpolation to match the measurement times
|
||||||
|
|
||||||
double t0 = measured_ch0(0, 0);
|
double t0 = measured_ch0(0, 0);
|
||||||
int size1 = measured_ch0.col(0).n_rows;
|
int size1 = measured_ch0.col(0).n_rows;
|
||||||
double t1 = measured_ch0(size1 - 1, 0);
|
double t1 = measured_ch0(size1 - 1, 0);
|
||||||
@ -1195,6 +1178,7 @@ void HybridObservablesTestFpga::check_results_carrier_doppler(
|
|||||||
ASSERT_LT(rmse_ch0, 30);
|
ASSERT_LT(rmse_ch0, 30);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool HybridObservablesTestFpga::save_mat_xy(std::vector<double>& x, std::vector<double>& y, std::string filename)
|
bool HybridObservablesTestFpga::save_mat_xy(std::vector<double>& x, std::vector<double>& y, std::string filename)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -1230,6 +1214,7 @@ bool HybridObservablesTestFpga::save_mat_xy(std::vector<double>& x, std::vector<
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void HybridObservablesTestFpga::check_results_code_pseudorange(
|
void HybridObservablesTestFpga::check_results_code_pseudorange(
|
||||||
arma::mat& true_ch0,
|
arma::mat& true_ch0,
|
||||||
arma::mat& true_ch1,
|
arma::mat& true_ch1,
|
||||||
@ -1240,7 +1225,6 @@ void HybridObservablesTestFpga::check_results_code_pseudorange(
|
|||||||
const std::string& data_title)
|
const std::string& data_title)
|
||||||
{
|
{
|
||||||
//1. True value interpolation to match the measurement times
|
//1. True value interpolation to match the measurement times
|
||||||
|
|
||||||
double t0 = std::max(measured_ch0(0, 0), measured_ch1(0, 0));
|
double t0 = std::max(measured_ch0(0, 0), measured_ch1(0, 0));
|
||||||
int size1 = measured_ch0.col(0).n_rows;
|
int size1 = measured_ch0.col(0).n_rows;
|
||||||
int size2 = measured_ch1.col(0).n_rows;
|
int size2 = measured_ch1.col(0).n_rows;
|
||||||
@ -1251,7 +1235,6 @@ void HybridObservablesTestFpga::check_results_code_pseudorange(
|
|||||||
arma::vec t_from_start = arma::linspace<arma::vec>(0, t1 - t0, floor((t1 - t0) * 1e3));
|
arma::vec t_from_start = arma::linspace<arma::vec>(0, t1 - t0, floor((t1 - t0) * 1e3));
|
||||||
std::vector<double> time_vector(t_from_start.colptr(0), t_from_start.colptr(0) + t_from_start.n_rows);
|
std::vector<double> time_vector(t_from_start.colptr(0), t_from_start.colptr(0) + t_from_start.n_rows);
|
||||||
|
|
||||||
|
|
||||||
arma::vec true_ch0_dist_interp;
|
arma::vec true_ch0_dist_interp;
|
||||||
arma::vec true_ch1_dist_interp;
|
arma::vec true_ch1_dist_interp;
|
||||||
arma::interp1(true_tow_ch0_s, true_ch0.col(1), t, true_ch0_dist_interp);
|
arma::interp1(true_tow_ch0_s, true_ch0.col(1), t, true_ch0_dist_interp);
|
||||||
@ -1319,6 +1302,7 @@ void HybridObservablesTestFpga::check_results_code_pseudorange(
|
|||||||
ASSERT_GT(min_error, -10.0);
|
ASSERT_GT(min_error, -10.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool HybridObservablesTestFpga::ReadRinexObs(std::vector<arma::mat>* obs_vec, Gnss_Synchro gnss)
|
bool HybridObservablesTestFpga::ReadRinexObs(std::vector<arma::mat>* obs_vec, Gnss_Synchro gnss)
|
||||||
{
|
{
|
||||||
// Open and read reference RINEX observables file
|
// Open and read reference RINEX observables file
|
||||||
@ -1459,6 +1443,8 @@ bool HybridObservablesTestFpga::ReadRinexObs(std::vector<arma::mat>* obs_vec, Gn
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST_F(HybridObservablesTestFpga, ValidationOfResults)
|
TEST_F(HybridObservablesTestFpga, ValidationOfResults)
|
||||||
{
|
{
|
||||||
// pointer to the DMA thread that sends the samples to the acquisition engine
|
// pointer to the DMA thread that sends the samples to the acquisition engine
|
||||||
@ -1475,7 +1461,6 @@ TEST_F(HybridObservablesTestFpga, ValidationOfResults)
|
|||||||
generate_signal();
|
generate_signal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
std::chrono::time_point<std::chrono::system_clock> start, end;
|
std::chrono::time_point<std::chrono::system_clock> start, end;
|
||||||
std::chrono::duration<double> elapsed_seconds(0);
|
std::chrono::duration<double> elapsed_seconds(0);
|
||||||
|
|
||||||
@ -1556,7 +1541,6 @@ TEST_F(HybridObservablesTestFpga, ValidationOfResults)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// The HW has been reset after the acquisition phase when the acquisition class was destroyed.
|
// The HW has been reset after the acquisition phase when the acquisition class was destroyed.
|
||||||
// No more samples remained in the DMA. Therefore any intermediate state in the LPF of the
|
// No more samples remained in the DMA. Therefore any intermediate state in the LPF of the
|
||||||
// GPS L1 / Galileo E1 filter has been cleared.
|
// GPS L1 / Galileo E1 filter has been cleared.
|
||||||
@ -1567,7 +1551,6 @@ TEST_F(HybridObservablesTestFpga, ValidationOfResults)
|
|||||||
// instantiate the acquisition modules in order to use them to reset the HW.
|
// instantiate the acquisition modules in order to use them to reset the HW.
|
||||||
// (note that the constructor of the acquisition modules resets the HW too)
|
// (note that the constructor of the acquisition modules resets the HW too)
|
||||||
|
|
||||||
|
|
||||||
std::shared_ptr<AcquisitionInterface> acquisition;
|
std::shared_ptr<AcquisitionInterface> acquisition;
|
||||||
|
|
||||||
// reset the HW to clear the sample counters: the acquisition constructor generates a reset
|
// reset the HW to clear the sample counters: the acquisition constructor generates a reset
|
||||||
@ -1597,18 +1580,16 @@ TEST_F(HybridObservablesTestFpga, ValidationOfResults)
|
|||||||
throw(std::exception());
|
throw(std::exception());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
std::vector<std::shared_ptr<TrackingInterface>> tracking_ch_vec;
|
std::vector<std::shared_ptr<TrackingInterface>> tracking_ch_vec;
|
||||||
std::vector<std::shared_ptr<TelemetryDecoderInterface>> tlm_ch_vec;
|
std::vector<std::shared_ptr<TelemetryDecoderInterface>> tlm_ch_vec;
|
||||||
|
|
||||||
std::vector<gr::blocks::null_sink::sptr> null_sink_vec;
|
std::vector<gr::blocks::null_sink::sptr> null_sink_vec;
|
||||||
for (unsigned int n = 0; n < gnss_synchro_vec.size(); n++)
|
for (unsigned int n = 0; n < gnss_synchro_vec.size(); n++)
|
||||||
{
|
{
|
||||||
//set channels ids
|
// set channels ids
|
||||||
gnss_synchro_vec.at(n).Channel_ID = n;
|
gnss_synchro_vec.at(n).Channel_ID = n;
|
||||||
|
|
||||||
//create the tracking channels and create the telemetry decoders
|
// create the tracking channels and create the telemetry decoders
|
||||||
|
|
||||||
std::shared_ptr<GNSSBlockInterface> trk_ = factory->GetBlock(config, "Tracking", config->property("Tracking.implementation", std::string("undefined")), 1, 1);
|
std::shared_ptr<GNSSBlockInterface> trk_ = factory->GetBlock(config, "Tracking", config->property("Tracking.implementation", std::string("undefined")), 1, 1);
|
||||||
tracking_ch_vec.push_back(std::dynamic_pointer_cast<TrackingInterface>(trk_));
|
tracking_ch_vec.push_back(std::dynamic_pointer_cast<TrackingInterface>(trk_));
|
||||||
std::shared_ptr<GNSSBlockInterface> tlm_ = factory->GetBlock(config, "TelemetryDecoder", config->property("TelemetryDecoder.implementation", std::string("undefined")), 1, 1);
|
std::shared_ptr<GNSSBlockInterface> tlm_ = factory->GetBlock(config, "TelemetryDecoder", config->property("TelemetryDecoder.implementation", std::string("undefined")), 1, 1);
|
||||||
@ -1673,7 +1654,6 @@ TEST_F(HybridObservablesTestFpga, ValidationOfResults)
|
|||||||
gnss_sdr_fpga_sample_counter_sptr ch_out_fpga_sample_counter;
|
gnss_sdr_fpga_sample_counter_sptr ch_out_fpga_sample_counter;
|
||||||
ch_out_fpga_sample_counter = gnss_sdr_make_fpga_sample_counter(fs, observable_interval_ms);
|
ch_out_fpga_sample_counter = gnss_sdr_make_fpga_sample_counter(fs, observable_interval_ms);
|
||||||
|
|
||||||
|
|
||||||
for (unsigned int n = 0; n < tracking_ch_vec.size(); n++)
|
for (unsigned int n = 0; n < tracking_ch_vec.size(); n++)
|
||||||
{
|
{
|
||||||
//top_block->connect(gr_interleaved_char_to_complex, 0, tracking_ch_vec.at(n)->get_left_block(), 0);
|
//top_block->connect(gr_interleaved_char_to_complex, 0, tracking_ch_vec.at(n)->get_left_block(), 0);
|
||||||
@ -1687,10 +1667,8 @@ TEST_F(HybridObservablesTestFpga, ValidationOfResults)
|
|||||||
top_block->connect(ch_out_fpga_sample_counter, 0, observables->get_left_block(), tracking_ch_vec.size()); //extra port for the sample counter pulse
|
top_block->connect(ch_out_fpga_sample_counter, 0, observables->get_left_block(), tracking_ch_vec.size()); //extra port for the sample counter pulse
|
||||||
}) << "Failure connecting the blocks.";
|
}) << "Failure connecting the blocks.";
|
||||||
|
|
||||||
|
|
||||||
args.file = file;
|
args.file = file;
|
||||||
args.nsamples_tx = baseband_sampling_freq * FLAGS_duration;
|
args.nsamples_tx = baseband_sampling_freq * FLAGS_duration;
|
||||||
;
|
|
||||||
|
|
||||||
args.skip_used_samples = 0;
|
args.skip_used_samples = 0;
|
||||||
|
|
||||||
@ -1699,7 +1677,6 @@ TEST_F(HybridObservablesTestFpga, ValidationOfResults)
|
|||||||
std::cout << "ERROR cannot create DMA Process" << std::endl;
|
std::cout << "ERROR cannot create DMA Process" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for (auto& n : tracking_ch_vec)
|
for (auto& n : tracking_ch_vec)
|
||||||
{
|
{
|
||||||
n->start_tracking();
|
n->start_tracking();
|
||||||
@ -1709,10 +1686,8 @@ TEST_F(HybridObservablesTestFpga, ValidationOfResults)
|
|||||||
send_samples_start_obs_test = 1;
|
send_samples_start_obs_test = 1;
|
||||||
pthread_mutex_unlock(&mutex_obs_test);
|
pthread_mutex_unlock(&mutex_obs_test);
|
||||||
|
|
||||||
|
|
||||||
top_block->start();
|
top_block->start();
|
||||||
|
|
||||||
|
|
||||||
EXPECT_NO_THROW({
|
EXPECT_NO_THROW({
|
||||||
start = std::chrono::system_clock::now();
|
start = std::chrono::system_clock::now();
|
||||||
//top_block->run(); // Start threads and wait
|
//top_block->run(); // Start threads and wait
|
||||||
@ -1720,30 +1695,25 @@ TEST_F(HybridObservablesTestFpga, ValidationOfResults)
|
|||||||
elapsed_seconds = end - start;
|
elapsed_seconds = end - start;
|
||||||
}) << "Failure running the top_block.";
|
}) << "Failure running the top_block.";
|
||||||
|
|
||||||
|
|
||||||
// wait for the child DMA process to finish
|
// wait for the child DMA process to finish
|
||||||
pthread_join(thread_DMA, nullptr);
|
pthread_join(thread_DMA, nullptr);
|
||||||
|
|
||||||
|
|
||||||
top_block->stop();
|
top_block->stop();
|
||||||
|
|
||||||
|
|
||||||
// reset the HW AGAIN
|
// reset the HW AGAIN
|
||||||
acquisition->stop_acquisition();
|
acquisition->stop_acquisition();
|
||||||
|
|
||||||
|
|
||||||
// pthread_mutex_lock(&mutex_obs_test);
|
// pthread_mutex_lock(&mutex_obs_test);
|
||||||
// send_samples_start_obs_test = 0;
|
// send_samples_start_obs_test = 0;
|
||||||
// pthread_mutex_unlock(&mutex_obs_test);
|
// pthread_mutex_unlock(&mutex_obs_test);
|
||||||
|
|
||||||
|
// check results
|
||||||
//check results
|
|
||||||
// Matrices for storing columnwise true GPS time, Range, Doppler and Carrier phase
|
// Matrices for storing columnwise true GPS time, Range, Doppler and Carrier phase
|
||||||
std::vector<arma::mat> true_obs_vec;
|
std::vector<arma::mat> true_obs_vec;
|
||||||
|
|
||||||
if (!FLAGS_enable_external_signal_file)
|
if (!FLAGS_enable_external_signal_file)
|
||||||
{
|
{
|
||||||
//load the true values
|
// load the true values
|
||||||
True_Observables_Reader true_observables;
|
True_Observables_Reader true_observables;
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
if (true_observables.open_obs_file(std::string("./obs_out.bin")) == false)
|
if (true_observables.open_obs_file(std::string("./obs_out.bin")) == false)
|
||||||
@ -1789,8 +1759,7 @@ TEST_F(HybridObservablesTestFpga, ValidationOfResults)
|
|||||||
<< "Failure reading RINEX file";
|
<< "Failure reading RINEX file";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// read measured values
|
||||||
//read measured values
|
|
||||||
Observables_Dump_Reader estimated_observables(tracking_ch_vec.size());
|
Observables_Dump_Reader estimated_observables(tracking_ch_vec.size());
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
if (estimated_observables.open_obs_file(std::string("./observables.dat")) == false)
|
if (estimated_observables.open_obs_file(std::string("./observables.dat")) == false)
|
||||||
@ -1828,8 +1797,7 @@ TEST_F(HybridObservablesTestFpga, ValidationOfResults)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Cut measurement tail zeros
|
||||||
//Cut measurement tail zeros
|
|
||||||
arma::uvec index;
|
arma::uvec index;
|
||||||
for (auto& n : measured_obs_vec)
|
for (auto& n : measured_obs_vec)
|
||||||
{
|
{
|
||||||
@ -1840,8 +1808,7 @@ TEST_F(HybridObservablesTestFpga, ValidationOfResults)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Cut measurement initial transitory of the measurements
|
// Cut measurement initial transitory of the measurements
|
||||||
|
|
||||||
double initial_transitory_s = FLAGS_skip_obs_transitory_s;
|
double initial_transitory_s = FLAGS_skip_obs_transitory_s;
|
||||||
|
|
||||||
for (unsigned int n = 0; n < measured_obs_vec.size(); n++)
|
for (unsigned int n = 0; n < measured_obs_vec.size(); n++)
|
||||||
@ -1859,12 +1826,11 @@ TEST_F(HybridObservablesTestFpga, ValidationOfResults)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Correct the clock error using true values (it is not possible for a receiver to correct
|
||||||
|
// the receiver clock offset error at the observables level because it is required the
|
||||||
|
// decoding of the ephemeris data and solve the PVT equations)
|
||||||
|
|
||||||
//Correct the clock error using true values (it is not possible for a receiver to correct
|
// Find the reference satellite (the nearest) and compute the receiver time offset at observable level
|
||||||
//the receiver clock offset error at the observables level because it is required the
|
|
||||||
//decoding of the ephemeris data and solve the PVT equations)
|
|
||||||
|
|
||||||
//Find the reference satellite (the nearest) and compute the receiver time offset at observable level
|
|
||||||
double min_pr = std::numeric_limits<double>::max();
|
double min_pr = std::numeric_limits<double>::max();
|
||||||
unsigned int min_pr_ch_id = 0;
|
unsigned int min_pr_ch_id = 0;
|
||||||
for (unsigned int n = 0; n < measured_obs_vec.size(); n++)
|
for (unsigned int n = 0; n < measured_obs_vec.size(); n++)
|
||||||
@ -1969,6 +1935,5 @@ TEST_F(HybridObservablesTestFpga, ValidationOfResults)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
std::cout << "Test completed in " << elapsed_seconds.count() << " [s]" << std::endl;
|
std::cout << "Test completed in " << elapsed_seconds.count() << " [s]" << std::endl;
|
||||||
}
|
}
|
||||||
|
@ -1069,13 +1069,11 @@ TEST_F(TrackingPullInTest, ValidationOfResults)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} //end plot
|
} //end plot
|
||||||
|
|
||||||
} //end acquisition Delay errors loop
|
} //end acquisition Delay errors loop
|
||||||
} //end acquisition Doppler errors loop
|
} //end acquisition Doppler errors loop
|
||||||
pull_in_results_v_v.push_back(pull_in_results_v);
|
pull_in_results_v_v.push_back(pull_in_results_v);
|
||||||
|
|
||||||
|
|
||||||
} //end CN0 LOOP
|
} //end CN0 LOOP
|
||||||
|
|
||||||
//build the mesh grid
|
//build the mesh grid
|
||||||
std::vector<double> doppler_error_mesh;
|
std::vector<double> doppler_error_mesh;
|
||||||
std::vector<double> code_delay_error_mesh;
|
std::vector<double> code_delay_error_mesh;
|
||||||
|
@ -1245,18 +1245,13 @@ TEST_F(TrackingPullInTestFpga, ValidationOfResults)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} //end plot
|
} //end plot
|
||||||
|
|
||||||
} //end acquisition Delay errors loop
|
} //end acquisition Delay errors loop
|
||||||
|
|
||||||
usleep(100000); // give time to the HW to consume all the remaining samples
|
usleep(100000); // give time to the HW to consume all the remaining samples
|
||||||
|
|
||||||
} //end acquisition Doppler errors loop
|
} //end acquisition Doppler errors loop
|
||||||
|
|
||||||
pull_in_results_v_v.push_back(pull_in_results_v);
|
pull_in_results_v_v.push_back(pull_in_results_v);
|
||||||
|
|
||||||
} //end CN0 LOOP
|
} //end CN0 LOOP
|
||||||
//build the mesh grid
|
|
||||||
|
|
||||||
|
//build the mesh grid
|
||||||
std::vector<double> doppler_error_mesh;
|
std::vector<double> doppler_error_mesh;
|
||||||
std::vector<double> code_delay_error_mesh;
|
std::vector<double> code_delay_error_mesh;
|
||||||
for (unsigned int current_acq_doppler_error_idx = 0; current_acq_doppler_error_idx < acq_doppler_error_hz_values.size(); current_acq_doppler_error_idx++)
|
for (unsigned int current_acq_doppler_error_idx = 0; current_acq_doppler_error_idx < acq_doppler_error_hz_values.size(); current_acq_doppler_error_idx++)
|
||||||
|
Loading…
Reference in New Issue
Block a user