mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2026-09-29 12:21:51 +00:00
Add PRN in binary data written by Tracking blocks if dump=true
Matlab scripts updated
This commit is contained in:
+16
-34
@@ -1,5 +1,5 @@
|
||||
% /*!
|
||||
% * \file galileo_l1_ca_dll_pll_vml_plot_sample_64bits.m
|
||||
% * \file galileo_l1_ca_dll_pll_vml_plot_sample.m
|
||||
% * \brief Read GNSS-SDR Tracking dump binary file using the provided
|
||||
% function and plot some internal variables
|
||||
% * \author Javier Arribas, 2011. jarribas(at)cttc.es
|
||||
@@ -29,26 +29,28 @@
|
||||
% */
|
||||
close all;
|
||||
clear all;
|
||||
samplingFreq = 20480000/4; %[Hz]
|
||||
channels=8;
|
||||
samplingFreq = 5000000; %[Hz]
|
||||
channels = 7;
|
||||
first_channel = 0;
|
||||
%path='/home/javier/workspace/gnss-sdr/trunk/install/';
|
||||
path='/home/gnss/workspace/gnss-sdr/trunk/data/';
|
||||
clear PRN_absolute_sample_start;
|
||||
%path='/home/luis/dev/gnss-sdr/trunk/data/';
|
||||
path = '/Users/carlesfernandez/git/cttc/build/';
|
||||
|
||||
for N=1:1:channels
|
||||
tracking_log_path=[path 'veml_tracking_ch_' num2str(N-1) '.dat'];
|
||||
GNSS_tracking(N)= galileo_e1_dll_pll_veml_read_tracking_dump_32bits(tracking_log_path);
|
||||
tracking_log_path = [path 'track_ch' num2str(N+first_channel-1) '.dat'];
|
||||
GNSS_tracking(N)= galileo_e1_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).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.';
|
||||
@@ -61,7 +63,7 @@ for N=1:1:channels
|
||||
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 = N; %fake PRN
|
||||
trackResults(N).PRN = GNSS_tracking(N).PRN.';
|
||||
|
||||
% Use original MATLAB tracking plot function
|
||||
settings.numberOfChannels = channels;
|
||||
@@ -69,25 +71,5 @@ for N=1:1:channels
|
||||
plotVEMLTracking(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:4:length(GNSS_tracking(N).carrier_doppler_hz)*4-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
|
||||
|
||||
|
||||
@@ -1,93 +0,0 @@
|
||||
% /*!
|
||||
% * \file galileo_l1_ca_dll_pll_vml_plot_sample_64bits.m
|
||||
% * \brief Read GNSS-SDR Tracking dump binary file using the provided
|
||||
% function and plot some internal variables
|
||||
% * \author Javier Arribas, 2011. jarribas(at)cttc.es
|
||||
% * -------------------------------------------------------------------------
|
||||
% *
|
||||
% * Copyright (C) 2010-2011 (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 <http://www.gnu.org/licenses/>.
|
||||
% *
|
||||
% * -------------------------------------------------------------------------
|
||||
% */
|
||||
close all;
|
||||
clear all;
|
||||
samplingFreq = 64e6/8; %[Hz]
|
||||
channels=1;
|
||||
%path='/home/javier/workspace/gnss-sdr/trunk/install/';
|
||||
path='/home/luis/dev/gnss-sdr/trunk/data/';
|
||||
clear PRN_absolute_sample_start;
|
||||
for N=1:1:channels
|
||||
tracking_log_path=[path 'veml_tracking_ch_' num2str(N-1) '.dat'];
|
||||
GNSS_tracking(N)= galileo_e1_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=N; %fake PRN
|
||||
|
||||
% Use original MATLAB tracking plot function
|
||||
settings.numberOfChannels=channels;
|
||||
settings.msToProcess=length(GNSS_tracking(N).E)*4;
|
||||
plotVEMLTracking(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:4:length(GNSS_tracking(N).carrier_doppler_hz)*4-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
|
||||
|
||||
|
||||
+21
-19
@@ -1,5 +1,5 @@
|
||||
% /*!
|
||||
% * \file galileo_e5a_dll_pll_plot_sample_64bits.m
|
||||
% * \file galileo_e5a_dll_pll_plot_sample.m
|
||||
% * \brief Read GNSS-SDR Tracking dump binary file using the provided
|
||||
% function and plot some internal variables
|
||||
% * \author Javier Arribas, Marc Sales 2014. jarribas(at)cttc.es
|
||||
@@ -30,41 +30,43 @@
|
||||
% */
|
||||
close all;
|
||||
clear all;
|
||||
samplingFreq = 64e6/32; %[Hz]
|
||||
channels=1;
|
||||
samplingFreq = 5000000; %[Hz]
|
||||
channels = 1;
|
||||
first_channel = 30;
|
||||
%path='/home/javier/workspace/gnss-sdr/trunk/install/';
|
||||
path='/home/marc/git/gnss-sdr/data/';
|
||||
clear PRN_absolute_sample_start;
|
||||
%path='/home/marc/git/gnss-sdr/data/';
|
||||
path = '/Users/carlesfernandez/git/cttc/build/';
|
||||
|
||||
for N=1:1:channels
|
||||
tracking_log_path=[path 'e5a_tracking_ch_' num2str(N-1) '.dat'];
|
||||
GNSS_tracking(N)= gps_l1_ca_dll_pll_read_tracking_dump_64bits(tracking_log_path);
|
||||
tracking_log_path = [path 'tracking_ch_' num2str(N+first_channel-1) '.dat'];
|
||||
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).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_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_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=N; %fake PRN
|
||||
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);
|
||||
settings.numberOfChannels = channels;
|
||||
settings.msToProcess = length(GNSS_tracking(N).E);
|
||||
plotTrackingE5a(N,trackResults,settings)
|
||||
end
|
||||
|
||||
@@ -1,88 +0,0 @@
|
||||
% /*!
|
||||
% * \file gps_l1_ca_dll_fll_pll_plot_sample.m
|
||||
% * \brief Read GNSS-SDR Tracking dump binary file using the provided
|
||||
% function and plot some internal variables
|
||||
% * \author Javier Arribas, 2011. jarribas(at)cttc.es
|
||||
% * -------------------------------------------------------------------------
|
||||
% *
|
||||
% * Copyright (C) 2010-2011 (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 <http://www.gnu.org/licenses/>.
|
||||
% *
|
||||
% * -------------------------------------------------------------------------
|
||||
% */
|
||||
%close all;
|
||||
%clear all;
|
||||
samplingFreq = 64e6/16; %[Hz]
|
||||
channels=4;
|
||||
path='/home/javier/workspace/gnss-sdr-ref/trunk/install/';
|
||||
for N=1:1:channels
|
||||
tracking_log_path=[path 'tracking_ch_' num2str(N-1) '.dat'];
|
||||
GNSS_tracking(N)= gps_l1_ca_dll_fll_pll_read_tracking_dump(tracking_log_path,samplingFreq);
|
||||
end
|
||||
|
||||
% GNSS-SDR format conversion to MATLAB GPS receiver
|
||||
channel_PRN_ID=[32,14,20,11];
|
||||
tracking_loop_start=1;%10001;
|
||||
tracking_loop_end=70000;
|
||||
for N=1:1:channels
|
||||
trackResults_sdr(N).status='T'; %fake track
|
||||
trackResults_sdr(N).codeFreq=GNSS_tracking(N).code_freq_hz(tracking_loop_start:tracking_loop_end).';
|
||||
trackResults_sdr(N).carrFreq=GNSS_tracking(N).carrier_doppler_hz(tracking_loop_start:tracking_loop_end).';
|
||||
trackResults_sdr(N).dllDiscr = GNSS_tracking(N).code_error_chips(tracking_loop_start:tracking_loop_end).';
|
||||
trackResults_sdr(N).dllDiscrFilt = GNSS_tracking(N).code_phase_samples(tracking_loop_start:tracking_loop_end).';
|
||||
trackResults_sdr(N).pllDiscr = GNSS_tracking(N).PLL_discriminator_hz(tracking_loop_start:tracking_loop_end).';
|
||||
trackResults_sdr(N).pllDiscrFilt = GNSS_tracking(N).carr_nco(tracking_loop_start:tracking_loop_end).';
|
||||
trackResults_sdr(N).absoluteSample = (GNSS_tracking(N).var2(tracking_loop_start:tracking_loop_end)+GNSS_tracking(N).var1(tracking_loop_start:tracking_loop_end)).';
|
||||
|
||||
trackResults_sdr(N).prn_delay_ms = 1000*trackResults_sdr(N).absoluteSample/samplingFreq;
|
||||
%trackResults_sdr(N).absoluteSample = (GNSS_tracking(N).PRN_start_sample(tracking_loop_start:tracking_loop_end)+GNSS_tracking(N).var1(tracking_loop_start:tracking_loop_end)).';
|
||||
|
||||
trackResults_sdr(N).I_P=GNSS_tracking(N).prompt_I(tracking_loop_start:tracking_loop_end).';
|
||||
trackResults_sdr(N).Q_P=GNSS_tracking(N).prompt_Q(tracking_loop_start:tracking_loop_end).';
|
||||
|
||||
trackResults_sdr(N).I_E= GNSS_tracking(N).E(tracking_loop_start:tracking_loop_end).';
|
||||
trackResults_sdr(N).I_L = GNSS_tracking(N).L(tracking_loop_start:tracking_loop_end).';
|
||||
trackResults_sdr(N).Q_E = zeros(1,tracking_loop_end-tracking_loop_start+1);
|
||||
trackResults_sdr(N).Q_L =zeros(1,tracking_loop_end-tracking_loop_start+1);
|
||||
trackResults_sdr(N).PRN=channel_PRN_ID(N);
|
||||
|
||||
% Use original MATLAB tracking plot function
|
||||
settings.numberOfChannels=channels;
|
||||
settings.msToProcess=tracking_loop_end-tracking_loop_start+1;
|
||||
%plotTracking(N,trackResults_sdr,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)]);
|
||||
% end
|
||||
|
||||
|
||||
@@ -29,54 +29,42 @@
|
||||
% */
|
||||
close all;
|
||||
clear all;
|
||||
samplingFreq = 64e6/16; %[Hz]
|
||||
channels=4;
|
||||
path='/home/javier/workspace/gnss-sdr/trunk/install/';
|
||||
clear PRN_absolute_sample_start;
|
||||
samplingFreq = 5000000; %[Hz]
|
||||
channels = 7;
|
||||
first_channel = 0;
|
||||
|
||||
%path='/home/javier/workspace/gnss-sdr/trunk/install/';
|
||||
path = '/Users/carlesfernandez/git/cttc/build/';
|
||||
|
||||
for N=1:1:channels
|
||||
tracking_log_path=[path 'tracking_ch_' num2str(N-1) '.dat'];
|
||||
tracking_log_path = [path 'epl_tracking_ch_' num2str(N+first_channel-1) '.dat'];
|
||||
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).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_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_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=N; %fake PRN
|
||||
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);
|
||||
settings.numberOfChannels = channels;
|
||||
settings.msToProcess = length(GNSS_tracking(N).E);
|
||||
plotTracking(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)]);
|
||||
% end
|
||||
|
||||
|
||||
|
||||
@@ -1,89 +0,0 @@
|
||||
% /*!
|
||||
% * \file gps_l1_ca_dll_pll_plot_sample_64bits.m
|
||||
% * \brief Read GNSS-SDR Tracking dump binary file using the provided
|
||||
% function and plot some internal variables
|
||||
% * \author Javier Arribas, 2011. jarribas(at)cttc.es
|
||||
% * -------------------------------------------------------------------------
|
||||
% *
|
||||
% * Copyright (C) 2010-2011 (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 <http://www.gnu.org/licenses/>.
|
||||
% *
|
||||
% * -------------------------------------------------------------------------
|
||||
% */
|
||||
close all;
|
||||
clear all;
|
||||
samplingFreq = 64e6/32; %[Hz]
|
||||
channels=1;
|
||||
%path='/home/javier/workspace/gnss-sdr/trunk/install/';
|
||||
path='/home/luis/dev/gnss-sdr/trunk/data/';
|
||||
clear PRN_absolute_sample_start;
|
||||
for N=1:1:channels
|
||||
tracking_log_path=[path 'tracking_ch_' num2str(N-1) '.dat'];
|
||||
GNSS_tracking(N)= gps_l1_ca_dll_pll_read_tracking_dump_64bits(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=N; %fake PRN
|
||||
|
||||
% Use original MATLAB tracking plot function
|
||||
settings.numberOfChannels=channels;
|
||||
settings.msToProcess=length(GNSS_tracking(N).E);
|
||||
plotTracking(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
|
||||
|
||||
|
||||
@@ -25,23 +25,39 @@
|
||||
% * along with GNSS-SDR. If not, see <http://www.gnu.org/licenses/>.
|
||||
% *
|
||||
% * -------------------------------------------------------------------------
|
||||
% */
|
||||
function [GNSS_tracking] = galileo_e1_dll_pll_veml_read_tracking_dump (filename, count)
|
||||
% */
|
||||
|
||||
function [GNSS_tracking] = galileo_e1_dll_pll_veml_read_tracking_dump (filename, count)
|
||||
%% usage: galileo_e1_dll_pll_veml_read_tracking_dump (filename, [count])
|
||||
%%
|
||||
%% open GNSS-SDR tracking binary log file .dat and return the contents
|
||||
%%
|
||||
|
||||
m = nargchk (1,2,nargin);
|
||||
num_float_vars=17;
|
||||
num_unsigned_long_int_vars=1;
|
||||
num_double_vars=1;
|
||||
double_size_bytes=8;
|
||||
unsigned_long_int_size_bytes=8;
|
||||
float_size_bytes=4;
|
||||
skip_bytes_each_read=float_size_bytes*num_float_vars+unsigned_long_int_size_bytes*num_unsigned_long_int_vars+double_size_bytes*num_double_vars;
|
||||
bytes_shift=0;
|
||||
|
||||
num_float_vars = 17;
|
||||
num_unsigned_long_int_vars = 1;
|
||||
num_double_vars = 1;
|
||||
num_unsigned_int_vars = 1;
|
||||
|
||||
if(~isempty(strfind(computer('arch'), '64')))
|
||||
% 64-bit computer
|
||||
double_size_bytes = 8;
|
||||
unsigned_long_int_size_bytes = 8;
|
||||
float_size_bytes = 4;
|
||||
unsigned_int_size_bytes = 4;
|
||||
else
|
||||
double_size_bytes = 8;
|
||||
unsigned_long_int_size_bytes = 4;
|
||||
float_size_bytes = 4;
|
||||
unsigned_int_size_bytes = 4;
|
||||
end
|
||||
|
||||
skip_bytes_each_read = float_size_bytes * num_float_vars + unsigned_long_int_size_bytes * num_unsigned_long_int_vars + ...
|
||||
double_size_bytes * num_double_vars + num_unsigned_int_vars*unsigned_int_size_bytes;
|
||||
|
||||
bytes_shift = 0;
|
||||
|
||||
if (m)
|
||||
usage (m);
|
||||
end
|
||||
@@ -53,140 +69,85 @@ function [GNSS_tracking] = galileo_e1_dll_pll_veml_read_tracking_dump (filename,
|
||||
f = fopen (filename, 'rb');
|
||||
if (f < 0)
|
||||
else
|
||||
v1 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
v1 = fread (f, count, 'float', skip_bytes_each_read - float_size_bytes);
|
||||
bytes_shift = bytes_shift + float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v2 = fread (f, count, 'float', skip_bytes_each_read - float_size_bytes);
|
||||
bytes_shift = bytes_shift + float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v3 = fread (f, count, 'float', skip_bytes_each_read - float_size_bytes);
|
||||
bytes_shift = bytes_shift + float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v4 = fread (f, count, 'float', skip_bytes_each_read - float_size_bytes);
|
||||
bytes_shift = bytes_shift + float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v5 = fread (f, count, 'float', skip_bytes_each_read - float_size_bytes);
|
||||
bytes_shift = bytes_shift + float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v6 = fread (f, count, 'float', skip_bytes_each_read - float_size_bytes);
|
||||
bytes_shift = bytes_shift + float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v7 = fread (f, count, 'float', skip_bytes_each_read - float_size_bytes);
|
||||
bytes_shift = bytes_shift + float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v2 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
v8 = fread (f, count, 'long', skip_bytes_each_read - unsigned_long_int_size_bytes);
|
||||
bytes_shift = bytes_shift + unsigned_long_int_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v9 = fread (f, count, 'float', skip_bytes_each_read - float_size_bytes);
|
||||
bytes_shift = bytes_shift + float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v10 = fread (f, count, 'float', skip_bytes_each_read - float_size_bytes);
|
||||
bytes_shift = bytes_shift + float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v11 = fread (f, count, 'float', skip_bytes_each_read - float_size_bytes);
|
||||
bytes_shift = bytes_shift + float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v12 = fread (f, count, 'float', skip_bytes_each_read - float_size_bytes);
|
||||
bytes_shift = bytes_shift + float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v13 = fread (f, count, 'float', skip_bytes_each_read - float_size_bytes);
|
||||
bytes_shift = bytes_shift + float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v14 = fread (f, count, 'float', skip_bytes_each_read - float_size_bytes);
|
||||
bytes_shift = bytes_shift + float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v15 = fread (f, count, 'float', skip_bytes_each_read - float_size_bytes);
|
||||
bytes_shift = bytes_shift + float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v16 = fread (f, count, 'float', skip_bytes_each_read - float_size_bytes);
|
||||
bytes_shift = bytes_shift + float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v3 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v4 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v5 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v6 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v7 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v8 = fread (f, count, 'uint64',skip_bytes_each_read-unsigned_long_int_size_bytes);
|
||||
bytes_shift=bytes_shift+unsigned_long_int_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v9 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v10 = fread (f, count, '*float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v11 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v12 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v13 = fread (f, count, '*float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v14 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v15 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v16 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v17 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v18 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v19 = fread (f, count, 'float64',skip_bytes_each_read-double_size_bytes);
|
||||
v17 = fread (f, count, 'float', skip_bytes_each_read - float_size_bytes);
|
||||
bytes_shift = bytes_shift + float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v18 = fread (f, count, 'float', skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift = bytes_shift + float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next double
|
||||
v19 = fread (f, count, 'double', skip_bytes_each_read - double_size_bytes);
|
||||
bytes_shift = bytes_shift + double_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next unsigned int
|
||||
v20 = fread (f, count, 'uint', skip_bytes_each_read - unsigned_int_size_bytes);
|
||||
fclose (f);
|
||||
|
||||
%%%%%%%% output vars %%%%%%%%
|
||||
|
||||
% // EPR
|
||||
% d_dump_file.write((char*)&tmp_VE, sizeof(float));
|
||||
% d_dump_file.write((char*)&tmp_E, sizeof(float));
|
||||
% d_dump_file.write((char*)&tmp_P, sizeof(float));
|
||||
% d_dump_file.write((char*)&tmp_L, sizeof(float));
|
||||
% d_dump_file.write((char*)&tmp_VL, sizeof(float));
|
||||
% // PROMPT I and Q (to analyze navigation symbols)
|
||||
% d_dump_file.write((char*)&prompt_I, sizeof(float));
|
||||
% d_dump_file.write((char*)&prompt_Q, sizeof(float));
|
||||
% // PRN start sample stamp
|
||||
% //tmp_float=(float)d_sample_counter;
|
||||
% d_dump_file.write((char*)&d_sample_counter, sizeof(unsigned long int));
|
||||
% // accumulated carrier phase
|
||||
% d_dump_file.write((char*)&d_acc_carrier_phase_rad, sizeof(float));
|
||||
%
|
||||
% // carrier and code frequency
|
||||
% d_dump_file.write((char*)&d_carrier_doppler_hz, sizeof(float));
|
||||
% d_dump_file.write((char*)&d_code_freq_hz, sizeof(float));
|
||||
%
|
||||
% //PLL commands
|
||||
% d_dump_file.write((char*)&carr_error, sizeof(float));
|
||||
% d_dump_file.write((char*)&carr_nco, sizeof(float));
|
||||
%
|
||||
% //DLL commands
|
||||
% d_dump_file.write((char*)&code_error, sizeof(float));
|
||||
% d_dump_file.write((char*)&code_nco, sizeof(float));
|
||||
%
|
||||
% // CN0 and carrier lock test
|
||||
% d_dump_file.write((char*)&d_CN0_SNV_dB_Hz, sizeof(float));
|
||||
% d_dump_file.write((char*)&d_carrier_lock_test, sizeof(float));
|
||||
%
|
||||
% // AUX vars (for debug purposes)
|
||||
% tmp_float = d_rem_code_phase_samples;
|
||||
% d_dump_file.write((char*)&tmp_float, sizeof(float));
|
||||
% tmp_double=(double)(d_sample_counter+d_current_prn_length_samples);
|
||||
% d_dump_file.write((char*)&tmp_double, sizeof(double));
|
||||
|
||||
VE=v1;
|
||||
E=v2;
|
||||
P=v3;
|
||||
L=v4;
|
||||
VL=v5;
|
||||
prompt_I=v6;
|
||||
prompt_Q=v7;
|
||||
PRN_start_sample=v8;
|
||||
acc_carrier_phase_rad=v9;
|
||||
carrier_doppler_hz=v10;
|
||||
code_freq_hz=v11;
|
||||
carr_error=v12;
|
||||
carr_nco=v13;
|
||||
code_error=v14;
|
||||
code_nco=v15;
|
||||
CN0_SNV_dB_Hz=v16;
|
||||
carrier_lock_test=v17;
|
||||
var1=v18;
|
||||
var2=v19;
|
||||
|
||||
GNSS_tracking.VE=VE;
|
||||
GNSS_tracking.E=E;
|
||||
GNSS_tracking.P=P;
|
||||
GNSS_tracking.L=L;
|
||||
GNSS_tracking.VL=VL;
|
||||
GNSS_tracking.prompt_I=prompt_I;
|
||||
GNSS_tracking.prompt_Q=prompt_Q;
|
||||
GNSS_tracking.PRN_start_sample=PRN_start_sample;
|
||||
GNSS_tracking.acc_carrier_phase_rad=acc_carrier_phase_rad;
|
||||
GNSS_tracking.carrier_doppler_hz=carrier_doppler_hz;
|
||||
GNSS_tracking.code_freq_hz=code_freq_hz;
|
||||
GNSS_tracking.carr_error=carr_error;
|
||||
GNSS_tracking.carr_nco=carr_nco;
|
||||
GNSS_tracking.code_error=code_error;
|
||||
GNSS_tracking.code_nco=code_nco;
|
||||
GNSS_tracking.CN0_SNV_dB_Hz=CN0_SNV_dB_Hz;
|
||||
GNSS_tracking.carrier_lock_test=carrier_lock_test;
|
||||
GNSS_tracking.var1=var1;
|
||||
GNSS_tracking.var2=var2;
|
||||
GNSS_tracking.VE = v1;
|
||||
GNSS_tracking.E = v2;
|
||||
GNSS_tracking.P = v3;
|
||||
GNSS_tracking.L = v4;
|
||||
GNSS_tracking.VL = v5;
|
||||
GNSS_tracking.prompt_I = v6;
|
||||
GNSS_tracking.prompt_Q = v7;
|
||||
GNSS_tracking.PRN_start_sample = v8;
|
||||
GNSS_tracking.acc_carrier_phase_rad = v9;
|
||||
GNSS_tracking.carrier_doppler_hz = v10;
|
||||
GNSS_tracking.code_freq_hz = v11;
|
||||
GNSS_tracking.carr_error = v12;
|
||||
GNSS_tracking.carr_nco = v13;
|
||||
GNSS_tracking.code_error = v14;
|
||||
GNSS_tracking.code_nco = v15;
|
||||
GNSS_tracking.CN0_SNV_dB_Hz = v16;
|
||||
GNSS_tracking.carrier_lock_test = v17;
|
||||
GNSS_tracking.var1 = v18;
|
||||
GNSS_tracking.var2 = v19;
|
||||
GNSS_tracking.PRN = v20;
|
||||
end
|
||||
|
||||
|
||||
@@ -1,192 +0,0 @@
|
||||
% /*!
|
||||
% * \file galileo_e1_dll_pll_veml_read_tracking_dump.m
|
||||
% * \brief Read GNSS-SDR Tracking dump binary file into MATLAB.
|
||||
% * \author Luis Esteve, 2012. luis(at)epsilon-formacion.com
|
||||
% * -------------------------------------------------------------------------
|
||||
% *
|
||||
% * Copyright (C) 2010-2012 (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 <http://www.gnu.org/licenses/>.
|
||||
% *
|
||||
% * -------------------------------------------------------------------------
|
||||
% */
|
||||
function [GNSS_tracking] = galileo_e1_dll_pll_veml_read_tracking_dump_32bits (filename, count)
|
||||
|
||||
%% usage: galileo_e1_dll_pll_veml_read_tracking_dump (filename, [count])
|
||||
%%
|
||||
%% open GNSS-SDR tracking binary log file .dat and return the contents
|
||||
%%
|
||||
|
||||
m = nargchk (1,2,nargin);
|
||||
num_float_vars=17;
|
||||
num_unsigned_long_int_vars=1;
|
||||
num_double_vars=1;
|
||||
double_size_bytes=8;
|
||||
unsigned_long_int_size_bytes=4;
|
||||
float_size_bytes=4;
|
||||
skip_bytes_each_read=float_size_bytes*num_float_vars+unsigned_long_int_size_bytes*num_unsigned_long_int_vars+double_size_bytes*num_double_vars;
|
||||
bytes_shift=0;
|
||||
if (m)
|
||||
usage (m);
|
||||
end
|
||||
|
||||
if (nargin < 2)
|
||||
count = Inf;
|
||||
end
|
||||
%loops_counter = fread (f, count, 'uint32',4*12);
|
||||
f = fopen (filename, 'rb');
|
||||
if (f < 0)
|
||||
else
|
||||
v1 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v2 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v3 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v4 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v5 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v6 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v7 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v8 = fread (f, count, 'uint32',skip_bytes_each_read-unsigned_long_int_size_bytes);
|
||||
bytes_shift=bytes_shift+unsigned_long_int_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v9 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v10 = fread (f, count, '*float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v11 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v12 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v13 = fread (f, count, '*float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v14 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v15 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v16 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v17 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v18 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v19 = fread (f, count, 'float64',skip_bytes_each_read-double_size_bytes);
|
||||
fclose (f);
|
||||
|
||||
%%%%%%%% output vars %%%%%%%%
|
||||
|
||||
% // EPR
|
||||
% d_dump_file.write((char*)&tmp_VE, sizeof(float));
|
||||
% d_dump_file.write((char*)&tmp_E, sizeof(float));
|
||||
% d_dump_file.write((char*)&tmp_P, sizeof(float));
|
||||
% d_dump_file.write((char*)&tmp_L, sizeof(float));
|
||||
% d_dump_file.write((char*)&tmp_VL, sizeof(float));
|
||||
% // PROMPT I and Q (to analyze navigation symbols)
|
||||
% d_dump_file.write((char*)&prompt_I, sizeof(float));
|
||||
% d_dump_file.write((char*)&prompt_Q, sizeof(float));
|
||||
% // PRN start sample stamp
|
||||
% //tmp_float=(float)d_sample_counter;
|
||||
% d_dump_file.write((char*)&d_sample_counter, sizeof(unsigned long int));
|
||||
% // accumulated carrier phase
|
||||
% d_dump_file.write((char*)&d_acc_carrier_phase_rad, sizeof(float));
|
||||
%
|
||||
% // carrier and code frequency
|
||||
% d_dump_file.write((char*)&d_carrier_doppler_hz, sizeof(float));
|
||||
% d_dump_file.write((char*)&d_code_freq_hz, sizeof(float));
|
||||
%
|
||||
% //PLL commands
|
||||
% d_dump_file.write((char*)&carr_error, sizeof(float));
|
||||
% d_dump_file.write((char*)&carr_nco, sizeof(float));
|
||||
%
|
||||
% //DLL commands
|
||||
% d_dump_file.write((char*)&code_error, sizeof(float));
|
||||
% d_dump_file.write((char*)&code_nco, sizeof(float));
|
||||
%
|
||||
% // CN0 and carrier lock test
|
||||
% d_dump_file.write((char*)&d_CN0_SNV_dB_Hz, sizeof(float));
|
||||
% d_dump_file.write((char*)&d_carrier_lock_test, sizeof(float));
|
||||
%
|
||||
% // AUX vars (for debug purposes)
|
||||
% tmp_float = d_rem_code_phase_samples;
|
||||
% d_dump_file.write((char*)&tmp_float, sizeof(float));
|
||||
% tmp_double=(double)(d_sample_counter+d_current_prn_length_samples);
|
||||
% d_dump_file.write((char*)&tmp_double, sizeof(double));
|
||||
|
||||
VE=v1;
|
||||
E=v2;
|
||||
P=v3;
|
||||
L=v4;
|
||||
VL=v5;
|
||||
prompt_I=v6;
|
||||
prompt_Q=v7;
|
||||
PRN_start_sample=v8;
|
||||
acc_carrier_phase_rad=v9;
|
||||
carrier_doppler_hz=v10;
|
||||
code_freq_hz=v11;
|
||||
carr_error=v12;
|
||||
carr_nco=v13;
|
||||
code_error=v14;
|
||||
code_nco=v15;
|
||||
CN0_SNV_dB_Hz=v16;
|
||||
carrier_lock_test=v17;
|
||||
var1=v18;
|
||||
var2=v19;
|
||||
|
||||
GNSS_tracking.VE=VE;
|
||||
GNSS_tracking.E=E;
|
||||
GNSS_tracking.P=P;
|
||||
GNSS_tracking.L=L;
|
||||
GNSS_tracking.VL=VL;
|
||||
GNSS_tracking.prompt_I=prompt_I;
|
||||
GNSS_tracking.prompt_Q=prompt_Q;
|
||||
GNSS_tracking.PRN_start_sample=PRN_start_sample;
|
||||
GNSS_tracking.acc_carrier_phase_rad=acc_carrier_phase_rad;
|
||||
GNSS_tracking.carrier_doppler_hz=carrier_doppler_hz;
|
||||
GNSS_tracking.code_freq_hz=code_freq_hz;
|
||||
GNSS_tracking.carr_error=carr_error;
|
||||
GNSS_tracking.carr_nco=carr_nco;
|
||||
GNSS_tracking.code_error=code_error;
|
||||
GNSS_tracking.code_nco=code_nco;
|
||||
GNSS_tracking.CN0_SNV_dB_Hz=CN0_SNV_dB_Hz;
|
||||
GNSS_tracking.carrier_lock_test=carrier_lock_test;
|
||||
GNSS_tracking.var1=var1;
|
||||
GNSS_tracking.var2=var2;
|
||||
end
|
||||
|
||||
@@ -34,12 +34,26 @@ function [GNSS_tracking] = gps_l1_ca_dll_pll_read_tracking_dump (filename, count
|
||||
%%
|
||||
|
||||
m = nargchk (1,2,nargin);
|
||||
num_float_vars=16;
|
||||
num_double_vars=2;
|
||||
double_size_bytes=8;
|
||||
float_size_bytes=4;
|
||||
skip_bytes_each_read=float_size_bytes*num_float_vars+double_size_bytes*num_double_vars;
|
||||
bytes_shift=0;
|
||||
num_float_vars = 5;
|
||||
num_double_vars = 11;
|
||||
num_ulong_vars = 1;
|
||||
num_uint_vars = 1;
|
||||
|
||||
if(~isempty(strfind(computer('arch'), '64')))
|
||||
% 64-bit computer
|
||||
double_size_bytes = 8;
|
||||
unsigned_long_int_size_bytes = 8;
|
||||
float_size_bytes = 4;
|
||||
unsigned_int_size_bytes = 4;
|
||||
else
|
||||
double_size_bytes = 8;
|
||||
unsigned_long_int_size_bytes = 4;
|
||||
float_size_bytes = 4;
|
||||
unsigned_int_size_bytes = 4;
|
||||
end
|
||||
|
||||
skip_bytes_each_read = float_size_bytes*num_float_vars + double_size_bytes*num_double_vars + unsigned_int_size_bytes*num_uint_vars + unsigned_long_int_size_bytes*num_ulong_vars;
|
||||
bytes_shift = 0;
|
||||
if (m)
|
||||
usage (m);
|
||||
end
|
||||
@@ -53,130 +67,76 @@ function [GNSS_tracking] = gps_l1_ca_dll_pll_read_tracking_dump (filename, count
|
||||
else
|
||||
v1 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v2 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v3 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v4 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v5 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v6 = fread (f, count, 'uint32',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v7 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v8 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v9 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v10 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v11 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v12 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v13 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v14 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v15 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v16 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v17 = fread (f, count, 'float64',skip_bytes_each_read-double_size_bytes);
|
||||
fseek(f,bytes_shift,'bof'); % move to next unsigned long int
|
||||
v6 = fread (f, count, 'long',skip_bytes_each_read-unsigned_long_int_size_bytes);
|
||||
bytes_shift=bytes_shift+unsigned_long_int_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v7 = fread (f, count, 'double',skip_bytes_each_read-double_size_bytes);
|
||||
bytes_shift=bytes_shift+double_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v8 = fread (f, count, 'double',skip_bytes_each_read-double_size_bytes);
|
||||
bytes_shift=bytes_shift+double_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v9 = fread (f, count, 'double',skip_bytes_each_read-double_size_bytes);
|
||||
bytes_shift=bytes_shift+double_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v10 = fread (f, count, 'double',skip_bytes_each_read-double_size_bytes);
|
||||
bytes_shift=bytes_shift+double_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v11 = fread (f, count, 'double',skip_bytes_each_read-double_size_bytes);
|
||||
bytes_shift=bytes_shift+double_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v12 = fread (f, count, 'double',skip_bytes_each_read-double_size_bytes);
|
||||
bytes_shift=bytes_shift+double_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v13 = fread (f, count, 'double',skip_bytes_each_read-double_size_bytes);
|
||||
bytes_shift=bytes_shift+double_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v14 = fread (f, count, 'double',skip_bytes_each_read-double_size_bytes);
|
||||
bytes_shift=bytes_shift+double_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v15 = fread (f, count, 'double',skip_bytes_each_read-double_size_bytes);
|
||||
bytes_shift=bytes_shift+double_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v18 = fread (f, count, 'float64',skip_bytes_each_read-double_size_bytes);
|
||||
fseek(f,bytes_shift,'bof'); % move to next float
|
||||
v16 = fread (f, count, 'double',skip_bytes_each_read-double_size_bytes);
|
||||
bytes_shift=bytes_shift+double_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next double
|
||||
v17 = fread (f, count, 'double',skip_bytes_each_read-double_size_bytes);
|
||||
bytes_shift=bytes_shift+double_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next double
|
||||
v18 = fread (f, count, 'uint', skip_bytes_each_read - unsigned_int_size_bytes);
|
||||
fclose (f);
|
||||
|
||||
%%%%%%%% output vars %%%%%%%%
|
||||
|
||||
% // EPR
|
||||
% d_dump_file.write((char*)&tmp_E, sizeof(float));
|
||||
% d_dump_file.write((char*)&tmp_P, sizeof(float));
|
||||
% d_dump_file.write((char*)&tmp_L, sizeof(float));
|
||||
% // PROMPT I and Q (to analyze navigation symbols)
|
||||
% d_dump_file.write((char*)&prompt_I, sizeof(float));
|
||||
% d_dump_file.write((char*)&prompt_Q, sizeof(float));
|
||||
% // PRN start sample stamp
|
||||
% //tmp_float=(float)d_sample_counter;
|
||||
% d_dump_file.write((char*)&d_sample_counter, sizeof(unsigned long int));
|
||||
% // accumulated carrier phase
|
||||
% d_dump_file.write((char*)&d_acc_carrier_phase_rad, sizeof(float));
|
||||
%
|
||||
% // carrier and code frequency
|
||||
% d_dump_file.write((char*)&d_carrier_doppler_hz, sizeof(float));
|
||||
% d_dump_file.write((char*)&d_code_freq_hz, sizeof(float));
|
||||
%
|
||||
% //PLL commands
|
||||
% d_dump_file.write((char*)&carr_error, sizeof(float));
|
||||
% d_dump_file.write((char*)&carr_nco, sizeof(float));
|
||||
%
|
||||
% //DLL commands
|
||||
% d_dump_file.write((char*)&code_error, sizeof(float));
|
||||
% d_dump_file.write((char*)&code_nco, sizeof(float));
|
||||
%
|
||||
% // CN0 and carrier lock test
|
||||
% d_dump_file.write((char*)&d_CN0_SNV_dB_Hz, sizeof(float));
|
||||
% d_dump_file.write((char*)&d_carrier_lock_test, sizeof(float));
|
||||
%
|
||||
% // AUX vars (for debug purposes)
|
||||
% tmp_float=0;
|
||||
% d_dump_file.write((char*)&tmp_float, sizeof(float));
|
||||
% d_dump_file.write((char*)&d_sample_counter_seconds, sizeof(double));
|
||||
|
||||
E=v1;
|
||||
P=v2;
|
||||
L=v3;
|
||||
prompt_I=v4;
|
||||
prompt_Q=v5;
|
||||
PRN_start_sample=v6;
|
||||
acc_carrier_phase_rad=v7;
|
||||
carrier_doppler_hz=v8;
|
||||
code_freq_hz=v9;
|
||||
carr_error=v10;
|
||||
carr_nco=v11;
|
||||
code_error=v12;
|
||||
code_nco=v13;
|
||||
CN0_SNV_dB_Hz=v14;
|
||||
carrier_lock_test=v15;
|
||||
var1=v16;
|
||||
var2=v17;
|
||||
var3=v18;
|
||||
|
||||
GNSS_tracking.E=E;
|
||||
GNSS_tracking.P=P;
|
||||
GNSS_tracking.L=L;
|
||||
GNSS_tracking.prompt_I=prompt_I;
|
||||
GNSS_tracking.prompt_Q=prompt_Q;
|
||||
GNSS_tracking.PRN_start_sample=PRN_start_sample;
|
||||
GNSS_tracking.acc_carrier_phase_rad=acc_carrier_phase_rad;
|
||||
GNSS_tracking.carrier_doppler_hz=carrier_doppler_hz;
|
||||
GNSS_tracking.code_freq_hz=code_freq_hz;
|
||||
GNSS_tracking.carr_error=carr_error;
|
||||
GNSS_tracking.carr_nco=carr_nco;
|
||||
GNSS_tracking.code_error=code_error;
|
||||
GNSS_tracking.code_nco=code_nco;
|
||||
GNSS_tracking.CN0_SNV_dB_Hz=CN0_SNV_dB_Hz;
|
||||
GNSS_tracking.carrier_lock_test=carrier_lock_test;
|
||||
GNSS_tracking.var1=var1;
|
||||
GNSS_tracking.var2=var2;
|
||||
GNSS_tracking.var3=var3;
|
||||
|
||||
|
||||
GNSS_tracking.E = v1;
|
||||
GNSS_tracking.P = v2;
|
||||
GNSS_tracking.L = v3;
|
||||
GNSS_tracking.prompt_I = v4;
|
||||
GNSS_tracking.prompt_Q = v5;
|
||||
GNSS_tracking.PRN_start_sample = v6;
|
||||
GNSS_tracking.acc_carrier_phase_rad = v7;
|
||||
GNSS_tracking.carrier_doppler_hz = v8;
|
||||
GNSS_tracking.code_freq_hz = v9;
|
||||
GNSS_tracking.carr_error = v10;
|
||||
GNSS_tracking.carr_nco = v11;
|
||||
GNSS_tracking.code_error = v12;
|
||||
GNSS_tracking.code_nco = v13;
|
||||
GNSS_tracking.CN0_SNV_dB_Hz = v14;
|
||||
GNSS_tracking.carrier_lock_test = v15;
|
||||
GNSS_tracking.var1 = v16;
|
||||
GNSS_tracking.var2 = v17;
|
||||
GNSS_tracking.PRN = v18;
|
||||
end
|
||||
|
||||
|
||||
@@ -1,179 +0,0 @@
|
||||
% /*!
|
||||
% * \file gps_l1_ca_dll_pll_read_tracking_dump.m
|
||||
% * \brief Read GNSS-SDR Tracking dump binary file into MATLAB.
|
||||
% * \author Javier Arribas, 2011. jarribas(at)cttc.es
|
||||
% * -------------------------------------------------------------------------
|
||||
% *
|
||||
% * Copyright (C) 2010-2011 (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 <http://www.gnu.org/licenses/>.
|
||||
% *
|
||||
% * -------------------------------------------------------------------------
|
||||
% */
|
||||
function [GNSS_tracking] = gps_l1_ca_dll_pll_read_tracking_dump_64bits (filename, count)
|
||||
|
||||
%% usage: gps_l1_ca_dll_pll_read_tracking_dump_64bits (filename, [count])
|
||||
%%
|
||||
%% open GNSS-SDR tracking binary log file .dat and return the contents
|
||||
%%
|
||||
|
||||
m = nargchk (1,2,nargin);
|
||||
num_float_vars=15;
|
||||
num_unsigned_long_int_vars=1;
|
||||
num_double_vars=1;
|
||||
double_size_bytes=8;
|
||||
unsigned_long_int_size_bytes=8;
|
||||
float_size_bytes=4;
|
||||
skip_bytes_each_read=float_size_bytes*num_float_vars+unsigned_long_int_size_bytes*num_unsigned_long_int_vars+double_size_bytes*num_double_vars;
|
||||
bytes_shift=0;
|
||||
if (m)
|
||||
usage (m);
|
||||
end
|
||||
|
||||
if (nargin < 2)
|
||||
count = Inf;
|
||||
end
|
||||
%loops_counter = fread (f, count, 'uint32',4*12);
|
||||
f = fopen (filename, 'rb');
|
||||
if (f < 0)
|
||||
else
|
||||
v1 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v2 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v3 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v4 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v5 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v6 = fread (f, count, 'uint64',skip_bytes_each_read-unsigned_long_int_size_bytes);
|
||||
bytes_shift=bytes_shift+unsigned_long_int_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v7 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v8 = fread (f, count, '*float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v9 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v10 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v11 = fread (f, count, '*float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v12 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v13 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v14 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v15 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v16 = fread (f, count, 'float',skip_bytes_each_read-float_size_bytes);
|
||||
bytes_shift=bytes_shift+float_size_bytes;
|
||||
fseek(f,bytes_shift,'bof'); % move to next interleaved float
|
||||
v17 = fread (f, count, 'float64',skip_bytes_each_read-double_size_bytes);
|
||||
fclose (f);
|
||||
|
||||
%%%%%%%% output vars %%%%%%%%
|
||||
|
||||
% // EPR
|
||||
% d_dump_file.write((char*)&tmp_E, sizeof(float));
|
||||
% d_dump_file.write((char*)&tmp_P, sizeof(float));
|
||||
% d_dump_file.write((char*)&tmp_L, sizeof(float));
|
||||
% // PROMPT I and Q (to analyze navigation symbols)
|
||||
% d_dump_file.write((char*)&prompt_I, sizeof(float));
|
||||
% d_dump_file.write((char*)&prompt_Q, sizeof(float));
|
||||
% // PRN start sample stamp
|
||||
% //tmp_float=(float)d_sample_counter;
|
||||
% d_dump_file.write((char*)&d_sample_counter, sizeof(unsigned long int));
|
||||
% // accumulated carrier phase
|
||||
% d_dump_file.write((char*)&d_acc_carrier_phase_rad, sizeof(float));
|
||||
%
|
||||
% // carrier and code frequency
|
||||
% d_dump_file.write((char*)&d_carrier_doppler_hz, sizeof(float));
|
||||
% d_dump_file.write((char*)&d_code_freq_hz, sizeof(float));
|
||||
%
|
||||
% //PLL commands
|
||||
% d_dump_file.write((char*)&carr_error, sizeof(float));
|
||||
% d_dump_file.write((char*)&carr_nco, sizeof(float));
|
||||
%
|
||||
% //DLL commands
|
||||
% d_dump_file.write((char*)&code_error, sizeof(float));
|
||||
% d_dump_file.write((char*)&code_nco, sizeof(float));
|
||||
%
|
||||
% // CN0 and carrier lock test
|
||||
% d_dump_file.write((char*)&d_CN0_SNV_dB_Hz, sizeof(float));
|
||||
% d_dump_file.write((char*)&d_carrier_lock_test, sizeof(float));
|
||||
%
|
||||
% // AUX vars (for debug purposes)
|
||||
% tmp_float=0;
|
||||
% d_dump_file.write((char*)&tmp_float, sizeof(float));
|
||||
% d_dump_file.write((char*)&d_sample_counter_seconds, sizeof(double));
|
||||
|
||||
E=v1;
|
||||
P=v2;
|
||||
L=v3;
|
||||
prompt_I=v4;
|
||||
prompt_Q=v5;
|
||||
PRN_start_sample=v6;
|
||||
acc_carrier_phase_rad=v7;
|
||||
carrier_doppler_hz=v8;
|
||||
code_freq_hz=v9;
|
||||
carr_error=v10;
|
||||
carr_nco=v11;
|
||||
code_error=v12;
|
||||
code_nco=v13;
|
||||
CN0_SNV_dB_Hz=v14;
|
||||
carrier_lock_test=v15;
|
||||
var1=v16;
|
||||
var2=v17;
|
||||
|
||||
GNSS_tracking.E=E;
|
||||
GNSS_tracking.P=P;
|
||||
GNSS_tracking.L=L;
|
||||
GNSS_tracking.prompt_I=prompt_I;
|
||||
GNSS_tracking.prompt_Q=prompt_Q;
|
||||
GNSS_tracking.PRN_start_sample=PRN_start_sample;
|
||||
GNSS_tracking.acc_carrier_phase_rad=acc_carrier_phase_rad;
|
||||
GNSS_tracking.carrier_doppler_hz=carrier_doppler_hz;
|
||||
GNSS_tracking.code_freq_hz=code_freq_hz;
|
||||
GNSS_tracking.carr_error=carr_error;
|
||||
GNSS_tracking.carr_nco=carr_nco;
|
||||
GNSS_tracking.code_error=code_error;
|
||||
GNSS_tracking.code_nco=code_nco;
|
||||
GNSS_tracking.CN0_SNV_dB_Hz=CN0_SNV_dB_Hz;
|
||||
GNSS_tracking.carrier_lock_test=carrier_lock_test;
|
||||
GNSS_tracking.var1=var1;
|
||||
GNSS_tracking.var2=var2;
|
||||
end
|
||||
|
||||
@@ -49,7 +49,7 @@ for channelNr = channelList
|
||||
clf(channelNr +200);
|
||||
set(channelNr +200, 'Name', ['Channel ', num2str(channelNr), ...
|
||||
' (PRN ', ...
|
||||
num2str(trackResults(channelNr).PRN), ...
|
||||
num2str(trackResults(channelNr).PRN(end-1)), ...
|
||||
') results']);
|
||||
|
||||
%% Draw axes ==============================================================
|
||||
@@ -122,7 +122,7 @@ for channelNr = channelList
|
||||
|
||||
%----- PLL discriminator filtered----------------------------------
|
||||
plot (handles(3, 1), timeAxisInSeconds, ...
|
||||
trackResults(channelNr).pllDiscrFilt, 'b');
|
||||
trackResults(channelNr).pllDiscrFilt(1:settings.msToProcess), 'b');
|
||||
|
||||
grid (handles(3, 1));
|
||||
axis (handles(3, 1), 'tight');
|
||||
|
||||
@@ -49,7 +49,7 @@ for channelNr = channelList
|
||||
clf(channelNr +200);
|
||||
set(channelNr +200, 'Name', ['Channel ', num2str(channelNr), ...
|
||||
' (PRN ', ...
|
||||
num2str(trackResults(channelNr).PRN), ...
|
||||
num2str(trackResults(channelNr).PRN(end-1)), ...
|
||||
') results']);
|
||||
|
||||
%% Draw axes ==============================================================
|
||||
|
||||
@@ -66,7 +66,7 @@ for channelNr = channelList
|
||||
|
||||
%% Plot all figures =======================================================
|
||||
|
||||
timeAxisInSeconds = (1:settings.msToProcess)/1000;
|
||||
timeAxisInSeconds = (1:settings.msToProcess-1)/1000;
|
||||
|
||||
%----- Discrete-Time Scatter Plot ---------------------------------
|
||||
plot(handles(1, 1), trackResults(channelNr).I_PN,...
|
||||
@@ -81,7 +81,7 @@ for channelNr = channelList
|
||||
|
||||
%----- Nav bits ---------------------------------------------------
|
||||
plot (handles(1, 2), timeAxisInSeconds, ...
|
||||
trackResults(channelNr).I_PN);
|
||||
trackResults(channelNr).I_PN(1:settings.msToProcess-1));
|
||||
|
||||
grid (handles(1, 2));
|
||||
title (handles(1, 2), 'Bits of the navigation message');
|
||||
@@ -90,7 +90,7 @@ for channelNr = channelList
|
||||
|
||||
%----- PLL discriminator unfiltered--------------------------------
|
||||
plot (handles(2, 1), timeAxisInSeconds, ...
|
||||
trackResults(channelNr).pllDiscr, 'r');
|
||||
trackResults(channelNr).pllDiscr(1:settings.msToProcess-1), 'r');
|
||||
|
||||
grid (handles(2, 1));
|
||||
axis (handles(2, 1), 'tight');
|
||||
@@ -100,12 +100,12 @@ for channelNr = channelList
|
||||
|
||||
%----- Correlation ------------------------------------------------
|
||||
plot(handles(2, 2), timeAxisInSeconds, ...
|
||||
[sqrt(trackResults(channelNr).I_E.^2 + ...
|
||||
trackResults(channelNr).Q_E.^2)', ...
|
||||
sqrt(trackResults(channelNr).I_P.^2 + ...
|
||||
trackResults(channelNr).Q_P.^2)', ...
|
||||
sqrt(trackResults(channelNr).I_L.^2 + ...
|
||||
trackResults(channelNr).Q_L.^2)'], ...
|
||||
[sqrt(trackResults(channelNr).I_E(1:settings.msToProcess-1).^2 + ...
|
||||
trackResults(channelNr).Q_E(1:settings.msToProcess-1).^2)', ...
|
||||
sqrt(trackResults(channelNr).I_P(1:settings.msToProcess-1).^2 + ...
|
||||
trackResults(channelNr).Q_P(1:settings.msToProcess-1).^2)', ...
|
||||
sqrt(trackResults(channelNr).I_L(1:settings.msToProcess-1).^2 + ...
|
||||
trackResults(channelNr).Q_L(1:settings.msToProcess-1).^2)'], ...
|
||||
'-*');
|
||||
|
||||
grid (handles(2, 2));
|
||||
@@ -122,7 +122,7 @@ for channelNr = channelList
|
||||
|
||||
%----- PLL discriminator filtered----------------------------------
|
||||
plot (handles(3, 1), timeAxisInSeconds, ...
|
||||
trackResults(channelNr).pllDiscrFilt, 'b');
|
||||
trackResults(channelNr).pllDiscrFilt(1:settings.msToProcess-1), 'b');
|
||||
|
||||
grid (handles(3, 1));
|
||||
axis (handles(3, 1), 'tight');
|
||||
@@ -132,7 +132,7 @@ for channelNr = channelList
|
||||
|
||||
%----- DLL discriminator unfiltered--------------------------------
|
||||
plot (handles(3, 2), timeAxisInSeconds, ...
|
||||
trackResults(channelNr).dllDiscr, 'r');
|
||||
trackResults(channelNr).dllDiscr(1:settings.msToProcess-1), 'r');
|
||||
|
||||
grid (handles(3, 2));
|
||||
axis (handles(3, 2), 'tight');
|
||||
@@ -142,7 +142,7 @@ for channelNr = channelList
|
||||
|
||||
%----- DLL discriminator filtered----------------------------------
|
||||
plot (handles(3, 3), timeAxisInSeconds, ...
|
||||
trackResults(channelNr).dllDiscrFilt, 'b');
|
||||
trackResults(channelNr).dllDiscrFilt(1:settings.msToProcess-1), 'b');
|
||||
|
||||
grid (handles(3, 3));
|
||||
axis (handles(3, 3), 'tight');
|
||||
|
||||
Reference in New Issue
Block a user