mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-11-09 03:20:01 +00:00
Merge branch 'next' of https://github.com/gnss-sdr/gnss-sdr into next
This commit is contained in:
commit
afe2f1df71
@ -316,7 +316,7 @@ int pcps_quicksync_acquisition_cc::general_work(int noutput_items,
|
|||||||
gr_complex* corr_output = static_cast<gr_complex*>(volk_gnsssdr_malloc(d_samples_per_code * sizeof(gr_complex), volk_gnsssdr_get_alignment()));
|
gr_complex* corr_output = static_cast<gr_complex*>(volk_gnsssdr_malloc(d_samples_per_code * sizeof(gr_complex), volk_gnsssdr_get_alignment()));
|
||||||
|
|
||||||
/*Stores a copy of the folded version of the signal.This is used for
|
/*Stores a copy of the folded version of the signal.This is used for
|
||||||
the FFT operations in future steps of excecution*/
|
the FFT operations in future steps of execution*/
|
||||||
// gr_complex in_folded[d_fft_size];
|
// gr_complex in_folded[d_fft_size];
|
||||||
float fft_normalization_factor = static_cast<float>(d_fft_size) * static_cast<float>(d_fft_size);
|
float fft_normalization_factor = static_cast<float>(d_fft_size) * static_cast<float>(d_fft_size);
|
||||||
|
|
||||||
@ -468,7 +468,7 @@ int pcps_quicksync_acquisition_cc::general_work(int noutput_items,
|
|||||||
if (d_dump)
|
if (d_dump)
|
||||||
{
|
{
|
||||||
/*Since QuickSYnc performs a folded correlation in frequency by means
|
/*Since QuickSYnc performs a folded correlation in frequency by means
|
||||||
of the FFT, it is esential to also keep the values obtained from the
|
of the FFT, it is essential to also keep the values obtained from the
|
||||||
possible delay to show how it is maximize*/
|
possible delay to show how it is maximize*/
|
||||||
std::stringstream filename;
|
std::stringstream filename;
|
||||||
std::streamsize n = sizeof(float) * (d_fft_size); // complex file write
|
std::streamsize n = sizeof(float) * (d_fft_size); // complex file write
|
||||||
|
@ -92,7 +92,7 @@ private:
|
|||||||
int d_fd; // driver descriptor
|
int d_fd; // driver descriptor
|
||||||
volatile unsigned *d_map_base; // driver memory map
|
volatile unsigned *d_map_base; // driver memory map
|
||||||
lv_16sc_t *d_all_fft_codes; // memory that contains all the code ffts
|
lv_16sc_t *d_all_fft_codes; // memory that contains all the code ffts
|
||||||
unsigned int d_vector_length; // number of samples incluing padding and number of ms
|
unsigned int d_vector_length; // number of samples including padding and number of ms
|
||||||
unsigned int d_nsamples; // number of samples not including padding
|
unsigned int d_nsamples; // number of samples not including padding
|
||||||
unsigned int d_select_queue; // queue selection
|
unsigned int d_select_queue; // queue selection
|
||||||
std::string d_device_name; // HW device name
|
std::string d_device_name; // HW device name
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*!
|
/*!
|
||||||
* \file notch_filter_lite.h
|
* \file notch_filter_lite.h
|
||||||
* \brief Adapts a ligth version of a multistate notch filter
|
* \brief Adapts a light version of a multistate notch filter
|
||||||
* \author Antonio Ramos, 2017. antonio.ramosdet(at)gmail.com
|
* \author Antonio Ramos, 2017. antonio.ramosdet(at)gmail.com
|
||||||
*
|
*
|
||||||
* Detailed description of the file here if needed.
|
* Detailed description of the file here if needed.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*!
|
/*!
|
||||||
* \file notch_lite_cc.h
|
* \file notch_lite_cc.h
|
||||||
* \brief Implements a notch filter ligth algorithm
|
* \brief Implements a notch filter light algorithm
|
||||||
* \author Antonio Ramos (antonio.ramosdet(at)gmail.com)
|
* \author Antonio Ramos (antonio.ramosdet(at)gmail.com)
|
||||||
*
|
*
|
||||||
* -------------------------------------------------------------------------
|
* -------------------------------------------------------------------------
|
||||||
@ -43,7 +43,7 @@ typedef boost::shared_ptr<NotchLite> notch_lite_sptr;
|
|||||||
notch_lite_sptr make_notch_filter_lite(float p_c_factor, float pfa, int length_, int n_segments_est, int n_segments_reset, int n_segments_coeff);
|
notch_lite_sptr make_notch_filter_lite(float p_c_factor, float pfa, int length_, int n_segments_est, int n_segments_reset, int n_segments_coeff);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief This class implements a real-time software-defined multi state notch filter ligth version
|
* \brief This class implements a real-time software-defined multi state notch filter light version
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class NotchLite : public gr::block
|
class NotchLite : public gr::block
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -663,7 +663,7 @@ int satpos_sbas(gtime_t time, gtime_t teph, int sat, const nav_t *nav,
|
|||||||
*svh = -1;
|
*svh = -1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* satellite postion and clock by broadcast ephemeris */
|
/* satellite position and clock by broadcast ephemeris */
|
||||||
if (!ephpos(time, teph, sat, nav, sbs->lcorr.iode, rs, dts, var, svh)) return 0;
|
if (!ephpos(time, teph, sat, nav, sbs->lcorr.iode, rs, dts, var, svh)) return 0;
|
||||||
|
|
||||||
/* sbas satellite correction (long term and fast) */
|
/* sbas satellite correction (long term and fast) */
|
||||||
@ -734,7 +734,7 @@ int satpos_ssr(gtime_t time, gtime_t teph, int sat, const nav_t *nav,
|
|||||||
*svh = -1;
|
*svh = -1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* satellite postion and clock by broadcast ephemeris */
|
/* satellite position and clock by broadcast ephemeris */
|
||||||
if (!ephpos(time, teph, sat, nav, ssr->iode, rs, dts, var, svh)) return 0;
|
if (!ephpos(time, teph, sat, nav, ssr->iode, rs, dts, var, svh)) return 0;
|
||||||
|
|
||||||
/* satellite clock for gps, galileo and qzss */
|
/* satellite clock for gps, galileo and qzss */
|
||||||
|
@ -768,7 +768,7 @@ int pntpos(const obsd_t *obs, int n, const nav_t *nav,
|
|||||||
opt_.ionoopt = IONOOPT_BRDC;
|
opt_.ionoopt = IONOOPT_BRDC;
|
||||||
opt_.tropopt = TROPOPT_SAAS;
|
opt_.tropopt = TROPOPT_SAAS;
|
||||||
}
|
}
|
||||||
/* satellite positons, velocities and clocks */
|
/* satellite positions, velocities and clocks */
|
||||||
satposs(sol->time, obs, n, nav, opt_.sateph, rs, dts, var, svh);
|
satposs(sol->time, obs, n, nav, opt_.sateph, rs, dts, var, svh);
|
||||||
|
|
||||||
/* estimate receiver position with pseudorange */
|
/* estimate receiver position with pseudorange */
|
||||||
|
@ -425,7 +425,7 @@ int fix_amb_ROUND(rtk_t *rtk, int *sat1, int *sat2, const int *NW, int n)
|
|||||||
sat2[m] = sat2[i];
|
sat2[m] = sat2[i];
|
||||||
NC[m++] = BC;
|
NC[m++] = BC;
|
||||||
}
|
}
|
||||||
/* select fixed ambiguities by dependancy check */
|
/* select fixed ambiguities by dependency check */
|
||||||
m = sel_amb(sat1, sat2, NC, var, m);
|
m = sel_amb(sat1, sat2, NC, var, m);
|
||||||
|
|
||||||
/* fixed solution */
|
/* fixed solution */
|
||||||
|
@ -79,7 +79,7 @@
|
|||||||
|
|
||||||
const double MIN_ARC_GAP = 300.0; /* min arc gap (s) */
|
const double MIN_ARC_GAP = 300.0; /* min arc gap (s) */
|
||||||
const double CONST_AMB = 0.001; /* constraint to fixed ambiguity */
|
const double CONST_AMB = 0.001; /* constraint to fixed ambiguity */
|
||||||
const double THRES_RES = 0.3; /* threashold of residuals test (m) */
|
const double THRES_RES = 0.3; /* threshold of residuals test (m) */
|
||||||
const double LOG_PI = 1.14472988584940017; /* log(pi) */
|
const double LOG_PI = 1.14472988584940017; /* log(pi) */
|
||||||
const double SQRT2 = 1.41421356237309510; /* sqrt(2) */
|
const double SQRT2 = 1.41421356237309510; /* sqrt(2) */
|
||||||
|
|
||||||
|
@ -315,7 +315,7 @@ int input_rtcm3(rtcm_t *rtcm, unsigned char data)
|
|||||||
|
|
||||||
|
|
||||||
/* input rtcm 2 message from file ----------------------------------------------
|
/* input rtcm 2 message from file ----------------------------------------------
|
||||||
* fetch next rtcm 2 message and input a messsage from file
|
* fetch next rtcm 2 message and input a message from file
|
||||||
* args : rtcm_t *rtcm IO rtcm control struct
|
* args : rtcm_t *rtcm IO rtcm control struct
|
||||||
* FILE *fp I file pointer
|
* FILE *fp I file pointer
|
||||||
* return : status (-2: end of file, -1...10: same as above)
|
* return : status (-2: end of file, -1...10: same as above)
|
||||||
@ -337,7 +337,7 @@ int input_rtcm2f(rtcm_t *rtcm, FILE *fp)
|
|||||||
|
|
||||||
|
|
||||||
/* input rtcm 3 message from file ----------------------------------------------
|
/* input rtcm 3 message from file ----------------------------------------------
|
||||||
* fetch next rtcm 3 message and input a messsage from file
|
* fetch next rtcm 3 message and input a message from file
|
||||||
* args : rtcm_t *rtcm IO rtcm control struct
|
* args : rtcm_t *rtcm IO rtcm control struct
|
||||||
* FILE *fp I file pointer
|
* FILE *fp I file pointer
|
||||||
* return : status (-2: end of file, -1...10: same as above)
|
* return : status (-2: end of file, -1...10: same as above)
|
||||||
|
@ -1819,7 +1819,7 @@ unsigned int tickget(void)
|
|||||||
|
|
||||||
/* sleep ms --------------------------------------------------------------------
|
/* sleep ms --------------------------------------------------------------------
|
||||||
* sleep ms
|
* sleep ms
|
||||||
* args : int ms I miliseconds to sleep (<0:no sleep)
|
* args : int ms I milliseconds to sleep (<0:no sleep)
|
||||||
* return : none
|
* return : none
|
||||||
*-----------------------------------------------------------------------------*/
|
*-----------------------------------------------------------------------------*/
|
||||||
void sleepms(int ms)
|
void sleepms(int ms)
|
||||||
@ -1884,7 +1884,7 @@ double dms2deg(const double *dms)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* transform ecef to geodetic postion ------------------------------------------
|
/* transform ecef to geodetic position ------------------------------------------
|
||||||
* transform ecef position to geodetic position
|
* transform ecef position to geodetic position
|
||||||
* args : double *r I ecef position {x,y,z} (m)
|
* args : double *r I ecef position {x,y,z} (m)
|
||||||
* double *pos O geodetic position {lat,lon,h} (rad,m)
|
* double *pos O geodetic position {lat,lon,h} (rad,m)
|
||||||
@ -1926,8 +1926,8 @@ void pos2ecef(const double *pos, double *r)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ecef to local coordinate transfromation matrix ------------------------------
|
/* ecef to local coordinate transformation matrix ------------------------------
|
||||||
* compute ecef to local coordinate transfromation matrix
|
* compute ecef to local coordinate transformation matrix
|
||||||
* args : double *pos I geodetic position {lat,lon} (rad)
|
* args : double *pos I geodetic position {lat,lon} (rad)
|
||||||
* double *E O ecef to local coord transformation matrix (3x3)
|
* double *E O ecef to local coord transformation matrix (3x3)
|
||||||
* return : none
|
* return : none
|
||||||
@ -2223,7 +2223,7 @@ void eci2ecef(gtime_t tutc, const double *erpv, double *U, double *gmst)
|
|||||||
matmul("NN", 3, 3, 3, 1.0, R1, R2, 0.0, R);
|
matmul("NN", 3, 3, 3, 1.0, R1, R2, 0.0, R);
|
||||||
matmul("NN", 3, 3, 3, 1.0, R, R3, 0.0, N); /* N=Rx(-eps)*Rz(-dspi)*Rx(eps) */
|
matmul("NN", 3, 3, 3, 1.0, R, R3, 0.0, N); /* N=Rx(-eps)*Rz(-dspi)*Rx(eps) */
|
||||||
|
|
||||||
/* greenwich aparent sidereal time (rad) */
|
/* greenwich apparent sidereal time (rad) */
|
||||||
gmst_ = utc2gmst(tutc_, erpv[2]);
|
gmst_ = utc2gmst(tutc_, erpv[2]);
|
||||||
gast = gmst_ + dpsi * cos(eps);
|
gast = gmst_ + dpsi * cos(eps);
|
||||||
gast += (0.00264 * sin(f[4]) + 0.000063 * sin(2.0 * f[4])) * AS2R;
|
gast += (0.00264 * sin(f[4]) + 0.000063 * sin(2.0 * f[4])) * AS2R;
|
||||||
|
@ -599,7 +599,7 @@ void udpos(rtk_t *rtk, double tt)
|
|||||||
for (i = 0; i < 3; i++) initx_rtk(rtk, rtk->sol.rr[i], VAR_POS, i);
|
for (i = 0; i < 3; i++) initx_rtk(rtk, rtk->sol.rr[i], VAR_POS, i);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/* check variance of estimated postion */
|
/* check variance of estimated position */
|
||||||
for (i = 0; i < 3; i++)
|
for (i = 0; i < 3; i++)
|
||||||
{
|
{
|
||||||
var += rtk->P[i + i * rtk->nx];
|
var += rtk->P[i + i * rtk->nx];
|
||||||
|
@ -150,7 +150,7 @@ void covtosol(const double *P, sol_t *sol)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* decode nmea gprmc: recommended minumum data for gps -----------------------*/
|
/* decode nmea gprmc: recommended minimum data for gps -----------------------*/
|
||||||
int decode_nmearmc(char **val, int n, sol_t *sol)
|
int decode_nmearmc(char **val, int n, sol_t *sol)
|
||||||
{
|
{
|
||||||
double tod = 0.0, lat = 0.0, lon = 0.0, vel = 0.0, dir = 0.0, date = 0.0, ang = 0.0, ep[6];
|
double tod = 0.0, lat = 0.0, lon = 0.0, vel = 0.0, dir = 0.0, date = 0.0, ang = 0.0, ep[6];
|
||||||
@ -219,7 +219,7 @@ int decode_nmearmc(char **val, int n, sol_t *sol)
|
|||||||
sol->stat = mode == 'D' ? SOLQ_DGPS : SOLQ_SINGLE;
|
sol->stat = mode == 'D' ? SOLQ_DGPS : SOLQ_SINGLE;
|
||||||
sol->ns = 0;
|
sol->ns = 0;
|
||||||
|
|
||||||
sol->type = 0; /* postion type = xyz */
|
sol->type = 0; /* position type = xyz */
|
||||||
|
|
||||||
trace(5, "decode_nmearmc: %s rr=%.3f %.3f %.3f stat=%d ns=%d vel=%.2f dir=%.0f ang=%.0f mew=%c mode=%c\n",
|
trace(5, "decode_nmearmc: %s rr=%.3f %.3f %.3f stat=%d ns=%d vel=%.2f dir=%.0f ang=%.0f mew=%c mode=%c\n",
|
||||||
time_str(sol->time, 0), sol->rr[0], sol->rr[1], sol->rr[2], sol->stat, sol->ns,
|
time_str(sol->time, 0), sol->rr[0], sol->rr[1], sol->rr[2], sol->stat, sol->ns,
|
||||||
@ -310,7 +310,7 @@ int decode_nmeagga(char **val, int n, sol_t *sol)
|
|||||||
sol->stat = 0 <= solq && solq <= 8 ? solq_nmea[solq] : SOLQ_NONE;
|
sol->stat = 0 <= solq && solq <= 8 ? solq_nmea[solq] : SOLQ_NONE;
|
||||||
sol->ns = nrcv;
|
sol->ns = nrcv;
|
||||||
|
|
||||||
sol->type = 0; /* postion type = xyz */
|
sol->type = 0; /* position type = xyz */
|
||||||
|
|
||||||
trace(5, "decode_nmeagga: %s rr=%.3f %.3f %.3f stat=%d ns=%d hdop=%.1f ua=%c um=%c\n",
|
trace(5, "decode_nmeagga: %s rr=%.3f %.3f %.3f stat=%d ns=%d hdop=%.1f ua=%c um=%c\n",
|
||||||
time_str(sol->time, 0), sol->rr[0], sol->rr[1], sol->rr[2], sol->stat, sol->ns,
|
time_str(sol->time, 0), sol->rr[0], sol->rr[1], sol->rr[2], sol->stat, sol->ns,
|
||||||
@ -453,7 +453,7 @@ int decode_solxyz(char *buff, const solopt_t *opt, sol_t *sol)
|
|||||||
if (i < n) sol->age = (float)val[i++];
|
if (i < n) sol->age = (float)val[i++];
|
||||||
if (i < n) sol->ratio = (float)val[i];
|
if (i < n) sol->ratio = (float)val[i];
|
||||||
|
|
||||||
sol->type = 0; /* postion type = xyz */
|
sol->type = 0; /* position type = xyz */
|
||||||
|
|
||||||
if (MAXSOLQ < sol->stat) sol->stat = SOLQ_NONE;
|
if (MAXSOLQ < sol->stat) sol->stat = SOLQ_NONE;
|
||||||
return 1;
|
return 1;
|
||||||
@ -512,7 +512,7 @@ int decode_solllh(char *buff, const solopt_t *opt, sol_t *sol)
|
|||||||
if (i < n) sol->age = (float)val[i++];
|
if (i < n) sol->age = (float)val[i++];
|
||||||
if (i < n) sol->ratio = (float)val[i];
|
if (i < n) sol->ratio = (float)val[i];
|
||||||
|
|
||||||
sol->type = 0; /* postion type = xyz */
|
sol->type = 0; /* position type = xyz */
|
||||||
|
|
||||||
if (MAXSOLQ < sol->stat) sol->stat = SOLQ_NONE;
|
if (MAXSOLQ < sol->stat) sol->stat = SOLQ_NONE;
|
||||||
return 1;
|
return 1;
|
||||||
@ -558,7 +558,7 @@ int decode_solenu(char *buff, const solopt_t *opt, sol_t *sol)
|
|||||||
if (i < n) sol->age = (float)val[i++];
|
if (i < n) sol->age = (float)val[i++];
|
||||||
if (i < n) sol->ratio = (float)val[i];
|
if (i < n) sol->ratio = (float)val[i];
|
||||||
|
|
||||||
sol->type = 1; /* postion type = enu */
|
sol->type = 1; /* position type = enu */
|
||||||
|
|
||||||
if (MAXSOLQ < sol->stat) sol->stat = SOLQ_NONE;
|
if (MAXSOLQ < sol->stat) sol->stat = SOLQ_NONE;
|
||||||
return 1;
|
return 1;
|
||||||
@ -1798,7 +1798,7 @@ int outsols(unsigned char *buff, const sol_t *sol, const double *rb,
|
|||||||
|
|
||||||
|
|
||||||
/* output solution extended ----------------------------------------------------
|
/* output solution extended ----------------------------------------------------
|
||||||
* output solution exteneded infomation
|
* output solution exteneded information
|
||||||
* args : unsigned char *buff IO output buffer
|
* args : unsigned char *buff IO output buffer
|
||||||
* sol_t *sol I solution
|
* sol_t *sol I solution
|
||||||
* ssat_t *ssat I satellite status
|
* ssat_t *ssat I satellite status
|
||||||
@ -1892,7 +1892,7 @@ void outsol(FILE *fp, const sol_t *sol, const double *rb,
|
|||||||
|
|
||||||
|
|
||||||
/* output solution extended ----------------------------------------------------
|
/* output solution extended ----------------------------------------------------
|
||||||
* output solution exteneded infomation to file
|
* output solution exteneded information to file
|
||||||
* args : FILE *fp I output file pointer
|
* args : FILE *fp I output file pointer
|
||||||
* sol_t *sol I solution
|
* sol_t *sol I solution
|
||||||
* ssat_t *ssat I satellite status
|
* ssat_t *ssat I satellite status
|
||||||
|
@ -1916,7 +1916,7 @@ void strunlock(stream_t *stream) { rtk_unlock(&stream->lock); }
|
|||||||
/* read stream -----------------------------------------------------------------
|
/* read stream -----------------------------------------------------------------
|
||||||
* read data from stream (unblocked)
|
* read data from stream (unblocked)
|
||||||
* args : stream_t *stream I stream
|
* args : stream_t *stream I stream
|
||||||
* unsinged char *buff O data buffer
|
* unsigned char *buff O data buffer
|
||||||
* int n I maximum data length
|
* int n I maximum data length
|
||||||
* return : read data length
|
* return : read data length
|
||||||
* notes : if no data, return immediately with no data
|
* notes : if no data, return immediately with no data
|
||||||
@ -1978,7 +1978,7 @@ int strread(stream_t *stream, unsigned char *buff, int n)
|
|||||||
/* write stream ----------------------------------------------------------------
|
/* write stream ----------------------------------------------------------------
|
||||||
* write data to stream (unblocked)
|
* write data to stream (unblocked)
|
||||||
* args : stream_t *stream I stream
|
* args : stream_t *stream I stream
|
||||||
* unsinged char *buff I data buffer
|
* unsigned char *buff I data buffer
|
||||||
* int n I data length
|
* int n I data length
|
||||||
* return : status (0:error, 1:ok)
|
* return : status (0:error, 1:ok)
|
||||||
* notes : write data to buffer and return immediately
|
* notes : write data to buffer and return immediately
|
||||||
|
@ -8,7 +8,7 @@ and contact information about the original VOLK library.
|
|||||||
The boilerplate of this code was initially generated with
|
The boilerplate of this code was initially generated with
|
||||||
```volk_modtool```, an application provided by VOLK that creates the
|
```volk_modtool```, an application provided by VOLK that creates the
|
||||||
skeleton than can then be filled with custom kernels. Some modifications
|
skeleton than can then be filled with custom kernels. Some modifications
|
||||||
were added to accomodate the specificities of Global Navigation
|
were added to accommodate the specificities of Global Navigation
|
||||||
Satellite Systems (GNSS) signal processing. Those changes are clearly
|
Satellite Systems (GNSS) signal processing. Those changes are clearly
|
||||||
indicated in the source code, and do not break compatibility.
|
indicated in the source code, and do not break compatibility.
|
||||||
|
|
||||||
|
@ -22,24 +22,40 @@ if(DEFINED __INCLUDED_VOLK_ADD_TEST)
|
|||||||
endif()
|
endif()
|
||||||
set(__INCLUDED_VOLK_ADD_TEST TRUE)
|
set(__INCLUDED_VOLK_ADD_TEST TRUE)
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# Generate a test executable which can be used in ADD_TEST to call
|
||||||
|
# various subtests.
|
||||||
|
#
|
||||||
|
# SOURCES - sources for the test
|
||||||
|
# TARGET_DEPS - build target dependencies (e.g., libraries)
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
function(VOLK_GEN_TEST executable_name)
|
||||||
|
include(CMakeParseArgumentsCopy)
|
||||||
|
CMAKE_PARSE_ARGUMENTS(VOLK_TEST "" "" "SOURCES;TARGET_DEPS;EXTRA_LIB_DIRS;ENVIRONS;ARGS" ${ARGN})
|
||||||
|
add_executable(${executable_name} ${VOLK_TEST_SOURCES})
|
||||||
|
target_link_libraries(${executable_name} ${VOLK_TEST_TARGET_DEPS})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
# Add a unit test and setup the environment for it.
|
# Add a unit test and setup the environment for it.
|
||||||
# Encloses ADD_TEST, with additional functionality to create a shell
|
# Encloses ADD_TEST, with additional functionality to create a shell
|
||||||
# script that sets the environment to gain access to in-build binaries
|
# script that sets the environment to gain access to in-build binaries
|
||||||
# properly. The following variables are used to pass in settings:
|
# properly. The following variables are used to pass in settings:
|
||||||
|
# A test executable has to be generated with VOLK_GEN_TEST beforehand.
|
||||||
|
# The executable name has to be passed as argument.
|
||||||
#
|
#
|
||||||
# NAME - the test name
|
# NAME - the test name
|
||||||
# SOURCES - sources for the test
|
|
||||||
# TARGET_DEPS - build target dependencies (e.g., libraries)
|
# TARGET_DEPS - build target dependencies (e.g., libraries)
|
||||||
# EXTRA_LIB_DIRS - other directories for the library path
|
# EXTRA_LIB_DIRS - other directories for the library path
|
||||||
# ENVIRONS - other environment key/value pairs
|
# ENVIRONS - other environment key/value pairs
|
||||||
# ARGS - arguments for the test
|
# ARGS - arguments for the test
|
||||||
########################################################################
|
########################################################################
|
||||||
function(VOLK_ADD_TEST test_name)
|
function(VOLK_ADD_TEST test_name executable_name)
|
||||||
|
|
||||||
#parse the arguments for component names
|
#parse the arguments for component names
|
||||||
include(CMakeParseArgumentsCopy)
|
include(CMakeParseArgumentsCopy)
|
||||||
CMAKE_PARSE_ARGUMENTS(VOLK_TEST "" "" "SOURCES;TARGET_DEPS;EXTRA_LIB_DIRS;ENVIRONS;ARGS" ${ARGN})
|
CMAKE_PARSE_ARGUMENTS(VOLK_TEST "" "" "TARGET_DEPS;EXTRA_LIB_DIRS;ENVIRONS;ARGS" ${ARGN})
|
||||||
|
|
||||||
#set the initial environs to use
|
#set the initial environs to use
|
||||||
set(environs ${VOLK_TEST_ENVIRONS})
|
set(environs ${VOLK_TEST_ENVIRONS})
|
||||||
@ -65,7 +81,7 @@ function(VOLK_ADD_TEST test_name)
|
|||||||
#"add_test" command, via the $<FOO:BAR> operator; make sure the
|
#"add_test" command, via the $<FOO:BAR> operator; make sure the
|
||||||
#test's directory is first, since it ($1) is prepended to PATH.
|
#test's directory is first, since it ($1) is prepended to PATH.
|
||||||
unset(TARGET_DIR_LIST)
|
unset(TARGET_DIR_LIST)
|
||||||
foreach(target ${test_name} ${VOLK_TEST_TARGET_DEPS})
|
foreach(target ${executable_name} ${VOLK_TEST_TARGET_DEPS})
|
||||||
list(APPEND TARGET_DIR_LIST "\$<TARGET_FILE_DIR:${target}>")
|
list(APPEND TARGET_DIR_LIST "\$<TARGET_FILE_DIR:${target}>")
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
@ -134,18 +150,17 @@ function(VOLK_ADD_TEST test_name)
|
|||||||
file(APPEND ${sh_file} "export ${environ}\n")
|
file(APPEND ${sh_file} "export ${environ}\n")
|
||||||
endforeach(environ)
|
endforeach(environ)
|
||||||
|
|
||||||
|
set(VOLK_TEST_ARGS "${test_name}")
|
||||||
|
|
||||||
#redo the test args to have a space between each
|
#redo the test args to have a space between each
|
||||||
string(REPLACE ";" " " VOLK_TEST_ARGS "${VOLK_TEST_ARGS}")
|
string(REPLACE ";" " " VOLK_TEST_ARGS "${VOLK_TEST_ARGS}")
|
||||||
|
|
||||||
#finally: append the test name to execute
|
#finally: append the test name to execute
|
||||||
file(APPEND ${sh_file} ${test_name} " " ${VOLK_TEST_ARGS} "\n")
|
file(APPEND ${sh_file} "${CMAKE_CROSSCOMPILING_EMULATOR} ${executable_name} ${VOLK_TEST_ARGS}\n")
|
||||||
|
|
||||||
#make the shell file executable
|
#make the shell file executable
|
||||||
execute_process(COMMAND chmod +x ${sh_file})
|
execute_process(COMMAND chmod +x ${sh_file})
|
||||||
|
|
||||||
add_executable(${test_name} ${VOLK_TEST_SOURCES})
|
|
||||||
target_link_libraries(${test_name} ${VOLK_TEST_TARGET_DEPS})
|
|
||||||
|
|
||||||
#add the shell file as the test to execute;
|
#add the shell file as the test to execute;
|
||||||
#use the form that allows for $<FOO:BAR> substitutions,
|
#use the form that allows for $<FOO:BAR> substitutions,
|
||||||
#then combine the script arguments inside the script.
|
#then combine the script arguments inside the script.
|
||||||
@ -196,10 +211,8 @@ function(VOLK_ADD_TEST test_name)
|
|||||||
file(APPEND ${bat_file} ${test_name} " " ${VOLK_TEST_ARGS} "\n")
|
file(APPEND ${bat_file} ${test_name} " " ${VOLK_TEST_ARGS} "\n")
|
||||||
file(APPEND ${bat_file} "\n")
|
file(APPEND ${bat_file} "\n")
|
||||||
|
|
||||||
add_executable(${test_name} ${VOLK_TEST_SOURCES})
|
|
||||||
target_link_libraries(${test_name} ${VOLK_TEST_TARGET_DEPS})
|
|
||||||
|
|
||||||
add_test(${test_name} ${bat_file})
|
add_test(${test_name} ${bat_file})
|
||||||
endif(WIN32)
|
endif(WIN32)
|
||||||
|
|
||||||
endfunction(VOLK_ADD_TEST)
|
endfunction(VOLK_ADD_TEST)
|
||||||
|
|
||||||
|
@ -187,7 +187,7 @@ static inline void volk_gnsssdr_16ic_x2_dot_prod_16ic_u_sse2(lv_16sc_t* out, con
|
|||||||
for (number = 0; number < sse_iters; number++)
|
for (number = 0; number < sse_iters; number++)
|
||||||
{
|
{
|
||||||
//std::complex<T> memory structure: real part -> reinterpret_cast<cv T*>(a)[2*i]
|
//std::complex<T> memory structure: real part -> reinterpret_cast<cv T*>(a)[2*i]
|
||||||
//imaginery part -> reinterpret_cast<cv T*>(a)[2*i + 1]
|
//imaginary part -> reinterpret_cast<cv T*>(a)[2*i + 1]
|
||||||
// a[127:0]=[a3.i,a3.r,a2.i,a2.r,a1.i,a1.r,a0.i,a0.r]
|
// a[127:0]=[a3.i,a3.r,a2.i,a2.r,a1.i,a1.r,a0.i,a0.r]
|
||||||
a = _mm_loadu_si128((__m128i*)_in_a); //load (2 byte imag, 2 byte real) x 4 into 128 bits reg
|
a = _mm_loadu_si128((__m128i*)_in_a); //load (2 byte imag, 2 byte real) x 4 into 128 bits reg
|
||||||
__VOLK_GNSSSDR_PREFETCH(_in_a + 8);
|
__VOLK_GNSSSDR_PREFETCH(_in_a + 8);
|
||||||
|
@ -94,7 +94,7 @@ static inline void volk_gnsssdr_16ic_x2_multiply_16ic_a_sse2(lv_16sc_t* out, con
|
|||||||
for (number = 0; number < sse_iters; number++)
|
for (number = 0; number < sse_iters; number++)
|
||||||
{
|
{
|
||||||
//std::complex<T> memory structure: real part -> reinterpret_cast<cv T*>(a)[2*i]
|
//std::complex<T> memory structure: real part -> reinterpret_cast<cv T*>(a)[2*i]
|
||||||
//imaginery part -> reinterpret_cast<cv T*>(a)[2*i + 1]
|
//imaginary part -> reinterpret_cast<cv T*>(a)[2*i + 1]
|
||||||
// a[127:0]=[a3.i,a3.r,a2.i,a2.r,a1.i,a1.r,a0.i,a0.r]
|
// a[127:0]=[a3.i,a3.r,a2.i,a2.r,a1.i,a1.r,a0.i,a0.r]
|
||||||
a = _mm_load_si128((__m128i*)_in_a); //load (2 byte imag, 2 byte real) x 4 into 128 bits reg
|
a = _mm_load_si128((__m128i*)_in_a); //load (2 byte imag, 2 byte real) x 4 into 128 bits reg
|
||||||
b = _mm_load_si128((__m128i*)_in_b);
|
b = _mm_load_si128((__m128i*)_in_b);
|
||||||
@ -148,7 +148,7 @@ static inline void volk_gnsssdr_16ic_x2_multiply_16ic_u_sse2(lv_16sc_t* out, con
|
|||||||
for (number = 0; number < sse_iters; number++)
|
for (number = 0; number < sse_iters; number++)
|
||||||
{
|
{
|
||||||
//std::complex<T> memory structure: real part -> reinterpret_cast<cv T*>(a)[2*i]
|
//std::complex<T> memory structure: real part -> reinterpret_cast<cv T*>(a)[2*i]
|
||||||
//imaginery part -> reinterpret_cast<cv T*>(a)[2*i + 1]
|
//imaginary part -> reinterpret_cast<cv T*>(a)[2*i + 1]
|
||||||
// a[127:0]=[a3.i,a3.r,a2.i,a2.r,a1.i,a1.r,a0.i,a0.r]
|
// a[127:0]=[a3.i,a3.r,a2.i,a2.r,a1.i,a1.r,a0.i,a0.r]
|
||||||
a = _mm_loadu_si128((__m128i*)_in_a); //load (2 byte imag, 2 byte real) x 4 into 128 bits reg
|
a = _mm_loadu_si128((__m128i*)_in_a); //load (2 byte imag, 2 byte real) x 4 into 128 bits reg
|
||||||
b = _mm_loadu_si128((__m128i*)_in_b);
|
b = _mm_loadu_si128((__m128i*)_in_b);
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
* </ul>
|
* </ul>
|
||||||
*
|
*
|
||||||
* VOLK_GNSSSDR kernel that esamples N 16 bits integer short complex vectors using zero hold resample algorithm.
|
* VOLK_GNSSSDR kernel that esamples N 16 bits integer short complex vectors using zero hold resample algorithm.
|
||||||
* It is optimized to resample a sigle GNSS local code signal replica into N vectors fractional-resampled and fractional-delayed
|
* It is optimized to resample a single GNSS local code signal replica into N vectors fractional-resampled and fractional-delayed
|
||||||
* (i.e. it creates the Early, Prompt, and Late code replicas)
|
* (i.e. it creates the Early, Prompt, and Late code replicas)
|
||||||
*
|
*
|
||||||
* -------------------------------------------------------------------------
|
* -------------------------------------------------------------------------
|
||||||
@ -145,7 +145,7 @@ static inline void volk_gnsssdr_16ic_xn_resampler_fast_16ic_xn_a_sse2(lv_16sc_t*
|
|||||||
//common to all outputs
|
//common to all outputs
|
||||||
_code_phase_out = _mm_mul_ps(_code_phase_step_chips, _4output_index); //compute the code phase point with the phase step
|
_code_phase_out = _mm_mul_ps(_code_phase_step_chips, _4output_index); //compute the code phase point with the phase step
|
||||||
|
|
||||||
//output vector dependant (different code phase offset)
|
//output vector dependent (different code phase offset)
|
||||||
for (current_vector = 0; current_vector < num_out_vectors; current_vector++)
|
for (current_vector = 0; current_vector < num_out_vectors; current_vector++)
|
||||||
{
|
{
|
||||||
tmp_rem_code_phase_chips = rem_code_phase_chips[current_vector] - 0.5f; // adjust offset to perform correct rounding (chip transition at 0)
|
tmp_rem_code_phase_chips = rem_code_phase_chips[current_vector] - 0.5f; // adjust offset to perform correct rounding (chip transition at 0)
|
||||||
@ -241,7 +241,7 @@ static inline void volk_gnsssdr_16ic_xn_resampler_fast_16ic_xn_u_sse2(lv_16sc_t*
|
|||||||
//common to all outputs
|
//common to all outputs
|
||||||
_code_phase_out = _mm_mul_ps(_code_phase_step_chips, _4output_index); //compute the code phase point with the phase step
|
_code_phase_out = _mm_mul_ps(_code_phase_step_chips, _4output_index); //compute the code phase point with the phase step
|
||||||
|
|
||||||
//output vector dependant (different code phase offset)
|
//output vector dependent (different code phase offset)
|
||||||
for (current_vector = 0; current_vector < num_out_vectors; current_vector++)
|
for (current_vector = 0; current_vector < num_out_vectors; current_vector++)
|
||||||
{
|
{
|
||||||
tmp_rem_code_phase_chips = rem_code_phase_chips[current_vector] - 0.5f; // adjust offset to perform correct rounding (chip transition at 0)
|
tmp_rem_code_phase_chips = rem_code_phase_chips[current_vector] - 0.5f; // adjust offset to perform correct rounding (chip transition at 0)
|
||||||
@ -339,7 +339,7 @@ static inline void volk_gnsssdr_16ic_xn_resampler_fast_16ic_xn_neon(lv_16sc_t**
|
|||||||
//common to all outputs
|
//common to all outputs
|
||||||
_code_phase_out = vmulq_f32(_code_phase_step_chips, _4output_index); //compute the code phase point with the phase step
|
_code_phase_out = vmulq_f32(_code_phase_step_chips, _4output_index); //compute the code phase point with the phase step
|
||||||
|
|
||||||
//output vector dependant (different code phase offset)
|
//output vector dependent (different code phase offset)
|
||||||
for (current_vector = 0; current_vector < num_out_vectors; current_vector++)
|
for (current_vector = 0; current_vector < num_out_vectors; current_vector++)
|
||||||
{
|
{
|
||||||
tmp_rem_code_phase_chips = rem_code_phase_chips[current_vector] - 0.5f; // adjust offset to perform correct rounding (chip transition at 0)
|
tmp_rem_code_phase_chips = rem_code_phase_chips[current_vector] - 0.5f; // adjust offset to perform correct rounding (chip transition at 0)
|
||||||
|
@ -345,7 +345,7 @@ macro(gen_template tmpl output)
|
|||||||
)
|
)
|
||||||
endmacro(gen_template)
|
endmacro(gen_template)
|
||||||
|
|
||||||
make_directory(${PROJECT_BINARY_DIR}/include/volk_gnsssdr)
|
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/include/volk_gnsssdr)
|
||||||
|
|
||||||
gen_template(${PROJECT_SOURCE_DIR}/tmpl/volk_gnsssdr.tmpl.h ${PROJECT_BINARY_DIR}/include/volk_gnsssdr/volk_gnsssdr.h)
|
gen_template(${PROJECT_SOURCE_DIR}/tmpl/volk_gnsssdr.tmpl.h ${PROJECT_BINARY_DIR}/include/volk_gnsssdr/volk_gnsssdr.h)
|
||||||
gen_template(${PROJECT_SOURCE_DIR}/tmpl/volk_gnsssdr.tmpl.c ${PROJECT_BINARY_DIR}/lib/volk_gnsssdr.c)
|
gen_template(${PROJECT_SOURCE_DIR}/tmpl/volk_gnsssdr.tmpl.c ${PROJECT_BINARY_DIR}/lib/volk_gnsssdr.c)
|
||||||
@ -604,18 +604,24 @@ if(ENABLE_TESTING)
|
|||||||
|
|
||||||
#include Boost headers
|
#include Boost headers
|
||||||
include_directories(${Boost_INCLUDE_DIRS})
|
include_directories(${Boost_INCLUDE_DIRS})
|
||||||
link_directories(${Boost_LIBRARY_DIRS})
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/.unittest)
|
||||||
make_directory(${CMAKE_CURRENT_BINARY_DIR}/.unittest)
|
|
||||||
set_source_files_properties(
|
set_source_files_properties(
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/testqa.cc PROPERTIES
|
${CMAKE_CURRENT_SOURCE_DIR}/testqa.cc PROPERTIES
|
||||||
COMPILE_DEFINITIONS "BOOST_TEST_DYN_LINK;BOOST_TEST_MAIN"
|
COMPILE_DEFINITIONS "BOOST_TEST_DYN_LINK;BOOST_TEST_MAIN"
|
||||||
)
|
)
|
||||||
|
|
||||||
include(VolkAddTest)
|
include(VolkAddTest)
|
||||||
VOLK_ADD_TEST(test_all
|
VOLK_GEN_TEST("volk_gnsssdr_test_all"
|
||||||
SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/testqa.cc
|
SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/testqa.cc
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/qa_utils.cc
|
${CMAKE_CURRENT_SOURCE_DIR}/qa_utils.cc
|
||||||
TARGET_DEPS volk_gnsssdr
|
TARGET_DEPS volk_gnsssdr
|
||||||
)
|
)
|
||||||
|
foreach(kernel ${h_files})
|
||||||
|
get_filename_component(kernel ${kernel} NAME)
|
||||||
|
string(REPLACE ".h" "" kernel ${kernel})
|
||||||
|
if(NOT ${kernel} MATCHES puppet*)
|
||||||
|
VOLK_ADD_TEST(${kernel} "volk_gnsssdr_test_all")
|
||||||
|
endif(NOT ${kernel} MATCHES puppet*)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
endif(ENABLE_TESTING)
|
endif(ENABLE_TESTING)
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
void print_qa_xml(std::vector<volk_gnsssdr_test_results_t> results, unsigned int nfails);
|
void print_qa_xml(std::vector<volk_gnsssdr_test_results_t> results, unsigned int nfails);
|
||||||
|
|
||||||
int main()
|
int main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
bool qa_ret_val = 0;
|
bool qa_ret_val = 0;
|
||||||
|
|
||||||
@ -45,47 +45,72 @@ int main()
|
|||||||
volk_gnsssdr_test_params_t test_params(def_tol, def_scalar, def_vlen, def_iter,
|
volk_gnsssdr_test_params_t test_params(def_tol, def_scalar, def_vlen, def_iter,
|
||||||
def_benchmark_mode, def_kernel_regex);
|
def_benchmark_mode, def_kernel_regex);
|
||||||
std::vector<volk_gnsssdr_test_case_t> test_cases = init_test_list(test_params);
|
std::vector<volk_gnsssdr_test_case_t> test_cases = init_test_list(test_params);
|
||||||
|
|
||||||
std::vector<std::string> qa_failures;
|
|
||||||
std::vector<volk_gnsssdr_test_results_t> results;
|
std::vector<volk_gnsssdr_test_results_t> results;
|
||||||
// Test every kernel reporting failures when they occur
|
if (argc > 1)
|
||||||
for (unsigned int ii = 0; ii < test_cases.size(); ++ii)
|
|
||||||
{
|
{
|
||||||
bool qa_result = false;
|
for (unsigned int ii = 0; ii < test_cases.size(); ++ii)
|
||||||
volk_gnsssdr_test_case_t test_case = test_cases[ii];
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
qa_result = run_volk_gnsssdr_tests(test_case.desc(), test_case.kernel_ptr(), test_case.name(),
|
if (std::string(argv[1]) == test_cases[ii].name())
|
||||||
test_case.test_parameters(), &results, test_case.puppet_master_name());
|
{
|
||||||
}
|
volk_gnsssdr_test_case_t test_case = test_cases[ii];
|
||||||
catch (...)
|
if (run_volk_gnsssdr_tests(test_case.desc(), test_case.kernel_ptr(),
|
||||||
{
|
test_case.name(),
|
||||||
// TODO: what exceptions might we need to catch and how do we handle them?
|
test_case.test_parameters(), &results,
|
||||||
std::cerr << "Exception found on kernel: " << test_case.name() << std::endl;
|
test_case.puppet_master_name()))
|
||||||
qa_result = false;
|
{
|
||||||
}
|
return 1;
|
||||||
|
}
|
||||||
if (qa_result)
|
else
|
||||||
{
|
{
|
||||||
std::cerr << "Failure on " << test_case.name() << std::endl;
|
return 0;
|
||||||
qa_failures.push_back(test_case.name());
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
std::cerr << "Did not run a test for kernel: " << std::string(argv[1]) << " !" << std::endl;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
// Generate XML results
|
|
||||||
print_qa_xml(results, qa_failures.size());
|
|
||||||
|
|
||||||
// Summarize QA results
|
|
||||||
std::cerr << "Kernel QA finished: " << qa_failures.size() << " failures out of "
|
|
||||||
<< test_cases.size() << " tests." << std::endl;
|
|
||||||
if (qa_failures.size() > 0)
|
|
||||||
{
|
{
|
||||||
std::cerr << "The following kernels failed QA:" << std::endl;
|
std::vector<std::string> qa_failures;
|
||||||
for (unsigned int ii = 0; ii < qa_failures.size(); ++ii)
|
// Test every kernel reporting failures when they occur
|
||||||
|
for (unsigned int ii = 0; ii < test_cases.size(); ++ii)
|
||||||
{
|
{
|
||||||
std::cerr << " " << qa_failures[ii] << std::endl;
|
bool qa_result = false;
|
||||||
|
volk_gnsssdr_test_case_t test_case = test_cases[ii];
|
||||||
|
try
|
||||||
|
{
|
||||||
|
qa_result = run_volk_gnsssdr_tests(test_case.desc(), test_case.kernel_ptr(), test_case.name(),
|
||||||
|
test_case.test_parameters(), &results, test_case.puppet_master_name());
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
// TODO: what exceptions might we need to catch and how do we handle them?
|
||||||
|
std::cerr << "Exception found on kernel: " << test_case.name() << std::endl;
|
||||||
|
qa_result = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (qa_result)
|
||||||
|
{
|
||||||
|
std::cerr << "Failure on " << test_case.name() << std::endl;
|
||||||
|
qa_failures.push_back(test_case.name());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate XML results
|
||||||
|
print_qa_xml(results, qa_failures.size());
|
||||||
|
|
||||||
|
// Summarize QA results
|
||||||
|
std::cerr << "Kernel QA finished: " << qa_failures.size() << " failures out of "
|
||||||
|
<< test_cases.size() << " tests." << std::endl;
|
||||||
|
if (qa_failures.size() > 0)
|
||||||
|
{
|
||||||
|
std::cerr << "The following kernels failed QA:" << std::endl;
|
||||||
|
for (unsigned int ii = 0; ii < qa_failures.size(); ++ii)
|
||||||
|
{
|
||||||
|
std::cerr << " " << qa_failures[ii] << std::endl;
|
||||||
|
}
|
||||||
|
qa_ret_val = 1;
|
||||||
}
|
}
|
||||||
qa_ret_val = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return qa_ret_val;
|
return qa_ret_val;
|
||||||
@ -128,7 +153,6 @@ void print_qa_xml(std::vector<volk_gnsssdr_test_results_t> results, unsigned int
|
|||||||
qa_file << " </testsuite>" << std::endl;
|
qa_file << " </testsuite>" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
qa_file << "</testsuites>" << std::endl;
|
qa_file << "</testsuites>" << std::endl;
|
||||||
qa_file.close();
|
qa_file.close();
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ typedef struct volk_gnsssdr_func_desc
|
|||||||
const char **impl_names;
|
const char **impl_names;
|
||||||
const int *impl_deps;
|
const int *impl_deps;
|
||||||
const bool *impl_alignment;
|
const bool *impl_alignment;
|
||||||
const size_t n_impls;
|
size_t n_impls;
|
||||||
} volk_gnsssdr_func_desc_t;
|
} volk_gnsssdr_func_desc_t;
|
||||||
|
|
||||||
//! Prints a list of machines available
|
//! Prints a list of machines available
|
||||||
@ -68,12 +68,12 @@ VOLK_API size_t volk_gnsssdr_get_alignment(void);
|
|||||||
*/
|
*/
|
||||||
VOLK_API bool volk_gnsssdr_is_aligned(const void *ptr);
|
VOLK_API bool volk_gnsssdr_is_aligned(const void *ptr);
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
%for kern in kernels:
|
%for kern in kernels:
|
||||||
|
|
||||||
//! A function pointer to the dispatcher implementation
|
//! A function pointer to the dispatcher implementation
|
||||||
extern VOLK_API ${kern.pname} ${kern.name};
|
extern VOLK_API ${kern.pname} ${kern.name};
|
||||||
|
|
||||||
// clang-format off
|
|
||||||
//! A function pointer to the fastest aligned implementation
|
//! A function pointer to the fastest aligned implementation
|
||||||
extern VOLK_API ${kern.pname} ${kern.name}_a;
|
extern VOLK_API ${kern.pname} ${kern.name}_a;
|
||||||
|
|
||||||
@ -86,9 +86,7 @@ extern VOLK_API void ${kern.name}_manual(${kern.arglist_full}, const char* impl_
|
|||||||
//! Get description parameters for this kernel
|
//! Get description parameters for this kernel
|
||||||
extern VOLK_API volk_gnsssdr_func_desc_t ${kern.name}_get_func_desc(void);
|
extern VOLK_API volk_gnsssdr_func_desc_t ${kern.name}_get_func_desc(void);
|
||||||
%endfor
|
%endfor
|
||||||
// clang-format off
|
|
||||||
|
|
||||||
__VOLK_DECL_END
|
__VOLK_DECL_END
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
#endif /*INCLUDED_VOLK_GNSSSDR_RUNTIME*/
|
#endif /*INCLUDED_VOLK_GNSSSDR_RUNTIME*/
|
||||||
|
@ -55,7 +55,7 @@ RtlTcpSignalSource::RtlTcpSignalSource(ConfigurationInterface* configuration,
|
|||||||
dump_filename_ = configuration->property(role + ".dump_filename",
|
dump_filename_ = configuration->property(role + ".dump_filename",
|
||||||
default_dump_file);
|
default_dump_file);
|
||||||
|
|
||||||
// rtl_tcp PARAMTERS
|
// rtl_tcp PARAMETERS
|
||||||
std::string default_address = "127.0.0.1";
|
std::string default_address = "127.0.0.1";
|
||||||
short default_port = 1234;
|
short default_port = 1234;
|
||||||
AGC_enabled_ = configuration->property(role + ".AGC_enabled", true);
|
AGC_enabled_ = configuration->property(role + ".AGC_enabled", true);
|
||||||
|
@ -121,7 +121,7 @@ unpack_2bit_samples::unpack_2bit_samples(bool big_endian_bytes,
|
|||||||
bool big_endian_system = systemIsBigEndian();
|
bool big_endian_system = systemIsBigEndian();
|
||||||
|
|
||||||
// Only swap the item bytes if the item size > 1 byte and the system
|
// Only swap the item bytes if the item size > 1 byte and the system
|
||||||
// endianess is not the same as the item endianness:
|
// endianness is not the same as the item endianness:
|
||||||
swap_endian_items_ = (item_size_ > 1) &&
|
swap_endian_items_ = (item_size_ > 1) &&
|
||||||
(big_endian_system != big_endian_items);
|
(big_endian_system != big_endian_items);
|
||||||
|
|
||||||
|
@ -320,7 +320,7 @@ int galileo_e1b_telemetry_decoder_cc::general_work(int noutput_items __attribute
|
|||||||
d_stat = 1; // enter into frame pre-detection status
|
d_stat = 1; // enter into frame pre-detection status
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (d_stat == 1) // posible preamble lock
|
else if (d_stat == 1) // possible preamble lock
|
||||||
{
|
{
|
||||||
if (abs(corr_value) >= d_symbols_per_preamble)
|
if (abs(corr_value) >= d_symbols_per_preamble)
|
||||||
{
|
{
|
||||||
|
@ -338,7 +338,7 @@ int galileo_e5a_telemetry_decoder_cc::general_work(int noutput_items __attribute
|
|||||||
d_stat = 1; // enter into frame pre-detection status
|
d_stat = 1; // enter into frame pre-detection status
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((d_stat == 1) && new_symbol) // posible preamble lock
|
else if ((d_stat == 1) && new_symbol) // possible preamble lock
|
||||||
{
|
{
|
||||||
if (abs(corr_value) >= GALILEO_FNAV_PREAMBLE_LENGTH_BITS)
|
if (abs(corr_value) >= GALILEO_FNAV_PREAMBLE_LENGTH_BITS)
|
||||||
{
|
{
|
||||||
|
@ -271,7 +271,7 @@ int glonass_l1_ca_telemetry_decoder_cc::general_work(int noutput_items __attribu
|
|||||||
d_preamble_time_samples = d_symbol_history.at(0).Tracking_sample_counter; // record the preamble sample stamp
|
d_preamble_time_samples = d_symbol_history.at(0).Tracking_sample_counter; // record the preamble sample stamp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (d_stat == 1) // posible preamble lock
|
else if (d_stat == 1) // possible preamble lock
|
||||||
{
|
{
|
||||||
if (abs(corr_value) >= d_symbols_per_preamble)
|
if (abs(corr_value) >= d_symbols_per_preamble)
|
||||||
{
|
{
|
||||||
|
@ -715,7 +715,7 @@ int galileo_e1_dll_pll_veml_tracking_cc::general_work(int noutput_items __attrib
|
|||||||
double code_error_filt_secs;
|
double code_error_filt_secs;
|
||||||
code_error_filt_secs = (Galileo_E1_CODE_PERIOD * d_code_error_filt_chips) / Galileo_E1_CODE_CHIP_RATE_HZ; // [seconds]
|
code_error_filt_secs = (Galileo_E1_CODE_PERIOD * d_code_error_filt_chips) / Galileo_E1_CODE_CHIP_RATE_HZ; // [seconds]
|
||||||
|
|
||||||
// ################## CARRIER AND CODE NCO BUFFER ALIGNEMENT #######################
|
// ################## CARRIER AND CODE NCO BUFFER ALIGNMENT #######################
|
||||||
// keep alignment parameters for the next input buffer
|
// keep alignment parameters for the next input buffer
|
||||||
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
||||||
double T_chip_seconds = 1.0 / d_code_freq_chips;
|
double T_chip_seconds = 1.0 / d_code_freq_chips;
|
||||||
@ -841,7 +841,7 @@ int galileo_e1_dll_pll_veml_tracking_cc::general_work(int noutput_items __attrib
|
|||||||
d_rem_carr_phase_rad = d_rem_carr_phase_rad + GALILEO_TWO_PI * d_carrier_doppler_hz * static_cast<double>(d_current_prn_length_samples) / static_cast<double>(d_fs_in);
|
d_rem_carr_phase_rad = d_rem_carr_phase_rad + GALILEO_TWO_PI * d_carrier_doppler_hz * static_cast<double>(d_current_prn_length_samples) / static_cast<double>(d_fs_in);
|
||||||
d_rem_carr_phase_rad = std::fmod(d_rem_carr_phase_rad, GALILEO_TWO_PI);
|
d_rem_carr_phase_rad = std::fmod(d_rem_carr_phase_rad, GALILEO_TWO_PI);
|
||||||
|
|
||||||
// ################## CARRIER AND CODE NCO BUFFER ALIGNEMENT #######################
|
// ################## CARRIER AND CODE NCO BUFFER ALIGNMENT #######################
|
||||||
// keep alignment parameters for the next input buffer
|
// keep alignment parameters for the next input buffer
|
||||||
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
||||||
double T_chip_seconds = 1.0 / d_code_freq_chips;
|
double T_chip_seconds = 1.0 / d_code_freq_chips;
|
||||||
@ -921,7 +921,7 @@ int galileo_e1_dll_pll_veml_tracking_cc::general_work(int noutput_items __attrib
|
|||||||
double code_error_filt_secs;
|
double code_error_filt_secs;
|
||||||
code_error_filt_secs = (Galileo_E1_CODE_PERIOD * d_code_error_filt_chips) / Galileo_E1_CODE_CHIP_RATE_HZ; //[seconds]
|
code_error_filt_secs = (Galileo_E1_CODE_PERIOD * d_code_error_filt_chips) / Galileo_E1_CODE_CHIP_RATE_HZ; //[seconds]
|
||||||
|
|
||||||
// ################## CARRIER AND CODE NCO BUFFER ALIGNEMENT #######################
|
// ################## CARRIER AND CODE NCO BUFFER ALIGNMENT #######################
|
||||||
// keep alignment parameters for the next input buffer
|
// keep alignment parameters for the next input buffer
|
||||||
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
||||||
double T_chip_seconds = 1.0 / d_code_freq_chips;
|
double T_chip_seconds = 1.0 / d_code_freq_chips;
|
||||||
|
@ -355,13 +355,13 @@ int Galileo_E1_Tcp_Connector_Tracking_cc::general_work(int noutput_items __attri
|
|||||||
code_error_filt_secs = (Galileo_E1_CODE_PERIOD * code_error_filt_chips) / Galileo_E1_CODE_CHIP_RATE_HZ; //[seconds]
|
code_error_filt_secs = (Galileo_E1_CODE_PERIOD * code_error_filt_chips) / Galileo_E1_CODE_CHIP_RATE_HZ; //[seconds]
|
||||||
d_acc_code_phase_secs = d_acc_code_phase_secs + code_error_filt_secs;
|
d_acc_code_phase_secs = d_acc_code_phase_secs + code_error_filt_secs;
|
||||||
|
|
||||||
// ################## CARRIER AND CODE NCO BUFFER ALIGNEMENT #######################
|
// ################## CARRIER AND CODE NCO BUFFER ALIGNMENT #######################
|
||||||
// keep alignment parameters for the next input buffer
|
// keep alignment parameters for the next input buffer
|
||||||
double T_chip_seconds;
|
double T_chip_seconds;
|
||||||
double T_prn_seconds;
|
double T_prn_seconds;
|
||||||
double T_prn_samples;
|
double T_prn_samples;
|
||||||
double K_blk_samples;
|
double K_blk_samples;
|
||||||
// Compute the next buffer lenght based in the new period of the PRN sequence and the code phase error estimation
|
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
||||||
T_chip_seconds = 1 / static_cast<double>(d_code_freq_chips);
|
T_chip_seconds = 1 / static_cast<double>(d_code_freq_chips);
|
||||||
T_prn_seconds = T_chip_seconds * Galileo_E1_B_CODE_LENGTH_CHIPS;
|
T_prn_seconds = T_chip_seconds * Galileo_E1_B_CODE_LENGTH_CHIPS;
|
||||||
T_prn_samples = T_prn_seconds * static_cast<double>(d_fs_in);
|
T_prn_samples = T_prn_seconds * static_cast<double>(d_fs_in);
|
||||||
|
@ -605,7 +605,7 @@ int glonass_l1_ca_dll_pll_c_aid_tracking_cc::general_work(int noutput_items __at
|
|||||||
d_code_phase_step_chips,
|
d_code_phase_step_chips,
|
||||||
d_correlation_length_samples);
|
d_correlation_length_samples);
|
||||||
|
|
||||||
// ####### coherent intergration extension
|
// ####### coherent integration extension
|
||||||
// keep the last symbols
|
// keep the last symbols
|
||||||
d_E_history.push_back(d_correlator_outs[0]); // save early output
|
d_E_history.push_back(d_correlator_outs[0]); // save early output
|
||||||
d_P_history.push_back(d_correlator_outs[1]); // save prompt output
|
d_P_history.push_back(d_correlator_outs[1]); // save prompt output
|
||||||
@ -720,7 +720,7 @@ int glonass_l1_ca_dll_pll_c_aid_tracking_cc::general_work(int noutput_items __at
|
|||||||
d_code_error_filt_chips_Ti = d_code_error_filt_chips_s * CURRENT_INTEGRATION_TIME_S;
|
d_code_error_filt_chips_Ti = d_code_error_filt_chips_s * CURRENT_INTEGRATION_TIME_S;
|
||||||
code_error_filt_secs_Ti = d_code_error_filt_chips_Ti / d_code_freq_chips; // [s/Ti]
|
code_error_filt_secs_Ti = d_code_error_filt_chips_Ti / d_code_freq_chips; // [s/Ti]
|
||||||
|
|
||||||
// ################## CARRIER AND CODE NCO BUFFER ALIGNEMENT #######################
|
// ################## CARRIER AND CODE NCO BUFFER ALIGNMENT #######################
|
||||||
// keep alignment parameters for the next input buffer
|
// keep alignment parameters for the next input buffer
|
||||||
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
||||||
double T_chip_seconds = 1.0 / d_code_freq_chips;
|
double T_chip_seconds = 1.0 / d_code_freq_chips;
|
||||||
|
@ -599,7 +599,7 @@ int glonass_l1_ca_dll_pll_c_aid_tracking_sc::general_work(int noutput_items __at
|
|||||||
d_code_phase_step_chips,
|
d_code_phase_step_chips,
|
||||||
d_correlation_length_samples);
|
d_correlation_length_samples);
|
||||||
|
|
||||||
// ####### coherent intergration extension
|
// ####### coherent integration extension
|
||||||
// keep the last symbols
|
// keep the last symbols
|
||||||
d_E_history.push_back(d_correlator_outs_16sc[0]); // save early output
|
d_E_history.push_back(d_correlator_outs_16sc[0]); // save early output
|
||||||
d_P_history.push_back(d_correlator_outs_16sc[1]); // save prompt output
|
d_P_history.push_back(d_correlator_outs_16sc[1]); // save prompt output
|
||||||
@ -712,7 +712,7 @@ int glonass_l1_ca_dll_pll_c_aid_tracking_sc::general_work(int noutput_items __at
|
|||||||
d_code_error_filt_chips_Ti = d_code_error_filt_chips_s * CURRENT_INTEGRATION_TIME_S;
|
d_code_error_filt_chips_Ti = d_code_error_filt_chips_s * CURRENT_INTEGRATION_TIME_S;
|
||||||
code_error_filt_secs_Ti = d_code_error_filt_chips_Ti / d_code_freq_chips; // [s/Ti]
|
code_error_filt_secs_Ti = d_code_error_filt_chips_Ti / d_code_freq_chips; // [s/Ti]
|
||||||
|
|
||||||
// ################## CARRIER AND CODE NCO BUFFER ALIGNEMENT #######################
|
// ################## CARRIER AND CODE NCO BUFFER ALIGNMENT #######################
|
||||||
// keep alignment parameters for the next input buffer
|
// keep alignment parameters for the next input buffer
|
||||||
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
||||||
double T_chip_seconds = 1.0 / d_code_freq_chips;
|
double T_chip_seconds = 1.0 / d_code_freq_chips;
|
||||||
|
@ -584,7 +584,7 @@ int Glonass_L1_Ca_Dll_Pll_Tracking_cc::general_work(int noutput_items __attribut
|
|||||||
double code_error_filt_secs = (T_prn_seconds * code_error_filt_chips * T_chip_seconds); //[seconds]
|
double code_error_filt_secs = (T_prn_seconds * code_error_filt_chips * T_chip_seconds); //[seconds]
|
||||||
//double code_error_filt_secs = (GPS_L1_CA_CODE_PERIOD * code_error_filt_chips) / GLONASS_L1_CA_CODE_RATE_HZ; // [seconds]
|
//double code_error_filt_secs = (GPS_L1_CA_CODE_PERIOD * code_error_filt_chips) / GLONASS_L1_CA_CODE_RATE_HZ; // [seconds]
|
||||||
|
|
||||||
// ################## CARRIER AND CODE NCO BUFFER ALIGNEMENT #######################
|
// ################## CARRIER AND CODE NCO BUFFER ALIGNMENT #######################
|
||||||
// keep alignment parameters for the next input buffer
|
// keep alignment parameters for the next input buffer
|
||||||
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
||||||
//double T_chip_seconds = 1.0 / static_cast<double>(d_code_freq_chips);
|
//double T_chip_seconds = 1.0 / static_cast<double>(d_code_freq_chips);
|
||||||
|
@ -587,7 +587,7 @@ int gps_l1_ca_dll_pll_c_aid_tracking_cc::general_work(int noutput_items __attrib
|
|||||||
d_code_phase_step_chips,
|
d_code_phase_step_chips,
|
||||||
d_correlation_length_samples);
|
d_correlation_length_samples);
|
||||||
|
|
||||||
// ####### coherent intergration extension
|
// ####### coherent integration extension
|
||||||
// keep the last symbols
|
// keep the last symbols
|
||||||
d_E_history.push_back(d_correlator_outs[0]); // save early output
|
d_E_history.push_back(d_correlator_outs[0]); // save early output
|
||||||
d_P_history.push_back(d_correlator_outs[1]); // save prompt output
|
d_P_history.push_back(d_correlator_outs[1]); // save prompt output
|
||||||
@ -701,7 +701,7 @@ int gps_l1_ca_dll_pll_c_aid_tracking_cc::general_work(int noutput_items __attrib
|
|||||||
d_code_error_filt_chips_Ti = d_code_error_filt_chips_s * CURRENT_INTEGRATION_TIME_S;
|
d_code_error_filt_chips_Ti = d_code_error_filt_chips_s * CURRENT_INTEGRATION_TIME_S;
|
||||||
code_error_filt_secs_Ti = d_code_error_filt_chips_Ti / d_code_freq_chips; // [s/Ti]
|
code_error_filt_secs_Ti = d_code_error_filt_chips_Ti / d_code_freq_chips; // [s/Ti]
|
||||||
|
|
||||||
// ################## CARRIER AND CODE NCO BUFFER ALIGNEMENT #######################
|
// ################## CARRIER AND CODE NCO BUFFER ALIGNMENT #######################
|
||||||
// keep alignment parameters for the next input buffer
|
// keep alignment parameters for the next input buffer
|
||||||
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
||||||
double T_chip_seconds = 1.0 / d_code_freq_chips;
|
double T_chip_seconds = 1.0 / d_code_freq_chips;
|
||||||
|
@ -387,7 +387,7 @@ int gps_l1_ca_dll_pll_c_aid_tracking_fpga_sc::general_work(
|
|||||||
d_rem_code_phase_chips, d_code_phase_step_chips,
|
d_rem_code_phase_chips, d_code_phase_step_chips,
|
||||||
d_correlation_length_samples);
|
d_correlation_length_samples);
|
||||||
|
|
||||||
// ####### coherent intergration extension
|
// ####### coherent integration extension
|
||||||
// keep the last symbols
|
// keep the last symbols
|
||||||
d_E_history.push_back(d_correlator_outs_16sc[0]); // save early output
|
d_E_history.push_back(d_correlator_outs_16sc[0]); // save early output
|
||||||
d_P_history.push_back(d_correlator_outs_16sc[1]); // save prompt output
|
d_P_history.push_back(d_correlator_outs_16sc[1]); // save prompt output
|
||||||
@ -517,7 +517,7 @@ int gps_l1_ca_dll_pll_c_aid_tracking_fpga_sc::general_work(
|
|||||||
d_code_error_filt_chips_Ti = d_code_error_filt_chips_s * CURRENT_INTEGRATION_TIME_S;
|
d_code_error_filt_chips_Ti = d_code_error_filt_chips_s * CURRENT_INTEGRATION_TIME_S;
|
||||||
code_error_filt_secs_Ti = d_code_error_filt_chips_Ti / d_code_freq_chips; // [s/Ti]
|
code_error_filt_secs_Ti = d_code_error_filt_chips_Ti / d_code_freq_chips; // [s/Ti]
|
||||||
|
|
||||||
// ################## CARRIER AND CODE NCO BUFFER ALIGNEMENT #######################
|
// ################## CARRIER AND CODE NCO BUFFER ALIGNMENT #######################
|
||||||
// keep alignment parameters for the next input buffer
|
// keep alignment parameters for the next input buffer
|
||||||
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
||||||
double T_chip_seconds = 1.0 / d_code_freq_chips;
|
double T_chip_seconds = 1.0 / d_code_freq_chips;
|
||||||
|
@ -590,7 +590,7 @@ int gps_l1_ca_dll_pll_c_aid_tracking_sc::general_work(int noutput_items __attrib
|
|||||||
d_code_phase_step_chips,
|
d_code_phase_step_chips,
|
||||||
d_correlation_length_samples);
|
d_correlation_length_samples);
|
||||||
|
|
||||||
// ####### coherent intergration extension
|
// ####### coherent integration extension
|
||||||
// keep the last symbols
|
// keep the last symbols
|
||||||
d_E_history.push_back(d_correlator_outs_16sc[0]); // save early output
|
d_E_history.push_back(d_correlator_outs_16sc[0]); // save early output
|
||||||
d_P_history.push_back(d_correlator_outs_16sc[1]); // save prompt output
|
d_P_history.push_back(d_correlator_outs_16sc[1]); // save prompt output
|
||||||
@ -703,7 +703,7 @@ int gps_l1_ca_dll_pll_c_aid_tracking_sc::general_work(int noutput_items __attrib
|
|||||||
d_code_error_filt_chips_Ti = d_code_error_filt_chips_s * CURRENT_INTEGRATION_TIME_S;
|
d_code_error_filt_chips_Ti = d_code_error_filt_chips_s * CURRENT_INTEGRATION_TIME_S;
|
||||||
code_error_filt_secs_Ti = d_code_error_filt_chips_Ti / d_code_freq_chips; // [s/Ti]
|
code_error_filt_secs_Ti = d_code_error_filt_chips_Ti / d_code_freq_chips; // [s/Ti]
|
||||||
|
|
||||||
// ################## CARRIER AND CODE NCO BUFFER ALIGNEMENT #######################
|
// ################## CARRIER AND CODE NCO BUFFER ALIGNMENT #######################
|
||||||
// keep alignment parameters for the next input buffer
|
// keep alignment parameters for the next input buffer
|
||||||
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
||||||
double T_chip_seconds = 1.0 / d_code_freq_chips;
|
double T_chip_seconds = 1.0 / d_code_freq_chips;
|
||||||
|
@ -579,7 +579,7 @@ int Gps_L1_Ca_Dll_Pll_Tracking_cc::general_work(int noutput_items __attribute__(
|
|||||||
double code_error_filt_secs = (T_prn_seconds * code_error_filt_chips * T_chip_seconds); //[seconds]
|
double code_error_filt_secs = (T_prn_seconds * code_error_filt_chips * T_chip_seconds); //[seconds]
|
||||||
//double code_error_filt_secs = (GPS_L1_CA_CODE_PERIOD * code_error_filt_chips) / GPS_L1_CA_CODE_RATE_HZ; // [seconds]
|
//double code_error_filt_secs = (GPS_L1_CA_CODE_PERIOD * code_error_filt_chips) / GPS_L1_CA_CODE_RATE_HZ; // [seconds]
|
||||||
|
|
||||||
// ################## CARRIER AND CODE NCO BUFFER ALIGNEMENT #######################
|
// ################## CARRIER AND CODE NCO BUFFER ALIGNMENT #######################
|
||||||
// keep alignment parameters for the next input buffer
|
// keep alignment parameters for the next input buffer
|
||||||
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
||||||
//double T_chip_seconds = 1.0 / static_cast<double>(d_code_freq_chips);
|
//double T_chip_seconds = 1.0 / static_cast<double>(d_code_freq_chips);
|
||||||
|
@ -368,7 +368,7 @@ int Gps_L1_Ca_Dll_Pll_Tracking_GPU_cc::general_work(int noutput_items __attribut
|
|||||||
// TODO: PLL carrier aid to DLL is disabled. Re-enable it and measure performance
|
// TODO: PLL carrier aid to DLL is disabled. Re-enable it and measure performance
|
||||||
dll_code_error_secs_Ti = -code_error_filt_secs_Ti + d_pll_to_dll_assist_secs_Ti;
|
dll_code_error_secs_Ti = -code_error_filt_secs_Ti + d_pll_to_dll_assist_secs_Ti;
|
||||||
|
|
||||||
// ################## CARRIER AND CODE NCO BUFFER ALIGNEMENT #######################
|
// ################## CARRIER AND CODE NCO BUFFER ALIGNMENT #######################
|
||||||
// keep alignment parameters for the next input buffer
|
// keep alignment parameters for the next input buffer
|
||||||
double T_chip_seconds;
|
double T_chip_seconds;
|
||||||
double T_prn_seconds;
|
double T_prn_seconds;
|
||||||
|
@ -333,7 +333,7 @@ int Gps_L1_Ca_Tcp_Connector_Tracking_cc::general_work(int noutput_items __attrib
|
|||||||
d_sample_counter_seconds = d_sample_counter_seconds + (static_cast<double>(samples_offset) / static_cast<double>(d_fs_in));
|
d_sample_counter_seconds = d_sample_counter_seconds + (static_cast<double>(samples_offset) / static_cast<double>(d_fs_in));
|
||||||
d_sample_counter = d_sample_counter + samples_offset; //count for the processed samples
|
d_sample_counter = d_sample_counter + samples_offset; //count for the processed samples
|
||||||
d_pull_in = false;
|
d_pull_in = false;
|
||||||
consume_each(samples_offset); //shift input to perform alignement with local replica
|
consume_each(samples_offset); //shift input to perform alignment with local replica
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -579,7 +579,7 @@ int gps_l2_m_dll_pll_tracking_cc::general_work(int noutput_items __attribute__((
|
|||||||
double code_error_filt_secs = (T_prn_seconds * code_error_filt_chips * T_chip_seconds); //[seconds]
|
double code_error_filt_secs = (T_prn_seconds * code_error_filt_chips * T_chip_seconds); //[seconds]
|
||||||
//double code_error_filt_secs = (GPS_L2_M_PERIOD * code_error_filt_chips) / GPS_L2_M_CODE_RATE_HZ; //[seconds]
|
//double code_error_filt_secs = (GPS_L2_M_PERIOD * code_error_filt_chips) / GPS_L2_M_CODE_RATE_HZ; //[seconds]
|
||||||
|
|
||||||
// ################## CARRIER AND CODE NCO BUFFER ALIGNEMENT #######################
|
// ################## CARRIER AND CODE NCO BUFFER ALIGNMENT #######################
|
||||||
// keep alignment parameters for the next input buffer
|
// keep alignment parameters for the next input buffer
|
||||||
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
||||||
double T_prn_samples = T_prn_seconds * static_cast<double>(d_fs_in);
|
double T_prn_samples = T_prn_seconds * static_cast<double>(d_fs_in);
|
||||||
|
@ -580,7 +580,7 @@ int gps_l5i_dll_pll_tracking_cc::general_work(int noutput_items __attribute__((u
|
|||||||
double code_error_filt_secs = (T_prn_seconds * code_error_filt_chips * T_chip_seconds); //[seconds]
|
double code_error_filt_secs = (T_prn_seconds * code_error_filt_chips * T_chip_seconds); //[seconds]
|
||||||
//double code_error_filt_secs = (GPS_L5i_PERIOD * code_error_filt_chips) / GPS_L5i_CODE_RATE_HZ; //[seconds]
|
//double code_error_filt_secs = (GPS_L5i_PERIOD * code_error_filt_chips) / GPS_L5i_CODE_RATE_HZ; //[seconds]
|
||||||
|
|
||||||
// ################## CARRIER AND CODE NCO BUFFER ALIGNEMENT #######################
|
// ################## CARRIER AND CODE NCO BUFFER ALIGNMENT #######################
|
||||||
// keep alignment parameters for the next input buffer
|
// keep alignment parameters for the next input buffer
|
||||||
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
// Compute the next buffer length based in the new period of the PRN sequence and the code phase error estimation
|
||||||
double T_prn_samples = T_prn_seconds * static_cast<double>(d_fs_in);
|
double T_prn_samples = T_prn_seconds * static_cast<double>(d_fs_in);
|
||||||
|
@ -136,7 +136,7 @@ bool fpga_multicorrelator_8sc::Carrier_wipeoff_multicorrelator_resampler(
|
|||||||
nb = read(d_device_descriptor, &irq_count, sizeof(irq_count));
|
nb = read(d_device_descriptor, &irq_count, sizeof(irq_count));
|
||||||
if (nb != sizeof(irq_count))
|
if (nb != sizeof(irq_count))
|
||||||
{
|
{
|
||||||
printf("Tracking_module Read failed to retrive 4 bytes!\n");
|
printf("Tracking_module Read failed to retrieve 4 bytes!\n");
|
||||||
printf("Tracking_module Interrupt number %d\n", irq_count);
|
printf("Tracking_module Interrupt number %d\n", irq_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ public:
|
|||||||
return running_;
|
return running_;
|
||||||
}
|
}
|
||||||
/*!
|
/*!
|
||||||
* \brief Sends a GNURadio asyncronous message from telemetry to PVT
|
* \brief Sends a GNURadio asynchronous message from telemetry to PVT
|
||||||
*
|
*
|
||||||
* It is used to assist the receiver with external ephemeris data
|
* It is used to assist the receiver with external ephemeris data
|
||||||
*/
|
*/
|
||||||
|
@ -42,7 +42,7 @@ Galileo_Ephemeris::Galileo_Ephemeris()
|
|||||||
M0_1 = 0; // Mean anomaly at reference time [semi-circles]
|
M0_1 = 0; // Mean anomaly at reference time [semi-circles]
|
||||||
delta_n_3 = 0; // Mean motion difference from computed value [semi-circles/sec]
|
delta_n_3 = 0; // Mean motion difference from computed value [semi-circles/sec]
|
||||||
e_1 = 0; // Eccentricity
|
e_1 = 0; // Eccentricity
|
||||||
A_1 = 0; // Square root of the semi-major axis [metres^1/2]
|
A_1 = 0; // Square root of the semi-major axis [meters^1/2]
|
||||||
OMEGA_0_2 = 0; // Longitude of ascending node of orbital plane at weekly epoch [semi-circles]
|
OMEGA_0_2 = 0; // Longitude of ascending node of orbital plane at weekly epoch [semi-circles]
|
||||||
i_0_2 = 0; // Inclination angle at reference time [semi-circles]
|
i_0_2 = 0; // Inclination angle at reference time [semi-circles]
|
||||||
omega_2 = 0; // Argument of perigee [semi-circles]
|
omega_2 = 0; // Argument of perigee [semi-circles]
|
||||||
|
@ -54,7 +54,7 @@ public:
|
|||||||
double M0_1; //!< Mean anomaly at reference time [semi-circles]
|
double M0_1; //!< Mean anomaly at reference time [semi-circles]
|
||||||
double delta_n_3; //!< Mean motion difference from computed value [semi-circles/sec]
|
double delta_n_3; //!< Mean motion difference from computed value [semi-circles/sec]
|
||||||
double e_1; //!< Eccentricity
|
double e_1; //!< Eccentricity
|
||||||
double A_1; //!< Square root of the semi-major axis [metres^1/2]
|
double A_1; //!< Square root of the semi-major axis [meters^1/2]
|
||||||
double OMEGA_0_2; //!< Longitude of ascending node of orbital plane at weekly epoch [semi-circles]
|
double OMEGA_0_2; //!< Longitude of ascending node of orbital plane at weekly epoch [semi-circles]
|
||||||
double i_0_2; //!< Inclination angle at reference time [semi-circles]
|
double i_0_2; //!< Inclination angle at reference time [semi-circles]
|
||||||
double omega_2; //!< Argument of perigee [semi-circles]
|
double omega_2; //!< Argument of perigee [semi-circles]
|
||||||
|
@ -604,7 +604,7 @@ Galileo_Ephemeris Galileo_Fnav_Message::get_ephemeris()
|
|||||||
ephemeris.M0_1 = FNAV_M0_2; // Mean anomaly at reference time [semi-circles]
|
ephemeris.M0_1 = FNAV_M0_2; // Mean anomaly at reference time [semi-circles]
|
||||||
ephemeris.delta_n_3 = FNAV_deltan_3; // Mean motion difference from computed value [semi-circles/sec]
|
ephemeris.delta_n_3 = FNAV_deltan_3; // Mean motion difference from computed value [semi-circles/sec]
|
||||||
ephemeris.e_1 = FNAV_e_2; // Eccentricity
|
ephemeris.e_1 = FNAV_e_2; // Eccentricity
|
||||||
ephemeris.A_1 = FNAV_a12_2; // Square root of the semi-major axis [metres^1/2]
|
ephemeris.A_1 = FNAV_a12_2; // Square root of the semi-major axis [meters^1/2]
|
||||||
ephemeris.OMEGA_0_2 = FNAV_omega0_2; // Longitude of ascending node of orbital plane at weekly epoch [semi-circles]
|
ephemeris.OMEGA_0_2 = FNAV_omega0_2; // Longitude of ascending node of orbital plane at weekly epoch [semi-circles]
|
||||||
ephemeris.i_0_2 = FNAV_i0_3; // Inclination angle at reference time [semi-circles]
|
ephemeris.i_0_2 = FNAV_i0_3; // Inclination angle at reference time [semi-circles]
|
||||||
ephemeris.omega_2 = FNAV_w_3; // Argument of perigee [semi-circles]
|
ephemeris.omega_2 = FNAV_w_3; // Argument of perigee [semi-circles]
|
||||||
|
@ -530,7 +530,7 @@ Galileo_Ephemeris Galileo_Navigation_Message::get_ephemeris()
|
|||||||
ephemeris.M0_1 = M0_1; // Mean anomaly at reference time [semi-circles]
|
ephemeris.M0_1 = M0_1; // Mean anomaly at reference time [semi-circles]
|
||||||
ephemeris.delta_n_3 = delta_n_3; // Mean motion difference from computed value [semi-circles/sec]
|
ephemeris.delta_n_3 = delta_n_3; // Mean motion difference from computed value [semi-circles/sec]
|
||||||
ephemeris.e_1 = e_1; // Eccentricity
|
ephemeris.e_1 = e_1; // Eccentricity
|
||||||
ephemeris.A_1 = A_1; // Square root of the semi-major axis [metres^1/2]
|
ephemeris.A_1 = A_1; // Square root of the semi-major axis [meters^1/2]
|
||||||
ephemeris.OMEGA_0_2 = OMEGA_0_2; // Longitude of ascending node of orbital plane at weekly epoch [semi-circles]
|
ephemeris.OMEGA_0_2 = OMEGA_0_2; // Longitude of ascending node of orbital plane at weekly epoch [semi-circles]
|
||||||
ephemeris.i_0_2 = i_0_2; // Inclination angle at reference time [semi-circles]
|
ephemeris.i_0_2 = i_0_2; // Inclination angle at reference time [semi-circles]
|
||||||
ephemeris.omega_2 = omega_2; // Argument of perigee [semi-circles]
|
ephemeris.omega_2 = omega_2; // Argument of perigee [semi-circles]
|
||||||
|
@ -97,7 +97,7 @@ public:
|
|||||||
double t0e_1; //!< Ephemeris reference time [s]
|
double t0e_1; //!< Ephemeris reference time [s]
|
||||||
double M0_1; //!< Mean anomaly at reference time [semi-circles]
|
double M0_1; //!< Mean anomaly at reference time [semi-circles]
|
||||||
double e_1; //!< Eccentricity
|
double e_1; //!< Eccentricity
|
||||||
double A_1; //!< Square root of the semi-major axis [metres^1/2]
|
double A_1; //!< Square root of the semi-major axis [meters^1/2]
|
||||||
|
|
||||||
/*Word type 2: Ephemeris (2/4)*/
|
/*Word type 2: Ephemeris (2/4)*/
|
||||||
int IOD_nav_2; //!< IOD_nav page 2
|
int IOD_nav_2; //!< IOD_nav page 2
|
||||||
|
@ -559,7 +559,7 @@ std::string Gnss_Satellite::what_block(const std::string& system_, unsigned int
|
|||||||
block_ = std::string("IOV-FM4**"); // Galileo In-Orbit Validation (IOV) satellite FM4 (Flight Model 4) / GSAT0104, launched on October 12, 2012. Payload power problem beginning May 27, 2014 led to permanent loss of E5 and E6 transmissions, E1 transmission restored. UNAVAILABLE FROM 2014-05-27 UNTIL FURTHER NOTICE
|
block_ = std::string("IOV-FM4**"); // Galileo In-Orbit Validation (IOV) satellite FM4 (Flight Model 4) / GSAT0104, launched on October 12, 2012. Payload power problem beginning May 27, 2014 led to permanent loss of E5 and E6 transmissions, E1 transmission restored. UNAVAILABLE FROM 2014-05-27 UNTIL FURTHER NOTICE
|
||||||
break;
|
break;
|
||||||
case 21:
|
case 21:
|
||||||
block_ = std::string("FOC-FM15"); // Galileo Full Operational Capability (FOC) satellite FM15 / GSAT0215, launched on Dec. 12, 2017. UNDER COMMISIONING.
|
block_ = std::string("FOC-FM15"); // Galileo Full Operational Capability (FOC) satellite FM15 / GSAT0215, launched on Dec. 12, 2017. UNDER COMMISSIONING.
|
||||||
break;
|
break;
|
||||||
case 22:
|
case 22:
|
||||||
block_ = std::string("FOC-FM4**"); // Galileo Full Operational Capability (FOC) satellite FM4 / GSAT0204, launched on March 27, 2015. REMOVED FROM ACTIVE SERVICE ON 2017-12-08 UNTIL FURTHER NOTICE FOR CONSTELLATION MANAGEMENT PURPOSES.
|
block_ = std::string("FOC-FM4**"); // Galileo Full Operational Capability (FOC) satellite FM4 / GSAT0204, launched on March 27, 2015. REMOVED FROM ACTIVE SERVICE ON 2017-12-08 UNTIL FURTHER NOTICE FOR CONSTELLATION MANAGEMENT PURPOSES.
|
||||||
@ -568,19 +568,19 @@ std::string Gnss_Satellite::what_block(const std::string& system_, unsigned int
|
|||||||
block_ = std::string("FOC-FM5"); // Galileo Full Operational Capability (FOC) satellite FM5 / GSAT0205, launched on Sept. 11, 2015.
|
block_ = std::string("FOC-FM5"); // Galileo Full Operational Capability (FOC) satellite FM5 / GSAT0205, launched on Sept. 11, 2015.
|
||||||
break;
|
break;
|
||||||
case 25:
|
case 25:
|
||||||
block_ = std::string("FOC-FM16"); // Galileo Full Operational Capability (FOC) satellite FM16 / GSAT0216, launched on Dec. 12, 2017. UNDER COMMISIONING.
|
block_ = std::string("FOC-FM16"); // Galileo Full Operational Capability (FOC) satellite FM16 / GSAT0216, launched on Dec. 12, 2017. UNDER COMMISSIONING.
|
||||||
break;
|
break;
|
||||||
case 26:
|
case 26:
|
||||||
block_ = std::string("FOC-FM3"); // Galileo Full Operational Capability (FOC) satellite FM3 / GSAT0203, launched on March 27, 2015.
|
block_ = std::string("FOC-FM3"); // Galileo Full Operational Capability (FOC) satellite FM3 / GSAT0203, launched on March 27, 2015.
|
||||||
break;
|
break;
|
||||||
case 27:
|
case 27:
|
||||||
block_ = std::string("FOC-FM17"); // Galileo Full Operational Capability (FOC) satellite FM17 / GSAT0217, launched on Dec. 12, 2017. UNDER COMMISIONING.
|
block_ = std::string("FOC-FM17"); // Galileo Full Operational Capability (FOC) satellite FM17 / GSAT0217, launched on Dec. 12, 2017. UNDER COMMISSIONING.
|
||||||
break;
|
break;
|
||||||
case 30:
|
case 30:
|
||||||
block_ = std::string("FOC-FM6"); // Galileo Full Operational Capability (FOC) satellite FM6 / GSAT0206, launched on Sept. 11, 2015.
|
block_ = std::string("FOC-FM6"); // Galileo Full Operational Capability (FOC) satellite FM6 / GSAT0206, launched on Sept. 11, 2015.
|
||||||
break;
|
break;
|
||||||
case 31:
|
case 31:
|
||||||
block_ = std::string("FOC-FM18"); // Galileo Full Operational Capability (FOC) satellite FM18 / GSAT0218, launched on Dec. 12, 2017. UNDER COMMISIONING.
|
block_ = std::string("FOC-FM18"); // Galileo Full Operational Capability (FOC) satellite FM18 / GSAT0218, launched on Dec. 12, 2017. UNDER COMMISSIONING.
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
block_ = std::string("Unknown(Simulated)");
|
block_ = std::string("Unknown(Simulated)");
|
||||||
|
@ -67,8 +67,8 @@ public:
|
|||||||
double d_TOW;
|
double d_TOW;
|
||||||
bool b_flag_ephemeris_1;
|
bool b_flag_ephemeris_1;
|
||||||
bool b_flag_ephemeris_2;
|
bool b_flag_ephemeris_2;
|
||||||
bool b_flag_iono_valid; //!< If set, it indicates that the ionospheric parameters are filled and are not yet readed by the get_iono
|
bool b_flag_iono_valid; //!< If set, it indicates that the ionospheric parameters are filled and are not yet read by the get_iono
|
||||||
bool b_flag_utc_valid; //!< If set, it indicates that the utc parameters are filled and are not yet readed by the get_utc_model
|
bool b_flag_utc_valid; //!< If set, it indicates that the utc parameters are filled and are not yet read by the get_utc_model
|
||||||
|
|
||||||
std::map<int, std::string> satelliteBlock; //!< Map that stores to which block the PRN belongs http://www.navcen.uscg.gov/?Do=constellationStatus
|
std::map<int, std::string> satelliteBlock; //!< Map that stores to which block the PRN belongs http://www.navcen.uscg.gov/?Do=constellationStatus
|
||||||
|
|
||||||
|
@ -5265,7 +5265,7 @@ int Rtcm::set_DF401(const Gnss_Synchro& gnss_synchro)
|
|||||||
|
|
||||||
phrng_m = (gnss_synchro.Carrier_phase_rads / GPS_TWO_PI) * lambda - rough_range_m;
|
phrng_m = (gnss_synchro.Carrier_phase_rads / GPS_TWO_PI) * lambda - rough_range_m;
|
||||||
|
|
||||||
/* Substract phase - pseudorange integer cycle offset */
|
/* Subtract phase - pseudorange integer cycle offset */
|
||||||
/* TODO: check LLI! */
|
/* TODO: check LLI! */
|
||||||
double cp = gnss_synchro.Carrier_phase_rads / GPS_TWO_PI; // ?
|
double cp = gnss_synchro.Carrier_phase_rads / GPS_TWO_PI; // ?
|
||||||
if (std::fabs(phrng_m - cp) > 1171.0)
|
if (std::fabs(phrng_m - cp) > 1171.0)
|
||||||
@ -5460,7 +5460,7 @@ int Rtcm::set_DF406(const Gnss_Synchro& gnss_synchro)
|
|||||||
}
|
}
|
||||||
phrng_m = (gnss_synchro.Carrier_phase_rads / GPS_TWO_PI) * lambda - rough_range_m;
|
phrng_m = (gnss_synchro.Carrier_phase_rads / GPS_TWO_PI) * lambda - rough_range_m;
|
||||||
|
|
||||||
/* Substract phase - pseudorange integer cycle offset */
|
/* Subtract phase - pseudorange integer cycle offset */
|
||||||
/* TODO: check LLI! */
|
/* TODO: check LLI! */
|
||||||
double cp = gnss_synchro.Carrier_phase_rads / GPS_TWO_PI; // ?
|
double cp = gnss_synchro.Carrier_phase_rads / GPS_TWO_PI; // ?
|
||||||
if (std::fabs(phrng_m - cp) > 1171.0)
|
if (std::fabs(phrng_m - cp) > 1171.0)
|
||||||
|
@ -209,7 +209,7 @@ if(ENABLE_UNIT_TESTING_EXTRA OR ENABLE_SYSTEM_TESTING_EXTRA OR ENABLE_FPGA)
|
|||||||
################################################################################
|
################################################################################
|
||||||
find_package(GPSTK)
|
find_package(GPSTK)
|
||||||
if(NOT GPSTK_FOUND OR ENABLE_OWN_GPSTK)
|
if(NOT GPSTK_FOUND OR ENABLE_OWN_GPSTK)
|
||||||
message(STATUS "GPSTk v${GNSSSDR_GPSTK_LOCAL_VERSION} will be automatically donwloaded and built when doing 'make'.")
|
message(STATUS "GPSTk v${GNSSSDR_GPSTK_LOCAL_VERSION} will be automatically downloaded and built when doing 'make'.")
|
||||||
if(NOT ENABLE_FPGA)
|
if(NOT ENABLE_FPGA)
|
||||||
if(CMAKE_VERSION VERSION_LESS 3.2)
|
if(CMAKE_VERSION VERSION_LESS 3.2)
|
||||||
ExternalProject_Add(
|
ExternalProject_Add(
|
||||||
|
@ -110,7 +110,7 @@ private:
|
|||||||
static std::string m_sGNUPlotFileName;
|
static std::string m_sGNUPlotFileName;
|
||||||
///\brief gnuplot path
|
///\brief gnuplot path
|
||||||
static std::string m_sGNUPlotPath;
|
static std::string m_sGNUPlotPath;
|
||||||
///\brief standart terminal, used by showonscreen
|
///\brief standard terminal, used by showonscreen
|
||||||
static std::string terminal_std;
|
static std::string terminal_std;
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
@ -174,7 +174,7 @@ public:
|
|||||||
static bool set_GNUPlotPath(const std::string &path);
|
static bool set_GNUPlotPath(const std::string &path);
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
/// optional: set standart terminal, used by showonscreen
|
/// optional: set standard terminal, used by showonscreen
|
||||||
/// defaults: Windows - win, Linux - x11, Mac - aqua
|
/// defaults: Windows - win, Linux - x11, Mac - aqua
|
||||||
///
|
///
|
||||||
/// \param type --> the terminal type
|
/// \param type --> the terminal type
|
||||||
@ -260,7 +260,7 @@ public:
|
|||||||
/// interpolation and approximation of data, arguments:
|
/// interpolation and approximation of data, arguments:
|
||||||
/// csplines, bezier, acsplines (for data values > 0), sbezier, unique, frequency
|
/// csplines, bezier, acsplines (for data values > 0), sbezier, unique, frequency
|
||||||
/// (works only with plot_x, plot_xy, plotfile_x, plotfile_xy
|
/// (works only with plot_x, plot_xy, plotfile_x, plotfile_xy
|
||||||
/// (if smooth is set, set_style has no effekt on data plotting)
|
/// (if smooth is set, set_style has no effect on data plotting)
|
||||||
Gnuplot &set_smooth(const std::string &stylestr = "csplines");
|
Gnuplot &set_smooth(const std::string &stylestr = "csplines");
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
@ -610,14 +610,14 @@ public:
|
|||||||
|
|
||||||
/// plot an equation supplied as a std::string y=f(x), write only the function f(x) not y=
|
/// plot an equation supplied as a std::string y=f(x), write only the function f(x) not y=
|
||||||
/// the independent variable has to be x
|
/// the independent variable has to be x
|
||||||
/// binary operators: ** exponentiation, * multiply, / divide, + add, - substract, % modulo
|
/// binary operators: ** exponentiation, * multiply, / divide, + add, - subtract, % modulo
|
||||||
/// unary operators: - minus, ! factorial
|
/// unary operators: - minus, ! factorial
|
||||||
/// elementary functions: rand(x), abs(x), sgn(x), ceil(x), floor(x), int(x), imag(x), real(x), arg(x),
|
/// elementary functions: rand(x), abs(x), sgn(x), ceil(x), floor(x), int(x), imag(x), real(x), arg(x),
|
||||||
/// sqrt(x), exp(x), log(x), log10(x), sin(x), cos(x), tan(x), asin(x), acos(x), atan(x), atan2(y,x),
|
/// sqrt(x), exp(x), log(x), log10(x), sin(x), cos(x), tan(x), asin(x), acos(x), atan(x), atan2(y,x),
|
||||||
/// sinh(x), cosh(x), tanh(x), asinh(x), acosh(x), atanh(x)
|
/// sinh(x), cosh(x), tanh(x), asinh(x), acosh(x), atanh(x)
|
||||||
/// special functions: erf(x), erfc(x), inverf(x), gamma(x), igamma(a,x), lgamma(x), ibeta(p,q,x),
|
/// special functions: erf(x), erfc(x), inverf(x), gamma(x), igamma(a,x), lgamma(x), ibeta(p,q,x),
|
||||||
/// besj0(x), besj1(x), besy0(x), besy1(x), lambertw(x)
|
/// besj0(x), besj1(x), besy0(x), besy1(x), lambertw(x)
|
||||||
/// statistical fuctions: norm(x), invnorm(x)
|
/// statistical functions: norm(x), invnorm(x)
|
||||||
Gnuplot &plot_equation(const std::string &equation, const std::string &title = "");
|
Gnuplot &plot_equation(const std::string &equation, const std::string &title = "");
|
||||||
|
|
||||||
/// plot an equation supplied as a std::string z=f(x,y), write only the function f(x,y) not z=
|
/// plot an equation supplied as a std::string z=f(x,y), write only the function f(x,y) not z=
|
||||||
@ -1014,7 +1014,7 @@ bool Gnuplot::set_GNUPlotPath(const std::string &path)
|
|||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// define static member function: set standart terminal, used by showonscreen
|
// define static member function: set standard terminal, used by showonscreen
|
||||||
// defaults: Windows - win, Linux - x11, Mac - aqua
|
// defaults: Windows - win, Linux - x11, Mac - aqua
|
||||||
//
|
//
|
||||||
void Gnuplot::set_terminal_std(const std::string &type)
|
void Gnuplot::set_terminal_std(const std::string &type)
|
||||||
@ -1106,7 +1106,7 @@ Gnuplot &Gnuplot::reset_plot()
|
|||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// resets a gnuplot session and sets all varibles to default
|
// resets a gnuplot session and sets all variables to default
|
||||||
//
|
//
|
||||||
Gnuplot &Gnuplot::reset_all()
|
Gnuplot &Gnuplot::reset_all()
|
||||||
{
|
{
|
||||||
|
@ -292,7 +292,7 @@ TEST(RtcmTest, MT1020)
|
|||||||
gnav_ephemeris.d_t_k = 7560;
|
gnav_ephemeris.d_t_k = 7560;
|
||||||
// Glonass signed values
|
// Glonass signed values
|
||||||
gnav_ephemeris.d_VXn = -0.490900039672852;
|
gnav_ephemeris.d_VXn = -0.490900039672852;
|
||||||
// Bit distribution per fields dependant on other factors
|
// Bit distribution per fields dependent on other factors
|
||||||
gnav_ephemeris.d_t_b = 8100;
|
gnav_ephemeris.d_t_b = 8100;
|
||||||
// Binary flag representation
|
// Binary flag representation
|
||||||
gnav_ephemeris.d_P_3 = 1;
|
gnav_ephemeris.d_P_3 = 1;
|
||||||
|
@ -154,7 +154,7 @@ void wait_message()
|
|||||||
{
|
{
|
||||||
int message;
|
int message;
|
||||||
channel_internal_queue.wait_and_pop(message);
|
channel_internal_queue.wait_and_pop(message);
|
||||||
//std::cout<<"Acq mesage rx="<<message<<std::endl;
|
//std::cout<<"Acq message rx="<<message<<std::endl;
|
||||||
switch (message)
|
switch (message)
|
||||||
{
|
{
|
||||||
case 1: // Positive acq
|
case 1: // Positive acq
|
||||||
|
Loading…
Reference in New Issue
Block a user