diff --git a/conf/gnss-sdr_GPS_L2C_USRP1_realtime.conf b/conf/gnss-sdr_GPS_L2C_USRP1_realtime.conf new file mode 100644 index 000000000..aa8ae401a --- /dev/null +++ b/conf/gnss-sdr_GPS_L2C_USRP1_realtime.conf @@ -0,0 +1,209 @@ +; 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=2000000 + +;######### 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 ############ +SignalSource.implementation=UHD_Signal_Source +SignalSource.item_type=gr_complex +SignalSource.sampling_frequency=2000000 +SignalSource.freq=1227600000 +SignalSource.gain=60 +SignalSource.subdevice=A:0 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=../data/signal_source.dat +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Pass_Through +DataTypeAdapter.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. + +InputFilter.implementation=Freq_Xlating_Fir_Filter + +;#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=20000000 + +InputFilter.IF=-1600000 + +;# Decimation factor after the frequency tranaslating block +InputFilter.decimation_factor=1 + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through +Resampler.dump=false +Resampler.dump_filename=../data/resampler.dat +Resampler.item_type=gr_complex +Resampler.sample_freq_in=2000000 +Resampler.sample_freq_out=2000000 + + +;######### CHANNELS GLOBAL CONFIG ############ +;#count: Number of available GPS satellite channels. +Channels_2S.count=1 +;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver +Channels.in_acquisition=1 + +Channel.signal=2S + +Channel0.signal=2S +Channel1.signal=2S +Channel2.signal=2S +Channel3.signal=2S +Channel4.signal=2S +Channel5.signal=2S +Channel6.signal=2S +Channel7.signal=2S +;Channel8.signal=2S +;Channel9.signal=2S +;Channel10.signal=2S +;Channel11.signal=2S + + + +;######### ACQUISITION GLOBAL CONFIG ############ + +;# 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.0013 +;Acquisition_2S.pfa=0.001 +Acquisition_2S.doppler_max=10000 +Acquisition_2S.doppler_min=-10000 +Acquisition_2S.doppler_step=100 +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=true +Tracking_2S.dump_filename=./tracking_ch_ +Tracking_2S.pll_bw_hz=1.5; +Tracking_2S.dll_bw_hz=0.3; +Tracking_2S.fll_bw_hz=2.0; +Tracking_2S.order=3; +Tracking_2S.early_late_space_chips=0.5; + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_2S.implementation=GPS_L2_M_Telemetry_Decoder +TelemetryDecoder_2S.dump=false +TelemetryDecoder_2S.decimation_factor=1; + +;######### OBSERVABLES CONFIG ############. +Observables.implementation=GPS_L1_CA_Observables +Observables.dump=false +Observables.dump_filename=./observables.dat + + +;######### PVT CONFIG ############ +PVT.implementation=GPS_L1_CA_PVT +PVT.averaging_depth=10 +PVT.flag_averaging=true +PVT.output_rate_ms=100 +PVT.display_rate_ms=500 +PVT.dump_filename=./PVT +PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; +PVT.flag_nmea_tty_port=false; +PVT.nmea_dump_devname=/dev/pts/4 +PVT.dump=false + +;######### OUTPUT_FILTER CONFIG ############ +;# Receiver output filter: Leave this block disabled in this version +OutputFilter.implementation=Null_Sink_Output_Filter +OutputFilter.filename=data/gnss-sdr.dat +OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf b/conf/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf index 35c5ad115..eaa4d666a 100644 --- a/conf/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf +++ b/conf/gnss-sdr_GPS_L2C_USRP_X300_realtime.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=2000000 +GNSS-SDR.internal_fs_hz=4000000 ;######### CONTROL_THREAD CONFIG ############ ControlThread.wait_for_flowgraph=false @@ -28,8 +28,10 @@ GNSS-SDR.SUPL_CI=0x31b0 SignalSource.implementation=UHD_Signal_Source SignalSource.device_address=192.168.50.2 SignalSource.item_type=cshort -SignalSource.sampling_frequency=2000000 +SignalSource.sampling_frequency=4000000 SignalSource.freq=1227600000 +;### Options: internal, external, or MIMO +SignalSource.clock_source=internal SignalSource.gain=35 SignalSource.subdevice=A:0 SignalSource.samples=0 @@ -71,7 +73,7 @@ InputFilter.band2_error=1.0 InputFilter.filter_type=bandpass InputFilter.grid_density=16 -InputFilter.sampling_frequency=2000000 +InputFilter.sampling_frequency=4000000 InputFilter.IF=0 ;######### RESAMPLER CONFIG ############ @@ -79,13 +81,13 @@ Resampler.implementation=Pass_Through Resampler.dump=false Resampler.dump_filename=../data/resampler.dat Resampler.item_type=gr_complex -Resampler.sample_freq_in=2000000 -Resampler.sample_freq_out=2000000 +Resampler.sample_freq_in=4000000 +Resampler.sample_freq_out=4000000 ;######### CHANNELS GLOBAL CONFIG ############ ;#count: Number of available GPS satellite channels. -Channels_2S.count=2 +Channels_2S.count=1 ;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver Channels.in_acquisition=1 @@ -108,32 +110,28 @@ Channel7.signal=2S ;######### ACQUISITION GLOBAL CONFIG ############ +;# 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.001 -;Acquisition_2S.pfa=0.00001 +Acquisition_2S.threshold=0.0015 +;Acquisition_2S.pfa=0.001 Acquisition_2S.doppler_max=5000 -Acquisition_2S.doppler_step=30 -Acquisition_2S.bit_transition_flag=false +Acquisition_2S.doppler_min=-5000 +Acquisition_2S.doppler_step=60 Acquisition_2S.max_dwells=1 - - -;######### TRACKING GLOBAL CONFIG ############ - Tracking_2S.implementation=GPS_L2_M_DLL_PLL_Tracking -Tracking_2S.item_type=gr_complex +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.3; -Tracking_2S.fll_bw_hz=2.0; -Tracking_2S.order=3; +Tracking_2S.dll_bw_hz=0.25; +Tracking_2S.fll_bw_hz=0.0; +Tracking_2S.order=2; Tracking_2S.early_late_space_chips=0.5; ;######### TELEMETRY DECODER GPS CONFIG ############ diff --git a/conf/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf b/conf/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf index f95b35f63..651a95040 100644 --- a/conf/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf +++ b/conf/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf @@ -33,7 +33,7 @@ SignalSource.implementation=File_Signal_Source ;SignalSource.filename=/home/marc/E5a_acquisitions/galileo_E5_8M_r2_upsampled_12.dat ;SignalSource.filename=/home/marc/E5a_acquisitions/Tiered_sim_4sat_stup4_2s_up.dat ;SignalSource.filename=/home/marc/E5a_acquisitions/signal_source_sec21M_long.dat -SignalSource.filename=/home/gnss/captures/Galileo_E5ab_IFEN_CTTC_run1.dat +SignalSource.filename=/datalogger/captures/Galileo_E5ab_IFEN_CTTC_run1.dat @@ -183,7 +183,7 @@ Resampler.sample_freq_out=4000000 ;######### CHANNELS GLOBAL CONFIG ############ ;#count: Number of available satellite channels. -Channels_5X.count=1 +Channels_5X.count=4 ;#in_acquisition: Number of channels simultaneously acquiring Channels.in_acquisition=1 ;#system: GPS, GLONASS, Galileo, SBAS or Compass @@ -263,21 +263,21 @@ Channel0.satellite=19 ;######### CHANNEL 1 CONFIG ############ -;Channel1.system=Galileo -;Channel1.signal=5Q -;Channel1.satellite=12 +Channel1.system=Galileo +Channel1.signal=5X +Channel1.satellite=12 ;######### CHANNEL 2 CONFIG ############ -;Channel2.system=Galileo -;Channel2.signal=5Q -;Channel2.satellite=11 +Channel2.system=Galileo +Channel2.signal=5X +Channel2.satellite=11 ;######### CHANNEL 3 CONFIG ############ -;Channel3.system=Galileo -;Channel3.signal=5Q -;Channel3.satellite=20 +Channel3.system=Galileo +Channel3.signal=5X +Channel3.satellite=20 ;######### ACQUISITION GLOBAL CONFIG ############ diff --git a/conf/gnss-sdr_multichannel_GPS_L1_L2_Flexiband_realtime_III_1b.conf b/conf/gnss-sdr_multichannel_GPS_L1_L2_Flexiband_realtime_III_1b.conf new file mode 100644 index 000000000..e7ca792c4 --- /dev/null +++ b/conf/gnss-sdr_multichannel_GPS_L1_L2_Flexiband_realtime_III_1b.conf @@ -0,0 +1,497 @@ +; 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=2500000 + +;######### 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 + +;#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=false + +;#dump_filename: Log path and filename. +InputFilter0.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. +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] +;# 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 + +;# Decimation factor after the frequency tranaslating block +InputFilter0.decimation_factor=8 + +;######### 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=false + +;#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] +;# 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. +InputFilter1.IF=100000 +;#InputFilter1.IF=0 + +;# Decimation factor after the frequency tranaslating block +InputFilter1.decimation_factor=8 + + +;######### 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=8 +Channels_2S.count=8 +;#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) +;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) +;# "5X" GALILEO E5a I+Q + + +;# 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 + +Channel6.RF_channel_ID=0 +Channel6.signal=1C + +Channel7.RF_channel_ID=0 +Channel7.signal=1C + + +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 + +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 ###### +;#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.008 +;#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=5000 +;#doppler_max: Doppler step in the grid search [Hz] +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 + + +;######### TRACKING GLOBAL CONFIG ############ + +;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] + +Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking +Tracking_1C.item_type=gr_complex +Tracking_1C.if=0 +Tracking_1C.dump=true +Tracking_1C.dump_filename=./tracking_ch_ +Tracking_1C.pll_bw_hz=40.0; +Tracking_1C.dll_bw_hz=3.0; +Tracking_1C.fll_bw_hz=10.0; +Tracking_1C.order=3; +Tracking_1C.early_late_space_chips=0.5; + +;# 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.0005 +;Acquisition_2S.pfa=0.001 +Acquisition_2S.doppler_max=5000 +Acquisition_2S.doppler_min=-5000 +Acquisition_2S.doppler_step=30 +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=true +Tracking_2S.dump_filename=./tracking_ch_ +Tracking_2S.pll_bw_hz=1.5; +Tracking_2S.dll_bw_hz=0.3; +Tracking_2S.fll_bw_hz=2.0; +Tracking_2S.order=3; +Tracking_2S.early_late_space_chips=0.5; + +;######### TELEMETRY DECODER GPS L1 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 +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 +TelemetryDecoder_2S.decimation_factor=1; + + +;######### OBSERVABLES CONFIG ############ +;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.Mixed_Observables +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 + +;# RINEX, KML, and NMEA 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 + + +;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] +PVT.dump=false + +;######### OUTPUT_FILTER CONFIG ############ +;# Receiver output filter: Leave this block disabled in this version +OutputFilter.implementation=Null_Sink_Output_Filter +OutputFilter.filename=data/gnss-sdr.dat +OutputFilter.item_type=gr_complex \ No newline at end of file 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 new file mode 100644 index 000000000..ebaa60f0f --- /dev/null +++ b/conf/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_realtime_III_1b.conf @@ -0,0 +1,547 @@ +; 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=2500000 + +;######### 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=false +#SignalSource.signal_file=/datalogger/signals/Fraunhofer/L125_III1b_210s.usb +SignalSource.signal_file=/datalogger/captures/flexiband_III_1b_cap1.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=false + +;#dump_filename: Log path and filename. +InputFilter0.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. +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] +;# 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 + +;# Decimation factor after the frequency tranaslating block +InputFilter0.decimation_factor=8 + +;######### 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=false + +;#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] +;# 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. +InputFilter1.IF=100000 +;#InputFilter1.IF=0 + +;# Decimation factor after the frequency tranaslating block +InputFilter1.decimation_factor=8 + + +;######### 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=8 +Channels_1B.count=2 +Channels_2S.count=8 +;#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) +;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) +;# "5X" GALILEO E5a I+Q + + +;# 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 + +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=0 +Channel9.signal=1B + +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 + +Channel17.RF_channel_ID=1 +Channel17.signal=2S + +;######### SPECIFIC CHANNELS 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.008 +;#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=5000 +;#doppler_max: Doppler step in the grid search [Hz] +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 + + +;######### TRACKING GLOBAL CONFIG ############ + +;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] + +Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking +Tracking_1C.item_type=gr_complex +Tracking_1C.if=0 +Tracking_1C.dump=true +Tracking_1C.dump_filename=./tracking_ch_ +Tracking_1C.pll_bw_hz=40.0; +Tracking_1C.dll_bw_hz=3.0; +Tracking_1C.fll_bw_hz=10.0; +Tracking_1C.order=3; +Tracking_1C.early_late_space_chips=0.5; + +;# 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.0005 +;Acquisition_2S.pfa=0.001 +Acquisition_2S.doppler_max=5000 +Acquisition_2S.doppler_min=-5000 +Acquisition_2S.doppler_step=30 +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=true +Tracking_2S.dump_filename=./tracking_ch_ +Tracking_2S.pll_bw_hz=1.5; +Tracking_2S.dll_bw_hz=0.3; +Tracking_2S.fll_bw_hz=2.0; +Tracking_2S.order=3; +Tracking_2S.early_late_space_chips=0.5; + + +;# GALILEO E1B + + +;#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.0000005 +;#doppler_max: Maximum expected Doppler shift [Hz] +Acquisition_1B.doppler_max=5000 +;#doppler_max: Doppler step in the grid search [Hz] +Acquisition_1B.doppler_step=125 + +;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_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 L1 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 +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 +TelemetryDecoder_2S.decimation_factor=1; + +;######### TELEMETRY DECODER GALILEO E1B CONFIG ############ +;#implementation: Use [Galileo_E1B_Telemetry_Decoder] for Galileo E1B +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.dump=false +TelemetryDecoder_1B.decimation_factor=5; + + +;######### OBSERVABLES CONFIG ############ +;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.Mixed_Observables +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 + +;# RINEX, KML, and NMEA 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 + + +;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] +PVT.dump=false + +;######### OUTPUT_FILTER CONFIG ############ +;# Receiver output filter: Leave this block disabled in this version +OutputFilter.implementation=Null_Sink_Output_Filter +OutputFilter.filename=data/gnss-sdr.dat +OutputFilter.item_type=gr_complex \ No newline at end of file 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 9f390116c..598a958f9 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,7 +29,8 @@ 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/signals/Fraunhofer/L125_III1b_210s.usb +SignalSource.signal_file=/datalogger/captures/test.dat ;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. SignalSource.item_type=gr_complex @@ -77,7 +78,7 @@ InputFilter0.implementation=Freq_Xlating_Fir_Filter InputFilter0.dump=false ;#dump_filename: Log path and filename. -InputFilter0.dump_filename=../data/input_filter_ch0.dat +InputFilter0.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. @@ -135,8 +136,8 @@ InputFilter0.grid_density=16 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 @@ -336,111 +337,38 @@ Channel15.signal=2S ;######### SPECIFIC CHANNELS CONFIG ###### ;#The following options are specific to each channel and overwrite the generic options -;# GPS L1 C/A -Acquisition_1C0.dump=false -Acquisition_1C0.dump_filename=./acq_dump.dat -Acquisition_1C0.item_type=gr_complex -Acquisition_1C0.if=0 -Acquisition_1C0.sampled_ms=1 -Acquisition_1C0.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler -Acquisition_1C0.threshold=0.015 -;Acquisition_1C0.pfa=0.0001 -Acquisition_1C0.doppler_max=5000 -Acquisition_1C0.doppler_min=-5000 -Acquisition_1C0.doppler_step=250 -Acquisition_1C0.max_dwells=2 +;######### ACQUISITION GLOBAL CONFIG ############ -Acquisition_1C1.dump=false -Acquisition_1C1.dump_filename=./acq_dump.dat -Acquisition_1C1.item_type=gr_complex -Acquisition_1C1.if=0 -Acquisition_1C1.sampled_ms=1 -Acquisition_1C1.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler -Acquisition_1C1.threshold=0.015 -;Acquisition_1C1.pfa=0.0001 -Acquisition_1C1.doppler_max=5000 -Acquisition_1C1.doppler_min=-5000 -Acquisition_1C1.doppler_step=250 -Acquisition_1C1.max_dwells=2 +;#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.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_1C2.dump=false -Acquisition_1C2.dump_filename=./acq_dump.dat -Acquisition_1C2.item_type=gr_complex -Acquisition_1C2.if=0 -Acquisition_1C2.sampled_ms=1 -Acquisition_1C2.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler -Acquisition_1C2.threshold=0.015 -;Acquisition_1C2.pfa=0.0001 -Acquisition_1C2.doppler_max=5000 -Acquisition_1C2.doppler_min=-5000 -Acquisition_1C2.doppler_step=250 -Acquisition_1C2.max_dwells=2 - -Acquisition_1C3.dump=false -Acquisition_1C3.dump_filename=./acq_dump.dat -Acquisition_1C3.item_type=gr_complex -Acquisition_1C3.if=0 -Acquisition_1C3.sampled_ms=1 -Acquisition_1C3.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler -Acquisition_1C3.threshold=0.015 -;Acquisition_1C3.pfa=0.0001 -Acquisition_1C3.doppler_max=5000 -Acquisition_1C3.doppler_min=-5000 -Acquisition_1C3.doppler_step=250 -Acquisition_1C3.max_dwells=2 - -Acquisition_1C4.dump=false -Acquisition_1C4.dump_filename=./acq_dump.dat -Acquisition_1C4.item_type=gr_complex -Acquisition_1C4.if=0 -Acquisition_1C4.sampled_ms=1 -Acquisition_1C4.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler -Acquisition_1C4.threshold=0.015 -;Acquisition_1C4.pfa=0.0001 -Acquisition_1C4.doppler_max=5000 -Acquisition_1C4.doppler_min=-5000 -Acquisition_1C4.doppler_step=250 -Acquisition_1C4.max_dwells=2 - -Acquisition_1C5.dump=false -Acquisition_1C5.dump_filename=./acq_dump.dat -Acquisition_1C5.item_type=gr_complex -Acquisition_1C5.if=0 -Acquisition_1C5.sampled_ms=1 -Acquisition_1C5.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler -Acquisition_1C5.threshold=0.015 -;Acquisition_1C5.pfa=0.0001 -Acquisition_1C5.doppler_max=5000 -Acquisition_1C5.doppler_min=-5000 -Acquisition_1C5.doppler_step=250 -Acquisition_1C5.max_dwells=2 - -Acquisition_1C6.dump=false -Acquisition_1C6.dump_filename=./acq_dump.dat -Acquisition_1C6.item_type=gr_complex -Acquisition_1C6.if=0 -Acquisition_1C6.sampled_ms=1 -Acquisition_1C6.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler -Acquisition_1C6.threshold=0.015 -;Acquisition_1C6.pfa=0.0001 -Acquisition_1C6.doppler_max=5000 -Acquisition_1C6.doppler_min=-5000 -Acquisition_1C6.doppler_step=250 -Acquisition_1C6.max_dwells=2 - -Acquisition_1C7.dump=false -Acquisition_1C7.dump_filename=./acq_dump.dat -Acquisition_1C7.item_type=gr_complex -Acquisition_1C7.if=0 -Acquisition_1C7.sampled_ms=1 -Acquisition_1C7.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler -Acquisition_1C7.threshold=0.015 -;Acquisition_1C7.pfa=0.0001 -Acquisition_1C7.doppler_max=5000 -Acquisition_1C7.doppler_min=-5000 -Acquisition_1C7.doppler_step=250 -Acquisition_1C7.max_dwells=2 +;######### ACQUISITION CHANNELS CONFIG ###### +;#The following options are specific to each channel and overwrite the generic options ;# GPS L2C M Acquisition_2S1.dump=false @@ -448,7 +376,7 @@ 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.0005 +Acquisition_2S1.threshold=0.0001 ;Acquisition_2S1.pfa=0.001 Acquisition_2S1.doppler_max=5000 Acquisition_2S1.doppler_min=-5000 @@ -540,99 +468,37 @@ Acquisition_2S8.doppler_step=100 Acquisition_2S8.max_dwells=1 -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options +;######### TRACKING GLOBAL CONFIG ############ +;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] +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 -;######### 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.fll_bw_hz=10.0; -Tracking_1C0.order=3; -Tracking_1C0.early_late_space_chips=0.5; -;######### TRACKING CHANNEL 1 CONFIG ############ -Tracking_1C1.implementation=GPS_L1_CA_DLL_PLL_Tracking -Tracking_1C1.item_type=gr_complex -Tracking_1C1.if=0 -Tracking_1C1.dump=false -Tracking_1C1.dump_filename=./tracking_ch_ -Tracking_1C1.pll_bw_hz=40.0; -Tracking_1C1.dll_bw_hz=3.0; -Tracking_1C1.fll_bw_hz=10.0; -Tracking_1C1.order=3; -Tracking_1C1.early_late_space_chips=0.5; -;######### TRACKING CHANNEL 2 CONFIG ############ -Tracking_1C2.implementation=GPS_L1_CA_DLL_PLL_Tracking -Tracking_1C2.item_type=gr_complex -Tracking_1C2.if=0 -Tracking_1C2.dump=false -Tracking_1C2.dump_filename=./tracking_ch_ -Tracking_1C2.pll_bw_hz=40.0; -Tracking_1C2.dll_bw_hz=3.0; -Tracking_1C2.fll_bw_hz=10.0; -Tracking_1C2.order=3; -Tracking_1C2.early_late_space_chips=0.5; -;######### TRACKING CHANNEL 3 CONFIG ############ -Tracking_1C3.implementation=GPS_L1_CA_DLL_PLL_Tracking -Tracking_1C3.item_type=gr_complex -Tracking_1C3.if=0 -Tracking_1C3.dump=false -Tracking_1C3.dump_filename=./tracking_ch_ -Tracking_1C3.pll_bw_hz=40.0; -Tracking_1C3.dll_bw_hz=3.0; -Tracking_1C3.fll_bw_hz=10.0; -Tracking_1C3.order=3; -Tracking_1C3.early_late_space_chips=0.5; +;#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.pll_bw_hz=40.0; + +;#dll_bw_hz: DLL loop filter bandwidth [Hz] +Tracking_1C.dll_bw_hz=3.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 CHANNEL 4 CONFIG ############ -Tracking_1C4.implementation=GPS_L1_CA_DLL_PLL_Tracking -Tracking_1C4.item_type=gr_complex -Tracking_1C4.if=0 -Tracking_1C4.dump=false -Tracking_1C4.dump_filename=./tracking_ch_ -Tracking_1C4.pll_bw_hz=40.0; -Tracking_1C4.dll_bw_hz=3.0; -Tracking_1C4.fll_bw_hz=10.0; -Tracking_1C4.order=3; -Tracking_1C4.early_late_space_chips=0.5; -;######### TRACKING CHANNEL 5 CONFIG ############ -Tracking_1C5.implementation=GPS_L1_CA_DLL_PLL_Tracking -Tracking_1C5.item_type=gr_complex -Tracking_1C5.if=0 -Tracking_1C5.dump=false -Tracking_1C5.dump_filename=./tracking_ch_ -Tracking_1C5.pll_bw_hz=40.0; -Tracking_1C5.dll_bw_hz=3.0; -Tracking_1C5.fll_bw_hz=10.0; -Tracking_1C5.order=3; -Tracking_1C5.early_late_space_chips=0.5; -;######### TRACKING CHANNEL 6 CONFIG ############ -Tracking_1C6.implementation=GPS_L1_CA_DLL_PLL_Tracking -Tracking_1C6.item_type=gr_complex -Tracking_1C6.if=0 -Tracking_1C6.dump=false -Tracking_1C6.dump_filename=./tracking_ch_ -Tracking_1C6.pll_bw_hz=40.0; -Tracking_1C6.dll_bw_hz=3.0; -Tracking_1C6.fll_bw_hz=10.0; -Tracking_1C6.order=3; -Tracking_1C6.early_late_space_chips=0.5; -;######### TRACKING CHANNEL 7 CONFIG ############ -Tracking_1C7.implementation=GPS_L1_CA_DLL_PLL_Tracking -Tracking_1C7.item_type=gr_complex -Tracking_1C7.if=0 -Tracking_1C7.dump=false -Tracking_1C7.dump_filename=./tracking_ch_ -Tracking_1C7.pll_bw_hz=40.0; -Tracking_1C7.dll_bw_hz=3.0; -Tracking_1C7.fll_bw_hz=10.0; -Tracking_1C7.order=3; -Tracking_1C7.early_late_space_chips=0.5; ;######### TRACKING CHANNEL 8 CONFIG ############ Tracking_2S1.implementation=GPS_L2_M_DLL_PLL_Tracking @@ -641,7 +507,7 @@ Tracking_2S1.if=0 Tracking_2S1.dump=true Tracking_2S1.dump_filename=./tracking_ch_ Tracking_2S1.pll_bw_hz=2.0; -Tracking_2S1.dll_bw_hz=0.3; +Tracking_2S1.dll_bw_hz=0.5; Tracking_2S1.fll_bw_hz=2.0; Tracking_2S1.order=3; Tracking_2S1.early_late_space_chips=0.5; @@ -652,7 +518,7 @@ 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.3; +Tracking_2S2.dll_bw_hz=0.5; Tracking_2S2.fll_bw_hz=2.0; Tracking_2S2.order=3; Tracking_2S2.early_late_space_chips=0.5; @@ -663,7 +529,7 @@ 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.3; +Tracking_2S3.dll_bw_hz=0.5; Tracking_2S3.fll_bw_hz=2.0; Tracking_2S3.order=3; Tracking_2S3.early_late_space_chips=0.5; @@ -725,73 +591,20 @@ Tracking_2S8.order=3; Tracking_2S8.early_late_space_chips=0.5; -;######### TELEMETRY DECODER GPS CONFIG ############ +;######### TELEMETRY DECODER GPS L1 CONFIG ############ ;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A - -TelemetryDecoder_1C0.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C0.dump=false -TelemetryDecoder_1C0.decimation_factor=20; - -TelemetryDecoder_1C1.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C1.dump=false -TelemetryDecoder_1C1.decimation_factor=20; - -TelemetryDecoder_1C2.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C2.dump=false -TelemetryDecoder_1C2.decimation_factor=20; - -TelemetryDecoder_1C3.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C3.dump=false -TelemetryDecoder_1C3.decimation_factor=20; - -TelemetryDecoder_1C4.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C4.dump=false -TelemetryDecoder_1C4.decimation_factor=20; - -TelemetryDecoder_1C5.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C5.dump=false -TelemetryDecoder_1C5.decimation_factor=20; - -TelemetryDecoder_1C6.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C6.dump=false -TelemetryDecoder_1C6.decimation_factor=20; - -TelemetryDecoder_1C7.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C7.dump=false -TelemetryDecoder_1C7.decimation_factor=20; +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false +;#decimation factor +TelemetryDecoder_1C.decimation_factor=20; -TelemetryDecoder_2S1.implementation=GPS_L2_M_Telemetry_Decoder -TelemetryDecoder_2S1.dump=false -TelemetryDecoder_2S1.decimation_factor=1; - -TelemetryDecoder_2S2.implementation=GPS_L2_M_Telemetry_Decoder -TelemetryDecoder_2S2.dump=false -TelemetryDecoder_2S2.decimation_factor=1; - -TelemetryDecoder_2S3.implementation=GPS_L2_M_Telemetry_Decoder -TelemetryDecoder_2S3.dump=false -TelemetryDecoder_2S3.decimation_factor=1; - -TelemetryDecoder_2S4.implementation=GPS_L2_M_Telemetry_Decoder -TelemetryDecoder_2S4.dump=false -TelemetryDecoder_2S4.decimation_factor=1; - -TelemetryDecoder_2S5.implementation=GPS_L2_M_Telemetry_Decoder -TelemetryDecoder_2S5.dump=false -TelemetryDecoder_2S5.decimation_factor=1; - -TelemetryDecoder_2S6.implementation=GPS_L2_M_Telemetry_Decoder -TelemetryDecoder_2S6.dump=false -TelemetryDecoder_2S6.decimation_factor=1; - -TelemetryDecoder_2S7.implementation=GPS_L2_M_Telemetry_Decoder -TelemetryDecoder_2S7.dump=false -TelemetryDecoder_2S7.decimation_factor=1; - -TelemetryDecoder_2S8.implementation=GPS_L2_M_Telemetry_Decoder -TelemetryDecoder_2S8.dump=false -TelemetryDecoder_2S8.decimation_factor=1; +;######### 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 ############ diff --git a/src/algorithms/signal_source/adapters/uhd_signal_source.cc b/src/algorithms/signal_source/adapters/uhd_signal_source.cc index dc3502f5c..4728543d3 100644 --- a/src/algorithms/signal_source/adapters/uhd_signal_source.cc +++ b/src/algorithms/signal_source/adapters/uhd_signal_source.cc @@ -64,6 +64,7 @@ UhdSignalSource::UhdSignalSource(ConfigurationInterface* configuration, } subdevice_ = configuration->property(role + ".subdevice", empty); + clock_source_ = configuration->property(role + ".clock_source", std::string("internal")); RF_channels_ = configuration->property(role + ".RF_channels", 1); sample_rate_ = configuration->property(role + ".sampling_frequency", (double)4.0e6); item_type_ = configuration->property(role + ".item_type", default_item_type); @@ -152,8 +153,7 @@ UhdSignalSource::UhdSignalSource(ConfigurationInterface* configuration, // 2.1 set sampling clock reference // Set the clock source for the usrp device. // Options: internal, external, or MIMO - std::string clk_reference = "internal"; - uhd_source_->set_clock_source(clk_reference); + uhd_source_->set_clock_source(clock_source_); // 2.2 set the sample rate for the usrp device uhd_source_->set_samp_rate(sample_rate_); diff --git a/src/algorithms/signal_source/adapters/uhd_signal_source.h b/src/algorithms/signal_source/adapters/uhd_signal_source.h index 0a248b544..cda8c0270 100644 --- a/src/algorithms/signal_source/adapters/uhd_signal_source.h +++ b/src/algorithms/signal_source/adapters/uhd_signal_source.h @@ -94,6 +94,7 @@ private: size_t item_size_; std::string subdevice_; + std::string clock_source_; std::vector freq_; std::vector gain_; diff --git a/src/algorithms/telemetry_decoder/adapters/galileo_e1b_telemetry_decoder.cc b/src/algorithms/telemetry_decoder/adapters/galileo_e1b_telemetry_decoder.cc index 89e5b2658..d24e49298 100644 --- a/src/algorithms/telemetry_decoder/adapters/galileo_e1b_telemetry_decoder.cc +++ b/src/algorithms/telemetry_decoder/adapters/galileo_e1b_telemetry_decoder.cc @@ -76,6 +76,11 @@ GalileoE1BTelemetryDecoder::GalileoE1BTelemetryDecoder(ConfigurationInterface* c telemetry_decoder_->set_iono_queue(&global_galileo_iono_queue); telemetry_decoder_->set_almanac_queue(&global_galileo_almanac_queue); telemetry_decoder_->set_utc_model_queue(&global_galileo_utc_model_queue); + + //decimation factor + int decimation_factor = configuration->property(role + ".decimation_factor", 1); + telemetry_decoder_->set_decimation(decimation_factor); + channel_ = 0; } 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 570c5a9ba..0c861fc46 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 @@ -180,6 +180,8 @@ galileo_e1b_telemetry_decoder_cc::galileo_e1b_telemetry_decoder_cc( d_channel = 0; Prn_timestamp_at_preamble_ms = 0.0; flag_TOW_set = false; + d_average_count = 0; + d_decimation_output_factor = 1; } @@ -495,13 +497,29 @@ int galileo_e1b_telemetry_decoder_cc::general_work (int noutput_items, gr_vector LOG(WARNING) << "Exception writing observables dump file " << e.what(); } } - //3. Make the output (copy the object contents to the GNURadio reserved memory) - *out[0] = current_synchro_data; + //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="<d_channel << " SAMPLE STAMP="< *iono_queue); //!< Set the iono data queue void set_almanac_queue(concurrent_queue *almanac_queue); //!< Set the almanac data queue void set_utc_model_queue(concurrent_queue *utc_model_queue); //!< Set the UTC model queue + + /*! + * \brief Set decimation factor to average the GPS synchronization estimation output from the tracking module. + */ + void set_decimation(int decimation); + /*! * \brief This is where all signal processing takes place */ @@ -132,6 +138,10 @@ private: Gnss_Satellite d_satellite; int d_channel; + // output averaging and decimation + int d_average_count; + int d_decimation_output_factor; + double d_preamble_time_seconds; double d_TOW_at_Preamble; diff --git a/src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking.cc b/src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking.cc index 0c4745a77..280b85d6c 100644 --- a/src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking.cc +++ b/src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking.cc @@ -50,7 +50,7 @@ GpsL2MDllPllTracking::GpsL2MDllPllTracking( role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(queue) { - LOG(INFO) << "role " << role; + DLOG(INFO) << "role " << role; //################# CONFIGURATION PARAMETERS ######################## int fs_in; int vector_length; 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 4fd8448b6..0a988a1af 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 @@ -473,6 +473,7 @@ int Galileo_E5a_Dll_Pll_Tracking_cc::general_work (int noutput_items, gr_vector_ *out[0] = current_synchro_data; consume_each(samples_offset); //shift input to perform alignment with local replica return 1; + break; } case 2: { @@ -696,7 +697,38 @@ int Galileo_E5a_Dll_Pll_Tracking_cc::general_work (int noutput_items, gr_vector_ current_synchro_data.Carrier_phase_rads = static_cast(d_acc_carrier_phase_rad); current_synchro_data.Carrier_Doppler_hz = static_cast(d_carrier_doppler_hz); current_synchro_data.CN0_dB_hz = static_cast(d_CN0_SNV_dB_Hz); - current_synchro_data.Flag_valid_tracking = false; + current_synchro_data.Flag_valid_tracking = false; + + + // ########## DEBUG OUTPUT + /*! + * \todo The stop timer has to be moved to the signal source! + */ + // debug: Second counter in channel 0 + if (d_channel == 0) + { + if (floor(d_sample_counter / d_fs_in) != d_last_seg) + { + d_last_seg = floor(d_sample_counter / d_fs_in); + std::cout << "Current input signal time = " << d_last_seg << " [s]" << std::endl; + std::cout << "Galileo E5 Tracking CH " << d_channel << ": Satellite " + << Gnss_Satellite(systemName[sys], d_acquisition_gnss_synchro->PRN) << ", CN0 = " << d_CN0_SNV_dB_Hz << " [dB-Hz] "<<"Doppler="<PRN) + << ", CN0 = " << d_CN0_SNV_dB_Hz << " [dB-Hz] "<<"Doppler="<(acq_to_trk_delay_samples), static_cast(d_current_prn_length_samples)); + acq_trk_shif_correction_samples = -fmod(static_cast(acq_to_trk_delay_samples), static_cast(d_current_prn_length_samples)); samples_offset = round(d_acq_code_phase_samples + acq_trk_shif_correction_samples);//+(1.5*(d_fs_in/GPS_L2_M_CODE_RATE_HZ))); // /todo: Check if the sample counter sent to the next block as a time reference should be incremented AFTER sended or BEFORE //d_sample_counter_seconds = d_sample_counter_seconds + (((double)samples_offset) / static_cast(d_fs_in)); @@ -457,7 +457,7 @@ int gps_l2_m_dll_pll_tracking_cc::general_work (int noutput_items, gr_vector_int //d_rem_code_phase_samples = K_blk_samples - d_current_prn_length_samples; //rounding error < 1 sample // ####### CN0 ESTIMATION AND LOCK DETECTORS ###### - if (d_cn0_estimation_counter < CN0_ESTIMATION_SAMPLES) + if (d_cn0_estimation_counter < GPS_L2M_CN0_ESTIMATION_SAMPLES) { // fill buffer with prompt correlator output values d_Prompt_buffer[d_cn0_estimation_counter] = *d_Prompt; @@ -467,11 +467,11 @@ int gps_l2_m_dll_pll_tracking_cc::general_work (int noutput_items, gr_vector_int { d_cn0_estimation_counter = 0; // Code lock indicator - d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer, CN0_ESTIMATION_SAMPLES, d_fs_in, GPS_L2_M_CODE_LENGTH_CHIPS); + d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer, GPS_L2M_CN0_ESTIMATION_SAMPLES, d_fs_in, GPS_L2_M_CODE_LENGTH_CHIPS); // Carrier lock indicator - d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer, CN0_ESTIMATION_SAMPLES); + d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer, GPS_L2M_CN0_ESTIMATION_SAMPLES); // Loss of lock detection - if (d_carrier_lock_test < d_carrier_lock_threshold or d_CN0_SNV_dB_Hz < MINIMUM_VALID_CN0) + if (d_carrier_lock_test < d_carrier_lock_threshold or d_CN0_SNV_dB_Hz < GPS_L2M_MINIMUM_VALID_CN0) { d_carrier_lock_fail_counter++; } @@ -479,7 +479,7 @@ int gps_l2_m_dll_pll_tracking_cc::general_work (int noutput_items, gr_vector_int { if (d_carrier_lock_fail_counter > 0) d_carrier_lock_fail_counter--; } - if (d_carrier_lock_fail_counter > MAXIMUM_LOCK_FAIL_COUNTER) + if (d_carrier_lock_fail_counter > GPS_L2M_MAXIMUM_LOCK_FAIL_COUNTER) { std::cout << "Loss of lock in channel " << d_channel << "!" << std::endl; LOG(INFO) << "Loss of lock in channel " << d_channel << "!"; diff --git a/src/core/receiver/gnss_block_factory.cc b/src/core/receiver/gnss_block_factory.cc index 1fbc3afea..2c449d1ce 100644 --- a/src/core/receiver/gnss_block_factory.cc +++ b/src/core/receiver/gnss_block_factory.cc @@ -370,7 +370,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_1C( std::unique_ptr pass_through_ = GetBlock(configuration, "Channel", "Pass_Through", 1, 1, queue); std::unique_ptr acq_ = GetAcqBlock(configuration, "Acquisition_1C" + appendix1, acq, 1, 0, queue); - std::unique_ptr trk_ = GetTrkBlock(configuration, "Tracking_1C "+ appendix2, trk, 1, 1, queue); + std::unique_ptr trk_ = GetTrkBlock(configuration, "Tracking_1C"+ appendix2, trk, 1, 1, queue); std::unique_ptr tlm_ = GetTlmBlock(configuration, "TelemetryDecoder_1C" + appendix3, tlm, 1, 1, queue); std::unique_ptr channel_(new Channel(configuration.get(), channel, pass_through_.release(),