From 4cee7965c48d7a59c5691bd827aaf488c29855d3 Mon Sep 17 00:00:00 2001 From: Javier Arribas Date: Fri, 22 Apr 2016 12:04:08 +0200 Subject: [PATCH] Code cleaning and config simplifications --- ...el_GPS_L2_M_Flexiband_bin_file_III_1a.conf | 437 ------------------ ...el_GPS_L2_M_Flexiband_bin_file_III_1b.conf | 139 ++---- src/core/receiver/gnss_block_factory.cc | 32 +- src/core/receiver/gnss_flowgraph.cc | 14 +- 4 files changed, 57 insertions(+), 565 deletions(-) delete mode 100644 conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1a.conf 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 deleted file mode 100644 index ad7cd61ac..000000000 --- a/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1a.conf +++ /dev/null @@ -1,437 +0,0 @@ -; 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=5000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -GNSS-SDR.SUPL_gps_ephemeris_port=7275 -GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com -GNSS-SDR.SUPL_gps_acquisition_port=7275 -GNSS-SDR.SUPL_MCC=244 -GNSS-SDR.SUPL_MNS=5 -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=Flexiband_Signal_Source - -SignalSource.flag_read_file=true -;SignalSource.signal_file=/datalogger/captures/eclipse/eclipse_IIIa_2.bin -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 - -;# FPGA firmware file -SignalSource.firmware_file=flexiband_III-1b.bit - -;#RF_channels: Number of RF channels present in the frontend device, must agree the FPGA firmware file -SignalSource.RF_channels=2 - -;#frontend channels gain. Not usable yet! -SignalSource.gain1=0 -SignalSource.gain2=0 -SignalSource.gain3=0 - -;#frontend channels AGC -SignalSource.AGC=true - -;# USB 3.0 packet buffer size (number of SuperSpeed packets) -SignalSource.usb_packet_buffer=128 - -;###################################################### -;######### RF CHANNEL 0 SIGNAL CONDITIONER ############ -;###################################################### - -;######### SIGNAL_CONDITIONER 0 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner0.implementation=Signal_Conditioner - -;######### DATA_TYPE_ADAPTER 0 CONFIG ############ -DataTypeAdapter0.implementation=Pass_Through -DataTypeAdapter0.item_type=gr_complex - -;######### INPUT_FILTER 0 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. - -InputFilter0.implementation=Freq_Xlating_Fir_Filter - -;#dump: Dump the filtered data to a file. -InputFilter0.dump=true - -;#dump_filename: Log path and filename. -InputFilter0.dump_filename=../data/input_filter_ch0.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. -InputFilter0.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter0.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter0.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter0.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter0.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 - -InputFilter0.band1_begin=0.0 -InputFilter0.band1_end=0.45 -InputFilter0.band2_begin=0.55 -InputFilter0.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 - -InputFilter0.ampl1_begin=1.0 -InputFilter0.ampl1_end=1.0 -InputFilter0.ampl2_begin=0.0 -InputFilter0.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 -InputFilter0.band1_error=1.0 -InputFilter0.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter0.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. -InputFilter0.grid_density=16 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter0.IF is the intermediate frequency (in Hz) shifted down to zero Hz -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; 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 - -;# Decimation factor after the frequency tranaslating block -InputFilter0.decimation_factor=4 - -;######### RESAMPLER CONFIG 0 ############ -;## Resamples the input data. -Resampler0.implementation=Pass_Through - -;###################################################### -;######### RF CHANNEL 1 SIGNAL CONDITIONER ############ -;###################################################### - -;######### SIGNAL_CONDITIONER 1 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner1.implementation=Signal_Conditioner - -;######### DATA_TYPE_ADAPTER 1 CONFIG ############ -DataTypeAdapter1.implementation=Pass_Through -DataTypeAdapter1.item_type=gr_complex - -;######### INPUT_FILTER 0 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. - -InputFilter1.implementation=Freq_Xlating_Fir_Filter - -;#dump: Dump the filtered data to a file. -InputFilter1.dump=true - -;#dump_filename: Log path and filename. -InputFilter1.dump_filename=../data/input_filter_ch1.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. -InputFilter1.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter1.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter1.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter1.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter1.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 - -InputFilter1.band1_begin=0.0 -InputFilter1.band1_end=0.45 -InputFilter1.band2_begin=0.55 -InputFilter1.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 - -InputFilter1.ampl1_begin=1.0 -InputFilter1.ampl1_end=1.0 -InputFilter1.ampl2_begin=0.0 -InputFilter1.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 -InputFilter1.band1_error=1.0 -InputFilter1.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter1.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. -InputFilter1.grid_density=16 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter0.IF is the intermediate frequency (in Hz) shifted down to zero Hz -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/ -InputFilter1.sampling_frequency=20000000 -;# IF deviation due to front-end LO inaccuracies [HZ] -InputFilter1.IF=-100000 - -;# Decimation factor after the frequency tranaslating block -InputFilter1.decimation_factor=4 - - -;######### RESAMPLER CONFIG 1 ############ -;## Resamples the input data. -Resampler1.implementation=Pass_Through - -;######### SIGNAL_CONDITIONER 2 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner2.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER 2 CONFIG ############ -DataTypeAdapter2.implementation=Pass_Through -DataTypeAdapter2.item_type=gr_complex - -;######### INPUT_FILTER 2 CONFIG ############ -InputFilter2.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter2.dump=false - -;#dump_filename: Log path and filename. -InputFilter2.dump_filename=../data/input_filter.dat - -;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version. -InputFilter2.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter2.output_item_type=gr_complex - -;######### RESAMPLER CONFIG 2 ############ -;## Resamples the input data. -Resampler2.implementation=Pass_Through - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_1C.count=1 -Channels_2S.count=7 - -;#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) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "5X" GALILEO E5a I+Q - -;# CHANNEL CONNECTION -Channel0.RF_channel_ID=0 - -Channel1.RF_channel_ID=1 -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 ###### -;#The following options are specific to each channel and overwrite the generic options - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_1C0.dump=false -;#filename: Log path and filename -Acquisition_1C0.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_1C0.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_1C0.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_1C0.coherent_integration_time_ms=1 -;#implementation: Acquisition algorithm selection for this channel: -Acquisition_1C0.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold. It will be ignored if pfa is defined. -Acquisition_1C0.threshold=0.002 -;#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_1C0.pfa=0.0001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_1C0.doppler_max=5000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_1C0.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_1C0.bit_transition_flag=false -;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true -Acquisition_1C0.max_dwells=1 - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_2S1.dump=false -;#filename: Log path and filename -Acquisition_2S1.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_2S1.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_2S1.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_2S1.coherent_integration_time_ms=1 -;#implementation: Acquisition algorithm selection for this channel: -Acquisition_2S1.implementation=GPS_L2_M_PCPS_Acquisition -;#threshold: Acquisition threshold. It will be ignored if pfa is defined. -Acquisition_2S1.threshold=0.0005 -;#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_2S1.pfa=0.0001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_2S1.doppler_max=5000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_2S1.doppler_step=100 -;#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_2S1.bit_transition_flag=false -;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true -Acquisition_2S1.max_dwells=1 - - - - -;######### TRACKING CONFIG ############ - -;######### TRACKING CHANNEL 0 CONFIG ############ -Tracking_1C0.implementation=GPS_L1_CA_DLL_PLL_Tracking -Tracking_1C0.item_type=gr_complex -Tracking_1C0.if=0 -Tracking_1C0.dump=false -Tracking_1C0.dump_filename=./tracking_ch_ -Tracking_1C0.pll_bw_hz=40.0; -Tracking_1C0.dll_bw_hz=3.0; -Tracking_1C0.order=3; -Tracking_1C0.early_late_space_chips=0.5; - - -;######### TRACKING CHANNEL 11 CONFIG ############ -Tracking_2S1.implementation=GPS_L2_M_DLL_PLL_Tracking -Tracking_2S1.item_type=gr_complex -Tracking_2S1.if=0 -Tracking_2S1.dump=false -Tracking_2S1.dump_filename=./tracking_ch_ -Tracking_2S1.pll_bw_hz=2.0; -Tracking_2S1.dll_bw_hz=0.5; -Tracking_2S1.order=2; -Tracking_2S1.early_late_space_chips=0.5; - - -;######### TELEMETRY DECODER CONFIG ############ -TelemetryDecoder_1C0.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C0.dump=false -TelemetryDecoder_1C0.decimation_factor=20; - -TelemetryDecoder_2S1.implementation=GPS_L2_M_Telemetry_Decoder -TelemetryDecoder_2S1.dump=false -TelemetryDecoder_2S1.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=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#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 - -;# 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_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 ef46f3249..1857878f5 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 @@ -7,7 +7,7 @@ ;######### GLOBAL OPTIONS ################## ;internal_fs_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=2500000 +GNSS-SDR.internal_fs_hz=5000000 ;######### CONTROL_THREAD CONFIG ############ ControlThread.wait_for_flowgraph=false @@ -77,7 +77,7 @@ InputFilter0.implementation=Freq_Xlating_Fir_Filter InputFilter0.dump=false ;#dump_filename: Log path and filename. -InputFilter0.dump_filename=../data/input_filter.dat +InputFilter0.dump_filename=../data/input_filter_ch0.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. @@ -134,12 +134,11 @@ 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] -;# WARNING: Fraunhofer front-end hardwareconfigurations can difer. Signals available on http://www.iis.fraunhofer.de/de/ff/lok/leist/test/flexiband.html are centered on 0 Hz, ALL BANDS. -InputFilter0.IF=-205000 -;#InputFilter0.IF=0 +;#InputFilter0.IF=-205000 +InputFilter0.IF=0 ;# Decimation factor after the frequency tranaslating block -InputFilter0.decimation_factor=8 +InputFilter0.decimation_factor=4 ;######### RESAMPLER CONFIG 0 ############ ;## Resamples the input data. @@ -231,7 +230,7 @@ InputFilter1.sampling_frequency=20000000 InputFilter1.IF=0 ;# Decimation factor after the frequency tranaslating block -InputFilter1.decimation_factor=8 +InputFilter1.decimation_factor=4 ;######### RESAMPLER CONFIG 1 ############ @@ -265,20 +264,21 @@ InputFilter2.output_item_type=gr_complex ;## Resamples the input data. Resampler2.implementation=Pass_Through + ;######### CHANNELS GLOBAL CONFIG ############ ;#count: Number of available GPS satellite channels. Channels_1C.count=1 -Channels_2S.count=5 -;#count: Number of available Galileo satellite channels. +Channels_2S.count=7 + ;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver Channels.in_acquisition=1 -;#signal: +;# 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 - +;# CHANNEL NUMBERING ORDER: GPS L1 C/A, GPS L2 L2C (M), GALILEO E1 B, GALILEO E5a ;# CHANNEL CONNECTION Channel0.RF_channel_ID=0 @@ -289,168 +289,99 @@ Channel4.RF_channel_ID=1 Channel5.RF_channel_ID=1 Channel6.RF_channel_ID=1 Channel7.RF_channel_ID=1 -Channel8.RF_channel_ID=1 -Channel9.RF_channel_ID=1 -Channel10.RF_channel_ID=1 -Channel11.RF_channel_ID=1 -Channel12.RF_channel_ID=1 -Channel13.RF_channel_ID=1 -Channel14.RF_channel_ID=1 -Channel15.RF_channel_ID=1 -;######### SPECIFIC CHANNELS CONFIG ###### +;######### ACQUISITION GENERIC CONFIG ###### ;#The following options are specific to each channel and overwrite the generic options -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] Acquisition_1C.dump=false -;#filename: Log path and filename 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_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 -;#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.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_1C.pfa=0.0001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_1C.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] +Acquisition_1C.threshold=0.005 +Acquisition_1C.doppler_max=5000 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_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 CHANNELS CONFIG ###### -;#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.coherent_integration_time_ms=1 Acquisition_2S.implementation=GPS_L2_M_PCPS_Acquisition -Acquisition_2S.threshold=0.0001 +Acquisition_2S.threshold=0.0005 Acquisition_2S.doppler_max=5000 -Acquisition_2S.doppler_min=-5000 -Acquisition_2S.doppler_step=30 +Acquisition_2S.doppler_step=100 +Acquisition_2S.bit_transition_flag=false 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 +;# channel specific config Acquisition_2S1.dump=false Acquisition_2S1.dump_filename=./acq_dump.dat Acquisition_2S1.item_type=gr_complex Acquisition_2S1.if=0 +Acquisition_2S1.coherent_integration_time_ms=1 Acquisition_2S1.implementation=GPS_L2_M_PCPS_Acquisition -Acquisition_2S1.threshold=0.0001 +Acquisition_2S1.threshold=0.0005 Acquisition_2S1.doppler_max=5000 -Acquisition_2S1.doppler_min=-5000 -Acquisition_2S1.doppler_step=30 +Acquisition_2S1.doppler_step=100 +Acquisition_2S1.bit_transition_flag=false Acquisition_2S1.max_dwells=1 -;######### TRACKING GLOBAL CONFIG ############ +;######### TRACKING CONFIG ############ -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_PLL_C_Aid_Tracking] +;######### GPS L1 C/A GENERIC TRACKING CONFIG ############ Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#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] Tracking_1C.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [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_1C.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] +Tracking_1C.dump=true +Tracking_1C.dump_filename=../data/epl_tracking_ch_ Tracking_1C.pll_bw_hz=40.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] Tracking_1C.dll_bw_hz=3.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 GENERAL CHANNEL CONFIG ############ +;######### GPS L2C GENERIC TRACKING 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.dump_filename=../data/epl_tracking_ch_ Tracking_2S.pll_bw_hz=2.0; Tracking_2S.dll_bw_hz=0.5; -Tracking_2S.order=3; +Tracking_2S.order=2; 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; - +;######### GPS L2C SPECIFIC CHANNEL TRACKING CONFIG ############ Tracking_2S1.implementation=GPS_L2_M_DLL_PLL_Tracking Tracking_2S1.item_type=gr_complex Tracking_2S1.if=0 Tracking_2S1.dump=true -Tracking_2S1.dump_filename=./tracking_ch_ +Tracking_2S1.dump_filename=../data/epl_tracking_ch_ Tracking_2S1.pll_bw_hz=2.0; Tracking_2S1.dll_bw_hz=0.5; -Tracking_2S1.order=3; +Tracking_2S1.order=2; Tracking_2S1.early_late_space_chips=0.5; -;######### TELEMETRY DECODER GPS L1 CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A +;######### TELEMETRY DECODER CONFIG ############ TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder TelemetryDecoder_1C.dump=false -;#decimation factor TelemetryDecoder_1C.decimation_factor=20; - -;######### TELEMETRY DECODER GPS L2 CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L2 M TelemetryDecoder_2S.implementation=GPS_L2_M_Telemetry_Decoder TelemetryDecoder_2S.dump=false -;#decimation factor TelemetryDecoder_2S.decimation_factor=1; ;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.Mixed_Observables +;#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] diff --git a/src/core/receiver/gnss_block_factory.cc b/src/core/receiver/gnss_block_factory.cc index 5d3916eb3..600071b9e 100644 --- a/src/core/receiver/gnss_block_factory.cc +++ b/src/core/receiver/gnss_block_factory.cc @@ -300,7 +300,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_1C( acq_.release(), trk_.release(), tlm_.release(), - "Channel", "1C" + appendix1, queue)); + "Channel", "1C", queue)); return channel_; } @@ -355,7 +355,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_2S( acq_.release(), trk_.release(), tlm_.release(), - "Channel", "2S" + appendix1, queue)); + "Channel", "2S", queue)); return channel_; } @@ -411,7 +411,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_1B( acq_.release(), trk_.release(), tlm_.release(), - "Channel", "1B" + appendix1, queue)); + "Channel", "1B", queue)); return channel_; } @@ -467,7 +467,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_5X( acq_.release(), trk_.release(), tlm_.release(), - "Channel", "5X" + appendix1, queue)); + "Channel", "5X", queue)); return channel_; } @@ -505,14 +505,14 @@ std::unique_ptr>> GNSSBlockFacto { //(i.e. Acquisition_1C0.implementation=xxxx) std::string acquisition_implementation_specific = configuration->property( - "Acquisition_1C" + boost::lexical_cast(i) + ".implementation", + "Acquisition_1C" + boost::lexical_cast(channel_absolute_id) + ".implementation", acquisition_implementation); //(i.e. Tracking_1C0.implementation=xxxx) std::string tracking_implementation_specific = configuration->property( - "Tracking_1C" + boost::lexical_cast(i) + ".implementation", + "Tracking_1C" + boost::lexical_cast(channel_absolute_id) + ".implementation", tracking_implementation); std::string telemetry_decoder_implementation_specific = configuration->property( - "TelemetryDecoder_1C" + boost::lexical_cast(i) + ".implementation", + "TelemetryDecoder_1C" + boost::lexical_cast(channel_absolute_id) + ".implementation", telemetry_decoder_implementation); // Push back the channel to the vector of channels @@ -534,14 +534,14 @@ std::unique_ptr>> GNSSBlockFacto { //(i.e. Acquisition_1C0.implementation=xxxx) std::string acquisition_implementation_specific = configuration->property( - "Acquisition_2S" + boost::lexical_cast(i) + ".implementation", + "Acquisition_2S" + boost::lexical_cast(channel_absolute_id) + ".implementation", acquisition_implementation); //(i.e. Tracking_1C0.implementation=xxxx) std::string tracking_implementation_specific = configuration->property( - "Tracking_2S" + boost::lexical_cast(i) + ".implementation", + "Tracking_2S" + boost::lexical_cast(channel_absolute_id) + ".implementation", tracking_implementation); std::string telemetry_decoder_implementation_specific = configuration->property( - "TelemetryDecoder_2S" + boost::lexical_cast(i) + ".implementation", + "TelemetryDecoder_2S" + boost::lexical_cast(channel_absolute_id) + ".implementation", telemetry_decoder_implementation); // Push back the channel to the vector of channels @@ -564,14 +564,14 @@ std::unique_ptr>> GNSSBlockFacto { //(i.e. Acquisition_1C0.implementation=xxxx) std::string acquisition_implementation_specific = configuration->property( - "Acquisition_1B" + boost::lexical_cast(i) + ".implementation", + "Acquisition_1B" + boost::lexical_cast(channel_absolute_id) + ".implementation", acquisition_implementation); //(i.e. Tracking_1C0.implementation=xxxx) std::string tracking_implementation_specific = configuration->property( - "Tracking_1B" + boost::lexical_cast(i) + ".implementation", + "Tracking_1B" + boost::lexical_cast(channel_absolute_id) + ".implementation", tracking_implementation); std::string telemetry_decoder_implementation_specific = configuration->property( - "TelemetryDecoder_1B" + boost::lexical_cast(i) + ".implementation", + "TelemetryDecoder_1B" + boost::lexical_cast(channel_absolute_id) + ".implementation", telemetry_decoder_implementation); // Push back the channel to the vector of channels @@ -594,14 +594,14 @@ std::unique_ptr>> GNSSBlockFacto { //(i.e. Acquisition_1C0.implementation=xxxx) std::string acquisition_implementation_specific = configuration->property( - "Acquisition_5X" + boost::lexical_cast(i) + ".implementation", + "Acquisition_5X" + boost::lexical_cast(channel_absolute_id) + ".implementation", acquisition_implementation); //(i.e. Tracking_1C0.implementation=xxxx) std::string tracking_implementation_specific = configuration->property( - "Tracking_5X" + boost::lexical_cast(i) + ".implementation", + "Tracking_5X" + boost::lexical_cast(channel_absolute_id) + ".implementation", tracking_implementation); std::string telemetry_decoder_implementation_specific = configuration->property( - "TelemetryDecoder_5X" + boost::lexical_cast(i) + ".implementation", + "TelemetryDecoder_5X" + boost::lexical_cast(channel_absolute_id) + ".implementation", telemetry_decoder_implementation); // Push back the channel to the vector of channels diff --git a/src/core/receiver/gnss_flowgraph.cc b/src/core/receiver/gnss_flowgraph.cc index 3231ec687..6a1c41377 100644 --- a/src/core/receiver/gnss_flowgraph.cc +++ b/src/core/receiver/gnss_flowgraph.cc @@ -293,7 +293,6 @@ void GNSSFlowgraph::connect() } std::string gnss_signal = channels_.at(i)->get_signal().get_signal_str(); // use channel's implicit signal! - std::cout<<"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::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; +// } }