[hamradio-commits] [gnss-sdr] 202/236: several receiver configuration mechanism simplifications and several bug fixes. Work in progress
Carles Fernandez
carles_fernandez-guest at moszumanska.debian.org
Tue Apr 26 16:02:54 UTC 2016
This is an automated email from the git hooks/post-receive script.
carles_fernandez-guest pushed a commit to branch next
in repository gnss-sdr.
commit 0a5573f666340294a0e079f2ff1465fe10c0f129
Author: Javier Arribas <javiarribas at gmail.com>
Date: Thu Apr 21 18:54:08 2016 +0200
several receiver configuration mechanism simplifications and several bug fixes. Work in progress
---
conf/gnss-sdr_GPS_L1_USRP_X300_realtime.conf | 105 ++--
conf/gnss-sdr_GPS_L1_gr_complex_gpu.conf | 263 +--------
...ltime_new.conf => gnss-sdr_Hybrid_nsr_bak.conf} | 282 +++++-----
...tichannel_GPS_L1_Flexiband_bin_file_III_1a.conf | 66 +--
...ltichannel_GPS_L1_Flexiband_realtime_II_3b.conf | 50 +-
...1_L2_Galileo_E1B_Flexiband_realtime_III_1b.conf | 70 +--
...channel_GPS_L2_M_Flexiband_bin_file_III_1a.conf | 21 +-
...channel_GPS_L2_M_Flexiband_bin_file_III_1b.conf | 241 ++-------
...alileo_e5a_noncoherent_iq_acquisition_caf_cc.cc | 1 +
.../galileo_pcps_8ms_acquisition_cc.cc | 1 +
.../gnuradio_blocks/pcps_acquisition_cc.cc | 5 -
.../pcps_acquisition_fine_doppler_cc.cc | 1 +
.../gnuradio_blocks/pcps_acquisition_sc.cc | 1 +
.../pcps_assisted_acquisition_cc.cc | 1 +
.../gnuradio_blocks/pcps_cccwsr_acquisition_cc.cc | 1 +
.../pcps_multithread_acquisition_cc.cc | 1 +
.../gnuradio_blocks/pcps_opencl_acquisition_cc.cc | 1 +
.../pcps_quicksync_acquisition_cc.cc | 3 +-
.../gnuradio_blocks/pcps_tong_acquisition_cc.cc | 1 +
src/algorithms/channel/adapters/channel.cc | 3 +-
src/algorithms/channel/libs/CMakeLists.txt | 3 +
src/algorithms/channel/libs/channel_fsm.cc | 15 +-
src/algorithms/observables/adapters/CMakeLists.txt | 1 -
.../observables/adapters/mixed_observables.cc | 89 ----
.../observables/adapters/mixed_observables.h | 88 ---
.../observables/gnuradio_blocks/CMakeLists.txt | 1 -
.../gnuradio_blocks/mixed_observables_cc.cc | 221 --------
.../gnuradio_blocks/mixed_observables_cc.h | 70 ---
.../galileo_e1b_telemetry_decoder_cc.cc | 2 -
.../gps_l1_ca_telemetry_decoder_cc.cc | 425 +++++++--------
.../gps_l1_ca_telemetry_decoder_cc.h | 2 +-
.../galileo_e1_dll_pll_veml_tracking_cc.cc | 9 +-
.../galileo_e1_tcp_connector_tracking_cc.cc | 9 +-
.../galileo_e5a_dll_pll_tracking_cc.cc | 14 +-
.../gps_l1_ca_dll_pll_c_aid_tracking_cc.cc | 9 +-
.../gps_l1_ca_dll_pll_c_aid_tracking_sc.cc | 7 +-
.../gps_l1_ca_dll_pll_tracking_cc.cc | 9 +-
.../gps_l1_ca_dll_pll_tracking_gpu_cc.cc | 7 +-
.../gps_l1_ca_tcp_connector_tracking_cc.cc | 6 +-
.../gps_l2_m_dll_pll_tracking_cc.cc | 7 +-
src/core/receiver/gnss_block_factory.cc | 590 ++++-----------------
src/core/receiver/gnss_block_factory.h | 9 -
src/core/receiver/gnss_flowgraph.cc | 67 +--
src/core/system_parameters/gnss_signal.cc | 4 +
src/core/system_parameters/gnss_signal.h | 1 +
src/tests/CMakeLists.txt | 1 +
src/utils/front-end-cal/CMakeLists.txt | 34 +-
47 files changed, 775 insertions(+), 2043 deletions(-)
diff --git a/conf/gnss-sdr_GPS_L1_USRP_X300_realtime.conf b/conf/gnss-sdr_GPS_L1_USRP_X300_realtime.conf
index 02b1485..c8030fb 100644
--- a/conf/gnss-sdr_GPS_L1_USRP_X300_realtime.conf
+++ b/conf/gnss-sdr_GPS_L1_USRP_X300_realtime.conf
@@ -1,7 +1,7 @@
; Configuration file for using USRP X300 as a RF front-end for GPS L1 signals.
; Set SignalSource.device_address to the IP address of your device
; and run:
-; gnss-sdr --config_file=/path/to/gnss-sdr_GPS_L1_USRP_X300_realtime.conf
+; gnss-sdr --config_file=/path/to/gnss-sdr_GPS_L1_USRP_X300_realtime_new.conf
;
[GNSS-SDR]
@@ -29,11 +29,12 @@ GNSS-SDR.SUPL_CI=0x31b0
; # implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental)
SignalSource.implementation=UHD_Signal_Source
-; # When left empty, the device discovery routines will search all available transports on the system (ethernet, usb...)
+; # When left empty, the device discovery routines will search all vailable transports on the system (ethernet, usb...)
SignalSource.device_address=192.168.40.2
; # item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
-SignalSource.item_type=gr_complex
+;SignalSource.item_type=gr_complex
+SignalSource.item_type=cshort
; # sampling_frequency: Original Signal sampling frequency in [Hz]
SignalSource.sampling_frequency=4000000
@@ -42,7 +43,7 @@ SignalSource.sampling_frequency=4000000
SignalSource.freq=1575420000
; # gain: Front-end Gain in [dB]
-SignalSource.gain=50
+SignalSource.gain=40
; # subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0)
SignalSource.subdevice=A:0
@@ -69,13 +70,15 @@ SignalSource.enable_throttle_control=false
;#implementation: Use [Pass_Through] or [Signal_Conditioner]
;#[Pass_Through] disables this block and the [DataTypeAdapter], [InputFilter] and [Resampler] blocks
;#[Signal_Conditioner] enables this block. Then you have to configure [DataTypeAdapter], [InputFilter] and [Resampler] blocks
-;SignalConditioner.implementation=Signal_Conditioner
-SignalConditioner.implementation=Pass_Through
+SignalConditioner.implementation=Signal_Conditioner
+;SignalConditioner.implementation=Pass_Through
;######### DATA_TYPE_ADAPTER CONFIG ############
;## Changes the type of input data. Please disable it in this version.
;#implementation: [Pass_Through] disables this block
DataTypeAdapter.implementation=Pass_Through
+DataTypeAdapter.item_type=cshort
+;DataTypeAdapter.item_type=cbyte
;######### INPUT_FILTER CONFIG ############
;## Filter the input data. Can be combined with frequency translation for IF signals
@@ -85,9 +88,9 @@ DataTypeAdapter.implementation=Pass_Through
;#[Fir_Filter] enables a FIR Filter
;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz.
-;InputFilter.implementation=Fir_Filter
+InputFilter.implementation=Fir_Filter
;InputFilter.implementation=Freq_Xlating_Fir_Filter
-InputFilter.implementation=Pass_Through
+;InputFilter.implementation=Pass_Through
;#dump: Dump the filtered data to a file.
InputFilter.dump=false
@@ -100,7 +103,7 @@ InputFilter.dump_filename=../data/input_filter.dat
;#These function calculates the optimal (in the Chebyshev/minimax sense) FIR filter inpulse reponse given a set of band edges, the desired reponse on those bands, and the weight given to the error in those bands.
;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version.
-InputFilter.input_item_type=gr_complex
+InputFilter.input_item_type=cshort
;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version.
InputFilter.output_item_type=gr_complex
@@ -109,7 +112,7 @@ InputFilter.output_item_type=gr_complex
InputFilter.taps_item_type=float
;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time
-InputFilter.number_of_taps=5
+InputFilter.number_of_taps=11
;#number_of _bands: Number of frequency bands in the filter.
InputFilter.number_of_bands=2
@@ -119,8 +122,8 @@ InputFilter.number_of_bands=2
;#The number of band_begin and band_end elements must match the number of bands
InputFilter.band1_begin=0.0
-InputFilter.band1_end=0.45
-InputFilter.band2_begin=0.55
+InputFilter.band1_end=0.48
+InputFilter.band2_begin=0.52
InputFilter.band2_end=1.0
;#ampl: desired amplitude at the band edges [ a(b1) a(e1) a(b2) a(e2) ...].
@@ -177,17 +180,29 @@ Resampler.sample_freq_out=4000000
;######### CHANNELS GLOBAL CONFIG ############
;#count: Number of available GPS satellite channels.
-Channels_GPS.count=12
+Channels_1C.count=8
;#count: Number of available Galileo satellite channels.
-Channels_Galileo.count=0
+Channels_1B.count=0
;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver
Channels.in_acquisition=1
;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS
;#if the option is disabled by default is assigned GPS
-Channel.system=GPS
-
-;#if the option is disabled by default is assigned "1C" GPS L1 C/A
+;Channel.system=GPS
Channel.signal=1C
+;#if the option is disabled by default is assigned "1C" GPS L1 C/A
+
+;Channel0.signal=1C
+;Channel1.signal=1C
+;Channel2.signal=1C
+;Channel3.signal=1C
+;Channel4.signal=1C
+;Channel5.signal=1C
+;Channel6.signal=1C
+;Channel7.signal=1C
+;Channel8.signal=1C
+;Channel9.signal=1C
+;Channel10.signal=1C
+;Channel11.signal=1C
;######### SPECIFIC CHANNELS CONFIG ######
;#The following options are specific to each channel and overwrite the generic options
@@ -210,30 +225,30 @@ Channel.signal=1C
;######### ACQUISITION GLOBAL CONFIG ############
;#dump: Enable or disable the acquisition internal data file logging [true] or [false]
-Acquisition_GPS.dump=false
+Acquisition_1C.dump=false
;#filename: Log path and filename
-Acquisition_GPS.dump_filename=./acq_dump.dat
+Acquisition_1C.dump_filename=./acq_dump.dat
;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
-Acquisition_GPS.item_type=gr_complex
+Acquisition_1C.item_type=gr_complex
;#if: Signal intermediate frequency in [Hz]
-Acquisition_GPS.if=0
+Acquisition_1C.if=0
;#sampled_ms: Signal block duration for the acquisition signal detection [ms]
-Acquisition_GPS.coherent_integration_time_ms=1
+Acquisition_1C.coherent_integration_time_ms=1
;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition]
-Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition
-;Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Tong_Acquisition
+Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
;#threshold: Acquisition threshold. It will be ignored if pfa is defined.
-Acquisition_GPS.threshold=0.005
+Acquisition_1C.threshold=0.01
;#pfa: Acquisition false alarm probability. This option overrides the threshold option. Only use with implementations: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition]
-;Acquisition_GPS.pfa=0.001
+;Acquisition_1C.pfa=0.00001
;#doppler_max: Maximum expected Doppler shift [Hz]
-Acquisition_GPS.doppler_max=6000
+Acquisition_1C.doppler_max=8000
;#doppler_max: Doppler step in the grid search [Hz]
-Acquisition_GPS.doppler_step=500
-;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition] (should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition])
-Acquisition_GPS.bit_transition_flag=false
+Acquisition_1C.doppler_step=500
+;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take
+maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition] (should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition])
+Acquisition_1C.bit_transition_flag=false
;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true
-Acquisition_GPS.max_dwells=1
+Acquisition_1C.max_dwells=1
;######### ACQUISITION CHANNELS CONFIG ######
@@ -243,37 +258,37 @@ Acquisition_GPS.max_dwells=1
;######### TRACKING GLOBAL CONFIG ############
;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_PLL_C_Aid_Tracking]
-Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Tracking
+Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
;#item_type: Type and resolution for each of the signal samples.
-Tracking_GPS.item_type=gr_complex
+Tracking_1C.item_type=gr_complex
;#sampling_frequency: Signal Intermediate Frequency in [Hz]
-Tracking_GPS.if=0
+Tracking_1C.if=0
;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false]
-Tracking_GPS.dump=false
+Tracking_1C.dump=false
;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number.
-Tracking_GPS.dump_filename=./tracking_ch_
+Tracking_1C.dump_filename=./tracking_ch_
;#pll_bw_hz: PLL loop filter bandwidth [Hz]
-Tracking_GPS.pll_bw_hz=30.0;
+Tracking_1C.pll_bw_hz=30.0;
;#dll_bw_hz: DLL loop filter bandwidth [Hz]
-Tracking_GPS.dll_bw_hz=4.0;
+Tracking_1C.dll_bw_hz=4.0;
;#order: PLL/DLL loop filter order [2] or [3]
-Tracking_GPS.order=3;
+Tracking_1C.order=3;
;#early_late_space_chips: correlator early-late space [chips]. Use [0.5]
-Tracking_GPS.early_late_space_chips=0.5;
+Tracking_1C.early_late_space_chips=0.5;
;######### TELEMETRY DECODER GPS CONFIG ############
;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A
-TelemetryDecoder_GPS.implementation=GPS_L1_CA_Telemetry_Decoder
-TelemetryDecoder_GPS.dump=false
+TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
+TelemetryDecoder_1C.dump=false
;#decimation factor
-TelemetryDecoder_GPS.decimation_factor=1;
+TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
@@ -302,7 +317,7 @@ PVT.output_rate_ms=100
;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms.
PVT.display_rate_ms=500
-;# RINEX, KML, and NMEA output configuration
+;# KML, GeoJSON, NMEA and RTCM output configuration
;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump.
PVT.dump_filename=./PVT
@@ -316,7 +331,7 @@ PVT.flag_nmea_tty_port=false;
;#nmea_dump_devname: serial device descriptor for NMEA logging
PVT.nmea_dump_devname=/dev/pts/4
-PVT.flag_rtcm_server=false
+PVT.flag_rtcm_server=true
PVT.flag_rtcm_tty_port=false
PVT.rtcm_dump_devname=/dev/pts/1
diff --git a/conf/gnss-sdr_GPS_L1_gr_complex_gpu.conf b/conf/gnss-sdr_GPS_L1_gr_complex_gpu.conf
index 9de6726..c171bd1 100644
--- a/conf/gnss-sdr_GPS_L1_gr_complex_gpu.conf
+++ b/conf/gnss-sdr_GPS_L1_gr_complex_gpu.conf
@@ -1,4 +1,3 @@
-; Default configuration file
; You can define your own receiver and invoke it by doing
; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf
;
@@ -13,281 +12,73 @@ GNSS-SDR.internal_fs_hz=4000000
ControlThread.wait_for_flowgraph=false
;######### SIGNAL_SOURCE CONFIG ############
-;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental)
SignalSource.implementation=File_Signal_Source
-
-;#filename: path to file with the captured GNSS signal samples to be processed
-SignalSource.filename=/home/javier/ClionProjects/gnss-sim/build/signal_out.bin
-
-;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
-SignalSource.item_type=byte
-
-;#sampling_frequency: Original Signal sampling frequency in [Hz]
+SignalSource.filename=/datalogger/signals/Agilent/New York/4msps.dat
+SignalSource.item_type=gr_complex
SignalSource.sampling_frequency=4000000
-
-;#freq: RF front-end center frequency in [Hz]
SignalSource.freq=1575420000
-
-;#samples: Number of samples to be processed. Notice that 0 indicates the entire file.
-SignalSource.samples=0
-
-;#repeat: Repeat the processing file. Disable this option in this version
+SignalSource.samples=250000000
SignalSource.repeat=false
-
-;#dump: Dump the Signal source data to a file. Disable this option in this version
SignalSource.dump=false
-
SignalSource.dump_filename=../data/signal_source.dat
-
-
-;#enable_throttle_control: Enabling this option tells the signal source to keep the delay between samples in post processing.
-; it helps to not overload the CPU, but the processing time will be longer.
SignalSource.enable_throttle_control=false
;######### SIGNAL_CONDITIONER CONFIG ############
-;## It holds blocks to change data type, filter and resample input data.
-
-;#implementation: Use [Pass_Through] or [Signal_Conditioner]
-;#[Pass_Through] disables this block and the [DataTypeAdapter], [InputFilter] and [Resampler] blocks
-;#[Signal_Conditioner] enables this block. Then you have to configure [DataTypeAdapter], [InputFilter] and [Resampler] blocks
-;SignalConditioner.implementation=Signal_Conditioner
-SignalConditioner.implementation=Signal_Conditioner
-
-;######### DATA_TYPE_ADAPTER CONFIG ############
-;## Changes the type of input data. Please disable it in this version.
-;#implementation: [Pass_Through] disables this block
-DataTypeAdapter.implementation=Ibyte_To_Complex
-
-;######### INPUT_FILTER CONFIG ############
-;## Filter the input data. Can be combined with frequency translation for IF signals
-
-;#implementation: Use [Pass_Through] or [Fir_Filter] or [Freq_Xlating_Fir_Filter]
-;#[Pass_Through] disables this block
-;#[Fir_Filter] enables a FIR Filter
-;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz.
-
-;InputFilter.implementation=Fir_Filter
-;InputFilter.implementation=Freq_Xlating_Fir_Filter
-InputFilter.implementation=Pass_Through
-
-;#dump: Dump the filtered data to a file.
-InputFilter.dump=false
-
-;#dump_filename: Log path and filename.
-InputFilter.dump_filename=../data/input_filter.dat
-
-;#The following options are used in the filter design of Fir_Filter and Freq_Xlating_Fir_Filter implementation.
-;#These options are based on parameters of gnuradio's function: gr_remez.
-;#These function calculates the optimal (in the Chebyshev/minimax sense) FIR filter inpulse reponse given a set of band edges, the desired reponse on those bands, and the weight given to the error in those bands.
-
-;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version.
-InputFilter.input_item_type=gr_complex
-
-;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version.
-InputFilter.output_item_type=gr_complex
-
-;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version.
-InputFilter.taps_item_type=float
-
-;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time
-InputFilter.number_of_taps=5
-
-;#number_of _bands: Number of frequency bands in the filter.
-InputFilter.number_of_bands=2
-
-;#bands: frequency at the band edges [ b1 e1 b2 e2 b3 e3 ...].
-;#Frequency is in the range [0, 1], with 1 being the Nyquist frequency (Fs/2)
-;#The number of band_begin and band_end elements must match the number of bands
-
-InputFilter.band1_begin=0.0
-InputFilter.band1_end=0.45
-InputFilter.band2_begin=0.55
-InputFilter.band2_end=1.0
-
-;#ampl: desired amplitude at the band edges [ a(b1) a(e1) a(b2) a(e2) ...].
-;#The number of ampl_begin and ampl_end elements must match the number of bands
-
-InputFilter.ampl1_begin=1.0
-InputFilter.ampl1_end=1.0
-InputFilter.ampl2_begin=0.0
-InputFilter.ampl2_end=0.0
-
-;#band_error: weighting applied to each band (usually 1).
-;#The number of band_error elements must match the number of bands
-InputFilter.band1_error=1.0
-InputFilter.band2_error=1.0
-
-;#filter_type: one of "bandpass", "hilbert" or "differentiator"
-InputFilter.filter_type=bandpass
-
-;#grid_density: determines how accurately the filter will be constructed.
-;The minimum value is 16; higher values are slower to compute the filter.
-InputFilter.grid_density=16
-
-;#The following options are used only in Freq_Xlating_Fir_Filter implementation.
-;#InputFilter.IF is the intermediate frequency (in Hz) shifted down to zero Hz
-
-InputFilter.sampling_frequency=4000000
-InputFilter.IF=0
-
-
-
-;######### RESAMPLER CONFIG ############
-;## Resamples the input data.
-
-;#implementation: Use [Pass_Through] or [Direct_Resampler]
-;#[Pass_Through] disables this block
-;#[Direct_Resampler] enables a resampler that implements a nearest neigbourhood interpolation
-;Resampler.implementation=Direct_Resampler
-Resampler.implementation=Pass_Through
-
-;#dump: Dump the resamplered data to a file.
-Resampler.dump=false
-;#dump_filename: Log path and filename.
-Resampler.dump_filename=../data/resampler.dat
-
-;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
-Resampler.item_type=gr_complex
-
-;#sample_freq_in: the sample frequency of the input signal
-Resampler.sample_freq_in=8000000
-
-;#sample_freq_out: the desired sample frequency of the output signal
-Resampler.sample_freq_out=4000000
+SignalConditioner.implementation=Pass_Through
;######### CHANNELS GLOBAL CONFIG ############
-;#count: Number of available GPS satellite channels.
-Channels_GPS.count=12
-;#count: Number of available Galileo satellite channels.
-Channels_Galileo.count=0
-;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver
+Channels_1C.count=8
Channels.in_acquisition=1
-;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS
-;#if the option is disabled by default is assigned GPS
-Channel.system=GPS
-
-;#if the option is disabled by default is assigned "1C" GPS L1 C/A
Channel.signal=1C
-;######### SPECIFIC CHANNELS CONFIG ######
-;#The following options are specific to each channel and overwrite the generic options
-
-;######### CHANNEL 0 CONFIG ############
-
-;Channel0.system=GPS
-;Channel0.signal=1C
-
-;#satellite: Satellite PRN ID for this channel. Disable this option to random search
-;Channel0.satellite=11
-
-;######### CHANNEL 1 CONFIG ############
-
-;Channel1.system=GPS
-;Channel1.signal=1C
-;Channel1.satellite=18
-
;######### ACQUISITION GLOBAL CONFIG ############
-
-;#dump: Enable or disable the acquisition internal data file logging [true] or [false]
-Acquisition_GPS.dump=false
-;#filename: Log path and filename
-Acquisition_GPS.dump_filename=./acq_dump.dat
-;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
-Acquisition_GPS.item_type=gr_complex
-;#if: Signal intermediate frequency in [Hz]
-Acquisition_GPS.if=0
-;#sampled_ms: Signal block duration for the acquisition signal detection [ms]
-Acquisition_GPS.sampled_ms=1
-;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition]
-Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition
-;#threshold: Acquisition threshold
-Acquisition_GPS.threshold=0.01
-;#pfa: Acquisition false alarm probability. This option overrides the threshold option. Only use with implementations: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition]
-;Acquisition_GPS.pfa=0.01
-;#doppler_max: Maximum expected Doppler shift [Hz]
-Acquisition_GPS.doppler_max=6000
-;#doppler_max: Doppler step in the grid search [Hz]
-Acquisition_GPS.doppler_step=100
+Acquisition_1C.dump=false
+Acquisition_1C.dump_filename=./acq_dump.dat
+Acquisition_1C.item_type=gr_complex
+Acquisition_1C.if=0
+Acquisition_1C.sampled_ms=1
+Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
+Acquisition_1C.threshold=0.005
+;Acquisition_1C.pfa=0.01
+Acquisition_1C.doppler_max=10000
+Acquisition_1C.doppler_step=500
;######### TRACKING GLOBAL CONFIG ############
-
-;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_PLL_C_Aid_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking]
-Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Tracking_GPU
-;#item_type: Type and resolution for each of the signal samples.
-Tracking_GPS.item_type=gr_complex
-
-;#sampling_frequency: Signal Intermediate Frequency in [Hz]
-Tracking_GPS.if=0
-
-;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false]
-Tracking_GPS.dump=true
-
-;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number.
-Tracking_GPS.dump_filename=../data/epl_tracking_ch_
-
-;#pll_bw_hz: PLL loop filter bandwidth [Hz]
-Tracking_GPS.pll_bw_hz=15.0;
-
-;#dll_bw_hz: DLL loop filter bandwidth [Hz]
-Tracking_GPS.dll_bw_hz=1.5
-
-;#order: PLL/DLL loop filter order [2] or [3]
-Tracking_GPS.order=3;
+Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking_GPU
+Tracking_1C.item_type=gr_complex
+Tracking_1C.if=0
+Tracking_1C.dump=false
+Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.pll_bw_hz=45.0;
+Tracking_1C.dll_bw_hz=2.0;
+Tracking_1C.order=3;
;######### TELEMETRY DECODER GPS CONFIG ############
-;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A
-TelemetryDecoder_GPS.implementation=GPS_L1_CA_Telemetry_Decoder
-TelemetryDecoder_GPS.dump=false
-;#decimation factor
-TelemetryDecoder_GPS.decimation_factor=1;
+TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
+TelemetryDecoder_1C.dump=false
+TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
Observables.implementation=GPS_L1_CA_Observables
-
-;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
Observables.dump=false
-
-;#dump_filename: Log path and filename.
Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
-;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version.
PVT.implementation=GPS_L1_CA_PVT
-
-;#averaging_depth: Number of PVT observations in the moving average algorithm
PVT.averaging_depth=100
-
-;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
PVT.flag_averaging=false
-
-;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms]
PVT.output_rate_ms=10
-
-;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms.
PVT.display_rate_ms=500
-
-;# KML, GeoJSON, NMEA and RTCM output configuration
-
-;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump.
PVT.dump_filename=./PVT
-
-;#nmea_dump_filename: NMEA log path and filename
PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea;
-
-;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one)
PVT.flag_nmea_tty_port=false;
-
-;#nmea_dump_devname: serial device descriptor for NMEA logging
PVT.nmea_dump_devname=/dev/pts/4
-
PVT.flag_rtcm_server=false
PVT.flag_rtcm_tty_port=false
PVT.rtcm_dump_devname=/dev/pts/1
-
-;#dump: Enable or disable the PVT internal binary data file logging [true] or [false]
PVT.dump=false
+
diff --git a/conf/gnss-sdr_GPS_L1_USRP_X300_realtime_new.conf b/conf/gnss-sdr_Hybrid_nsr_bak.conf
similarity index 57%
rename from conf/gnss-sdr_GPS_L1_USRP_X300_realtime_new.conf
rename to conf/gnss-sdr_Hybrid_nsr_bak.conf
index c8030fb..d800508 100644
--- a/conf/gnss-sdr_GPS_L1_USRP_X300_realtime_new.conf
+++ b/conf/gnss-sdr_Hybrid_nsr_bak.conf
@@ -1,20 +1,22 @@
-; Configuration file for using USRP X300 as a RF front-end for GPS L1 signals.
-; Set SignalSource.device_address to the IP address of your device
-; and run:
-; gnss-sdr --config_file=/path/to/gnss-sdr_GPS_L1_USRP_X300_realtime_new.conf
+; Default configuration file
+; You can define your own receiver and invoke it by doing
+; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf
;
[GNSS-SDR]
;######### GLOBAL OPTIONS ##################
;internal_fs_hz: Internal signal sampling frequency after the signal conditioning stage [Hz].
-GNSS-SDR.internal_fs_hz=4000000
+;GNSS-SDR.internal_fs_hz=6826700
+GNSS-SDR.internal_fs_hz=2560000
+;GNSS-SDR.internal_fs_hz=4096000
+;GNSS-SDR.internal_fs_hz=5120000
;######### CONTROL_THREAD CONFIG ############
ControlThread.wait_for_flowgraph=false
;######### SUPL RRLP GPS assistance configuration #####
-GNSS-SDR.SUPL_gps_enabled=false
+GNSS-SDR.SUPL_gps_enabled=true
GNSS-SDR.SUPL_read_gps_assistance_xml=true
GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com
GNSS-SDR.SUPL_gps_ephemeris_port=7275
@@ -26,36 +28,30 @@ GNSS-SDR.SUPL_LAC=0x59e2
GNSS-SDR.SUPL_CI=0x31b0
;######### SIGNAL_SOURCE CONFIG ############
-; # implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental)
-SignalSource.implementation=UHD_Signal_Source
+;#implementation: Use [File_Signal_Source] [Nsr_File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental)
+SignalSource.implementation=Nsr_File_Signal_Source
-; # When left empty, the device discovery routines will search all vailable transports on the system (ethernet, usb...)
-SignalSource.device_address=192.168.40.2
+;#filename: path to file with the captured GNSS signal samples to be processed
+SignalSource.filename=/media/javier/SISTEMA/signals/ifen/E1L1_FE0_Band0.stream
-; # item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
-;SignalSource.item_type=gr_complex
-SignalSource.item_type=cshort
+;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
+SignalSource.item_type=byte
-; # sampling_frequency: Original Signal sampling frequency in [Hz]
-SignalSource.sampling_frequency=4000000
+;#sampling_frequency: Original Signal sampling frequency in [Hz]
+SignalSource.sampling_frequency=20480000
-; # freq: RF front-end center frequency in [Hz]
+;#freq: RF front-end center frequency in [Hz]
SignalSource.freq=1575420000
-; # gain: Front-end Gain in [dB]
-SignalSource.gain=40
-
-; # subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0)
-SignalSource.subdevice=A:0
-
-; # samples: Number of samples to be processed. Notice that 0 indicates the entire file.
+;#samples: Number of samples to be processed. Notice that 0 indicates the entire file.
SignalSource.samples=0
-; # repeat: Repeat the processing file. Disable this option in this version
+;#repeat: Repeat the processing file. Disable this option in this version
SignalSource.repeat=false
-; # dump: Dump the Signal source data to a file. Disable this option in this version
+;#dump: Dump the Signal source data to a file. Disable this option in this version
SignalSource.dump=false
+
SignalSource.dump_filename=../data/signal_source.dat
@@ -71,26 +67,21 @@ SignalSource.enable_throttle_control=false
;#[Pass_Through] disables this block and the [DataTypeAdapter], [InputFilter] and [Resampler] blocks
;#[Signal_Conditioner] enables this block. Then you have to configure [DataTypeAdapter], [InputFilter] and [Resampler] blocks
SignalConditioner.implementation=Signal_Conditioner
-;SignalConditioner.implementation=Pass_Through
;######### DATA_TYPE_ADAPTER CONFIG ############
-;## Changes the type of input data. Please disable it in this version.
+;## Changes the type of input data.
;#implementation: [Pass_Through] disables this block
DataTypeAdapter.implementation=Pass_Through
-DataTypeAdapter.item_type=cshort
-;DataTypeAdapter.item_type=cbyte
+DataTypeAdapter.item_type=float
;######### INPUT_FILTER CONFIG ############
;## Filter the input data. Can be combined with frequency translation for IF signals
;#implementation: Use [Pass_Through] or [Fir_Filter] or [Freq_Xlating_Fir_Filter]
-;#[Pass_Through] disables this block
-;#[Fir_Filter] enables a FIR Filter
-;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz.
+;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation
+;# that shifts IF down to zero Hz.
-InputFilter.implementation=Fir_Filter
-;InputFilter.implementation=Freq_Xlating_Fir_Filter
-;InputFilter.implementation=Pass_Through
+InputFilter.implementation=Freq_Xlating_Fir_Filter
;#dump: Dump the filtered data to a file.
InputFilter.dump=false
@@ -100,10 +91,12 @@ InputFilter.dump_filename=../data/input_filter.dat
;#The following options are used in the filter design of Fir_Filter and Freq_Xlating_Fir_Filter implementation.
;#These options are based on parameters of gnuradio's function: gr_remez.
-;#These function calculates the optimal (in the Chebyshev/minimax sense) FIR filter inpulse reponse given a set of band edges, the desired reponse on those bands, and the weight given to the error in those bands.
+;#These function calculates the optimal (in the Chebyshev/minimax sense) FIR filter inpulse
+;#reponse given a set of band edges, the desired reponse on those bands,
+;#and the weight given to the error in those bands.
;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version.
-InputFilter.input_item_type=cshort
+InputFilter.input_item_type=float
;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version.
InputFilter.output_item_type=gr_complex
@@ -112,7 +105,7 @@ InputFilter.output_item_type=gr_complex
InputFilter.taps_item_type=float
;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time
-InputFilter.number_of_taps=11
+InputFilter.number_of_taps=5
;#number_of _bands: Number of frequency bands in the filter.
InputFilter.number_of_bands=2
@@ -122,8 +115,8 @@ InputFilter.number_of_bands=2
;#The number of band_begin and band_end elements must match the number of bands
InputFilter.band1_begin=0.0
-InputFilter.band1_end=0.48
-InputFilter.band2_begin=0.52
+InputFilter.band1_end=0.45
+InputFilter.band2_begin=0.55
InputFilter.band2_end=1.0
;#ampl: desired amplitude at the band edges [ a(b1) a(e1) a(b2) a(e2) ...].
@@ -146,12 +139,16 @@ InputFilter.filter_type=bandpass
;The minimum value is 16; higher values are slower to compute the filter.
InputFilter.grid_density=16
+;# Original sampling frequency stored in the signal file
+InputFilter.sampling_frequency=20480000
+
;#The following options are used only in Freq_Xlating_Fir_Filter implementation.
;#InputFilter.IF is the intermediate frequency (in Hz) shifted down to zero Hz
-InputFilter.sampling_frequency=4000000
-InputFilter.IF=0
+InputFilter.IF=5499998.47412109
+;# Decimation factor after the frequency tranaslating block
+InputFilter.decimation_factor=8
;######### RESAMPLER CONFIG ############
@@ -160,69 +157,25 @@ InputFilter.IF=0
;#implementation: Use [Pass_Through] or [Direct_Resampler]
;#[Pass_Through] disables this block
;#[Direct_Resampler] enables a resampler that implements a nearest neigbourhood interpolation
-;Resampler.implementation=Direct_Resampler
Resampler.implementation=Pass_Through
-;#dump: Dump the resampled data to a file.
-Resampler.dump=false
-;#dump_filename: Log path and filename.
-Resampler.dump_filename=../data/resampler.dat
-
-;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
-Resampler.item_type=gr_complex
-
-;#sample_freq_in: the sample frequency of the input signal
-Resampler.sample_freq_in=4000000
-
-;#sample_freq_out: the desired sample frequency of the output signal
-Resampler.sample_freq_out=4000000
-
-
;######### CHANNELS GLOBAL CONFIG ############
;#count: Number of available GPS satellite channels.
Channels_1C.count=8
;#count: Number of available Galileo satellite channels.
-Channels_1B.count=0
+Channels_1B.count=8
;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver
Channels.in_acquisition=1
-;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS
-;#if the option is disabled by default is assigned GPS
-;Channel.system=GPS
-Channel.signal=1C
-;#if the option is disabled by default is assigned "1C" GPS L1 C/A
-
-;Channel0.signal=1C
-;Channel1.signal=1C
-;Channel2.signal=1C
-;Channel3.signal=1C
-;Channel4.signal=1C
-;Channel5.signal=1C
-;Channel6.signal=1C
-;Channel7.signal=1C
-;Channel8.signal=1C
-;Channel9.signal=1C
-;Channel10.signal=1C
-;Channel11.signal=1C
-
-;######### SPECIFIC CHANNELS CONFIG ######
-;#The following options are specific to each channel and overwrite the generic options
-
-;######### CHANNEL 0 CONFIG ############
-;Channel0.system=GPS
-;Channel0.signal=1C
+;#signal:
+;# "1C" GPS L1 C/A
+;# "2S" GPS L2 L2C (M)
+;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL)
+;# "5X" GALILEO E5a I+Q
-;#satellite: Satellite PRN ID for this channel. Disable this option to random search
-;Channel0.satellite=11
-;######### CHANNEL 1 CONFIG ############
-;Channel1.system=GPS
-;Channel1.signal=1C
-;Channel1.satellite=18
-
-
-;######### ACQUISITION GLOBAL CONFIG ############
+;######### GPS ACQUISITION CONFIG ############
;#dump: Enable or disable the acquisition internal data file logging [true] or [false]
Acquisition_1C.dump=false
@@ -233,33 +186,47 @@ Acquisition_1C.item_type=gr_complex
;#if: Signal intermediate frequency in [Hz]
Acquisition_1C.if=0
;#sampled_ms: Signal block duration for the acquisition signal detection [ms]
-Acquisition_1C.coherent_integration_time_ms=1
+Acquisition_1C.sampled_ms=1
;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition]
Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
-;#threshold: Acquisition threshold. It will be ignored if pfa is defined.
-Acquisition_1C.threshold=0.01
+;#threshold: Acquisition threshold
+Acquisition_1C.threshold=0.0075
;#pfa: Acquisition false alarm probability. This option overrides the threshold option. Only use with implementations: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition]
-;Acquisition_1C.pfa=0.00001
+;Acquisition_1C.pfa=0.01
;#doppler_max: Maximum expected Doppler shift [Hz]
-Acquisition_1C.doppler_max=8000
+Acquisition_1C.doppler_max=5000
;#doppler_max: Doppler step in the grid search [Hz]
-Acquisition_1C.doppler_step=500
-;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take
-maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition] (should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition])
-Acquisition_1C.bit_transition_flag=false
-;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true
-Acquisition_1C.max_dwells=1
+Acquisition_1C.doppler_step=250
-;######### ACQUISITION CHANNELS CONFIG ######
-;#The following options are specific to each channel and overwrite the generic options
+;######### GALILEO ACQUISITION CONFIG ############
+;#dump: Enable or disable the acquisition internal data file logging [true] or [false]
+Acquisition_1B.dump=false
+;#filename: Log path and filename
+Acquisition_1B.dump_filename=./acq_dump.dat
+;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
+Acquisition_1B.item_type=gr_complex
+;#if: Signal intermediate frequency in [Hz]
+Acquisition_1B.if=0
+;#sampled_ms: Signal block duration for the acquisition signal detection [ms]
+Acquisition_1B.sampled_ms=4
+;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition]
+Acquisition_1B.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition
+;#threshold: Acquisition threshold
+;Acquisition_1B.threshold=0
+;#pfa: Acquisition false alarm probability. This option overrides the threshold option. Only use with implementations: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition]
+Acquisition_1B.pfa=0.0000002
+;#doppler_max: Maximum expected Doppler shift [Hz]
+Acquisition_1B.doppler_max=15000
+;#doppler_max: Doppler step in the grid search [Hz]
+Acquisition_1B.doppler_step=125
-;######### TRACKING GLOBAL CONFIG ############
+;######### TRACKING GPS CONFIG ############
-;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_PLL_C_Aid_Tracking]
+;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_PLL_C_Aid_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking]
Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
-;#item_type: Type and resolution for each of the signal samples.
+;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version.
Tracking_1C.item_type=gr_complex
;#sampling_frequency: Signal Intermediate Frequency in [Hz]
@@ -269,30 +236,80 @@ Tracking_1C.if=0
Tracking_1C.dump=false
;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number.
-Tracking_1C.dump_filename=./tracking_ch_
+Tracking_1C.dump_filename=../data/epl_tracking_ch_
+
+;# Extended correlation after telemetry bit synchronization
+;# Valid values are: [1,2,4,5,10,20] (integer divisors of the GPS L1 CA bit period (20 ms) )
+;# Longer integration period require more stable front-end LO
+
+Tracking_1C.extend_correlation_ms=10
;#pll_bw_hz: PLL loop filter bandwidth [Hz]
-Tracking_1C.pll_bw_hz=30.0;
+
+Tracking_1C.pll_bw_hz=45;
+Tracking_1C.pll_bw_narrow_hz=40;
;#dll_bw_hz: DLL loop filter bandwidth [Hz]
-Tracking_1C.dll_bw_hz=4.0;
+Tracking_1C.dll_bw_hz=2.0;
+Tracking_1C.dll_bw_narrow_hz=2.0;
+
+;#fll_bw_hz: FLL loop filter bandwidth [Hz]
+Tracking_1C.fll_bw_hz=10.0;
;#order: PLL/DLL loop filter order [2] or [3]
Tracking_1C.order=3;
-;#early_late_space_chips: correlator early-late space [chips]. Use [0.5]
-Tracking_1C.early_late_space_chips=0.5;
+;######### TRACKING GALILEO CONFIG ############
+
+;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_PLL_C_Aid_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking]
+Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking
+;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version.
+Tracking_1B.item_type=gr_complex
+
+;#sampling_frequency: Signal Intermediate Frequency in [Hz]
+Tracking_1B.if=0
+
+;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false]
+Tracking_1B.dump=false
+
+;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number.
+Tracking_1B.dump_filename=../data/veml_tracking_ch_
+
+;#pll_bw_hz: PLL loop filter bandwidth [Hz]
+Tracking_1B.pll_bw_hz=15.0;
+
+;#dll_bw_hz: DLL loop filter bandwidth [Hz]
+Tracking_1B.dll_bw_hz=2.0;
+
+;#fll_bw_hz: FLL loop filter bandwidth [Hz]
+Tracking_1B.fll_bw_hz=10.0;
+
+;#order: PLL/DLL loop filter order [2] or [3]
+Tracking_1B.order=3;
+
+;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] for GPS and [0.15] for Galileo
+Tracking_1B.early_late_space_chips=0.15;
+
+;#very_early_late_space_chips: only for [Galileo_E1_DLL_PLL_VEML_Tracking], correlator very early-late space [chips]. Use [0.6]
+Tracking_1B.very_early_late_space_chips=0.6;
+
;######### TELEMETRY DECODER GPS CONFIG ############
;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A
TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
TelemetryDecoder_1C.dump=false
;#decimation factor
-TelemetryDecoder_1C.decimation_factor=1;
+TelemetryDecoder_1C.decimation_factor=4;
+
+;######### TELEMETRY DECODER GALILEO CONFIG ############
+;#implementation: Use [Galileo_E1B_Telemetry_Decoder] for Galileo E1B
+TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder
+TelemetryDecoder_1B.dump=false
+TelemetryDecoder_1B_factor=4;
;######### OBSERVABLES CONFIG ############
;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
-Observables.implementation=GPS_L1_CA_Observables
+Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
Observables.dump=false
@@ -302,38 +319,27 @@ Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
-;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version.
-PVT.implementation=GPS_L1_CA_PVT
-
+;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT Hybrid_PVT GALILEO_E1_PVT] in this version.
+PVT.implementation=Hybrid_PVT
;#averaging_depth: Number of PVT observations in the moving average algorithm
PVT.averaging_depth=10
;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
-PVT.flag_averaging=true
+PVT.flag_averaging=false
;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms]
-PVT.output_rate_ms=100
+PVT.output_rate_ms=10;
;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms.
-PVT.display_rate_ms=500
-
-;# KML, GeoJSON, NMEA and RTCM output configuration
-
-;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump.
-PVT.dump_filename=./PVT
-
-;#nmea_dump_filename: NMEA log path and filename
-PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea;
-
-;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one)
-PVT.flag_nmea_tty_port=false;
+PVT.display_rate_ms=500;
-;#nmea_dump_devname: serial device descriptor for NMEA logging
-PVT.nmea_dump_devname=/dev/pts/4
+;#dump: Enable or disable the PVT internal binary data file logging [true] or [false]
+PVT.dump=false
-PVT.flag_rtcm_server=true
+PVT.flag_rtcm_server=false
PVT.flag_rtcm_tty_port=false
PVT.rtcm_dump_devname=/dev/pts/1
-;#dump: Enable or disable the PVT internal binary data file logging [true] or [false]
-PVT.dump=false
+;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump.
+PVT.dump_filename=./PVT
+
diff --git a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf b/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf
index 1464d2a..7b382d9 100644
--- a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf
+++ b/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf
@@ -29,7 +29,7 @@ GNSS-SDR.SUPL_CI=0x31b0
SignalSource.implementation=Flexiband_Signal_Source
SignalSource.flag_read_file=true
-SignalSource.signal_file=/datalogger/L125_III1b_210s.usb
+SignalSource.signal_file=/media/javier/SISTEMA/signals/front-end fraunhoffer/L125_III1b_210s.usb
;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
SignalSource.item_type=gr_complex
@@ -130,7 +130,8 @@ InputFilter0.grid_density=16
; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/
InputFilter0.sampling_frequency=20000000
;# IF deviation due to front-end LO inaccuracies [HZ]
-InputFilter0.IF=-205000
+InputFilter0.IF=0;
+;#-205000
;# Decimation factor after the frequency tranaslating block
InputFilter0.decimation_factor=8
@@ -195,14 +196,10 @@ Resampler2.implementation=Pass_Through
;######### CHANNELS GLOBAL CONFIG ############
;#count: Number of available GPS satellite channels.
-Channels_GPS.count=8
-;#count: Number of available Galileo satellite channels.
-Channels_Galileo.count=0
+Channels_1C.count=8
+
;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver
Channels.in_acquisition=1
-;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS
-;#if the option is disabled by default is assigned GPS
-Channel.system=GPS
;# CHANNEL CONNECTION
Channel0.RF_channel_ID=0
@@ -225,31 +222,32 @@ Channel.signal=1C
;######### ACQUISITION GLOBAL CONFIG ############
;#dump: Enable or disable the acquisition internal data file logging [true] or [false]
-Acquisition_GPS.dump=false
+Acquisition_1C.dump=false
;#filename: Log path and filename
-Acquisition_GPS.dump_filename=./acq_dump.dat
+Acquisition_1C.dump_filename=./acq_dump.dat
;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
-Acquisition_GPS.item_type=gr_complex
+Acquisition_1C.item_type=gr_complex
;#if: Signal intermediate frequency in [Hz]
-Acquisition_GPS.if=0
+Acquisition_1C.if=0
;#sampled_ms: Signal block duration for the acquisition signal detection [ms]
-Acquisition_GPS.coherent_integration_time_ms=1
+Acquisition_1C.coherent_integration_time_ms=1
;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition]
-Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition
+Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
+Acquisition_1C.use_CFAR_algorithm=false;
;#threshold: Acquisition threshold. It will be ignored if pfa is defined.
-Acquisition_GPS.threshold=0.012
+Acquisition_1C.threshold=15
;#pfa: Acquisition false alarm probability. This option overrides the threshold option. Only use with implementations: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition]
-;Acquisition_GPS.pfa=0.0001
+;Acquisition_1C.pfa=0.0001
;#doppler_max: Maximum expected Doppler shift [Hz]
-Acquisition_GPS.doppler_max=10000
+Acquisition_1C.doppler_max=10000
;#doppler_max: Doppler step in the grid search [Hz]
-Acquisition_GPS.doppler_step=250
+Acquisition_1C.doppler_step=250
;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take
;#maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition]
;#(should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition])
-Acquisition_GPS.bit_transition_flag=false
+Acquisition_1C.bit_transition_flag=false
;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true
-Acquisition_GPS.max_dwells=1
+Acquisition_1C.max_dwells=1
;######### ACQUISITION CHANNELS CONFIG ######
@@ -259,37 +257,41 @@ Acquisition_GPS.max_dwells=1
;######### TRACKING GLOBAL CONFIG ############
;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_PLL_C_Aid_Tracking]
-Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Tracking
+Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_C_Aid_Tracking
;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version.
-Tracking_GPS.item_type=gr_complex
+Tracking_1C.item_type=gr_complex
;#sampling_frequency: Signal Intermediate Frequency in [Hz]
-Tracking_GPS.if=0
+Tracking_1C.if=0
;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false]
-Tracking_GPS.dump=false
+Tracking_1C.dump=true
;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number.
-Tracking_GPS.dump_filename=./tracking_ch_
+Tracking_1C.dump_filename=../data/epl_tracking_ch_
+
+Tracking_1C.extend_correlation_ms=10
;#pll_bw_hz: PLL loop filter bandwidth [Hz]
-Tracking_GPS.pll_bw_hz=40.0;
+Tracking_1C.pll_bw_hz=40.0;
+Tracking_1C.pll_bw_narrow_hz=35;
;#dll_bw_hz: DLL loop filter bandwidth [Hz]
-Tracking_GPS.dll_bw_hz=3.0;
+Tracking_1C.dll_bw_hz=2.0;
+Tracking_1C.dll_bw_narrow_hz=2.0;
;#order: PLL/DLL loop filter order [2] or [3]
-Tracking_GPS.order=3;
+Tracking_1C.order=3;
;#early_late_space_chips: correlator early-late space [chips]. Use [0.5]
-Tracking_GPS.early_late_space_chips=0.5;
+Tracking_1C.early_late_space_chips=0.5;
;######### TELEMETRY DECODER GPS CONFIG ############
;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A
-TelemetryDecoder_GPS.implementation=GPS_L1_CA_Telemetry_Decoder
-TelemetryDecoder_GPS.dump=false
+TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
+TelemetryDecoder_1C.dump=false
;#decimation factor
-TelemetryDecoder_GPS.decimation_factor=1;
+TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
diff --git a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf b/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf
index 3072fce..450eee3 100644
--- a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf
+++ b/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf
@@ -192,7 +192,7 @@ Resampler2.implementation=Pass_Through
;######### CHANNELS GLOBAL CONFIG ############
;#count: Number of available GPS satellite channels.
-Channels_GPS.count=8
+Channels_1C.count=8
;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver
Channels.in_acquisition=1
@@ -232,31 +232,31 @@ Channel7.signal=1C
;######### ACQUISITION GLOBAL CONFIG ############
;#dump: Enable or disable the acquisition internal data file logging [true] or [false]
-Acquisition_GPS.dump=false
+Acquisition_1C.dump=false
;#filename: Log path and filename
-Acquisition_GPS.dump_filename=./acq_dump.dat
+Acquisition_1C.dump_filename=./acq_dump.dat
;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
-Acquisition_GPS.item_type=gr_complex
+Acquisition_1C.item_type=gr_complex
;#if: Signal intermediate frequency in [Hz]
-Acquisition_GPS.if=0
+Acquisition_1C.if=0
;#sampled_ms: Signal block duration for the acquisition signal detection [ms]
-Acquisition_GPS.coherent_integration_time_ms=1
+Acquisition_1C.coherent_integration_time_ms=1
;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition]
-Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition
+Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
;#threshold: Acquisition threshold. It will be ignored if pfa is defined.
-Acquisition_GPS.threshold=0.012
+Acquisition_1C.threshold=0.012
;#pfa: Acquisition false alarm probability. This option overrides the threshold option. Only use with implementations: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition]
-;Acquisition_GPS.pfa=0.0001
+;Acquisition_1C.pfa=0.0001
;#doppler_max: Maximum expected Doppler shift [Hz]
-Acquisition_GPS.doppler_max=10000
+Acquisition_1C.doppler_max=10000
;#doppler_max: Doppler step in the grid search [Hz]
-Acquisition_GPS.doppler_step=250
+Acquisition_1C.doppler_step=250
;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take
;#maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition]
;#(should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition])
-Acquisition_GPS.bit_transition_flag=false
+Acquisition_1C.bit_transition_flag=false
;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true
-Acquisition_GPS.max_dwells=1
+Acquisition_1C.max_dwells=1
;######### ACQUISITION CHANNELS CONFIG ######
@@ -266,37 +266,37 @@ Acquisition_GPS.max_dwells=1
;######### TRACKING GLOBAL CONFIG ############
;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_PLL_C_Aid_Tracking]
-Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Tracking
+Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
;#item_type: Type and resolution for each of the signal samples.
-Tracking_GPS.item_type=gr_complex
+Tracking_1C.item_type=gr_complex
;#sampling_frequency: Signal Intermediate Frequency in [Hz]
-Tracking_GPS.if=0
+Tracking_1C.if=0
;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false]
-Tracking_GPS.dump=false
+Tracking_1C.dump=false
;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number.
-Tracking_GPS.dump_filename=./tracking_ch_
+Tracking_1C.dump_filename=./tracking_ch_
;#pll_bw_hz: PLL loop filter bandwidth [Hz]
-Tracking_GPS.pll_bw_hz=40.0;
+Tracking_1C.pll_bw_hz=40.0;
;#dll_bw_hz: DLL loop filter bandwidth [Hz]
-Tracking_GPS.dll_bw_hz=3.0;
+Tracking_1C.dll_bw_hz=3.0;
;#order: PLL/DLL loop filter order [2] or [3]
-Tracking_GPS.order=3;
+Tracking_1C.order=3;
;#early_late_space_chips: correlator early-late space [chips]. Use [0.5]
-Tracking_GPS.early_late_space_chips=0.5;
+Tracking_1C.early_late_space_chips=0.5;
;######### TELEMETRY DECODER GPS CONFIG ############
;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A
-TelemetryDecoder_GPS.implementation=GPS_L1_CA_Telemetry_Decoder
-TelemetryDecoder_GPS.dump=false
+TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
+TelemetryDecoder_1C.dump=false
;#decimation factor
-TelemetryDecoder_GPS.decimation_factor=1;
+TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
diff --git a/conf/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_realtime_III_1b.conf b/conf/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_realtime_III_1b.conf
index 68e5a0b..e0641d0 100644
--- a/conf/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_realtime_III_1b.conf
+++ b/conf/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_realtime_III_1b.conf
@@ -29,8 +29,7 @@ GNSS-SDR.SUPL_CI=0x31b0
SignalSource.implementation=Flexiband_Signal_Source
SignalSource.flag_read_file=true
-SignalSource.signal_file=/datalogger/L125_III1b_210s.usb
-#SignalSource.signal_file=/datalogger/captures/flexiband_III_1b_cap1.usb
+SignalSource.signal_file=/media/javier/SISTEMA/signals/front-end fraunhoffer/L125_III1b_210s.usb
;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
SignalSource.item_type=gr_complex
@@ -270,15 +269,13 @@ Resampler2.implementation=Pass_Through
;######### CHANNELS GLOBAL CONFIG ############
;#count: Number of available GPS satellite channels.
-Channels_1C.count=8
-Channels_1B.count=1
-Channels_2S.count=1
-;#count: Number of available Galileo satellite channels.
-;Channels_Galileo.count=0
+Channels_1C.count=2
+Channels_1B.count=4
+Channels_2S.count=4
+
;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver
Channels.in_acquisition=1
-
;#signal:
;# "1C" GPS L1 C/A
;# "2S" GPS L2 L2C (M)
@@ -288,55 +285,22 @@ Channels.in_acquisition=1
;# CHANNEL CONNECTION
Channel0.RF_channel_ID=0
-Channel0.signal=1C
-
Channel1.RF_channel_ID=0
-Channel1.signal=1C
-
-Channel2.RF_channel_ID=0
-Channel2.signal=1C
-
-Channel3.RF_channel_ID=0
-Channel3.signal=1C
-
-Channel4.RF_channel_ID=0
-Channel4.signal=1C
-
-Channel5.RF_channel_ID=0
-Channel5.signal=1C
-
+Channel2.RF_channel_ID=1
+Channel3.RF_channel_ID=1
+Channel4.RF_channel_ID=1
+Channel5.RF_channel_ID=1
Channel6.RF_channel_ID=0
-Channel6.signal=1C
-
Channel7.RF_channel_ID=0
-Channel7.signal=1C
-
Channel8.RF_channel_ID=0
-Channel8.signal=1B
-
-Channel9.RF_channel_ID=1
-Channel9.signal=2S
-
+Channel9.RF_channel_ID=0
Channel10.RF_channel_ID=1
-Channel10.signal=2S
-
Channel11.RF_channel_ID=1
-Channel11.signal=2S
-
Channel12.RF_channel_ID=1
-Channel12.signal=2S
-
Channel13.RF_channel_ID=1
-Channel13.signal=2S
-
Channel14.RF_channel_ID=1
-Channel14.signal=2S
-
Channel15.RF_channel_ID=1
-Channel15.signal=2S
-Channel16.RF_channel_ID=1
-Channel16.signal=2S
;######### SPECIFIC CHANNELS CONFIG ######
;#The following options are specific to each channel and overwrite the generic options
@@ -378,7 +342,7 @@ Acquisition_1C.max_dwells=1
;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_PLL_C_Aid_Tracking]
-Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking_GPU
+Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
Tracking_1C.item_type=gr_complex
Tracking_1C.if=0
Tracking_1C.dump=false
@@ -404,8 +368,8 @@ Acquisition_2S.max_dwells=1
Tracking_2S.implementation=GPS_L2_M_DLL_PLL_Tracking
Tracking_2S.item_type=gr_complex
Tracking_2S.if=0
-Tracking_2S.dump=false
-Tracking_2S.dump_filename=./tracking_ch_
+Tracking_2S.dump=true
+Tracking_2S.dump_filename=../data/epl_tracking_ch_
Tracking_2S.pll_bw_hz=1.5;
Tracking_2S.dll_bw_hz=0.3;
Tracking_2S.order=3;
@@ -489,7 +453,7 @@ TelemetryDecoder_1B.decimation_factor=5;
;######### OBSERVABLES CONFIG ############
;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
-Observables.implementation=Mixed_Observables
+Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
Observables.dump=false
@@ -500,19 +464,19 @@ Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version.
-PVT.implementation=GPS_L1_CA_PVT
+PVT.implementation=Hybrid_PVT
;#averaging_depth: Number of PVT observations in the moving average algorithm
PVT.averaging_depth=10
;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
-PVT.flag_averaging=true
+PVT.flag_averaging=false
;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms]
PVT.output_rate_ms=100
;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms.
-PVT.display_rate_ms=500
+PVT.display_rate_ms=100
;# KML, GeoJSON, NMEA and RTCM output configuration
diff --git a/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1a.conf b/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1a.conf
index 1525d8f..ad7cd61 100644
--- a/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1a.conf
+++ b/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1a.conf
@@ -28,9 +28,9 @@ GNSS-SDR.SUPL_CI=0x31b0
;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental)
SignalSource.implementation=Flexiband_Signal_Source
-SignalSource.flag_read_file=false
+SignalSource.flag_read_file=true
;SignalSource.signal_file=/datalogger/captures/eclipse/eclipse_IIIa_2.bin
-SignalSource.signal_file=/datalogger/signals/Fraunhofer/L125_III1b_210s.usb
+SignalSource.signal_file=/media/javier/SISTEMA/signals/front-end fraunhoffer/L125_III1b_210s.usb
;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
SignalSource.item_type=gr_complex
@@ -269,7 +269,7 @@ Resampler2.implementation=Pass_Through
;######### CHANNELS GLOBAL CONFIG ############
;#count: Number of available GPS satellite channels.
Channels_1C.count=1
-Channels_2S.count=1
+Channels_2S.count=7
;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver
Channels.in_acquisition=1
@@ -282,17 +282,14 @@ Channels.in_acquisition=1
;# CHANNEL CONNECTION
Channel0.RF_channel_ID=0
-Channel0.signal=1C
Channel1.RF_channel_ID=1
-Channel1.signal=2S
-
-;Channel2.RF_channel_ID=0
-;Channel3.RF_channel_ID=0
-;Channel4.RF_channel_ID=0
-;Channel5.RF_channel_ID=0
-;Channel6.RF_channel_ID=0
-;Channel7.RF_channel_ID=0
+Channel2.RF_channel_ID=0
+Channel3.RF_channel_ID=0
+Channel4.RF_channel_ID=0
+Channel5.RF_channel_ID=0
+Channel6.RF_channel_ID=0
+Channel7.RF_channel_ID=0
;######### SPECIFIC CHANNELS CONFIG ######
diff --git a/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b.conf b/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b.conf
index 36c3b6f..ef46f32 100644
--- a/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b.conf
+++ b/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b.conf
@@ -29,8 +29,7 @@ GNSS-SDR.SUPL_CI=0x31b0
SignalSource.implementation=Flexiband_Signal_Source
SignalSource.flag_read_file=true
-#SignalSource.signal_file=/datalogger/signals/Fraunhofer/L125_III1b_210s.usb
-SignalSource.signal_file=/datalogger/captures/test.dat
+SignalSource.signal_file=/media/javier/SISTEMA/signals/front-end fraunhoffer/L125_III1b_210s.usb
;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
SignalSource.item_type=gr_complex
@@ -269,13 +268,11 @@ Resampler2.implementation=Pass_Through
;######### CHANNELS GLOBAL CONFIG ############
;#count: Number of available GPS satellite channels.
Channels_1C.count=1
-Channels_2S.count=1
+Channels_2S.count=5
;#count: Number of available Galileo satellite channels.
-;Channels_Galileo.count=0
;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver
Channels.in_acquisition=1
-
;#signal:
;# "1C" GPS L1 C/A
;# "2S" GPS L2 L2C (M)
@@ -285,53 +282,21 @@ Channels.in_acquisition=1
;# CHANNEL CONNECTION
Channel0.RF_channel_ID=0
-Channel0.signal=1C
-
Channel1.RF_channel_ID=1
-Channel1.signal=2S
-
Channel2.RF_channel_ID=1
-Channel2.signal=2S
-
Channel3.RF_channel_ID=1
-Channel3.signal=2S
-
Channel4.RF_channel_ID=1
-Channel4.signal=2S
-
Channel5.RF_channel_ID=1
-Channel5.signal=2S
-
Channel6.RF_channel_ID=1
-Channel6.signal=2S
-
Channel7.RF_channel_ID=1
-Channel7.signal=2S
-
-
Channel8.RF_channel_ID=1
-Channel8.signal=2S
-
Channel9.RF_channel_ID=1
-Channel9.signal=2S
-
Channel10.RF_channel_ID=1
-Channel10.signal=2S
-
Channel11.RF_channel_ID=1
-Channel11.signal=2S
-
Channel12.RF_channel_ID=1
-Channel12.signal=2S
-
Channel13.RF_channel_ID=1
-Channel13.signal=2S
-
Channel14.RF_channel_ID=1
-Channel14.signal=2S
-
Channel15.RF_channel_ID=1
-Channel15.signal=2S
;######### SPECIFIC CHANNELS CONFIG ######
@@ -371,102 +336,40 @@ Acquisition_1C.max_dwells=1
;#The following options are specific to each channel and overwrite the generic options
;# GPS L2C M
+
+Acquisition_2S.dump=false
+Acquisition_2S.dump_filename=./acq_dump.dat
+Acquisition_2S.item_type=gr_complex
+Acquisition_2S.if=0
+Acquisition_2S.implementation=GPS_L2_M_PCPS_Acquisition
+Acquisition_2S.threshold=0.0001
+Acquisition_2S.doppler_max=5000
+Acquisition_2S.doppler_min=-5000
+Acquisition_2S.doppler_step=30
+Acquisition_2S.max_dwells=1
+
+Acquisition_2S0.dump=false
+Acquisition_2S0.dump_filename=./acq_dump.dat
+Acquisition_2S0.item_type=gr_complex
+Acquisition_2S0.if=0
+Acquisition_2S0.implementation=GPS_L2_M_PCPS_Acquisition
+Acquisition_2S0.threshold=0.0001
+Acquisition_2S0.doppler_max=5000
+Acquisition_2S0.doppler_min=-5000
+Acquisition_2S0.doppler_step=30
+Acquisition_2S0.max_dwells=1
+
Acquisition_2S1.dump=false
Acquisition_2S1.dump_filename=./acq_dump.dat
Acquisition_2S1.item_type=gr_complex
Acquisition_2S1.if=0
Acquisition_2S1.implementation=GPS_L2_M_PCPS_Acquisition
Acquisition_2S1.threshold=0.0001
-;Acquisition_2S1.pfa=0.001
Acquisition_2S1.doppler_max=5000
Acquisition_2S1.doppler_min=-5000
Acquisition_2S1.doppler_step=30
Acquisition_2S1.max_dwells=1
-Acquisition_2S2.dump=false
-Acquisition_2S2.dump_filename=./acq_dump.dat
-Acquisition_2S2.item_type=gr_complex
-Acquisition_2S2.if=0
-Acquisition_2S2.implementation=GPS_L2_M_PCPS_Acquisition
-Acquisition_2S2.threshold=0.0003
-;Acquisition_2S2.pfa=0.001
-Acquisition_2S2.doppler_max=5000
-Acquisition_2S2.doppler_min=-5000
-Acquisition_2S2.doppler_step=30
-Acquisition_2S2.max_dwells=1
-
-Acquisition_2S3.dump=false
-Acquisition_2S3.dump_filename=./acq_dump.dat
-Acquisition_2S3.item_type=gr_complex
-Acquisition_2S3.if=0
-Acquisition_2S3.implementation=GPS_L2_M_PCPS_Acquisition
-Acquisition_2S3.threshold=0.0003
-;Acquisition_2S3.pfa=0.001
-Acquisition_2S3.doppler_max=5000
-Acquisition_2S3.doppler_min=-5000
-Acquisition_2S3.doppler_step=30
-Acquisition_2S3.max_dwells=1
-
-Acquisition_2S4.dump=false
-Acquisition_2S4.dump_filename=./acq_dump.dat
-Acquisition_2S4.item_type=gr_complex
-Acquisition_2S4.if=0
-Acquisition_2S4.implementation=GPS_L2_M_PCPS_Acquisition
-Acquisition_2S4.threshold=0.0003
-;Acquisition_2S4.pfa=0.001
-Acquisition_2S4.doppler_max=5000
-Acquisition_2S4.doppler_min=-5000
-Acquisition_2S4.doppler_step=30
-Acquisition_2S4.max_dwells=1
-
-Acquisition_2S5.dump=false
-Acquisition_2S5.dump_filename=./acq_dump.dat
-Acquisition_2S5.item_type=gr_complex
-Acquisition_2S5.if=0
-Acquisition_2S5.implementation=GPS_L2_M_PCPS_Acquisition
-Acquisition_2S5.threshold=0.0003
-;Acquisition_2S5.pfa=0.001
-Acquisition_2S5.doppler_max=5000
-Acquisition_2S5.doppler_min=-5000
-Acquisition_2S5.doppler_step=30
-Acquisition_2S5.max_dwells=1
-
-Acquisition_2S6.dump=false
-Acquisition_2S6.dump_filename=./acq_dump.dat
-Acquisition_2S6.item_type=gr_complex
-Acquisition_2S6.if=0
-Acquisition_2S6.implementation=GPS_L2_M_PCPS_Acquisition
-Acquisition_2S6.threshold=0.0003
-;Acquisition_2S6.pfa=0.001
-Acquisition_2S6.doppler_max=5000
-Acquisition_2S6.doppler_min=-5000
-Acquisition_2S6.doppler_step=30
-Acquisition_2S6.max_dwells=1
-
-Acquisition_2S7.dump=false
-Acquisition_2S7.dump_filename=./acq_dump.dat
-Acquisition_2S7.item_type=gr_complex
-Acquisition_2S7.if=0
-Acquisition_2S7.implementation=GPS_L2_M_PCPS_Acquisition
-Acquisition_2S7.threshold=0.0003
-;Acquisition_2S7.pfa=0.001
-Acquisition_2S7.doppler_max=5000
-Acquisition_2S7.doppler_min=-5000
-Acquisition_2S7.doppler_step=100
-Acquisition_2S7.max_dwells=1
-
-Acquisition_2S8.dump=false
-Acquisition_2S8.dump_filename=./acq_dump.dat
-Acquisition_2S8.item_type=gr_complex
-Acquisition_2S8.if=0
-Acquisition_2S8.implementation=GPS_L2_M_PCPS_Acquisition
-Acquisition_2S8.threshold=0.0003
-;Acquisition_2S8.pfa=0.001
-Acquisition_2S8.doppler_max=5000
-Acquisition_2S8.doppler_min=-5000
-Acquisition_2S8.doppler_step=100
-Acquisition_2S8.max_dwells=1
-
;######### TRACKING GLOBAL CONFIG ############
@@ -497,7 +400,28 @@ Tracking_1C.order=3;
Tracking_1C.early_late_space_chips=0.5;
-;######### TRACKING CHANNEL 8 CONFIG ############
+;######### TRACKING GENERAL CHANNEL CONFIG ############
+Tracking_2S.implementation=GPS_L2_M_DLL_PLL_Tracking
+Tracking_2S.item_type=gr_complex
+Tracking_2S.if=0
+Tracking_2S.dump=true
+Tracking_2S.dump_filename=./tracking_ch_
+Tracking_2S.pll_bw_hz=2.0;
+Tracking_2S.dll_bw_hz=0.5;
+Tracking_2S.order=3;
+Tracking_2S.early_late_space_chips=0.5;
+
+;######### TRACKING CHANNEL SPECIFIC CONFIG ############
+Tracking_2S0.implementation=GPS_L2_M_DLL_PLL_Tracking
+Tracking_2S0.item_type=gr_complex
+Tracking_2S0.if=0
+Tracking_2S0.dump=true
+Tracking_2S0.dump_filename=./tracking_ch_
+Tracking_2S0.pll_bw_hz=2.0;
+Tracking_2S0.dll_bw_hz=0.5;
+Tracking_2S0.order=3;
+Tracking_2S0.early_late_space_chips=0.5;
+
Tracking_2S1.implementation=GPS_L2_M_DLL_PLL_Tracking
Tracking_2S1.item_type=gr_complex
Tracking_2S1.if=0
@@ -507,77 +431,6 @@ Tracking_2S1.pll_bw_hz=2.0;
Tracking_2S1.dll_bw_hz=0.5;
Tracking_2S1.order=3;
Tracking_2S1.early_late_space_chips=0.5;
-;######### TRACKING CHANNEL 9 CONFIG ############
-Tracking_2S2.implementation=GPS_L2_M_DLL_PLL_Tracking
-Tracking_2S2.item_type=gr_complex
-Tracking_2S2.if=0
-Tracking_2S2.dump=true
-Tracking_2S2.dump_filename=./tracking_ch_
-Tracking_2S2.pll_bw_hz=2.0;
-Tracking_2S2.dll_bw_hz=0.5;
-Tracking_2S2.order=3;
-Tracking_2S2.early_late_space_chips=0.5;
-;######### TRACKING CHANNEL 10 CONFIG ############
-Tracking_2S3.implementation=GPS_L2_M_DLL_PLL_Tracking
-Tracking_2S3.item_type=gr_complex
-Tracking_2S3.if=0
-Tracking_2S3.dump=true
-Tracking_2S3.dump_filename=./tracking_ch_
-Tracking_2S3.pll_bw_hz=2.0;
-Tracking_2S3.dll_bw_hz=0.5;
-Tracking_2S3.order=3;
-Tracking_2S3.early_late_space_chips=0.5;
-;######### TRACKING CHANNEL 11 CONFIG ############
-Tracking_2S4.implementation=GPS_L2_M_DLL_PLL_Tracking
-Tracking_2S4.item_type=gr_complex
-Tracking_2S4.if=0
-Tracking_2S4.dump=true
-Tracking_2S4.dump_filename=./tracking_ch_
-Tracking_2S4.pll_bw_hz=2.0;
-Tracking_2S4.dll_bw_hz=0.3;
-Tracking_2S4.order=3;
-Tracking_2S4.early_late_space_chips=0.5;
-
-;######### TRACKING CHANNEL 12 CONFIG ############
-Tracking_2S5.implementation=GPS_L2_M_DLL_PLL_Tracking
-Tracking_2S5.item_type=gr_complex
-Tracking_2S5.if=0
-Tracking_2S5.dump=true
-Tracking_2S5.dump_filename=./tracking_ch_
-Tracking_2S5.pll_bw_hz=2.0;
-Tracking_2S5.dll_bw_hz=0.3;
-Tracking_2S5.order=3;
-Tracking_2S5.early_late_space_chips=0.5;
-;######### TRACKING CHANNEL 13 CONFIG ############
-Tracking_2S6.implementation=GPS_L2_M_DLL_PLL_Tracking
-Tracking_2S6.item_type=gr_complex
-Tracking_2S6.if=0
-Tracking_2S6.dump=true
-Tracking_2S6.dump_filename=./tracking_ch_
-Tracking_2S6.pll_bw_hz=2.0;
-Tracking_2S6.dll_bw_hz=0.3;
-Tracking_2S6.order=3;
-Tracking_2S6.early_late_space_chips=0.5;
-;######### TRACKING CHANNEL 14 CONFIG ############
-Tracking_2S7.implementation=GPS_L2_M_DLL_PLL_Tracking
-Tracking_2S7.item_type=gr_complex
-Tracking_2S7.if=0
-Tracking_2S7.dump=true
-Tracking_2S7.dump_filename=./tracking_ch_
-Tracking_2S7.pll_bw_hz=2.0;
-Tracking_2S7.dll_bw_hz=0.3;
-Tracking_2S7.order=3;
-Tracking_2S7.early_late_space_chips=0.5;
-;######### TRACKING CHANNEL 15 CONFIG ############
-Tracking_2S8.implementation=GPS_L2_M_DLL_PLL_Tracking
-Tracking_2S8.item_type=gr_complex
-Tracking_2S8.if=0
-Tracking_2S8.dump=true
-Tracking_2S8.dump_filename=./tracking_ch_
-Tracking_2S8.pll_bw_hz=2.0;
-Tracking_2S8.dll_bw_hz=0.3;
-Tracking_2S8.order=3;
-Tracking_2S8.early_late_space_chips=0.5;
;######### TELEMETRY DECODER GPS L1 CONFIG ############
diff --git a/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.cc
index 48457fa..0ce0fd4 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.cc
@@ -78,6 +78,7 @@ galileo_e5a_noncoherentIQ_acquisition_caf_cc::galileo_e5a_noncoherentIQ_acquisit
gr::io_signature::make(1, 1, sizeof(gr_complex)),
gr::io_signature::make(0, 0, sizeof(gr_complex)))
{
+ this->message_port_register_out(pmt::mp("events"));
d_sample_counter = 0; // SAMPLE COUNTER
d_active = false;
d_state = 0;
diff --git a/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.cc
index 3baa46b..c024937 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.cc
@@ -62,6 +62,7 @@ galileo_pcps_8ms_acquisition_cc::galileo_pcps_8ms_acquisition_cc(
gr::io_signature::make(1, 1, sizeof(gr_complex) * sampled_ms * samples_per_ms),
gr::io_signature::make(0, 0, sizeof(gr_complex) * sampled_ms * samples_per_ms))
{
+ this->message_port_register_out(pmt::mp("events"));
d_sample_counter = 0; // SAMPLE COUNTER
d_active = false;
d_state = 0;
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.cc
index 5120759..091958a 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.cc
@@ -76,7 +76,6 @@ pcps_acquisition_cc::pcps_acquisition_cc(
d_sample_counter = 0; // SAMPLE COUNTER
d_active = false;
d_state = 0;
- //d_queue = queue;
d_freq = freq;
d_fs_in = fs_in;
d_samples_per_ms = samples_per_ms;
@@ -447,15 +446,12 @@ int pcps_acquisition_cc::general_work(int noutput_items,
d_active = false;
d_state = 0;
-
d_sample_counter += d_fft_size * ninput_items[0]; // sample counter
consume_each(ninput_items[0]);
acquisition_message = 1;
-
this->message_port_pub(pmt::mp("events"), pmt::from_long(acquisition_message));
-
break;
}
@@ -478,7 +474,6 @@ int pcps_acquisition_cc::general_work(int noutput_items,
d_sample_counter += d_fft_size * ninput_items[0]; // sample counter
consume_each(ninput_items[0]);
acquisition_message = 2;
-
this->message_port_pub(pmt::mp("events"), pmt::from_long(acquisition_message));
break;
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.cc
index ce0b951..79dc4c2 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.cc
@@ -65,6 +65,7 @@ pcps_acquisition_fine_doppler_cc::pcps_acquisition_fine_doppler_cc(
gr::io_signature::make(1, 1, sizeof(gr_complex)),
gr::io_signature::make(0, 0, sizeof(gr_complex)))
{
+ this->message_port_register_out(pmt::mp("events"));
d_sample_counter = 0; // SAMPLE COUNTER
d_active = false;
d_queue = queue;
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_sc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_sc.cc
index 610a5ad..50a0c93 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_sc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_sc.cc
@@ -69,6 +69,7 @@ pcps_acquisition_sc::pcps_acquisition_sc(
gr::io_signature::make(1, 1, sizeof(lv_16sc_t) * sampled_ms * samples_per_ms * ( bit_transition_flag ? 2 : 1 )),
gr::io_signature::make(0, 0, 0))
{
+ this->message_port_register_out(pmt::mp("events"));
d_sample_counter = 0; // SAMPLE COUNTER
d_active = false;
d_state = 0;
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_assisted_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_assisted_acquisition_cc.cc
index d3d6d1b..d581ab6 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_assisted_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_assisted_acquisition_cc.cc
@@ -66,6 +66,7 @@ pcps_assisted_acquisition_cc::pcps_assisted_acquisition_cc(
gr::io_signature::make(1, 1, sizeof(gr_complex)),
gr::io_signature::make(0, 0, sizeof(gr_complex)))
{
+ this->message_port_register_out(pmt::mp("events"));
d_sample_counter = 0; // SAMPLE COUNTER
d_active = false;
d_queue = queue;
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.cc
index dbd2c65..9ba128c 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.cc
@@ -70,6 +70,7 @@ pcps_cccwsr_acquisition_cc::pcps_cccwsr_acquisition_cc(
gr::io_signature::make(1, 1, sizeof(gr_complex) * sampled_ms * samples_per_ms),
gr::io_signature::make(0, 0, sizeof(gr_complex) * sampled_ms * samples_per_ms))
{
+ this->message_port_register_out(pmt::mp("events"));
d_sample_counter = 0; // SAMPLE COUNTER
d_active = false;
d_state = 0;
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_multithread_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_multithread_acquisition_cc.cc
index c6c662c..3912c39 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_multithread_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_multithread_acquisition_cc.cc
@@ -70,6 +70,7 @@ pcps_multithread_acquisition_cc::pcps_multithread_acquisition_cc(
gr::io_signature::make(1, 1, sizeof(gr_complex) * sampled_ms * samples_per_ms),
gr::io_signature::make(0, 0, sizeof(gr_complex) * sampled_ms * samples_per_ms))
{
+ this->message_port_register_out(pmt::mp("events"));
d_sample_counter = 0; // SAMPLE COUNTER
d_active = false;
d_state = 0;
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.cc
index 22f82a6..63f1632 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.cc
@@ -90,6 +90,7 @@ pcps_opencl_acquisition_cc::pcps_opencl_acquisition_cc(
gr::io_signature::make(1, 1, sizeof(gr_complex) * sampled_ms * samples_per_ms),
gr::io_signature::make(0, 0, sizeof(gr_complex) * sampled_ms * samples_per_ms))
{
+ this->message_port_register_out(pmt::mp("events"));
d_sample_counter = 0; // SAMPLE COUNTER
d_active = false;
d_state = 0;
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.cc
index 9078a78..cd2fe70 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.cc
@@ -73,8 +73,7 @@ pcps_quicksync_acquisition_cc::pcps_quicksync_acquisition_cc(
gr::io_signature::make(1, 1, (sizeof(gr_complex)*sampled_ms * samples_per_ms )),
gr::io_signature::make(0, 0, (sizeof(gr_complex)*sampled_ms * samples_per_ms )))
{
- //DLOG(INFO) << "START CONSTRUCTOR";
-
+ this->message_port_register_out(pmt::mp("events"));
d_sample_counter = 0; // SAMPLE COUNTER
d_active = false;
d_state = 0;
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.cc
index 7af96e3..cc9eb97 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.cc
@@ -81,6 +81,7 @@ pcps_tong_acquisition_cc::pcps_tong_acquisition_cc(
gr::io_signature::make(1, 1, sizeof(gr_complex) * sampled_ms * samples_per_ms),
gr::io_signature::make(0, 0, sizeof(gr_complex) * sampled_ms * samples_per_ms))
{
+ this->message_port_register_out(pmt::mp("events"));
d_sample_counter = 0; // SAMPLE COUNTER
d_active = false;
d_state = 0;
diff --git a/src/algorithms/channel/adapters/channel.cc b/src/algorithms/channel/adapters/channel.cc
index 9928566..104421a 100644
--- a/src/algorithms/channel/adapters/channel.cc
+++ b/src/algorithms/channel/adapters/channel.cc
@@ -94,7 +94,8 @@ Channel::Channel(ConfigurationInterface *configuration, unsigned int channel,
channel_fsm_.set_queue(queue_);
connected_ = false;
- gnss_signal_ = Gnss_Signal();
+
+ gnss_signal_ = Gnss_Signal(implementation_);
chennel_msg_rx= channel_msg_receiver_make_cc(&channel_fsm_, repeat_);
diff --git a/src/algorithms/channel/libs/CMakeLists.txt b/src/algorithms/channel/libs/CMakeLists.txt
index e169fd4..cbb2966 100644
--- a/src/algorithms/channel/libs/CMakeLists.txt
+++ b/src/algorithms/channel/libs/CMakeLists.txt
@@ -37,3 +37,6 @@ file(GLOB CHANNEL_FSM_HEADERS "*.h")
add_library(channel_fsm ${CHANNEL_FSM_SOURCES} ${CHANNEL_FSM_HEADERS})
source_group(Headers FILES ${CHANNEL_FSM_HEADERS})
add_dependencies(channel_fsm glog-${glog_RELEASE})
+
+target_link_libraries(channel_fsm gnss_rx)
+
diff --git a/src/algorithms/channel/libs/channel_fsm.cc b/src/algorithms/channel/libs/channel_fsm.cc
index a03da50..be55bbf 100644
--- a/src/algorithms/channel/libs/channel_fsm.cc
+++ b/src/algorithms/channel/libs/channel_fsm.cc
@@ -81,6 +81,10 @@ public:
//std::cout << "Enter Channel_Acq_S1 " << std::endl;
context<ChannelFsm> ().start_acquisition();
}
+ ~channel_acquiring_fsm_S1()
+ {
+ //std::cout << "Exit Channel_Acq_S1 " << std::endl;
+ }
};
@@ -145,6 +149,7 @@ ChannelFsm::ChannelFsm(AcquisitionInterface *acquisition) :
void ChannelFsm::Event_start_acquisition()
{
this->process_event(Ev_channel_start_acquisition());
+ //std::cout<<"Ev_channel_start_acquisition launched"<<std::endl;
}
@@ -202,16 +207,6 @@ void ChannelFsm::start_acquisition()
void ChannelFsm::start_tracking()
{
- //LOG_AT_LEVEL(INFO) << "Channel " << channel_
- //<< " passing prn code phase " << acq_->prn_code_phase();
- //LOG_AT_LEVEL(INFO) << "Channel " << channel_
- //<< " passing doppler freq shift " << acq_->doppler_freq_shift();
- //LOG_AT_LEVEL(INFO) << "Channel " << channel_
- //<< " passing acquisition sample stamp "
- //<< acq_->get_sample_stamp();
- //trk_->set_prn_code_phase(acq_->prn_code_phase());
- //trk_->set_doppler_freq_shift(acq_->doppler_freq_shift());
- //trk_->set_acq_sample_stamp(acq_->get_sample_stamp());
trk_->start_tracking();
std::unique_ptr<ControlMessageFactory> cmf(new ControlMessageFactory());
if (queue_ != gr::msg_queue::make())
diff --git a/src/algorithms/observables/adapters/CMakeLists.txt b/src/algorithms/observables/adapters/CMakeLists.txt
index 6f526dc..0969dc2 100644
--- a/src/algorithms/observables/adapters/CMakeLists.txt
+++ b/src/algorithms/observables/adapters/CMakeLists.txt
@@ -20,7 +20,6 @@ set(OBS_ADAPTER_SOURCES
gps_l1_ca_observables.cc
galileo_e1_observables.cc
hybrid_observables.cc
- mixed_observables.cc
)
include_directories(
diff --git a/src/algorithms/observables/adapters/mixed_observables.cc b/src/algorithms/observables/adapters/mixed_observables.cc
deleted file mode 100644
index 22fc1c7..0000000
--- a/src/algorithms/observables/adapters/mixed_observables.cc
+++ /dev/null
@@ -1,89 +0,0 @@
-/*!
- * \file mixed_observables.cc
- * \brief Implementation of an adapter of a mixed observables block (muti-frequency and multi-system)
- * to a ObservablesInterface
- * \author Javier Arribas, 2015. jarribas(at)cttc.es
- *
- * -------------------------------------------------------------------------
- *
- * Copyright (C) 2010-2015 (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/>.
- *
- * -------------------------------------------------------------------------
- */
-
-
-#include "mixed_observables.h"
-#include "configuration_interface.h"
-#include <glog/logging.h>
-
-using google::LogMessage;
-
-MixedObservables::MixedObservables(ConfigurationInterface* configuration,
- std::string role,
- unsigned int in_streams,
- unsigned int out_streams) :
- role_(role),
- in_streams_(in_streams),
- out_streams_(out_streams)
-{
- int output_rate_ms;
- output_rate_ms = configuration->property(role + ".output_rate_ms", 500);
- std::string default_dump_filename = "./observables.dat";
- DLOG(INFO) << "role " << role;
- bool flag_averaging;
- flag_averaging = configuration->property(role + ".flag_averaging", false);
- dump_ = configuration->property(role + ".dump", false);
- dump_filename_ = configuration->property(role + ".dump_filename", default_dump_filename);
- observables_ = mixed_make_observables_cc(in_streams_, dump_, dump_filename_, output_rate_ms, flag_averaging);
- DLOG(INFO) << "pseudorange(" << observables_->unique_id() << ")";
-}
-
-
-MixedObservables::~MixedObservables()
-{}
-
-void MixedObservables::connect(gr::top_block_sptr top_block)
-{
- if(top_block) { /* top_block is not null */};
- // Nothing to connect internally
- DLOG(INFO) << "nothing to connect internally";
-}
-
-
-
-void MixedObservables::disconnect(gr::top_block_sptr top_block)
-{
- if(top_block) { /* top_block is not null */};
- // Nothing to disconnect
-}
-
-
-gr::basic_block_sptr MixedObservables::get_left_block()
-{
- return observables_;
-}
-
-
-gr::basic_block_sptr MixedObservables::get_right_block()
-{
- return observables_;
-}
-
diff --git a/src/algorithms/observables/adapters/mixed_observables.h b/src/algorithms/observables/adapters/mixed_observables.h
deleted file mode 100644
index 661f630..0000000
--- a/src/algorithms/observables/adapters/mixed_observables.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*!
- * \file mixed_observables.h
- * \brief Implementation of an adapter of a mixed observables block (muti-frequency and multi-system)
- * to a ObservablesInterface
- * \author Javier Arribas, 2015. jarribas(at)cttc.es
- *
- * -------------------------------------------------------------------------
- *
- * Copyright (C) 2010-2015 (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/>.
- *
- * -------------------------------------------------------------------------
- */
-
-#ifndef GNSS_SDR_MIXED_OBSERVABLES_H_
-#define GNSS_SDR_MIXED_OBSERVABLES_H_
-
-#include <string>
-#include "observables_interface.h"
-#include "mixed_observables_cc.h"
-
-
-class ConfigurationInterface;
-
-/*!
- * \brief This class implements an ObservablesInterface for mixed observables block (muti-frequency and multi-system)
- */
-class MixedObservables : public ObservablesInterface
-{
-public:
- MixedObservables(ConfigurationInterface* configuration,
- std::string role,
- unsigned int in_streams,
- unsigned int out_streams);
- virtual ~MixedObservables();
- std::string role()
- {
- return role_;
- }
-
- //! Returns "Mixed_Observables"
- std::string implementation()
- {
- return "Mixed_Observables";
- }
- void connect(gr::top_block_sptr top_block);
- void disconnect(gr::top_block_sptr top_block);
- gr::basic_block_sptr get_left_block();
- gr::basic_block_sptr get_right_block();
- void reset()
- {
- return;
- }
-
- //! All blocks must have an item_size() function implementation
- size_t item_size()
- {
- return sizeof(gr_complex);
- }
-
-private:
- mixed_observables_cc_sptr observables_;
- bool dump_;
- //unsigned int fs_in_;
- std::string dump_filename_;
- std::string role_;
- unsigned int in_streams_;
- unsigned int out_streams_;
-};
-
-#endif
diff --git a/src/algorithms/observables/gnuradio_blocks/CMakeLists.txt b/src/algorithms/observables/gnuradio_blocks/CMakeLists.txt
index 6f4b25f..f879f93 100644
--- a/src/algorithms/observables/gnuradio_blocks/CMakeLists.txt
+++ b/src/algorithms/observables/gnuradio_blocks/CMakeLists.txt
@@ -20,7 +20,6 @@ set(OBS_GR_BLOCKS_SOURCES
gps_l1_ca_observables_cc.cc
galileo_e1_observables_cc.cc
hybrid_observables_cc.cc
- mixed_observables_cc.cc
)
include_directories(
diff --git a/src/algorithms/observables/gnuradio_blocks/mixed_observables_cc.cc b/src/algorithms/observables/gnuradio_blocks/mixed_observables_cc.cc
deleted file mode 100644
index b4d0f9b..0000000
--- a/src/algorithms/observables/gnuradio_blocks/mixed_observables_cc.cc
+++ /dev/null
@@ -1,221 +0,0 @@
-/*!
- * \file mixed_observables_cc.cc
- * \brief Implementation of the pseudorange computation block for MIXED observables (Multi-frequency and Multi-system)
- * \author Javier Arribas, 2015. jarribas(at)cttc.es
- * -------------------------------------------------------------------------
- *
- * Copyright (C) 2010-2015 (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/>.
- *
- * -------------------------------------------------------------------------
- */
-
-#include "mixed_observables_cc.h"
-#include <algorithm>
-#include <cmath>
-#include <iostream>
-#include <map>
-#include <vector>
-#include <utility>
-#include <gnuradio/io_signature.h>
-#include <glog/logging.h>
-#include "control_message_factory.h"
-#include "gnss_synchro.h"
-#include "GPS_L1_CA.h"
-
-
-
-using google::LogMessage;
-
-
-mixed_observables_cc_sptr
-mixed_make_observables_cc(unsigned int nchannels, bool dump, std::string dump_filename, int output_rate_ms, bool flag_averaging)
-{
- return mixed_observables_cc_sptr(new mixed_observables_cc(nchannels, dump, dump_filename, output_rate_ms, flag_averaging));
-}
-
-
-mixed_observables_cc::mixed_observables_cc(unsigned int nchannels, bool dump, std::string dump_filename, int output_rate_ms, bool flag_averaging) :
- gr::block("mixed_observables_cc", gr::io_signature::make(nchannels, nchannels, sizeof(Gnss_Synchro)),
- gr::io_signature::make(nchannels, nchannels, sizeof(Gnss_Synchro)))
-{
- // initialize internal vars
- d_dump = dump;
- d_nchannels = nchannels;
- d_output_rate_ms = output_rate_ms;
- d_dump_filename = dump_filename;
- d_flag_averaging = flag_averaging;
-
- // ############# ENABLE DATA FILE LOG #################
- if (d_dump == true)
- {
- if (d_dump_file.is_open() == false)
- {
- try
- {
- d_dump_file.exceptions (std::ifstream::failbit | std::ifstream::badbit );
- d_dump_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary);
- LOG(INFO) << "Observables dump enabled Log file: " << d_dump_filename.c_str() << std::endl;
- }
- catch (std::ifstream::failure& e)
- {
- LOG(WARNING) << "Exception opening observables dump file " << e.what() << std::endl;
- }
- }
- }
-}
-
-
-
-mixed_observables_cc::~mixed_observables_cc()
-{
- d_dump_file.close();
-}
-
-
-bool MixedPairCompare_gnss_synchro_Prn_delay_ms(const std::pair<int,Gnss_Synchro>& a, const std::pair<int,Gnss_Synchro>& b)
-{
- return (a.second.Prn_timestamp_ms) < (b.second.Prn_timestamp_ms);
-}
-
-
-bool MixedPairCompare_gnss_synchro_d_TOW_at_current_symbol(const std::pair<int,Gnss_Synchro>& a, const std::pair<int,Gnss_Synchro>& b)
-{
- return (a.second.d_TOW_at_current_symbol) < (b.second.d_TOW_at_current_symbol);
-}
-
-
-int mixed_observables_cc::general_work (int noutput_items, gr_vector_int &ninput_items,
- gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
-{
- Gnss_Synchro **in = (Gnss_Synchro **) &input_items[0]; // Get the input pointer
- Gnss_Synchro **out = (Gnss_Synchro **) &output_items[0]; // Get the output pointer
-
- Gnss_Synchro current_gnss_synchro[d_nchannels];
- std::map<int,Gnss_Synchro> current_gnss_synchro_map;
- std::map<int,Gnss_Synchro>::iterator gnss_synchro_iter;
-
- if (d_nchannels != ninput_items.size())
- {
- LOG(WARNING) << "The Observables block is not well connected";
- }
-
- /*
- * 1. Read the GNSS SYNCHRO objects from available channels
- */
- for (unsigned int i = 0; i < d_nchannels; i++)
- {
- //Copy the telemetry decoder data to local copy
- current_gnss_synchro[i] = in[i][0];
- /*
- * 1.2 Assume no valid pseudoranges
- */
- current_gnss_synchro[i].Flag_valid_pseudorange = false;
- current_gnss_synchro[i].Pseudorange_m = 0.0;
- if(current_gnss_synchro[i].Signal[0] == '2')
- {
- if (current_gnss_synchro[i].Flag_valid_word) //if this channel have valid word
- {
- //record the word structure in a map for pseudorange computation
- current_gnss_synchro_map.insert(std::pair<int, Gnss_Synchro>(current_gnss_synchro[i].Channel_ID, current_gnss_synchro[i]));
- }
- }
- }
-
- /*
- * 2. Compute RAW pseudoranges using COMMON RECEPTION TIME algorithm. Use only the valid channels (channels that are tracking a satellite)
- */
-// if(current_gnss_synchro_map.size() > 0)
-// {
-// /*
-// * 2.1 Use CURRENT set of measurements and find the nearest satellite
-// * common RX time algorithm
-// */
-// // what is the most recent symbol TOW in the current set? -> this will be the reference symbol
-// gnss_synchro_iter = max_element(current_gnss_synchro_map.begin(), current_gnss_synchro_map.end(), MixedPairCompare_gnss_synchro_d_TOW_at_current_symbol);
-// double d_TOW_reference = gnss_synchro_iter->second.d_TOW_at_current_symbol;
-// double d_ref_PRN_rx_time_ms = gnss_synchro_iter->second.Prn_timestamp_ms;
-// //int reference_channel= gnss_synchro_iter->second.Channel_ID;
-//
-// // Now compute RX time differences due to the PRN alignment in the correlators
-// double traveltime_ms;
-// double pseudorange_m;
-// double delta_rx_time_ms;
-// for(gnss_synchro_iter = current_gnss_synchro_map.begin(); gnss_synchro_iter != current_gnss_synchro_map.end(); gnss_synchro_iter++)
-// {
-// // compute the required symbol history shift in order to match the reference symbol
-// delta_rx_time_ms = gnss_synchro_iter->second.Prn_timestamp_ms - d_ref_PRN_rx_time_ms;
-// //compute the pseudorange
-// traveltime_ms = (d_TOW_reference-gnss_synchro_iter->second.d_TOW_at_current_symbol)*1000.0 + delta_rx_time_ms + GPS_STARTOFFSET_ms;
-// pseudorange_m = traveltime_ms * GPS_C_m_ms; // [m]
-// // update the pseudorange object
-// current_gnss_synchro[gnss_synchro_iter->second.Channel_ID] = gnss_synchro_iter->second;
-// current_gnss_synchro[gnss_synchro_iter->second.Channel_ID].Pseudorange_m = pseudorange_m;
-// current_gnss_synchro[gnss_synchro_iter->second.Channel_ID].Flag_valid_pseudorange = true;
-// current_gnss_synchro[gnss_synchro_iter->second.Channel_ID].d_TOW_at_current_symbol = round(d_TOW_reference*1000)/1000 + GPS_STARTOFFSET_ms/1000.0;
-// std::cout<<"Pseudorange_m="<<current_gnss_synchro[gnss_synchro_iter->second.Channel_ID].Pseudorange_m<<std::endl;
-// std::cout<<"Signal="<<current_gnss_synchro[gnss_synchro_iter->second.Channel_ID].Signal<<std::endl;
-// }
-// }
-
- if(d_dump == true)
- {
- // MULTIPLEXED FILE RECORDING - Record results to file
- try
- {
- double tmp_double;
- for (unsigned int i = 0; i < d_nchannels; i++)
- {
- tmp_double = current_gnss_synchro[i].d_TOW_at_current_symbol;
- d_dump_file.write((char*)&tmp_double, sizeof(double));
- tmp_double = current_gnss_synchro[i].Prn_timestamp_ms;
- d_dump_file.write((char*)&tmp_double, sizeof(double));
- tmp_double = current_gnss_synchro[i].Pseudorange_m;
- d_dump_file.write((char*)&tmp_double, sizeof(double));
- tmp_double = (double)(current_gnss_synchro[i].Flag_valid_pseudorange==true);
- d_dump_file.write((char*)&tmp_double, sizeof(double));
- tmp_double = current_gnss_synchro[i].PRN;
- d_dump_file.write((char*)&tmp_double, sizeof(double));
- tmp_double = (double)(current_gnss_synchro[i].Flag_valid_symbol_output==true);
- d_dump_file.write((char*)&tmp_double, sizeof(double));
- tmp_double = current_gnss_synchro[i].Prompt_I;
- d_dump_file.write((char*)&tmp_double, sizeof(double));
- tmp_double = current_gnss_synchro[i].Prompt_Q;
- d_dump_file.write((char*)&tmp_double, sizeof(double));
- }
- }
- catch (const std::ifstream::failure& e)
- {
- LOG(WARNING) << "Exception writing observables dump file " << e.what() << std::endl;
- }
- }
-
- consume_each(1); //one by one
- for (unsigned int i = 0; i < d_nchannels; i++)
- {
- *out[i] = current_gnss_synchro[i];
- }
- if (noutput_items == 0)
- {
- LOG(WARNING) << "noutput_items = 0";
- }
- return 1;
-}
-
diff --git a/src/algorithms/observables/gnuradio_blocks/mixed_observables_cc.h b/src/algorithms/observables/gnuradio_blocks/mixed_observables_cc.h
deleted file mode 100644
index b278835..0000000
--- a/src/algorithms/observables/gnuradio_blocks/mixed_observables_cc.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*!
- * \file mixed_observables_cc.h
- * \brief Interface of the pseudorange computation block for MIXED observables (Multi-frequency and Multi-system)
- * \author Javier Arribas, 2015. jarribas(at)cttc.es
- * -------------------------------------------------------------------------
- *
- * Copyright (C) 2010-2015 (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/>.
- *
- * -------------------------------------------------------------------------
- */
-
-
-#ifndef GNSS_SDR_MIXED_OBSERVABLES_CC_H_
-#define GNSS_SDR_MIXED_OBSERVABLES_CC_H_
-
-#include <fstream>
-#include <string>
-#include <gnuradio/block.h>
-
-
-class mixed_observables_cc;
-
-typedef boost::shared_ptr<mixed_observables_cc> mixed_observables_cc_sptr;
-
-mixed_observables_cc_sptr
-mixed_make_observables_cc(unsigned int n_channels, bool dump, std::string dump_filename, int output_rate_ms, bool flag_averaging);
-
-/*!
- * \brief This class implements a block that computes MIXED observables (Multi-frequency and Multi-system)
- */
-class mixed_observables_cc : public gr::block
-{
-public:
- ~mixed_observables_cc ();
- int general_work (int noutput_items, gr_vector_int &ninput_items,
- gr_vector_const_void_star &input_items, gr_vector_void_star &output_items);
-
-private:
- friend mixed_observables_cc_sptr
- mixed_make_observables_cc(unsigned int nchannels, bool dump, std::string dump_filename, int output_rate_ms, bool flag_averaging);
- mixed_observables_cc(unsigned int nchannels, bool dump, std::string dump_filename, int output_rate_ms, bool flag_averaging);
-
- // class private vars
- bool d_dump;
- bool d_flag_averaging;
- unsigned int d_nchannels;
- int d_output_rate_ms;
- std::string d_dump_filename;
- std::ofstream d_dump_file;
-};
-
-#endif
diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/galileo_e1b_telemetry_decoder_cc.cc b/src/algorithms/telemetry_decoder/gnuradio_blocks/galileo_e1b_telemetry_decoder_cc.cc
index 8203e94..139f1f7 100644
--- a/src/algorithms/telemetry_decoder/gnuradio_blocks/galileo_e1b_telemetry_decoder_cc.cc
+++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/galileo_e1b_telemetry_decoder_cc.cc
@@ -463,8 +463,6 @@ int galileo_e1b_telemetry_decoder_cc::general_work (int noutput_items __attribut
current_synchro_data.Flag_valid_word = false;
}
- DLOG(INFO) << "delta_t = " << delta_t;
-
current_synchro_data.d_TOW = d_TOW_at_Preamble;
current_synchro_data.d_TOW_at_current_symbol = d_TOW_at_current_symbol;
current_synchro_data.d_TOW_hybrid_at_current_symbol = current_synchro_data.d_TOW_at_current_symbol - delta_t; //delta_t = t_gal - t_gps ----> t_gps = t_gal -delta_t
diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.cc b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.cc
index 660b2f4..347c1fa 100644
--- a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.cc
+++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.cc
@@ -71,7 +71,7 @@ gps_l1_ca_telemetry_decoder_cc::gps_l1_ca_telemetry_decoder_cc(
// set the preamble
unsigned short int preambles_bits[GPS_CA_PREAMBLE_LENGTH_BITS] = GPS_PREAMBLE;
- memcpy((unsigned short int*)this->d_preambles_bits, (unsigned short int*)preambles_bits, GPS_CA_PREAMBLE_LENGTH_BITS*sizeof(unsigned short int));
+ //memcpy((unsigned short int*)this->d_preambles_bits, (unsigned short int*)preambles_bits, GPS_CA_PREAMBLE_LENGTH_BITS*sizeof(unsigned short int));
// preamble bits to sampled symbols
d_preambles_symbols = (signed int*)malloc(sizeof(signed int) * GPS_CA_PREAMBLE_LENGTH_SYMBOLS);
@@ -80,7 +80,7 @@ gps_l1_ca_telemetry_decoder_cc::gps_l1_ca_telemetry_decoder_cc(
{
for (unsigned int j = 0; j < GPS_CA_TELEMETRY_SYMBOLS_PER_BIT; j++)
{
- if (d_preambles_bits[i] == 1)
+ if (preambles_bits[i] == 1)
{
d_preambles_symbols[n] = 1;
}
@@ -158,7 +158,7 @@ int gps_l1_ca_telemetry_decoder_cc::general_work (int noutput_items __attribute_
{
if (in[0][i].Flag_valid_symbol_output == true)
{
- if (in[0][i].Prompt_I < 0) // symbols clipping
+ if (in[0][i].Prompt_I < 0) // symbols clipping
{
corr_value -= d_preambles_symbols[i] * in[0][i].correlation_length_ms;
}
@@ -174,14 +174,15 @@ int gps_l1_ca_telemetry_decoder_cc::general_work (int noutput_items __attribute_
//******* frame sync ******************
if (abs(corr_value) == GPS_CA_PREAMBLE_LENGTH_SYMBOLS)
{
+ //TODO: Rewrite with state machine
if (d_stat == 0)
{
d_GPS_FSM.Event_gps_word_preamble();
+ //record the preamble sample stamp
d_preamble_time_seconds = in[0][0].Tracking_timestamp_secs; // record the preamble sample stamp
- DLOG(INFO) << "Preamble detection for SAT " << this->d_satellite << "in[0][0].Tracking_timestamp_secs=" << round(in[0][0].Tracking_timestamp_secs * 1000.0);
+ DLOG(INFO) << "Preamble detection for SAT " << this->d_satellite << "in[0][0].Tracking_timestamp_secs=" << round(in[0][0].Tracking_timestamp_secs * 1000.0);
//sync the symbol to bits integrator
- d_symbol_accumulator = 0;
- d_symbol_accumulator_counter = 0;
+ d_symbol_accumulator = 0; d_symbol_accumulator_counter = 0;
d_frame_bit_index = 0;
d_stat = 1; // enter into frame pre-detection status
}
@@ -190,10 +191,11 @@ int gps_l1_ca_telemetry_decoder_cc::general_work (int noutput_items __attribute_
preamble_diff_ms = round((in[0][0].Tracking_timestamp_secs - d_preamble_time_seconds) * 1000.0);
if (abs(preamble_diff_ms - GPS_SUBFRAME_MS) < 1)
{
- DLOG(INFO) << "Preamble confirmation for SAT " << this->d_satellite << "in[0][0].Tracking_timestamp_secs=" << round(in[0][0].Tracking_timestamp_secs * 1000.0);
+ DLOG(INFO) << "Preamble confirmation for SAT " << this->d_satellite << "in[0][0].Tracking_timestamp_secs=" << round(in[0][0].Tracking_timestamp_secs * 1000.0);
d_GPS_FSM.Event_gps_word_preamble();
d_flag_preamble = true;
- d_preamble_time_seconds = in[0][0].Tracking_timestamp_secs; // record the PRN start sample index associated to the preamble
+ d_preamble_time_seconds = in[0][0].Tracking_timestamp_secs;// - d_preamble_duration_seconds; //record the PRN start sample index associated to the preamble
+
if (!d_flag_frame_sync)
{
// send asynchronous message to tracking to inform of frame sync and extend correlation time
@@ -212,21 +214,24 @@ int gps_l1_ca_telemetry_decoder_cc::general_work (int noutput_items __attribute_
DLOG(INFO) << " Frame sync SAT " << this->d_satellite << " with preamble start at " << d_preamble_time_seconds << " [s]";
}
}
- else
+ }
+ }
+ else
+ {
+ if (d_stat == 1)
+ {
+ preamble_diff_ms = round((in[0][0].Tracking_timestamp_secs - d_preamble_time_seconds) * 1000.0);
+ if (preamble_diff_ms > GPS_SUBFRAME_MS+1)
{
- if (preamble_diff_ms > GPS_SUBFRAME_MS + 1)
- {
- DLOG(INFO) << "Lost of frame sync SAT " << this->d_satellite << " preamble_diff_ms= " << preamble_diff_ms;
- d_stat = 0; // lost of frame sync
- d_flag_frame_sync = false;
- flag_TOW_set = false;
- }
+ DLOG(INFO) << "Lost of frame sync SAT " << this->d_satellite << " preamble_diff= " << preamble_diff_ms;
+ d_stat = 0; //lost of frame sync
+ d_flag_frame_sync = false;
+ flag_TOW_set = false;
}
}
}
//******* SYMBOL TO BIT *******
-
if (in[0][0].Flag_valid_symbol_output == true)
{
// extended correlation to bit period is enabled in tracking!
@@ -234,207 +239,207 @@ int gps_l1_ca_telemetry_decoder_cc::general_work (int noutput_items __attribute_
d_symbol_accumulator_counter += in[0][0].correlation_length_ms;
}
if (d_symbol_accumulator_counter >= 20)
- {
- if (d_symbol_accumulator > 0)
- { //symbol to bit
- d_GPS_frame_4bytes += 1; //insert the telemetry bit in LSB
- }
- d_symbol_accumulator = 0;
- d_symbol_accumulator_counter = 0;
- //******* bits to words ******
- d_frame_bit_index++;
- if (d_frame_bit_index == 30)
- {
- d_frame_bit_index = 0;
- // parity check
- // Each word in wordbuff is composed of:
- // Bits 0 to 29 = the GPS data word
- // Bits 30 to 31 = 2 LSBs of the GPS word ahead.
- // prepare the extended frame [-2 -1 0 ... 30]
- if (d_prev_GPS_frame_4bytes & 0x00000001)
- {
- d_GPS_frame_4bytes = d_GPS_frame_4bytes | 0x40000000;
- }
- if (d_prev_GPS_frame_4bytes & 0x00000002)
- {
- d_GPS_frame_4bytes = d_GPS_frame_4bytes | 0x80000000;
- }
- /* Check that the 2 most recently logged words pass parity. Have to first
- invert the data bits according to bit 30 of the previous word. */
- if(d_GPS_frame_4bytes & 0x40000000)
- {
- d_GPS_frame_4bytes ^= 0x3FFFFFC0; // invert the data bits (using XOR)
- }
- if (gps_l1_ca_telemetry_decoder_cc::gps_word_parityCheck(d_GPS_frame_4bytes))
- {
- memcpy(&d_GPS_FSM.d_GPS_frame_4bytes, &d_GPS_frame_4bytes, sizeof(char)*4);
- d_GPS_FSM.d_preamble_time_ms = d_preamble_time_seconds * 1000.0;
- d_GPS_FSM.Event_gps_word_valid();
- // send TLM data to PVT using asynchronous message queues
- if (d_GPS_FSM.d_flag_new_subframe == true)
- {
- switch (d_GPS_FSM.d_subframe_ID)
- {
- case 3: //we have a new set of ephemeris data for the current SV
- if (d_GPS_FSM.d_nav.satellite_validation() == true)
- {
- // get ephemeris object for this SV (mandatory)
- std::shared_ptr<Gps_Ephemeris> tmp_obj = std::make_shared<Gps_Ephemeris>(d_GPS_FSM.d_nav.get_ephemeris());
- this->message_port_pub(pmt::mp("telemetry"), pmt::make_any(tmp_obj));
- }
- break;
- case 4: // Possible IONOSPHERE and UTC model update (page 18)
- if (d_GPS_FSM.d_nav.flag_iono_valid == true)
- {
- std::shared_ptr<Gps_Iono> tmp_obj = std::make_shared<Gps_Iono>( d_GPS_FSM.d_nav.get_iono());
- this->message_port_pub(pmt::mp("telemetry"), pmt::make_any(tmp_obj));
- }
- if (d_GPS_FSM.d_nav.flag_utc_model_valid == true)
- {
- std::shared_ptr<Gps_Utc_Model> tmp_obj = std::make_shared<Gps_Utc_Model>(d_GPS_FSM.d_nav.get_utc_model());
- this->message_port_pub(pmt::mp("telemetry"), pmt::make_any(tmp_obj));
- }
- break;
- case 5:
- // get almanac (if available)
- //TODO: implement almanac reader in navigation_message
- break;
- default:
- break;
- }
- d_GPS_FSM.clear_flag_new_subframe();
- }
+ {
+ if (d_symbol_accumulator > 0)
+ { //symbol to bit
+ d_GPS_frame_4bytes += 1; //insert the telemetry bit in LSB
+ }
+ d_symbol_accumulator = 0;
+ d_symbol_accumulator_counter = 0;
+ //******* bits to words ******
+ d_frame_bit_index++;
+ if (d_frame_bit_index == 30)
+ {
+ d_frame_bit_index = 0;
+ // parity check
+ // Each word in wordbuff is composed of:
+ // Bits 0 to 29 = the GPS data word
+ // Bits 30 to 31 = 2 LSBs of the GPS word ahead.
+ // prepare the extended frame [-2 -1 0 ... 30]
+ if (d_prev_GPS_frame_4bytes & 0x00000001)
+ {
+ d_GPS_frame_4bytes = d_GPS_frame_4bytes | 0x40000000;
+ }
+ if (d_prev_GPS_frame_4bytes & 0x00000002)
+ {
+ d_GPS_frame_4bytes = d_GPS_frame_4bytes | 0x80000000;
+ }
+ /* Check that the 2 most recently logged words pass parity. Have to first
+ invert the data bits according to bit 30 of the previous word. */
+ if(d_GPS_frame_4bytes & 0x40000000)
+ {
+ d_GPS_frame_4bytes ^= 0x3FFFFFC0; // invert the data bits (using XOR)
+ }
+ if (gps_l1_ca_telemetry_decoder_cc::gps_word_parityCheck(d_GPS_frame_4bytes))
+ {
+ memcpy(&d_GPS_FSM.d_GPS_frame_4bytes, &d_GPS_frame_4bytes, sizeof(char)*4);
+ d_GPS_FSM.d_preamble_time_ms = d_preamble_time_seconds * 1000.0;
+ d_GPS_FSM.Event_gps_word_valid();
+ // send TLM data to PVT using asynchronous message queues
+ if (d_GPS_FSM.d_flag_new_subframe == true)
+ {
+ switch (d_GPS_FSM.d_subframe_ID)
+ {
+ case 3: //we have a new set of ephemeris data for the current SV
+ if (d_GPS_FSM.d_nav.satellite_validation() == true)
+ {
+ // get ephemeris object for this SV (mandatory)
+ std::shared_ptr<Gps_Ephemeris> tmp_obj = std::make_shared<Gps_Ephemeris>(d_GPS_FSM.d_nav.get_ephemeris());
+ this->message_port_pub(pmt::mp("telemetry"), pmt::make_any(tmp_obj));
+ }
+ break;
+ case 4: // Possible IONOSPHERE and UTC model update (page 18)
+ if (d_GPS_FSM.d_nav.flag_iono_valid == true)
+ {
+ std::shared_ptr<Gps_Iono> tmp_obj = std::make_shared<Gps_Iono>( d_GPS_FSM.d_nav.get_iono());
+ this->message_port_pub(pmt::mp("telemetry"), pmt::make_any(tmp_obj));
+ }
+ if (d_GPS_FSM.d_nav.flag_utc_model_valid == true)
+ {
+ std::shared_ptr<Gps_Utc_Model> tmp_obj = std::make_shared<Gps_Utc_Model>(d_GPS_FSM.d_nav.get_utc_model());
+ this->message_port_pub(pmt::mp("telemetry"), pmt::make_any(tmp_obj));
+ }
+ break;
+ case 5:
+ // get almanac (if available)
+ //TODO: implement almanac reader in navigation_message
+ break;
+ default:
+ break;
+ }
+ d_GPS_FSM.clear_flag_new_subframe();
+ }
- d_flag_parity = true;
- }
- else
- {
- d_GPS_FSM.Event_gps_word_invalid();
- d_flag_parity = false;
- }
- d_prev_GPS_frame_4bytes = d_GPS_frame_4bytes; // save the actual frame
- d_GPS_frame_4bytes = d_GPS_frame_4bytes & 0;
- }
- else
- {
- d_GPS_frame_4bytes <<= 1; //shift 1 bit left the telemetry word
- }
- }
- // output the frame
- consume_each(1); //one by one
- Gnss_Synchro current_synchro_data; //structure to save the synchronization information and send the output object to the next block
- //1. Copy the current tracking output
- current_synchro_data = in[0][0];
- //2. Add the telemetry decoder information
- if (this->d_flag_preamble == true and d_GPS_FSM.d_nav.d_TOW > 0)
- //update TOW at the preamble instant (todo: check for valid d_TOW)
- // JAVI: 30/06/2014
- // TOW, in GPS, is referred to the START of the SUBFRAME, that is, THE FIRST SYMBOL OF THAT SUBFRAME, NOT THE PREAMBLE.
- // thus, no correction should be done. d_TOW_at_Preamble should be renamed to d_TOW_at_subframe_start.
- // Sice we detected the preable, then, we are in the last symbol of that preamble, or just at the start of the first subframe symbol.
- {
- d_TOW_at_Preamble = d_GPS_FSM.d_nav.d_TOW + GPS_SUBFRAME_SECONDS; //we decoded the current TOW when the last word of the subframe arrive, so, we have a lag of ONE SUBFRAME
- d_TOW_at_current_symbol = d_TOW_at_Preamble;
- Prn_timestamp_at_preamble_ms = in[0][0].Tracking_timestamp_secs * 1000.0;
- if (flag_TOW_set == false)
- {
- flag_TOW_set = true;
- }
- }
- else
- {
- d_TOW_at_current_symbol = d_TOW_at_current_symbol + GPS_L1_CA_CODE_PERIOD;
- }
+ d_flag_parity = true;
+ }
+ else
+ {
+ d_GPS_FSM.Event_gps_word_invalid();
+ d_flag_parity = false;
+ }
+ d_prev_GPS_frame_4bytes = d_GPS_frame_4bytes; // save the actual frame
+ d_GPS_frame_4bytes = d_GPS_frame_4bytes & 0;
+ }
+ else
+ {
+ d_GPS_frame_4bytes <<= 1; //shift 1 bit left the telemetry word
+ }
+ }
+ // output the frame
+ consume_each(1); //one by one
+ Gnss_Synchro current_synchro_data; //structure to save the synchronization information and send the output object to the next block
+ //1. Copy the current tracking output
+ current_synchro_data = in[0][0];
+ //2. Add the telemetry decoder information
+ if (this->d_flag_preamble == true and d_GPS_FSM.d_nav.d_TOW > 0)
+ //update TOW at the preamble instant (todo: check for valid d_TOW)
+ // JAVI: 30/06/2014
+ // TOW, in GPS, is referred to the START of the SUBFRAME, that is, THE FIRST SYMBOL OF THAT SUBFRAME, NOT THE PREAMBLE.
+ // thus, no correction should be done. d_TOW_at_Preamble should be renamed to d_TOW_at_subframe_start.
+ // Sice we detected the preable, then, we are in the last symbol of that preamble, or just at the start of the first subframe symbol.
+ {
+ d_TOW_at_Preamble = d_GPS_FSM.d_nav.d_TOW + GPS_SUBFRAME_SECONDS; //we decoded the current TOW when the last word of the subframe arrive, so, we have a lag of ONE SUBFRAME
+ d_TOW_at_current_symbol = d_TOW_at_Preamble;
+ Prn_timestamp_at_preamble_ms = in[0][0].Tracking_timestamp_secs * 1000.0;
+ if (flag_TOW_set == false)
+ {
+ flag_TOW_set = true;
+ }
+ }
+ else
+ {
+ d_TOW_at_current_symbol = d_TOW_at_current_symbol + GPS_L1_CA_CODE_PERIOD;
+ }
- current_synchro_data.d_TOW = d_TOW_at_Preamble;
- current_synchro_data.d_TOW_at_current_symbol = d_TOW_at_current_symbol;
- current_synchro_data.d_TOW_hybrid_at_current_symbol = current_synchro_data.d_TOW_at_current_symbol; // to be used in the hybrid configuration
- current_synchro_data.Flag_valid_word = (d_flag_frame_sync == true and d_flag_parity == true and flag_TOW_set == true);
- current_synchro_data.Flag_preamble = d_flag_preamble;
- current_synchro_data.Prn_timestamp_ms = in[0][0].Tracking_timestamp_secs * 1000.0;
- current_synchro_data.Prn_timestamp_at_preamble_ms = Prn_timestamp_at_preamble_ms;
+ current_synchro_data.d_TOW = d_TOW_at_Preamble;
+ current_synchro_data.d_TOW_at_current_symbol = d_TOW_at_current_symbol;
+ current_synchro_data.d_TOW_hybrid_at_current_symbol = current_synchro_data.d_TOW_at_current_symbol; // to be used in the hybrid configuration
+ current_synchro_data.Flag_valid_word = (d_flag_frame_sync == true and d_flag_parity == true and flag_TOW_set == true);
+ current_synchro_data.Flag_preamble = d_flag_preamble;
+ current_synchro_data.Prn_timestamp_ms = in[0][0].Tracking_timestamp_secs * 1000.0;
+ current_synchro_data.Prn_timestamp_at_preamble_ms = Prn_timestamp_at_preamble_ms;
- if (flag_PLL_180_deg_phase_locked == true)
- {
- //correct the accumulated phase for the costas loop phase shift, if required
- current_synchro_data.Carrier_phase_rads += GPS_PI;
- }
+ if (flag_PLL_180_deg_phase_locked == true)
+ {
+ //correct the accumulated phase for the costas loop phase shift, if required
+ current_synchro_data.Carrier_phase_rads += GPS_PI;
+ }
- if(d_dump == true)
- {
- // MULTIPLEXED FILE RECORDING - Record results to file
- try
- {
- double tmp_double;
- tmp_double = d_TOW_at_current_symbol;
- d_dump_file.write((char*)&tmp_double, sizeof(double));
- tmp_double = current_synchro_data.Prn_timestamp_ms;
- d_dump_file.write((char*)&tmp_double, sizeof(double));
- tmp_double = d_TOW_at_Preamble;
- d_dump_file.write((char*)&tmp_double, sizeof(double));
- }
- catch (const std::ifstream::failure & e)
- {
- LOG(WARNING) << "Exception writing observables dump file " << e.what();
- }
- }
+ if(d_dump == true)
+ {
+ // MULTIPLEXED FILE RECORDING - Record results to file
+ try
+ {
+ double tmp_double;
+ tmp_double = d_TOW_at_current_symbol;
+ d_dump_file.write((char*)&tmp_double, sizeof(double));
+ tmp_double = current_synchro_data.Prn_timestamp_ms;
+ d_dump_file.write((char*)&tmp_double, sizeof(double));
+ tmp_double = d_TOW_at_Preamble;
+ d_dump_file.write((char*)&tmp_double, sizeof(double));
+ }
+ catch (const std::ifstream::failure & e)
+ {
+ LOG(WARNING) << "Exception writing observables dump file " << e.what();
+ }
+ }
- //todo: implement averaging
+ //todo: implement averaging
- d_average_count++;
- if (d_average_count == d_decimation_output_factor)
- {
- d_average_count = 0;
- //3. Make the output (copy the object contents to the GNURadio reserved memory)
- *out[0] = current_synchro_data;
- //std::cout<<"GPS L1 TLM output on CH="<<this->d_channel << " SAMPLE STAMP="<<d_sample_counter/d_decimation_output_factor<<std::endl;
- return 1;
- }
- else
- {
- return 0;
- }
-}
+ d_average_count++;
+ if (d_average_count == d_decimation_output_factor)
+ {
+ d_average_count = 0;
+ //3. Make the output (copy the object contents to the GNURadio reserved memory)
+ *out[0] = current_synchro_data;
+ //std::cout<<"GPS L1 TLM output on CH="<<this->d_channel << " SAMPLE STAMP="<<d_sample_counter/d_decimation_output_factor<<std::endl;
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+ }
-void gps_l1_ca_telemetry_decoder_cc::set_decimation(int decimation)
-{
- d_decimation_output_factor = decimation;
-}
+ void gps_l1_ca_telemetry_decoder_cc::set_decimation(int decimation)
+ {
+ d_decimation_output_factor = decimation;
+ }
-void gps_l1_ca_telemetry_decoder_cc::set_satellite(Gnss_Satellite satellite)
-{
- d_satellite = Gnss_Satellite(satellite.get_system(), satellite.get_PRN());
- LOG(INFO) << "Setting decoder Finite State Machine to satellite " << d_satellite;
- d_GPS_FSM.i_satellite_PRN = d_satellite.get_PRN();
- DLOG(INFO) << "Navigation Satellite set to " << d_satellite;
-}
+ void gps_l1_ca_telemetry_decoder_cc::set_satellite(Gnss_Satellite satellite)
+ {
+ d_satellite = Gnss_Satellite(satellite.get_system(), satellite.get_PRN());
+ LOG(INFO) << "Setting decoder Finite State Machine to satellite " << d_satellite;
+ d_GPS_FSM.i_satellite_PRN = d_satellite.get_PRN();
+ DLOG(INFO) << "Navigation Satellite set to " << d_satellite;
+ }
-void gps_l1_ca_telemetry_decoder_cc::set_channel(int channel)
-{
- d_channel = channel;
- d_GPS_FSM.i_channel_ID = channel;
- DLOG(INFO) << "Navigation channel set to " << channel;
- // ############# ENABLE DATA FILE LOG #################
- if (d_dump == true)
- {
- if (d_dump_file.is_open() == false)
- {
- try
- {
- d_dump_filename = "telemetry";
- d_dump_filename.append(boost::lexical_cast<std::string>(d_channel));
- d_dump_filename.append(".dat");
- d_dump_file.exceptions ( std::ifstream::failbit | std::ifstream::badbit );
- d_dump_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary);
- LOG(INFO) << "Telemetry decoder dump enabled on channel " << d_channel
- << " Log file: " << d_dump_filename.c_str();
- }
- catch (const std::ifstream::failure &e)
- {
- LOG(WARNING) << "channel " << d_channel << " Exception opening trk dump file " << e.what();
- }
- }
- }
-}
+ void gps_l1_ca_telemetry_decoder_cc::set_channel(int channel)
+ {
+ d_channel = channel;
+ d_GPS_FSM.i_channel_ID = channel;
+ DLOG(INFO) << "Navigation channel set to " << channel;
+ // ############# ENABLE DATA FILE LOG #################
+ if (d_dump == true)
+ {
+ if (d_dump_file.is_open() == false)
+ {
+ try
+ {
+ d_dump_filename = "telemetry";
+ d_dump_filename.append(boost::lexical_cast<std::string>(d_channel));
+ d_dump_filename.append(".dat");
+ d_dump_file.exceptions ( std::ifstream::failbit | std::ifstream::badbit );
+ d_dump_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary);
+ LOG(INFO) << "Telemetry decoder dump enabled on channel " << d_channel
+ << " Log file: " << d_dump_filename.c_str();
+ }
+ catch (const std::ifstream::failure &e)
+ {
+ LOG(WARNING) << "channel " << d_channel << " Exception opening trk dump file " << e.what();
+ }
+ }
+ }
+ }
diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.h b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.h
index 961d83c..d0b2763 100644
--- a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.h
+++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.h
@@ -85,7 +85,7 @@ private:
bool gps_word_parityCheck(unsigned int gpsword);
// constants
- unsigned short int d_preambles_bits[GPS_CA_PREAMBLE_LENGTH_BITS];
+ //unsigned short int d_preambles_bits[GPS_CA_PREAMBLE_LENGTH_BITS];
// class private vars
int *d_preambles_symbols;
diff --git a/src/algorithms/tracking/gnuradio_blocks/galileo_e1_dll_pll_veml_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/galileo_e1_dll_pll_veml_tracking_cc.cc
index f431a15..30a10d3 100755
--- a/src/algorithms/tracking/gnuradio_blocks/galileo_e1_dll_pll_veml_tracking_cc.cc
+++ b/src/algorithms/tracking/gnuradio_blocks/galileo_e1_dll_pll_veml_tracking_cc.cc
@@ -385,14 +385,7 @@ int galileo_e1_dll_pll_veml_tracking_cc::general_work (int noutput_items __attri
{
std::cout << "Loss of lock in channel " << d_channel << "!" << std::endl;
LOG(INFO) << "Loss of lock in channel " << d_channel << "!";
- pmt::pmt_t value = pmt::from_long(3);//3 -> loss of lock
- this->message_port_pub(pmt::mp("events"), value);
-
-// std::unique_ptr<ControlMessageFactory> cmf(new ControlMessageFactory());
-// if (d_queue != gr::msg_queue::sptr())
-// {
-// d_queue->handle(cmf->GetQueueMessage(d_channel, 2));
-// }
+ this->message_port_pub(pmt::mp("events"), pmt::from_long(3));//3 -> loss of lock
d_carrier_lock_fail_counter = 0;
d_enable_tracking = false; // TODO: check if disabling tracking is consistent with the channel state machine
}
diff --git a/src/algorithms/tracking/gnuradio_blocks/galileo_e1_tcp_connector_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/galileo_e1_tcp_connector_tracking_cc.cc
index c129879..cac3487 100644
--- a/src/algorithms/tracking/gnuradio_blocks/galileo_e1_tcp_connector_tracking_cc.cc
+++ b/src/algorithms/tracking/gnuradio_blocks/galileo_e1_tcp_connector_tracking_cc.cc
@@ -110,7 +110,7 @@ Galileo_E1_Tcp_Connector_Tracking_cc::Galileo_E1_Tcp_Connector_Tracking_cc(
{
// Telemetry bit synchronization message port input
this->message_port_register_in(pmt::mp("preamble_timestamp_s"));
-
+ this->message_port_register_out(pmt::mp("events"));
this->set_relative_rate(1.0/vector_length);
// initialize internal vars
d_queue = queue;
@@ -394,11 +394,8 @@ int Galileo_E1_Tcp_Connector_Tracking_cc::general_work (int noutput_items __attr
{
std::cout << "Loss of lock in channel " << d_channel << "!" << std::endl;
LOG(INFO) << "Loss of lock in channel " << d_channel << "!";
- std::unique_ptr<ControlMessageFactory> cmf(new ControlMessageFactory());
- if (d_queue != gr::msg_queue::sptr())
- {
- d_queue->handle(cmf->GetQueueMessage(d_channel, 2));
- }
+ this->message_port_pub(pmt::mp("events"), pmt::from_long(3));//3 -> loss of lock
+
d_carrier_lock_fail_counter = 0;
d_enable_tracking = false; // TODO: check if disabling tracking is consistent with the channel state machine
}
diff --git a/src/algorithms/tracking/gnuradio_blocks/galileo_e5a_dll_pll_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/galileo_e5a_dll_pll_tracking_cc.cc
index fb1cdc9..2673394 100644
--- a/src/algorithms/tracking/gnuradio_blocks/galileo_e5a_dll_pll_tracking_cc.cc
+++ b/src/algorithms/tracking/gnuradio_blocks/galileo_e5a_dll_pll_tracking_cc.cc
@@ -109,7 +109,7 @@ Galileo_E5a_Dll_Pll_Tracking_cc::Galileo_E5a_Dll_Pll_Tracking_cc(
{
// Telemetry bit synchronization message port input
this->message_port_register_in(pmt::mp("preamble_timestamp_s"));
-
+ this->message_port_register_out(pmt::mp("events"));
this->set_relative_rate(1.0 / vector_length);
// initialize internal vars
d_queue = queue;
@@ -586,11 +586,7 @@ int Galileo_E5a_Dll_Pll_Tracking_cc::general_work (int noutput_items __attribute
{
std::cout << "Loss of lock in channel " << d_channel << "!" << std::endl;
LOG(INFO) << "Loss of lock in channel " << d_channel << "!";
- std::unique_ptr<ControlMessageFactory> cmf(new ControlMessageFactory());
- if (d_queue != gr::msg_queue::sptr())
- {
- d_queue->handle(cmf->GetQueueMessage(d_channel, 2));
- }
+ this->message_port_pub(pmt::mp("events"), pmt::from_long(3));//3 -> loss of lock
d_carrier_lock_fail_counter = 0;
d_state = 0; // TODO: check if disabling tracking is consistent with the channel state machine
}
@@ -615,11 +611,7 @@ int Galileo_E5a_Dll_Pll_Tracking_cc::general_work (int noutput_items __attribute
{
std::cout << "Loss of lock in channel " << d_channel << "!" << std::endl;
LOG(INFO) << "Loss of lock in channel " << d_channel << "!";
- std::unique_ptr<ControlMessageFactory> cmf(new ControlMessageFactory());
- if (d_queue != gr::msg_queue::sptr())
- {
- d_queue->handle(cmf->GetQueueMessage(d_channel, 2));
- }
+ this->message_port_pub(pmt::mp("events"), pmt::from_long(3));//3 -> loss of lock
d_carrier_lock_fail_counter = 0;
d_state = 0;
}
diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.cc
index cfad636..3d5f5de 100644
--- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.cc
+++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.cc
@@ -548,14 +548,7 @@ int gps_l1_ca_dll_pll_c_aid_tracking_cc::general_work (int noutput_items __attri
{
std::cout << "Loss of lock in channel " << d_channel << "!" << std::endl;
LOG(INFO) << "Loss of lock in channel " << d_channel << "!";
- pmt::pmt_t value = pmt::from_long(3);//3 -> loss of lock
- this->message_port_pub(pmt::mp("events"), value);
-
- //std::unique_ptr<ControlMessageFactory> cmf(new ControlMessageFactory());
- //if (d_queue != gr::msg_queue::sptr())
- // {
- // d_queue->handle(cmf->GetQueueMessage(d_channel, 2));
- // }
+ this->message_port_pub(pmt::mp("events"), pmt::from_long(3));//3 -> loss of lock
d_carrier_lock_fail_counter = 0;
d_enable_tracking = false; // TODO: check if disabling tracking is consistent with the channel state machine
}
diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_sc.cc b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_sc.cc
index ba79f15..8b84dc5 100644
--- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_sc.cc
+++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_sc.cc
@@ -104,6 +104,7 @@ gps_l1_ca_dll_pll_c_aid_tracking_sc::gps_l1_ca_dll_pll_c_aid_tracking_sc(
{
// Telemetry bit synchronization message port input
this->message_port_register_in(pmt::mp("preamble_timestamp_s"));
+ this->message_port_register_out(pmt::mp("events"));
// initialize internal vars
d_queue = queue;
d_dump = dump;
@@ -425,11 +426,7 @@ int gps_l1_ca_dll_pll_c_aid_tracking_sc::general_work (int noutput_items __attri
{
std::cout << "Loss of lock in channel " << d_channel << "!" << std::endl;
LOG(INFO) << "Loss of lock in channel " << d_channel << "!";
- std::unique_ptr<ControlMessageFactory> cmf(new ControlMessageFactory());
- if (d_queue != gr::msg_queue::sptr())
- {
- d_queue->handle(cmf->GetQueueMessage(d_channel, 2));
- }
+ this->message_port_pub(pmt::mp("events"), pmt::from_long(3));//3 -> loss of lock
d_carrier_lock_fail_counter = 0;
d_enable_tracking = false; // TODO: check if disabling tracking is consistent with the channel state machine
}
diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_cc.cc
index a51913e..52e8664 100644
--- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_cc.cc
+++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_cc.cc
@@ -105,7 +105,6 @@ Gps_L1_Ca_Dll_Pll_Tracking_cc::Gps_L1_Ca_Dll_Pll_Tracking_cc(
{
// Telemetry bit synchronization message port input
this->message_port_register_in(pmt::mp("preamble_timestamp_s"));
-
this->message_port_register_out(pmt::mp("events"));
// initialize internal vars
@@ -408,13 +407,7 @@ int Gps_L1_Ca_Dll_Pll_Tracking_cc::general_work (int noutput_items __attribute__
{
std::cout << "Loss of lock in channel " << d_channel << "!" << std::endl;
LOG(INFO) << "Loss of lock in channel " << d_channel << "!";
- pmt::pmt_t value = pmt::from_long(3);//3 -> loss of lock
- this->message_port_pub(pmt::mp("events"), value);
-// std::unique_ptr<ControlMessageFactory> cmf(new ControlMessageFactory());
-// if (d_queue != gr::msg_queue::sptr())
-// {
-// d_queue->handle(cmf->GetQueueMessage(d_channel, 2));
-// }
+ this->message_port_pub(pmt::mp("events"), pmt::from_long(3));//3 -> loss of lock
d_carrier_lock_fail_counter = 0;
d_enable_tracking = false; // TODO: check if disabling tracking is consistent with the channel state machine
}
diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_gpu_cc.cc b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_gpu_cc.cc
index 0d33793..fc0048f 100644
--- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_gpu_cc.cc
+++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_gpu_cc.cc
@@ -101,6 +101,7 @@ Gps_L1_Ca_Dll_Pll_Tracking_GPU_cc::Gps_L1_Ca_Dll_Pll_Tracking_GPU_cc(
{
// Telemetry bit synchronization message port input
this->message_port_register_in(pmt::mp("preamble_timestamp_s"));
+ this->message_port_register_out(pmt::mp("events"));
// initialize internal vars
d_queue = queue;
d_dump = dump;
@@ -431,11 +432,7 @@ int Gps_L1_Ca_Dll_Pll_Tracking_GPU_cc::general_work (int noutput_items __attribu
{
std::cout << "Loss of lock in channel " << d_channel << "!" << std::endl;
LOG(INFO) << "Loss of lock in channel " << d_channel << "!";
- std::unique_ptr<ControlMessageFactory> cmf(new ControlMessageFactory());
- if (d_queue != gr::msg_queue::sptr())
- {
- d_queue->handle(cmf->GetQueueMessage(d_channel, 2));
- }
+ this->message_port_pub(pmt::mp("events"), pmt::from_long(3));//3 -> loss of lock
d_carrier_lock_fail_counter = 0;
d_enable_tracking = false; // TODO: check if disabling tracking is consistent with the channel state machine
}
diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_tcp_connector_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_tcp_connector_tracking_cc.cc
index 25bdd11..9207c79 100644
--- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_tcp_connector_tracking_cc.cc
+++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_tcp_connector_tracking_cc.cc
@@ -104,6 +104,7 @@ Gps_L1_Ca_Tcp_Connector_Tracking_cc::Gps_L1_Ca_Tcp_Connector_Tracking_cc(
{
// Telemetry bit synchronization message port input
this->message_port_register_in(pmt::mp("preamble_timestamp_s"));
+ this->message_port_register_out(pmt::mp("events"));
// initialize internal vars
d_queue = queue;
d_dump = dump;
@@ -441,10 +442,7 @@ int Gps_L1_Ca_Tcp_Connector_Tracking_cc::general_work (int noutput_items __attri
{
std::cout << "Loss of lock in channel " << d_channel << "!" << std::endl;
LOG(INFO) << "Loss of lock in channel " << d_channel << "!";
- std::unique_ptr<ControlMessageFactory> cmf(new ControlMessageFactory());
- if (d_queue != gr::msg_queue::sptr()) {
- d_queue->handle(cmf->GetQueueMessage(d_channel, 2));
- }
+ this->message_port_pub(pmt::mp("events"), pmt::from_long(3));//3 -> loss of lock
d_carrier_lock_fail_counter = 0;
d_enable_tracking = false; // TODO: check if disabling tracking is consistent with the channel state machine
diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l2_m_dll_pll_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/gps_l2_m_dll_pll_tracking_cc.cc
index 1a7fd96..ee36843 100644
--- a/src/algorithms/tracking/gnuradio_blocks/gps_l2_m_dll_pll_tracking_cc.cc
+++ b/src/algorithms/tracking/gnuradio_blocks/gps_l2_m_dll_pll_tracking_cc.cc
@@ -104,6 +104,7 @@ gps_l2_m_dll_pll_tracking_cc::gps_l2_m_dll_pll_tracking_cc(
{
// Telemetry bit synchronization message port input
this->message_port_register_in(pmt::mp("preamble_timestamp_s"));
+ this->message_port_register_out(pmt::mp("events"));
// initialize internal vars
d_queue = queue;
d_dump = dump;
@@ -412,11 +413,7 @@ int gps_l2_m_dll_pll_tracking_cc::general_work (int noutput_items __attribute__(
{
std::cout << "Loss of lock in channel " << d_channel << "!" << std::endl;
LOG(INFO) << "Loss of lock in channel " << d_channel << "!";
- std::unique_ptr<ControlMessageFactory> cmf(new ControlMessageFactory());
- if (d_queue != gr::msg_queue::sptr())
- {
- d_queue->handle(cmf->GetQueueMessage(d_channel, 2));
- }
+ this->message_port_pub(pmt::mp("events"), pmt::from_long(3));//3 -> loss of lock
d_carrier_lock_fail_counter = 0;
d_enable_tracking = false; // TODO: check if disabling tracking is consistent with the channel state machine
}
diff --git a/src/core/receiver/gnss_block_factory.cc b/src/core/receiver/gnss_block_factory.cc
index 719b82a..5d3916e 100644
--- a/src/core/receiver/gnss_block_factory.cc
+++ b/src/core/receiver/gnss_block_factory.cc
@@ -91,7 +91,6 @@
#include "gps_l1_ca_observables.h"
#include "galileo_e1_observables.h"
#include "hybrid_observables.h"
-#include "mixed_observables.h"
#include "gps_l1_ca_pvt.h"
#include "galileo_e1_pvt.h"
#include "hybrid_pvt.h"
@@ -227,17 +226,9 @@ std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetObservables(std::shared
std::string default_implementation = "GPS_L1_CA_Observables";
std::string implementation = configuration->property("Observables.implementation", default_implementation);
LOG(INFO) << "Getting Observables with implementation " << implementation;
- unsigned int Galileo_channels = configuration->property("Channels_Galileo.count", 0); // DEPRECATED
- if(Galileo_channels == 0)
- {
- Galileo_channels = configuration->property("Channels_1B.count", 0);
- }
+ unsigned int Galileo_channels = configuration->property("Channels_1B.count", 0);
Galileo_channels += configuration->property("Channels_5X.count", 0);
- unsigned int GPS_channels = configuration->property("Channels_GPS.count", 0); // DEPRECATED
- if(GPS_channels == 0)
- {
- GPS_channels = configuration->property("Channels_1C.count", 0);
- }
+ unsigned int GPS_channels = configuration->property("Channels_1C.count", 0);
GPS_channels += configuration->property("Channels_2S.count", 0);
return GetBlock(configuration, "Observables", implementation, Galileo_channels + GPS_channels, Galileo_channels + GPS_channels, queue);
}
@@ -250,77 +241,14 @@ std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetPVT(std::shared_ptr<Con
std::string default_implementation = "Pass_Through";
std::string implementation = configuration->property("PVT.implementation", default_implementation);
LOG(INFO) << "Getting PVT with implementation " << implementation;
- unsigned int Galileo_channels = configuration->property("Channels_Galileo.count", 0); // DEPRECATED
- if(Galileo_channels == 0)
- {
- Galileo_channels = configuration->property("Channels_1B.count", 0);
- }
+ unsigned int Galileo_channels =configuration->property("Channels_1B.count", 0);
Galileo_channels += configuration->property("Channels_5X.count", 0);
- unsigned int GPS_channels = configuration->property("Channels_GPS.count", 0); // DEPRECATED
- if(GPS_channels == 0)
- {
- GPS_channels = configuration->property("Channels_1C.count", 0);
- }
+ unsigned int GPS_channels =configuration->property("Channels_1C.count", 0);
GPS_channels += configuration->property("Channels_2S.count", 0);
return GetBlock(configuration, "PVT", implementation, Galileo_channels + GPS_channels, 1, queue);
}
-
-//********* GPS CHANNEL *****************
-std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetChannel_GPS(
- std::shared_ptr<ConfigurationInterface> configuration,
- std::string acq, std::string trk, std::string tlm, int channel,
- boost::shared_ptr<gr::msg_queue> queue)
-{
-
- LOG(INFO) << "Instantiating Channel " << channel << " with Acquisition Implementation: "
- << acq << ", Tracking Implementation: " << trk << ", Telemetry Decoder implementation: " << tlm;
- std::string aux = configuration->property("Acquisition_GPS" + boost::lexical_cast<std::string>(channel) + ".implementation", std::string("W"));
- std::string appendix1;
- if(aux.compare("W") != 0)
- {
- appendix1 = boost::lexical_cast<std::string>(channel);
- }
- else
- {
- appendix1 = "";
- }
- aux = configuration->property("Tracking_GPS" + boost::lexical_cast<std::string>(channel) + ".implementation", std::string("W"));
- std::string appendix2;
- if(aux.compare("W") != 0)
- {
- appendix2 = boost::lexical_cast<std::string>(channel);
- }
- else
- {
- appendix2 = "";
- }
- aux = configuration->property("TelemetryDecoder_GPS" + boost::lexical_cast<std::string>(channel) + ".implementation", std::string("W"));
- std::string appendix3;
- if(aux.compare("W") != 0)
- {
- appendix3 = boost::lexical_cast<std::string>(channel);
- }
- else
- {
- appendix3 = "";
- }
-
- std::unique_ptr<GNSSBlockInterface> pass_through_ = GetBlock(configuration, "Channel", "Pass_Through", 1, 1, queue);
- std::unique_ptr<AcquisitionInterface> acq_ = GetAcqBlock(configuration, "Acquisition_GPS" + appendix1, acq, 1, 0, queue);
- std::unique_ptr<TrackingInterface> trk_ = GetTrkBlock(configuration, "Tracking_GPS" + appendix2, trk, 1, 1, queue);
- std::unique_ptr<TelemetryDecoderInterface> tlm_ = GetTlmBlock(configuration, "TelemetryDecoder_GPS" + appendix3, tlm, 1, 1);
-
- std::unique_ptr<GNSSBlockInterface> channel_(new Channel(configuration.get(), channel, pass_through_.release(),
- acq_.release(),
- trk_.release(),
- tlm_.release(),
- "Channel", "GPS" + appendix1, queue));
-
- return channel_;
-}
-
//********* GPS L1 C/A CHANNEL *****************
std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetChannel_1C(
std::shared_ptr<ConfigurationInterface> configuration,
@@ -328,6 +256,7 @@ std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetChannel_1C(
boost::shared_ptr<gr::msg_queue> queue)
{
+ //TODO: REMOVE APPENDIX!! AND CHECK ALTERNATIVE MECHANISM TO GET PARTICULARIZED PARAMETERS
LOG(INFO) << "Instantiating Channel " << channel << " with Acquisition Implementation: "
<< acq << ", Tracking Implementation: " << trk << ", Telemetry Decoder implementation: " << tlm;
@@ -431,62 +360,6 @@ std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetChannel_2S(
return channel_;
}
-//********* GALILEO CHANNEL *****************
-std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetChannel_Galileo(
- std::shared_ptr<ConfigurationInterface> configuration,
- std::string acq, std::string trk, std::string tlm, int channel,
- boost::shared_ptr<gr::msg_queue> queue)
-{
- std::stringstream stream;
- stream << channel;
- std::string id = stream.str();
- LOG(INFO) << "Instantiating Channel " << id << " with Acquisition Implementation: "
- << acq << ", Tracking Implementation: " << trk << ", Telemetry Decoder implementation: " << tlm;
- std::string aux = configuration->property("Acquisition_Galileo" + boost::lexical_cast<std::string>(channel) + ".implementation", std::string("W"));
- std::string appendix1;
- if(aux.compare("W") != 0)
- {
- appendix1 = boost::lexical_cast<std::string>(channel);
- }
- else
- {
- appendix1 = "";
- }
- aux = configuration->property("Tracking_Galileo" + boost::lexical_cast<std::string>(channel) + ".implementation", std::string("W"));
- std::string appendix2;
- if(aux.compare("W") != 0)
- {
- appendix2 = boost::lexical_cast<std::string>(channel);
- }
- else
- {
- appendix2 = "";
- }
- aux = configuration->property("TelemetryDecoder_Galileo" + boost::lexical_cast<std::string>(channel) + ".implementation", std::string("W"));
- std::string appendix3;
- if(aux.compare("W") != 0)
- {
- appendix3 = boost::lexical_cast<std::string>(channel);
- }
- else
- {
- appendix3 = "";
- }
-
- std::unique_ptr<GNSSBlockInterface> pass_through_ = GetBlock(configuration, "Channel", "Pass_Through", 1, 1, queue);
- std::unique_ptr<AcquisitionInterface> acq_ = GetAcqBlock(configuration, "Acquisition_Galileo" + appendix1, acq, 1, 0, queue);
- std::unique_ptr<TrackingInterface> trk_ = GetTrkBlock(configuration, "Tracking_Galileo" + appendix2, trk, 1, 1, queue);
- std::unique_ptr<TelemetryDecoderInterface> tlm_ = GetTlmBlock(configuration, "TelemetryDecoder_Galileo" + appendix3, tlm, 1, 1);
-
- std::unique_ptr<GNSSBlockInterface> channel_(new Channel(configuration.get(), channel, pass_through_.release(),
- acq_.release(),
- trk_.release(),
- tlm_.release(),
- "Channel", "Galileo", queue));
-
- return channel_;
-}
-
//********* GALILEO E1 B CHANNEL *****************
std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetChannel_1B(
std::shared_ptr<ConfigurationInterface> configuration,
@@ -604,385 +477,146 @@ std::unique_ptr<std::vector<std::unique_ptr<GNSSBlockInterface>>> GNSSBlockFacto
std::shared_ptr<ConfigurationInterface> configuration, boost::shared_ptr<gr::msg_queue> queue)
{
std::string default_implementation = "Pass_Through";
- unsigned int channel_count;
std::string tracking_implementation;
std::string telemetry_decoder_implementation;
std::string acquisition_implementation;
- unsigned int total_channels = configuration->property("Channels_GPS.count", 0) +
- configuration->property("Channels_1C.count", 0) +
- configuration->property("Channels_2S.count", 0) +
- configuration->property("Channels_Galileo.count", 0) +
- configuration->property("Channels_1B.count", 0) +
- configuration->property("Channels_5X.count", 0);
+ unsigned int channel_absolute_id = 0;
+ unsigned int Channels_1C_count=configuration->property("Channels_1C.count", 0);
+ unsigned int Channels_2S_count=configuration->property("Channels_2S.count", 0);
+ unsigned int Channels_1B_count=configuration->property("Channels_1B.count", 0);
+ unsigned int Channels_5X_count=configuration->property("Channels_5X.count", 0);
+ unsigned int total_channels = Channels_1C_count +
+ Channels_2S_count +
+ Channels_1B_count +
+ Channels_5X_count;
std::unique_ptr<std::vector<std::unique_ptr<GNSSBlockInterface>>> channels(new std::vector<std::unique_ptr<GNSSBlockInterface>>(total_channels));
- unsigned int channel_absolute_id = 0;
-
//**************** GPS L1 C/A CHANNELS **********************
- channel_count = configuration->property("Channels_GPS.count", 0); // DEPRECATED
- if (channel_count == 0)
- {
- channel_count = configuration->property("Channels_1C.count", 0);
- }
-
- LOG(INFO) << "Getting " << channel_count << " GPS L1 C/A channels";
-
- tracking_implementation = configuration->property("Tracking_GPS.implementation", default_implementation);
- if (tracking_implementation.compare(default_implementation) == 0)
- {
- tracking_implementation = configuration->property("Tracking_1C.implementation", default_implementation);
- }
- telemetry_decoder_implementation = configuration->property("TelemetryDecoder_GPS.implementation", default_implementation);
- if (telemetry_decoder_implementation.compare(default_implementation) == 0)
- {
- telemetry_decoder_implementation = configuration->property("TelemetryDecoder_1C.implementation", default_implementation);
- }
-
- acquisition_implementation = configuration->property("Acquisition_GPS.implementation", default_implementation);
- if (acquisition_implementation.compare(default_implementation) == 0)
- {
- acquisition_implementation = configuration->property("Acquisition_1C.implementation", default_implementation);
- }
+ LOG(INFO) << "Getting " << Channels_1C_count << " GPS L1 C/A channels";
+ tracking_implementation = configuration->property("Tracking_1C.implementation", default_implementation);
+ telemetry_decoder_implementation = configuration->property("TelemetryDecoder_1C.implementation", default_implementation);
+ acquisition_implementation = configuration->property("Acquisition_1C.implementation", default_implementation);
- bool apply_;
- std::string s;
-
- for (unsigned int i = 0; i < total_channels; i++)
+ for (unsigned int i = 0; i < Channels_1C_count; i++)
{
- apply_ = false;
- if( total_channels == channel_count )
- {
- apply_ = true;
- }
-
- // Search for specific implementation of that particular channel in config file
- //(i.e. Acquisition_GPS0.implementation=xxxx) DEPRECATED
- s = configuration->property("Channel" + boost::lexical_cast<std::string>(i) + ".signal", configuration->property("Channel.signal", std::string("W")));
- if( s.compare("1C") == 0 )
- {
- apply_ = true;
- }
-
- std::string acquisition_implementation_specific = configuration->property(
- "Acquisition_GPS" + boost::lexical_cast<std::string>(i) + ".implementation",
- default_implementation);
-
//(i.e. Acquisition_1C0.implementation=xxxx)
- if(acquisition_implementation_specific.compare(default_implementation) == 0)
- {
- acquisition_implementation_specific = configuration->property(
+ std::string acquisition_implementation_specific = configuration->property(
"Acquisition_1C" + boost::lexical_cast<std::string>(i) + ".implementation",
- default_implementation);
- }
-
- if(acquisition_implementation_specific.compare(default_implementation) != 0)
- {
- acquisition_implementation = acquisition_implementation_specific;
- apply_ = true;
- }
-
- //(i.e. Tracking_GPS0.implementation=xxxx) DEPRECATED
- std::string tracking_implementation_specific = configuration->property(
- "Tracking_GPS" + boost::lexical_cast<std::string>(i) + ".implementation",
- default_implementation);
+ acquisition_implementation);
//(i.e. Tracking_1C0.implementation=xxxx)
- if(tracking_implementation_specific.compare(default_implementation) == 0)
- {
- tracking_implementation_specific = configuration->property(
+ std::string tracking_implementation_specific = configuration->property(
"Tracking_1C" + boost::lexical_cast<std::string>(i) + ".implementation",
- default_implementation);
- }
-
- if(tracking_implementation_specific.compare(default_implementation) != 0)
- {
- tracking_implementation = tracking_implementation_specific;
- apply_ = true;
- }
-
- //(i.e. TelemetryDecoder_GPS0.implementation=xxxx) DEPRECATED
- std::string telemetry_decoder_implementation_specific = configuration->property(
- "TelemetryDecoder_GPS" + boost::lexical_cast<std::string>(i) + ".implementation",
- default_implementation);
- //(i.e. TelemetryDecoder_1C0.implementation=xxxx)
- if(telemetry_decoder_implementation_specific.compare(default_implementation) == 0)
- {
- telemetry_decoder_implementation_specific = configuration->property(
+ tracking_implementation);
+ std::string telemetry_decoder_implementation_specific = configuration->property(
"TelemetryDecoder_1C" + boost::lexical_cast<std::string>(i) + ".implementation",
- default_implementation);
- }
- if(telemetry_decoder_implementation_specific.compare(default_implementation) != 0)
- {
- telemetry_decoder_implementation = telemetry_decoder_implementation_specific;
- apply_ = true;
- }
-
- // Push back the channel to the vector of channels, if apply.
- if((configuration->property("Channels_GPS.count", 0) > 0) and apply_)
- {
- channels->at(i) = std::move(GetChannel_GPS(configuration,
- acquisition_implementation, tracking_implementation, telemetry_decoder_implementation, i, queue));
- channel_absolute_id++;
- }
- if((configuration->property("Channels_1C.count", 0) > 0) and apply_)
- {
- channels->at(i) = std::move(GetChannel_1C(configuration,
- acquisition_implementation, tracking_implementation, telemetry_decoder_implementation, i, queue));
- channel_absolute_id++;
- }
+ telemetry_decoder_implementation);
+
+ // Push back the channel to the vector of channels
+ channels->at(channel_absolute_id) = std::move(GetChannel_1C(configuration,
+ acquisition_implementation_specific,
+ tracking_implementation_specific,
+ telemetry_decoder_implementation_specific,
+ channel_absolute_id,
+ queue));
+ channel_absolute_id++;
}
//**************** GPS L2C (M) CHANNELS **********************
- channel_count = configuration->property("Channels_2S.count", 0);
-
- LOG(INFO) << "Getting " << channel_count << " GPS L2C (M) channels";
-
- tracking_implementation = configuration->property("Tracking_2S.implementation", default_implementation);
+ LOG(INFO)<< "Getting " << Channels_2S_count << " GPS L2C (M) channels";
+ tracking_implementation = configuration->property("Tracking_2S.implementation", default_implementation);
telemetry_decoder_implementation = configuration->property("TelemetryDecoder_2S.implementation", default_implementation);
acquisition_implementation = configuration->property("Acquisition_2S.implementation", default_implementation);
-
- for (unsigned int i = 0; i < total_channels; i++)
- {
- apply_ = false;
- if( total_channels == channel_count )
- {
- apply_ = true;
- }
-
- // Search for specific implementation of that particular channel in config file
- //(i.e. Acquisition_2S0.implementation=xxxx)
- s = configuration->property("Channel" + boost::lexical_cast<std::string>(i) + ".signal", configuration->property("Channel.signal", std::string("W")));
- if( s.compare("2S") == 0 )
- {
- apply_ = true;
- }
+ for (unsigned int i = 0; i < Channels_2S_count; i++)
+ {
+ //(i.e. Acquisition_1C0.implementation=xxxx)
std::string acquisition_implementation_specific = configuration->property(
- "Acquisition_2S" + boost::lexical_cast<std::string>(i) + ".implementation",
- default_implementation);
-
- if(acquisition_implementation_specific.compare(default_implementation) != 0)
- {
- acquisition_implementation = acquisition_implementation_specific;
- apply_ = true;
- }
-
- //(i.e. Tracking_2S0.implementation=xxxx)
- std::string tracking_implementation_specific = configuration->property(
- "Tracking_2S" + boost::lexical_cast<std::string>(i) + ".implementation",
- default_implementation);
-
- if(tracking_implementation_specific.compare(default_implementation) != 0)
- {
- tracking_implementation = tracking_implementation_specific;
- apply_ = true;
- }
-
- //(i.e. TelemetryDecoder_1C0.implementation=xxxx)
+ "Acquisition_2S" + boost::lexical_cast<std::string>(i) + ".implementation",
+ acquisition_implementation);
+ //(i.e. Tracking_1C0.implementation=xxxx)
+ std::string tracking_implementation_specific = configuration->property(
+ "Tracking_2S" + boost::lexical_cast<std::string>(i) + ".implementation",
+ tracking_implementation);
std::string telemetry_decoder_implementation_specific = configuration->property(
- "TelemetryDecoder_2S" + boost::lexical_cast<std::string>(i) + ".implementation",
- default_implementation);
-
- if(telemetry_decoder_implementation_specific.compare(default_implementation) != 0)
- {
- telemetry_decoder_implementation = telemetry_decoder_implementation_specific;
- apply_ = true;
- }
+ "TelemetryDecoder_2S" + boost::lexical_cast<std::string>(i) + ".implementation",
+ telemetry_decoder_implementation);
-
- // Push back the channel to the vector of channels, if apply.
- if((channel_count > 0) and apply_)
- {
- channels->at(i) = std::move(GetChannel_2S(configuration,
- acquisition_implementation, tracking_implementation, telemetry_decoder_implementation, i, queue));
- channel_absolute_id++;
- }
+ // Push back the channel to the vector of channels
+ channels->at(channel_absolute_id) = std::move(GetChannel_2S(configuration,
+ acquisition_implementation_specific,
+ tracking_implementation_specific,
+ telemetry_decoder_implementation_specific,
+ channel_absolute_id,
+ queue));
+ channel_absolute_id++;
}
-
//**************** GALILEO E1 B (I/NAV OS) **********************
- channel_count = configuration->property("Channels_Galileo.count", 0); // DEPRECATED
- if (channel_count == 0)
- {
- channel_count = configuration->property("Channels_1B.count", 0);
- }
-
- LOG(INFO) << "Getting " << channel_count << " Galileo E1 B (I/NAV OS) channels";
- tracking_implementation = configuration->property("Tracking_Galileo.implementation", default_implementation); // DEPRECATED
- if (tracking_implementation.compare(default_implementation) == 0)
- {
- tracking_implementation = configuration->property("Tracking_1B.implementation", std::string("W"));
- }
-
- telemetry_decoder_implementation = configuration->property("TelemetryDecoder_Galileo.implementation", default_implementation); // DEPRECATED
- if (telemetry_decoder_implementation.compare(default_implementation) == 0)
- {
- telemetry_decoder_implementation = configuration->property("TelemetryDecoder_1B.implementation", std::string("W"));
- }
-
- acquisition_implementation = configuration->property("Acquisition_Galileo.implementation", default_implementation); // DEPRECATED
- if (acquisition_implementation.compare(default_implementation) == 0)
- {
- acquisition_implementation = configuration->property("Acquisition_1B.implementation", std::string("W"));
- }
-
- for (unsigned int i = 0; i < total_channels; i++)
- {
- apply_ = false;
- if( total_channels == channel_count )
- {
- apply_ = true;
- }
- // Search for specific implementation of that particular channel in config file
- //(i.e. Acquisition_Galileo0.implementation=xxxx) DEPRECATED
- s = configuration->property("Channel" + boost::lexical_cast<std::string>(i) + ".signal", configuration->property("Channel.signal", std::string("W")));
- if( s.compare("1B") == 0 )
- {
- apply_ = true;
- }
-
- std::string acquisition_implementation_specific = configuration->property(
- "Acquisition_Galileo" + boost::lexical_cast<std::string>(i) + ".implementation",
- default_implementation);
- //(i.e. Acquisition_1B0.implementation=xxxx)
- if(acquisition_implementation_specific.compare(default_implementation) == 0)
- {
- acquisition_implementation_specific = configuration->property(
- "Acquisition_1B" + boost::lexical_cast<std::string>(i) + ".implementation",
- default_implementation);
- }
-
- if(acquisition_implementation_specific.compare(default_implementation) != 0)
- {
- acquisition_implementation = acquisition_implementation_specific;
- apply_ = true;
- }
-
- //(i.e. Tracking_Galileo0.implementation=xxxx) DEPRECATED
- std::string tracking_implementation_specific = configuration->property(
- "Tracking_Galileo" + boost::lexical_cast<std::string>(i) + ".implementation",
- default_implementation);
- //(i.e. Tracking_1B0.implementation=xxxx)
- if(tracking_implementation_specific.compare(default_implementation) == 0)
- {
- tracking_implementation_specific = configuration->property(
- "Tracking_1B" + boost::lexical_cast<std::string>(i) + ".implementation",
- default_implementation);
- }
-
- if(tracking_implementation_specific.compare(default_implementation) != 0)
- {
- tracking_implementation = tracking_implementation_specific;
- apply_ = true;
- }
-
- //(i.e. TelemetryDecoder_Galileo0.implementation=xxxx) DEPRECATED
- std::string telemetry_decoder_implementation_specific = configuration->property(
- "TelemetryDecoder_Galileo" + boost::lexical_cast<std::string>(i) + ".implementation",
- default_implementation);
- //(i.e. TelemetryDecoder_1B0.implementation=xxxx)
- if(telemetry_decoder_implementation_specific.compare(default_implementation) == 0)
- {
- telemetry_decoder_implementation_specific = configuration->property(
- "TelemetryDecoder_1B" + boost::lexical_cast<std::string>(i) + ".implementation",
- default_implementation);
- }
-
- if(telemetry_decoder_implementation_specific.compare(default_implementation) != 0)
- {
- telemetry_decoder_implementation = telemetry_decoder_implementation_specific;
- apply_ = true;
- }
-
-
- // Push back the channel to the vector of channels, if apply.
- if((configuration->property("Channels_Galileo.count", 0) > 0) and apply_)
- {
- channels->at(i) = std::move(GetChannel_Galileo(configuration,
- acquisition_implementation, tracking_implementation, telemetry_decoder_implementation, i, queue));
- channel_absolute_id++;
- }
- if((configuration->property("Channels_1B.count", 0) > 0) and apply_)
- {
- channels->at(i) = std::move(GetChannel_1B(configuration,
- acquisition_implementation, tracking_implementation, telemetry_decoder_implementation, i, queue));
- channel_absolute_id++;
- }
- }
+ LOG(INFO) << "Getting " << Channels_1B_count << " GALILEO E1 B (I/NAV OS) channels";
+ tracking_implementation = configuration->property("Tracking_1B.implementation", default_implementation);
+ telemetry_decoder_implementation = configuration->property("TelemetryDecoder_1B.implementation", default_implementation);
+ acquisition_implementation = configuration->property("Acquisition_1B.implementation", default_implementation);
+ for (unsigned int i = 0; i < Channels_1B_count; i++)
+ {
+ //(i.e. Acquisition_1C0.implementation=xxxx)
+ std::string acquisition_implementation_specific = configuration->property(
+ "Acquisition_1B" + boost::lexical_cast<std::string>(i) + ".implementation",
+ acquisition_implementation);
+ //(i.e. Tracking_1C0.implementation=xxxx)
+ std::string tracking_implementation_specific = configuration->property(
+ "Tracking_1B" + boost::lexical_cast<std::string>(i) + ".implementation",
+ tracking_implementation);
+ std::string telemetry_decoder_implementation_specific = configuration->property(
+ "TelemetryDecoder_1B" + boost::lexical_cast<std::string>(i) + ".implementation",
+ telemetry_decoder_implementation);
+
+ // Push back the channel to the vector of channels
+ channels->at(channel_absolute_id) = std::move(GetChannel_1B(configuration,
+ acquisition_implementation_specific,
+ tracking_implementation_specific,
+ telemetry_decoder_implementation_specific,
+ channel_absolute_id,
+ queue));
+ channel_absolute_id++;
+ }
//**************** GALILEO E5a I (F/NAV OS) CHANNELS **********************
- channel_count = configuration->property("Channels_5X.count", 0);
-
- LOG(INFO) << "Getting " << channel_count << " GALILEO E5a I (F/NAV OS) channels";
-
- tracking_implementation = configuration->property("Tracking_5X.implementation", default_implementation);
- telemetry_decoder_implementation = configuration->property("TelemetryDecoder_5X.implementation", default_implementation);
- acquisition_implementation = configuration->property("Acquisition_5X.implementation", default_implementation);
-
- for (unsigned int i = 0; i < total_channels; i++)
- {
- apply_ = false;
- if( total_channels == channel_count )
- {
- apply_ = true;
- }
- // Search for specific implementation of that particular channel in config file
- //(i.e. Acquisition_5X0.implementation=xxxx)
- s = configuration->property("Channel" + boost::lexical_cast<std::string>(i) + ".signal", configuration->property("Channel.signal", std::string("W")));
- if( s.compare("5X") == 0 )
- {
- apply_ = true;
- }
- std::string acquisition_implementation_specific = configuration->property(
- "Acquisition_5X" + boost::lexical_cast<std::string>(i) + ".implementation",
- default_implementation);
-
- if(acquisition_implementation_specific.compare(default_implementation) != 0)
- {
- acquisition_implementation = acquisition_implementation_specific;
- apply_ = true;
- }
-
- //(i.e. Tracking_5X0.implementation=xxxx)
- std::string tracking_implementation_specific = configuration->property(
- "Tracking_5X" + boost::lexical_cast<std::string>(i) + ".implementation",
- default_implementation);
-
- if(tracking_implementation_specific.compare(default_implementation) != 0)
- {
- tracking_implementation = tracking_implementation_specific;
- apply_ = true;
- }
-
- //(i.e. TelemetryDecoder_5X0.implementation=xxxx)
- std::string telemetry_decoder_implementation_specific = configuration->property(
- "TelemetryDecoder_5X" + boost::lexical_cast<std::string>(i) + ".implementation",
- default_implementation);
-
- if(telemetry_decoder_implementation_specific.compare(default_implementation) != 0)
- {
- telemetry_decoder_implementation = telemetry_decoder_implementation_specific;
- apply_ = true;
- }
-
-
- // Push back the channel to the vector of channels, if apply.
- if((channel_count > 0) and apply_)
- {
- channels->at(i) = std::move(GetChannel_5X(configuration,
- acquisition_implementation, tracking_implementation, telemetry_decoder_implementation, i, queue));
- channel_absolute_id++;
- }
- }
+ LOG(INFO) << "Getting " << Channels_5X_count << " GALILEO E5a I (F/NAV OS) channels";
+ tracking_implementation = configuration->property("Tracking_5X.implementation", default_implementation);
+ telemetry_decoder_implementation = configuration->property("TelemetryDecoder_5X.implementation", default_implementation);
+ acquisition_implementation = configuration->property("Acquisition_5X.implementation", default_implementation);
+ for (unsigned int i = 0; i < Channels_5X_count; i++)
+ {
+ //(i.e. Acquisition_1C0.implementation=xxxx)
+ std::string acquisition_implementation_specific = configuration->property(
+ "Acquisition_5X" + boost::lexical_cast<std::string>(i) + ".implementation",
+ acquisition_implementation);
+ //(i.e. Tracking_1C0.implementation=xxxx)
+ std::string tracking_implementation_specific = configuration->property(
+ "Tracking_5X" + boost::lexical_cast<std::string>(i) + ".implementation",
+ tracking_implementation);
+ std::string telemetry_decoder_implementation_specific = configuration->property(
+ "TelemetryDecoder_5X" + boost::lexical_cast<std::string>(i) + ".implementation",
+ telemetry_decoder_implementation);
+
+ // Push back the channel to the vector of channels
+ channels->at(channel_absolute_id) = std::move(GetChannel_5X(configuration,
+ acquisition_implementation_specific,
+ tracking_implementation_specific,
+ telemetry_decoder_implementation_specific,
+ channel_absolute_id,
+ queue));
+ channel_absolute_id++;
+ }
return channels;
}
-
/*
* Returns the block with the required configuration and implementation
*
@@ -1382,12 +1016,6 @@ std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetBlock(
out_streams));
block = std::move(block_);
}
- else if (implementation.compare("Mixed_Observables") == 0)
- {
- std::unique_ptr<GNSSBlockInterface> block_(new MixedObservables(configuration.get(), role, in_streams,
- out_streams));
- block = std::move(block_);
- }
// PVT -------------------------------------------------------------------------
else if (implementation.compare("GPS_L1_CA_PVT") == 0)
{
diff --git a/src/core/receiver/gnss_block_factory.h b/src/core/receiver/gnss_block_factory.h
index 7eb596a..10d8c4d 100644
--- a/src/core/receiver/gnss_block_factory.h
+++ b/src/core/receiver/gnss_block_factory.h
@@ -83,10 +83,6 @@ public:
boost::shared_ptr<gr::msg_queue> queue);
private:
- // DEPRECATED
- std::unique_ptr<GNSSBlockInterface> GetChannel_GPS(std::shared_ptr<ConfigurationInterface> configuration,
- std::string acq, std::string trk, std::string tlm, int channel,
- boost::shared_ptr<gr::msg_queue> queue);
std::unique_ptr<GNSSBlockInterface> GetChannel_1C(std::shared_ptr<ConfigurationInterface> configuration,
std::string acq, std::string trk, std::string tlm, int channel,
@@ -96,11 +92,6 @@ private:
std::string acq, std::string trk, std::string tlm, int channel,
boost::shared_ptr<gr::msg_queue> queue);
- //DEPRECATED
- std::unique_ptr<GNSSBlockInterface> GetChannel_Galileo(std::shared_ptr<ConfigurationInterface> configuration,
- std::string acq, std::string trk, std::string tlm, int channel,
- boost::shared_ptr<gr::msg_queue> queue);
-
std::unique_ptr<GNSSBlockInterface> GetChannel_1B(std::shared_ptr<ConfigurationInterface> configuration,
std::string acq, std::string trk, std::string tlm, int channel,
boost::shared_ptr<gr::msg_queue> queue);
diff --git a/src/core/receiver/gnss_flowgraph.cc b/src/core/receiver/gnss_flowgraph.cc
index a79b4cd..3231ec6 100644
--- a/src/core/receiver/gnss_flowgraph.cc
+++ b/src/core/receiver/gnss_flowgraph.cc
@@ -187,7 +187,6 @@ void GNSSFlowgraph::connect()
}
DLOG(INFO) << "blocks connected internally";
-
// Signal Source (i) > Signal conditioner (i) >
int RF_Channels = 0;
int signal_conditioner_ID = 0;
@@ -257,7 +256,6 @@ void GNSSFlowgraph::connect()
return;
}
}
-
DLOG(INFO) << "Signal source connected to signal conditioner";
// Signal conditioner (selected_signal_source) >> channels (i) (dependent of their associated SignalSource_ID)
@@ -294,22 +292,20 @@ void GNSSFlowgraph::connect()
return;
}
- std::string default_signal = configuration_->property("Channel.signal", std::string("1C"));
- std::string gnss_signal = (configuration_->property("Channel" + boost::lexical_cast<std::string>(i) + ".signal", default_signal));
-
+ std::string gnss_signal = channels_.at(i)->get_signal().get_signal_str(); // use channel's implicit signal!
+ std::cout<<"gnss_signal "<<gnss_signal<<std::endl;
while (gnss_signal.compare(available_GNSS_signals_.front().get_signal_str()) != 0 )
{
available_GNSS_signals_.push_back(available_GNSS_signals_.front());
available_GNSS_signals_.pop_front();
}
channels_.at(i)->set_signal(available_GNSS_signals_.front());
- LOG(INFO) << "Channel " << i << " assigned to " << available_GNSS_signals_.front();
- //channels_.at(i)->start_channel();
if (channels_state_[i] == 1)
{
channels_.at(i)->start_acquisition();
available_GNSS_signals_.pop_front();
+ LOG(INFO) << "Channel " << i << " assigned to " << available_GNSS_signals_.front();
LOG(INFO) << "Channel " << i << " connected to observables and ready for acquisition";
}
else
@@ -379,7 +375,6 @@ void GNSSFlowgraph::apply_action(unsigned int who, unsigned int what)
case 0:
LOG(INFO) << "Channel " << who << " ACQ FAILED satellite " << channels_.at(who)->get_signal().get_satellite() << ", Signal " << channels_.at(who)->get_signal().get_signal_str();
available_GNSS_signals_.push_back(channels_.at(who)->get_signal());
-
//TODO: Optimize the channel and signal matching!
while ( channels_.at(who)->get_signal().get_signal_str().compare(available_GNSS_signals_.front().get_signal_str()) != 0 )
{
@@ -388,6 +383,7 @@ void GNSSFlowgraph::apply_action(unsigned int who, unsigned int what)
}
channels_.at(who)->set_signal(available_GNSS_signals_.front());
available_GNSS_signals_.pop_front();
+ usleep(100);
channels_.at(who)->start_acquisition();
break;
case 1:
@@ -556,13 +552,9 @@ void GNSSFlowgraph::set_signals_list()
/*
* Read GNSS-SDR default GNSS system and signal
*/
- std::string default_system = configuration_->property("Channel.system", std::string("")); // DEPRECATED
- std::string default_signal = configuration_->property("Channel.signal", std::string(""));
- unsigned int total_channels = configuration_->property("Channels_GPS.count", 0) +
- configuration_->property("Channels_1C.count", 0) +
+ unsigned int total_channels = configuration_->property("Channels_1C.count", 0) +
configuration_->property("Channels_2S.count", 0) +
- configuration_->property("Channels_Galileo.count", 0) +
configuration_->property("Channels_1B.count", 0) +
configuration_->property("Channels_5X.count", 0);
@@ -583,7 +575,6 @@ void GNSSFlowgraph::set_signals_list()
std::string sv_list = configuration_->property("Galileo.prns", std::string("") );
-
if( sv_list.length() > 0 )
{
// Reset the available prns:
@@ -613,7 +604,6 @@ void GNSSFlowgraph::set_signals_list()
available_gps_prn = tmp_set;
}
}
-
sv_list = configuration_->property("SBAS.prns", std::string("") );
if( sv_list.length() > 0 )
@@ -630,7 +620,7 @@ void GNSSFlowgraph::set_signals_list()
}
}
- if ((configuration_->property("Channels_1C.count", 0) > 0) or (default_system.find(std::string("GPS")) != std::string::npos) or (default_signal.compare("1C") == 0) or (configuration_->property("Channels_GPS.count", 0) > 0) )
+ if (configuration_->property("Channels_1C.count", 0) > 0 )
{
/*
* Loop to create GPS L1 C/A signals
@@ -644,7 +634,7 @@ void GNSSFlowgraph::set_signals_list()
}
}
- if ((configuration_->property("Channels_2S.count", 0) > 0) or (default_system.find(std::string("GPS L2C M")) != std::string::npos) )
+ if (configuration_->property("Channels_2S.count", 0) > 0)
{
/*
* Loop to create GPS L2C M signals
@@ -658,8 +648,7 @@ void GNSSFlowgraph::set_signals_list()
}
}
-
- if ((configuration_->property("Channels_SBAS.count", 0) > 0) or default_system.find(std::string("SBAS")) != std::string::npos)
+ if (configuration_->property("Channels_SBAS.count", 0) > 0)
{
/*
* Loop to create SBAS L1 C/A signals
@@ -674,7 +663,7 @@ void GNSSFlowgraph::set_signals_list()
}
- if ((configuration_->property("Channels_1B.count", 0) > 0) or (default_system.find(std::string("Galileo")) != std::string::npos) or (default_signal.compare("1B") == 0) or (configuration_->property("Channels_Galileo.count", 0) > 0))
+ if (configuration_->property("Channels_1B.count", 0) > 0)
{
/*
* Loop to create the list of Galileo E1 B signals
@@ -688,7 +677,7 @@ void GNSSFlowgraph::set_signals_list()
}
}
- if ((configuration_->property("Channels_5X.count", 0) > 0) )
+ if (configuration_->property("Channels_5X.count", 0) > 0 )
{
/*
* Loop to create the list of Galileo E1 B signals
@@ -701,7 +690,6 @@ void GNSSFlowgraph::set_signals_list()
*available_gnss_prn_iter), std::string("5X")));
}
}
-
/*
* Ordering the list of signals from configuration file
*/
@@ -711,45 +699,32 @@ void GNSSFlowgraph::set_signals_list()
for (unsigned int i = 0; i < total_channels; i++)
{
- std::string gnss_signal = (configuration_->property("Channel" + boost::lexical_cast<std::string>(i) + ".signal", default_signal));
+ std::string gnss_signal = (configuration_->property("Channel" + boost::lexical_cast<std::string>(i) + ".signal", std::string("1C")));
std::string gnss_system;
if((gnss_signal.compare("1C") == 0) or (gnss_signal.compare("2S") == 0) ) gnss_system = "GPS";
if((gnss_signal.compare("1B") == 0) or (gnss_signal.compare("5X") == 0) ) gnss_system = "Galileo";
-
- LOG(INFO) << "Channel " << i << " system " << gnss_system << ", signal " << gnss_signal;
-
unsigned int sat = configuration_->property("Channel" + boost::lexical_cast<std::string>(i) + ".satellite", 0);
-
- if (((sat == 0) || (sat == gnss_it->get_satellite().get_PRN())) and ( gnss_it->get_signal_str().compare(gnss_signal) == 0 ) ) // 0 = not PRN in configuration file
+ LOG(INFO) << "Channel " << i << " system " << gnss_system << ", signal " << gnss_signal <<", sat "<<sat;
+ if (sat == 0) // 0 = not PRN in configuration file
{
gnss_it++;
}
else
{
- Gnss_Signal signal_value = Gnss_Signal(Gnss_Satellite(gnss_system, ( sat != 0 ? sat : gnss_it->get_satellite().get_PRN())), gnss_signal);
- if( gnss_it == available_GNSS_signals_.begin() )
- {
- available_GNSS_signals_.remove(signal_value);
- gnss_it = available_GNSS_signals_.begin();
- }
- else
- {
- available_GNSS_signals_.remove(signal_value);
- }
+ Gnss_Signal signal_value = Gnss_Signal(Gnss_Satellite(gnss_system, sat), gnss_signal);
+ available_GNSS_signals_.remove(signal_value);
available_GNSS_signals_.insert(gnss_it, signal_value);
}
}
// **** FOR DEBUGGING THE LIST OF GNSS SIGNALS ****
- // std::cout << "default_system=" << default_system << std::endl;
- // std::cout << "default_signal=" << default_signal << std::endl;
- // std::list<Gnss_Signal>::iterator available_gnss_list_iter;
- // for (available_gnss_list_iter = available_GNSS_signals_.begin(); available_gnss_list_iter
- // != available_GNSS_signals_.end(); available_gnss_list_iter++)
- // {
- // std::cout << *available_gnss_list_iter << std::endl;
- // }
+ std::list<Gnss_Signal>::iterator available_gnss_list_iter;
+ for (available_gnss_list_iter = available_GNSS_signals_.begin(); available_gnss_list_iter
+ != available_GNSS_signals_.end(); available_gnss_list_iter++)
+ {
+ std::cout << *available_gnss_list_iter << std::endl;
+ }
}
diff --git a/src/core/system_parameters/gnss_signal.cc b/src/core/system_parameters/gnss_signal.cc
index 399a6a9..aaeb1a7 100644
--- a/src/core/system_parameters/gnss_signal.cc
+++ b/src/core/system_parameters/gnss_signal.cc
@@ -36,6 +36,10 @@ Gnss_Signal::Gnss_Signal()
this->signal = "";
}
+Gnss_Signal::Gnss_Signal(const std::string& signal_)
+{
+ this->signal = signal_;
+}
Gnss_Signal::Gnss_Signal(const Gnss_Satellite& satellite_, const std::string& signal_)
{
diff --git a/src/core/system_parameters/gnss_signal.h b/src/core/system_parameters/gnss_signal.h
index de83af6..4922e53 100644
--- a/src/core/system_parameters/gnss_signal.h
+++ b/src/core/system_parameters/gnss_signal.h
@@ -48,6 +48,7 @@ private:
std::string signal;
public:
Gnss_Signal();
+ Gnss_Signal(const std::string& signal_);
Gnss_Signal(const Gnss_Satellite& satellite_, const std::string& signal_);
~Gnss_Signal();
std::string get_signal_str() const; //!< Get the satellite signal {"1C" for GPS L1 C/A, "2S" for GPS L2C (M), "1B" for Galileo E1B, "5X" for Galileo E5a}
diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
index ede1f1e..ce8c40e 100644
--- a/src/tests/CMakeLists.txt
+++ b/src/tests/CMakeLists.txt
@@ -172,6 +172,7 @@ target_link_libraries(run_tests ${CLANG_FLAGS}
${GNURADIO_ANALOG_LIBRARIES}
${ARMADILLO_LIBRARIES}
${VOLK_LIBRARIES}
+ channel_fsm
gnss_sp_libs
gnss_rx
gnss_system_parameters
diff --git a/src/utils/front-end-cal/CMakeLists.txt b/src/utils/front-end-cal/CMakeLists.txt
index 5c8b5c9..349b161 100644
--- a/src/utils/front-end-cal/CMakeLists.txt
+++ b/src/utils/front-end-cal/CMakeLists.txt
@@ -47,14 +47,20 @@ file(GLOB FRONT_END_CAL_HEADERS "*.h")
add_library(front_end_cal_lib ${FRONT_END_CAL_SOURCES} ${FRONT_END_CAL_HEADERS})
source_group(Headers FILES ${FRONT_END_CAL_HEADERS})
-target_link_libraries(front_end_cal_lib ${Boost_LIBRARIES}
+target_link_libraries(front_end_cal_lib ${MAC_LIBRARIES}
+ ${Boost_LIBRARIES}
${GNURADIO_RUNTIME_LIBRARIES}
${GNURADIO_BLOCKS_LIBRARIES}
+ ${GNURADIO_FFT_LIBRARIES}
+ ${GNURADIO_FILTER_LIBRARIES}
${GFlags_LIBS}
${GLOG_LIBRARIES}
${ARMADILLO_LIBRARIES}
${VOLK_GNSSSDR_LIBRARIES} ${ORC_LIBRARIES}
+ ${GNSS_SDR_OPTIONAL_LIBS}
+ rx_core_lib
gnss_rx
+ channel_fsm
gnss_sp_libs
)
@@ -70,18 +76,24 @@ add_custom_command(TARGET front-end-cal POST_BUILD
${CMAKE_SOURCE_DIR}/install/$<TARGET_FILE_NAME:front-end-cal>)
-target_link_libraries(front-end-cal ${GNURADIO_RUNTIME_LIBRARIES}
- ${GNURADIO_BLOCKS_LIBRARIES}
- ${Boost_LIBRARIES}
- ${GFlags_LIBS}
- ${GLOG_LIBRARIES}
- ${ARMADILLO_LIBRARIES}
- gnss_rx
- gnss_sp_libs
- front_end_cal_lib
- ${VOLK_GNSSSDR_LIBRARIES} ${ORC_LIBRARIES}
+target_link_libraries(front-end-cal ${MAC_LIBRARIES}
+ ${Boost_LIBRARIES}
+ ${GNURADIO_RUNTIME_LIBRARIES}
+ ${GNURADIO_BLOCKS_LIBRARIES}
+ ${GNURADIO_FFT_LIBRARIES}
+ ${GNURADIO_FILTER_LIBRARIES}
+ ${GFlags_LIBS}
+ ${GLOG_LIBRARIES}
+ ${ARMADILLO_LIBRARIES}
+ ${VOLK_GNSSSDR_LIBRARIES} ${ORC_LIBRARIES}
+ ${GNSS_SDR_OPTIONAL_LIBS}
+ rx_core_lib
+ gnss_rx
+ gnss_sp_libs
+ front_end_cal_lib
)
+
install(TARGETS front-end-cal
RUNTIME DESTINATION bin
COMPONENT "front-end-cal"
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/gnss-sdr.git
More information about the pkg-hamradio-commits
mailing list