From 5659616dc08d883e9feec675e64d48c313495bbe Mon Sep 17 00:00:00 2001 From: Javier Arribas Date: Fri, 16 Aug 2019 17:49:16 +0200 Subject: [PATCH 1/3] Unifiying and improving DLL PLL binary dump MATLAB plot script --- src/utils/matlab/dll_pll_veml_plot_sample.m | 67 +++++++------ .../galileo_e1_dll_pll_veml_plot_sample.m | 79 --------------- .../matlab/galileo_e5a_dll_pll_plot_sample.m | 95 ------------------- .../matlab/glonass_ca_dll_pll_plot_sample.m | 73 -------------- .../matlab/gps_l1_ca_dll_pll_plot_sample.m | 75 --------------- 5 files changed, 39 insertions(+), 350 deletions(-) delete mode 100644 src/utils/matlab/galileo_e1_dll_pll_veml_plot_sample.m delete mode 100644 src/utils/matlab/galileo_e5a_dll_pll_plot_sample.m delete mode 100644 src/utils/matlab/glonass_ca_dll_pll_plot_sample.m delete mode 100644 src/utils/matlab/gps_l1_ca_dll_pll_plot_sample.m diff --git a/src/utils/matlab/dll_pll_veml_plot_sample.m b/src/utils/matlab/dll_pll_veml_plot_sample.m index 04589ac54..86d489fb6 100644 --- a/src/utils/matlab/dll_pll_veml_plot_sample.m +++ b/src/utils/matlab/dll_pll_veml_plot_sample.m @@ -34,15 +34,16 @@ if ~exist('dll_pll_veml_read_tracking_dump.m', 'file') addpath('./libs') end -samplingFreq = 25000000; %[Hz] -coherent_integration_time_ms = 1; %[ms] -channels = 1; % Number of channels +samplingFreq = 2048000; %[Hz] +plot_last_outputs=0; + +channels = 8; % Number of channels first_channel = 0; % Number of the first channel -path = '/home/dmiralles/Documents/gnss-sdr/'; %% CHANGE THIS PATH +path = '/Users/javier/git/gnss-sdr/build/test_postpro_24h_casa/'; %% CHANGE THIS PATH for N=1:1:channels - tracking_log_path = [path 'epl_tracking_ch_' num2str(N+first_channel-1) '.dat']; %% CHANGE track_ch_ BY YOUR dump_filename + tracking_log_path = [path 'tracking_ch_' num2str(N+first_channel-1) '.dat']; %% CHANGE track_ch_ BY YOUR dump_filename GNSS_tracking(N) = dll_pll_veml_read_tracking_dump(tracking_log_path); end @@ -50,34 +51,44 @@ end for N=1:1:channels trackResults(N).status = 'T'; %fake track - trackResults(N).codeFreq = GNSS_tracking(N).code_freq_hz.'; - trackResults(N).carrFreq = GNSS_tracking(N).carrier_doppler_hz.'; - trackResults(N).dllDiscr = GNSS_tracking(N).code_error.'; - trackResults(N).dllDiscrFilt = GNSS_tracking(N).code_nco.'; - trackResults(N).pllDiscr = GNSS_tracking(N).carr_error.'; - trackResults(N).pllDiscrFilt = GNSS_tracking(N).carr_nco.'; + if plot_last_outputs>0 && plot_last_outputs. -% -% ------------------------------------------------------------------------- -% - -close all; -clear all; - -if ~exist('dll_pll_veml_read_tracking_dump.m', 'file') - addpath('./libs') -end - -samplingFreq = 5000000; %[Hz] -channels = 7; % Number of channels -first_channel = 0; % Number of the first channel - -path = '/Users/carlesfernandez/git/cttc/build/'; %% CHANGE THIS PATH - -for N=1:1:channels - tracking_log_path = [path 'track_ch' num2str(N+first_channel-1) '.dat']; %% CHANGE track_ch BY YOUR dump_filename - GNSS_tracking(N) = dll_pll_veml_read_tracking_dump(tracking_log_path); -end - -% GNSS-SDR format conversion to MATLAB GPS receiver - -for N=1:1:channels - trackResults(N).status = 'T'; %fake track - trackResults(N).codeFreq = GNSS_tracking(N).code_freq_hz.'; - trackResults(N).carrFreq = GNSS_tracking(N).carrier_doppler_hz.'; - trackResults(N).dllDiscr = GNSS_tracking(N).code_error.'; - trackResults(N).dllDiscrFilt = GNSS_tracking(N).code_nco.'; - trackResults(N).pllDiscr = GNSS_tracking(N).carr_error.'; - trackResults(N).pllDiscrFilt = GNSS_tracking(N).carr_nco.'; - - trackResults(N).I_P = GNSS_tracking(N).prompt_I.'; - trackResults(N).Q_P = GNSS_tracking(N).prompt_Q.'; - - trackResults(N).I_VE = GNSS_tracking(N).VE.'; - trackResults(N).I_E = GNSS_tracking(N).E.'; - trackResults(N).I_L = GNSS_tracking(N).L.'; - trackResults(N).I_VL = GNSS_tracking(N).VL.'; - trackResults(N).Q_VE = zeros(1,length(GNSS_tracking(N).VE)); - trackResults(N).Q_E = zeros(1,length(GNSS_tracking(N).E)); - trackResults(N).Q_L = zeros(1,length(GNSS_tracking(N).L)); - trackResults(N).Q_VL = zeros(1,length(GNSS_tracking(N).VL)); - trackResults(N).PRN = GNSS_tracking(N).PRN.'; - trackResults(N).CNo = GNSS_tracking(N).CN0_SNV_dB_Hz.'; - - % Use original MATLAB tracking plot function - settings.numberOfChannels = channels; - settings.msToProcess = length(GNSS_tracking(N).E)*4; - plotVEMLTracking(N, trackResults, settings) -end - - - diff --git a/src/utils/matlab/galileo_e5a_dll_pll_plot_sample.m b/src/utils/matlab/galileo_e5a_dll_pll_plot_sample.m deleted file mode 100644 index 8c09a3c73..000000000 --- a/src/utils/matlab/galileo_e5a_dll_pll_plot_sample.m +++ /dev/null @@ -1,95 +0,0 @@ -% Reads GNSS-SDR Tracking dump binary file using the provided -% function and plots some internal variables -% Javier Arribas, Marc Sales 2014. jarribas(at)cttc.es, marcsales92@gmail.com -% ------------------------------------------------------------------------- -% -% Copyright (C) 2010-2019 (see AUTHORS file for a list of contributors) -% -% GNSS-SDR is a software defined Global Navigation -% Satellite Systems receiver -% -% This file is part of GNSS-SDR. -% -% GNSS-SDR is free software: you can redistribute it and/or modify -% it under the terms of the GNU General Public License as published by -% the Free Software Foundation, either version 3 of the License, or -% at your option) any later version. -% -% GNSS-SDR is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with GNSS-SDR. If not, see . -% -% ------------------------------------------------------------------------- -% - -close all; -clear all; - -if ~exist('gps_l1_ca_dll_pll_read_tracking_dump.m','file') - addpath('./libs') -end - - -samplingFreq = 5000000; %[Hz] -channels = 1; -first_channel = 30; - -path = '/Users/carlesfernandez/git/cttc/build/'; %% CHANGE THIS PATH - -for N=1:1:channels - tracking_log_path = [path 'tracking_ch_' num2str(N+first_channel-1) '.dat']; %% CHANGE tracking_ch_ BY YOUR dump_filename - GNSS_tracking(N) = gps_l1_ca_dll_pll_read_tracking_dump(tracking_log_path); -end - -% GNSS-SDR format conversion to MATLAB GPS receiver - -for N=1:1:channels - trackResults(N).status = 'T'; %fake track - trackResults(N).codeFreq = GNSS_tracking(N).code_freq_hz.'; - trackResults(N).carrFreq = GNSS_tracking(N).carrier_doppler_hz.'; - trackResults(N).dllDiscr = GNSS_tracking(N).code_error.'; - trackResults(N).dllDiscrFilt = GNSS_tracking(N).code_nco.'; - trackResults(N).pllDiscr = GNSS_tracking(N).carr_error.'; - trackResults(N).pllDiscrFilt = GNSS_tracking(N).carr_nco.'; - - trackResults(N).I_PN = GNSS_tracking(N).prompt_I.'; - trackResults(N).Q_PN = GNSS_tracking(N).prompt_Q.'; - trackResults(N).Q_P = zeros(1,length(GNSS_tracking(N).P)); - trackResults(N).I_P = GNSS_tracking(N).P.'; - - trackResults(N).I_E = GNSS_tracking(N).E.'; - trackResults(N).I_L = GNSS_tracking(N).L.'; - trackResults(N).Q_E = zeros(1,length(GNSS_tracking(N).E)); - trackResults(N).Q_L = zeros(1,length(GNSS_tracking(N).E)); - trackResults(N).PRN = GNSS_tracking(N).PRN.'; - - % Use original MATLAB tracking plot function - settings.numberOfChannels = channels; - settings.msToProcess = length(GNSS_tracking(N).E); - plotTrackingE5a(N, trackResults, settings) -end - -for N=1:1:channels - % figure; - % plot([GNSS_tracking(N).E, GNSS_tracking(N).P, GNSS_tracking(N).L],'-*'); - % title(['Early, Prompt, and Late correlator absolute value output for channel ' num2str(N)']); - % figure; - % plot(GNSS_tracking(N).prompt_I, GNSS_tracking(N).prompt_Q, '+'); - % title(['Navigation constellation plot for channel ' num2str(N)]); - % figure; - % - % plot(GNSS_tracking(N).prompt_Q,'r'); - % hold on; - % plot(GNSS_tracking(N).prompt_I); - % title(['Navigation symbols I(red) Q(blue) for channel ' num2str(N)]); - % - figure; - t = 0:length(GNSS_tracking(N).carrier_doppler_hz)-1; - t = t/1000; - plot(t, GNSS_tracking(N).carrier_doppler_hz / 1000); - xlabel('Time(s)'); ylabel('Doppler(KHz)'); title(['Doppler frequency channel ' num2str(N)]); -end diff --git a/src/utils/matlab/glonass_ca_dll_pll_plot_sample.m b/src/utils/matlab/glonass_ca_dll_pll_plot_sample.m deleted file mode 100644 index 8ad4ba174..000000000 --- a/src/utils/matlab/glonass_ca_dll_pll_plot_sample.m +++ /dev/null @@ -1,73 +0,0 @@ -% Reads GNSS-SDR Tracking dump binary file using the provided -% function and plots some internal variables -% Damian Miralles, 2017. dmiralles2009(at)gmail.com -% ------------------------------------------------------------------------- -% -% Copyright (C) 2010-2019 (see AUTHORS file for a list of contributors) -% -% GNSS-SDR is a software defined Global Navigation -% Satellite Systems receiver -% -% This file is part of GNSS-SDR. -% -% GNSS-SDR is free software: you can redistribute it and/or modify -% it under the terms of the GNU General Public License as published by -% the Free Software Foundation, either version 3 of the License, or -% at your option) any later version. -% -% GNSS-SDR is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with GNSS-SDR. If not, see . -% -% ------------------------------------------------------------------------- -% - -close all; -clear all; - -if ~exist('dll_pll_veml_read_tracking_dump.m', 'file') - addpath('./libs') -end - - -samplingFreq = 6625000; %[Hz] -channels = 5; -first_channel = 0; - -path = '/archive/'; %% CHANGE THIS PATH - -for N=1:1:channels - tracking_log_path = [path 'glo_tracking_ch_' num2str(N+first_channel-1) '.dat']; %% CHANGE glo_tracking_ch_ BY YOUR dump_filename - GNSS_tracking(N) = dll_pll_veml_read_tracking_dump(tracking_log_path); -end - -% GNSS-SDR format conversion to MATLAB GPS receiver - -for N=1:1:channels - trackResults(N).status = 'T'; %fake track - trackResults(N).codeFreq = GNSS_tracking(N).code_freq_hz.'; - trackResults(N).carrFreq = GNSS_tracking(N).carrier_freq_hz.'; - trackResults(N).dllDiscr = GNSS_tracking(N).code_error.'; - trackResults(N).dllDiscrFilt = GNSS_tracking(N).code_nco.'; - trackResults(N).pllDiscr = GNSS_tracking(N).carr_error.'; - trackResults(N).pllDiscrFilt = GNSS_tracking(N).carr_nco.'; - - trackResults(N).I_P = GNSS_tracking(N).prompt_I.'; - trackResults(N).Q_P = GNSS_tracking(N).prompt_Q.'; - - trackResults(N).I_E = GNSS_tracking(N).E.'; - trackResults(N).I_L = GNSS_tracking(N).L.'; - trackResults(N).Q_E = zeros(1,length(GNSS_tracking(N).E)); - trackResults(N).Q_L = zeros(1,length(GNSS_tracking(N).E)); - trackResults(N).CNo = GNSS_tracking(N).CN0_SNV_dB_Hz.'; - trackResults(N).PRN = ones(1,length(GNSS_tracking(N).E)); - - % Use original MATLAB tracking plot function - settings.numberOfChannels = channels; - settings.msToProcess = length(GNSS_tracking(N).E); - plotTracking(N, trackResults, settings) -end diff --git a/src/utils/matlab/gps_l1_ca_dll_pll_plot_sample.m b/src/utils/matlab/gps_l1_ca_dll_pll_plot_sample.m deleted file mode 100644 index 3bbaff648..000000000 --- a/src/utils/matlab/gps_l1_ca_dll_pll_plot_sample.m +++ /dev/null @@ -1,75 +0,0 @@ -% Reads GNSS-SDR Tracking dump binary file using the provided -% function and plots some internal variables -% Javier Arribas, 2011. jarribas(at)cttc.es -% ------------------------------------------------------------------------- -% -% Copyright (C) 2010-2019 (see AUTHORS file for a list of contributors) -% -% GNSS-SDR is a software defined Global Navigation -% Satellite Systems receiver -% -% This file is part of GNSS-SDR. -% -% GNSS-SDR is free software: you can redistribute it and/or modify -% it under the terms of the GNU General Public License as published by -% the Free Software Foundation, either version 3 of the License, or -% at your option) any later version. -% -% GNSS-SDR is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with GNSS-SDR. If not, see . -% -% ------------------------------------------------------------------------- -% - -close all; -clear all; - -if ~exist('dll_pll_veml_read_tracking_dump.m', 'file') - addpath('./libs') -end - - -samplingFreq = 6625000; %[Hz] -channels = 5; -first_channel = 0; - -path = '/archive/'; %% CHANGE THIS PATH - -for N=1:1:channels - tracking_log_path = [path 'epl_tracking_ch_' num2str(N+first_channel-1) '.dat']; %% CHANGE epl_tracking_ch_ BY YOUR dump_filename - GNSS_tracking(N) = dll_pll_veml_read_tracking_dump(tracking_log_path); -end - -% GNSS-SDR format conversion to MATLAB GPS receiver - -for N=1:1:channels - trackResults(N).status = 'T'; %fake track - trackResults(N).codeFreq = GNSS_tracking(N).code_freq_hz.'; - trackResults(N).carrFreq = GNSS_tracking(N).carrier_doppler_hz.'; - trackResults(N).dllDiscr = GNSS_tracking(N).code_error.'; - trackResults(N).dllDiscrFilt = GNSS_tracking(N).code_nco.'; - trackResults(N).pllDiscr = GNSS_tracking(N).carr_error.'; - trackResults(N).pllDiscrFilt = GNSS_tracking(N).carr_nco.'; - - trackResults(N).I_P = GNSS_tracking(N).prompt_I.'; - trackResults(N).Q_P = GNSS_tracking(N).prompt_Q.'; - - trackResults(N).I_E = GNSS_tracking(N).E.'; - trackResults(N).I_L = GNSS_tracking(N).L.'; - trackResults(N).Q_E = zeros(1,length(GNSS_tracking(N).E)); - trackResults(N).Q_L = zeros(1,length(GNSS_tracking(N).E)); - trackResults(N).PRN = ones(1,length(GNSS_tracking(N).E)); - trackResults(N).CNo = GNSS_tracking(N).CN0_SNV_dB_Hz.'; - - % Use original MATLAB tracking plot function - settings.numberOfChannels = channels; - settings.msToProcess = length(GNSS_tracking(N).E); - plotTracking(N, trackResults, settings) -end - - From e6af1a7e4484e4529c2995eec0b09c704fcd0e99 Mon Sep 17 00:00:00 2001 From: Javier Arribas Date: Fri, 16 Aug 2019 18:24:01 +0200 Subject: [PATCH 2/3] Simplifiying the RTKLIB error log and avoid msg repetitions --- src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_gs.cc | 8 ++++---- src/algorithms/PVT/libs/rtklib_solver.cc | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_gs.cc b/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_gs.cc index 65230c0a1..f9cd859a6 100644 --- a/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_gs.cc +++ b/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_gs.cc @@ -1940,10 +1940,10 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item } } // debug code - // else - // { - // LOG(INFO) << "Internal PVT solver error"; - // } + // else + // { + // DLOG(INFO) << "Internal PVT solver error"; + // } // compute on the fly PVT solution if (flag_compute_pvt_output == true) diff --git a/src/algorithms/PVT/libs/rtklib_solver.cc b/src/algorithms/PVT/libs/rtklib_solver.cc index 345d0ab58..a58998a7c 100644 --- a/src/algorithms/PVT/libs/rtklib_solver.cc +++ b/src/algorithms/PVT/libs/rtklib_solver.cc @@ -925,8 +925,8 @@ bool Rtklib_Solver::get_PVT(const std::map &gnss_observables_ if (result == 0) { - LOG(INFO) << "RTKLIB rtkpos error"; - DLOG(INFO) << "RTKLIB rtkpos error message: " << rtk_.errbuf; + LOG(INFO) << "RTKLIB rtkpos error: " << rtk_.errbuf; + 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_num_valid_observations(0); } From eef3eabbd30f5a69e85863b3f170906f2a6fb160 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Sat, 17 Aug 2019 11:33:38 +0200 Subject: [PATCH 3/3] Fix defects --- src/core/libs/supl/asn-rrlp/INTEGER.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/libs/supl/asn-rrlp/INTEGER.c b/src/core/libs/supl/asn-rrlp/INTEGER.c index c2ec748cc..9d6ff9d28 100644 --- a/src/core/libs/supl/asn-rrlp/INTEGER.c +++ b/src/core/libs/supl/asn-rrlp/INTEGER.c @@ -133,9 +133,9 @@ INTEGER__dump(asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_by char *scr; if(buf == buf_end) { - accum = 0; + accum = 0LL; } else { - accum = (*buf & 0x80) ? -1 : 0; + accum = (*buf & 0x80) ? -1LL : 0LL; for(; buf < buf_end; buf++) accum = (accum * 256) | *buf; } @@ -160,7 +160,7 @@ INTEGER__dump(asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_by scr = scratch; ret = snprintf(scr, scrsize, (specs && specs->field_unsigned) - ?"%lld":"%lld", accum); + ?"%llu":"%lld", accum); } assert(ret > 0 && (size_t)ret < scrsize); return (cb(scr, ret, app_key) < 0) ? -1 : ret;