diff --git a/conf/gnss-sdr.conf b/conf/gnss-sdr.conf
index 88a66f3ee..f56a720a6 100644
--- a/conf/gnss-sdr.conf
+++ b/conf/gnss-sdr.conf
@@ -253,8 +253,8 @@ TelemetryDecoder_1C.dump=false
TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
-Observables.implementation=GPS_L1_CA_Observables
+;#implementation:
+Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
Observables.dump=false
@@ -264,14 +264,13 @@ Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
-;#implementation: Position Velocity and Time (PVT) implementation algorithm:
-PVT.implementation=GPS_L1_CA_PVT
+;#implementation: Position Velocity and Time (PVT) implementation:
+PVT.implementation=RTKLIB_PVT
-;#averaging_depth: Number of PVT observations in the moving average algorithm
-PVT.averaging_depth=100
-
-;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
-PVT.flag_averaging=true
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
+PVT.AR_GPS=PPP-AR ; options: OFF, Continuous, Instantaneous, Fix-and-Hold, PPP-AR
;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms]
PVT.output_rate_ms=10
@@ -279,6 +278,8 @@ PVT.output_rate_ms=10
;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms <= display_rate_ms.
PVT.display_rate_ms=500
+PVT.positioning_mode=PPP_Static
+
;# 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, ".kml" and ".geojson" to GIS-friendly formats.
@@ -304,5 +305,3 @@ PVT.rtcm_dump_devname=/dev/pts/1
;#dump: Enable or disable the PVT internal binary data file logging [true] or [false]
PVT.dump=false
-
-
diff --git a/conf/gnss-sdr_GPS_L1_GN3S_realtime.conf b/conf/gnss-sdr_GPS_L1_GN3S_realtime.conf
index a1caf56c4..8f3aed872 100644
--- a/conf/gnss-sdr_GPS_L1_GN3S_realtime.conf
+++ b/conf/gnss-sdr_GPS_L1_GN3S_realtime.conf
@@ -89,17 +89,17 @@ Tracking_1C.order=3;
;######### TELEMETRY DECODER GPS CONFIG ############
TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
TelemetryDecoder_1C.dump=false
-TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-Observables.implementation=GPS_L1_CA_Observables
+Observables.implementation=Hybrid_Observables
Observables.dump=false.
Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
-PVT.implementation=GPS_L1_CA_PVT
-PVT.averaging_depth=100
-PVT.flag_averaging=false
+PVT.implementation=RTKLIB_PVT
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
PVT.output_rate_ms=10
PVT.display_rate_ms=500
PVT.dump_filename=./PVT
@@ -110,4 +110,3 @@ PVT.dump=false
PVT.flag_rtcm_server=false
PVT.flag_rtcm_tty_port=false
PVT.rtcm_dump_devname=/dev/pts/1
-
diff --git a/conf/gnss-sdr_GPS_L1_SPIR.conf b/conf/gnss-sdr_GPS_L1_SPIR.conf
index 38a4ce838..5e4335b00 100644
--- a/conf/gnss-sdr_GPS_L1_SPIR.conf
+++ b/conf/gnss-sdr_GPS_L1_SPIR.conf
@@ -266,8 +266,8 @@ TelemetryDecoder_1C.dump=false
TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
-Observables.implementation=GPS_L1_CA_Observables
+;#implementation:
+Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
Observables.dump=false
@@ -278,13 +278,10 @@ Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version.
-PVT.implementation=GPS_L1_CA_PVT
-
-;#averaging_depth: Number of PVT observations in the moving average algorithm
-PVT.averaging_depth=100
-
-;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
-PVT.flag_averaging=true
+PVT.implementation=RTKLIB_PVT
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#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=500
diff --git a/conf/gnss-sdr_GPS_L1_USRP_X300_realtime.conf b/conf/gnss-sdr_GPS_L1_USRP_X300_realtime.conf
index 04e1d2786..b71126374 100644
--- a/conf/gnss-sdr_GPS_L1_USRP_X300_realtime.conf
+++ b/conf/gnss-sdr_GPS_L1_USRP_X300_realtime.conf
@@ -291,8 +291,8 @@ TelemetryDecoder_1C.dump=false
TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
-Observables.implementation=GPS_L1_CA_Observables
+;#implementation:
+Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
Observables.dump=false
@@ -302,14 +302,12 @@ Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
-;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version.
-PVT.implementation=GPS_L1_CA_PVT
+;#implementation: Position Velocity and Time (PVT) implementation:
+PVT.implementation=RTKLIB_PVT
-;#averaging_depth: Number of PVT observations in the moving average algorithm
-PVT.averaging_depth=10
-
-;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
-PVT.flag_averaging=true
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#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
diff --git a/conf/gnss-sdr_GPS_L1_USRP_realtime.conf b/conf/gnss-sdr_GPS_L1_USRP_realtime.conf
index 8fcb655f8..22584d4e4 100644
--- a/conf/gnss-sdr_GPS_L1_USRP_realtime.conf
+++ b/conf/gnss-sdr_GPS_L1_USRP_realtime.conf
@@ -332,8 +332,8 @@ TelemetryDecoder_GPS.dump=false
TelemetryDecoder_GPS.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
-Observables.implementation=GPS_L1_CA_Observables
+;#implementation:
+Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
Observables.dump=false
@@ -343,14 +343,12 @@ Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
-;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version.
-PVT.implementation=GPS_L1_CA_PVT
+;#implementation: Position Velocity and Time (PVT) implementation:
+PVT.implementation=RTKLIB_PVT
-;#averaging_depth: Number of PVT observations in the moving average algorithm
-PVT.averaging_depth=10
-
-;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
-PVT.flag_averaging=true
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#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
diff --git a/conf/gnss-sdr_GPS_L1_acq_QuickSync.conf b/conf/gnss-sdr_GPS_L1_acq_QuickSync.conf
index cc3ba40a9..e4177f18e 100644
--- a/conf/gnss-sdr_GPS_L1_acq_QuickSync.conf
+++ b/conf/gnss-sdr_GPS_L1_acq_QuickSync.conf
@@ -255,8 +255,8 @@ TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
TelemetryDecoder_1C.dump=false
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
-Observables.implementation=GPS_L1_CA_Observables
+;#implementation:
+Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
Observables.dump=false
@@ -267,13 +267,11 @@ Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version.
-PVT.implementation=GPS_L1_CA_PVT
+PVT.implementation=RTKLIB_PVT
-;#averaging_depth: Number of PVT observations in the moving average algorithm
-PVT.averaging_depth=10
-
-;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
-PVT.flag_averaging=true
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#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;
diff --git a/conf/gnss-sdr_GPS_L1_gr_complex.conf b/conf/gnss-sdr_GPS_L1_gr_complex.conf
index 14b57ff0a..ca5af458c 100644
--- a/conf/gnss-sdr_GPS_L1_gr_complex.conf
+++ b/conf/gnss-sdr_GPS_L1_gr_complex.conf
@@ -6,16 +6,16 @@
;######### GLOBAL OPTIONS ##################
;internal_fs_hz: Internal signal sampling frequency after the signal conditioning stage [Hz].
-GNSS-SDR.internal_fs_hz=4000000
+GNSS-SDR.internal_fs_hz=2600000
;######### SIGNAL_SOURCE CONFIG ############
SignalSource.implementation=File_Signal_Source
-SignalSource.filename=/datalogger/signals/Agilent/New York/4msps.dat ; <- PUT YOUR FILE HERE
-SignalSource.item_type=gr_complex
-SignalSource.sampling_frequency=4000000
+SignalSource.filename=/home/javier/gnss/gnss-simulator/build/signal_out.bin ; <- PUT YOUR FILE HERE
+SignalSource.item_type=byte
+SignalSource.sampling_frequency=2600000
SignalSource.freq=1575420000
-SignalSource.samples=250000000
+SignalSource.samples=0
SignalSource.repeat=false
SignalSource.dump=false
SignalSource.dump_filename=../data/signal_source.dat
@@ -23,8 +23,15 @@ SignalSource.enable_throttle_control=false
;######### SIGNAL_CONDITIONER CONFIG ############
-SignalConditioner.implementation=Pass_Through
+SignalConditioner.implementation=Signal_Conditioner
+;######### DATA_TYPE_ADAPTER CONFIG ############
+;## Changes the type of input data. Please disable it in this version.
+;#implementation: [Pass_Through] disables this block
+DataTypeAdapter.implementation=Ibyte_To_Complex
+DataTypeAdapter.dump=false
+;#dump_filename: Log path and filename.
+DataTypeAdapter.dump_filename=../data/DataTypeAdapter.dat
;######### CHANNELS GLOBAL CONFIG ############
Channels_1C.count=8
@@ -39,38 +46,38 @@ Acquisition_1C.item_type=gr_complex
Acquisition_1C.if=0
Acquisition_1C.sampled_ms=1
Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
-Acquisition_1C.threshold=0.005
+Acquisition_1C.threshold=0.05
;Acquisition_1C.pfa=0.01
Acquisition_1C.doppler_max=10000
-Acquisition_1C.doppler_step=500
+Acquisition_1C.doppler_step=250
;######### TRACKING GLOBAL CONFIG ############
-Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
+Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_C_Aid_Tracking
Tracking_1C.item_type=gr_complex
Tracking_1C.if=0
Tracking_1C.dump=false
Tracking_1C.dump_filename=../data/epl_tracking_ch_
-Tracking_1C.pll_bw_hz=45.0;
-Tracking_1C.dll_bw_hz=2.0;
+Tracking_1C.pll_bw_hz=25.0;
+Tracking_1C.dll_bw_hz=1.0;
Tracking_1C.order=3;
;######### TELEMETRY DECODER GPS CONFIG ############
TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
TelemetryDecoder_1C.dump=false
-TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-Observables.implementation=GPS_L1_CA_Observables
+Observables.implementation=Hybrid_Observables
Observables.dump=false
Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
-PVT.implementation=GPS_L1_CA_PVT
-PVT.averaging_depth=100
-PVT.flag_averaging=false
-PVT.output_rate_ms=10
-PVT.display_rate_ms=500
+PVT.implementation=RTKLIB_PVT
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
+PVT.output_rate_ms=1
+PVT.display_rate_ms=100
PVT.dump_filename=./PVT
PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea;
PVT.flag_nmea_tty_port=false;
@@ -79,4 +86,3 @@ PVT.flag_rtcm_server=false
PVT.flag_rtcm_tty_port=false
PVT.rtcm_dump_devname=/dev/pts/1
PVT.dump=false
-
diff --git a/conf/gnss-sdr_GPS_L1_gr_complex_gpu.conf b/conf/gnss-sdr_GPS_L1_gr_complex_gpu.conf
index 885bebd88..41e4b61bb 100644
--- a/conf/gnss-sdr_GPS_L1_gr_complex_gpu.conf
+++ b/conf/gnss-sdr_GPS_L1_gr_complex_gpu.conf
@@ -57,18 +57,18 @@ Tracking_1C.order=3;
;######### TELEMETRY DECODER GPS CONFIG ############
TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
TelemetryDecoder_1C.dump=false
-TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-Observables.implementation=GPS_L1_CA_Observables
+Observables.implementation=Hybrid_Observables
Observables.dump=false
Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
-PVT.implementation=GPS_L1_CA_PVT
-PVT.averaging_depth=100
-PVT.flag_averaging=false
+PVT.implementation=RTKLIB_PVT
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
PVT.output_rate_ms=10
PVT.display_rate_ms=500
PVT.dump_filename=./PVT
@@ -79,4 +79,3 @@ PVT.flag_rtcm_server=false
PVT.flag_rtcm_tty_port=false
PVT.rtcm_dump_devname=/dev/pts/1
PVT.dump=false
-
diff --git a/conf/gnss-sdr_GPS_L1_ishort.conf b/conf/gnss-sdr_GPS_L1_ishort.conf
index 95abfc06b..b7376135f 100644
--- a/conf/gnss-sdr_GPS_L1_ishort.conf
+++ b/conf/gnss-sdr_GPS_L1_ishort.conf
@@ -79,16 +79,17 @@ TelemetryDecoder_1C.dump=false
TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-Observables.implementation=GPS_L1_CA_Observables
+Observables.implementation=Hybrid_Observables
Observables.dump=false
Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
-PVT.implementation=GPS_L1_CA_PVT
-PVT.averaging_depth=100
-PVT.flag_averaging=false
-PVT.output_rate_ms=10
+PVT.implementation=RTKLIB_PVT
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
+PVT.output_rate_ms=100
PVT.display_rate_ms=500
PVT.dump_filename=./PVT
PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea;
diff --git a/conf/gnss-sdr_GPS_L1_nsr.conf b/conf/gnss-sdr_GPS_L1_nsr.conf
index f7d4358d3..076f46260 100644
--- a/conf/gnss-sdr_GPS_L1_nsr.conf
+++ b/conf/gnss-sdr_GPS_L1_nsr.conf
@@ -28,7 +28,7 @@ GNSS-SDR.SUPL_CI=0x31b0
;######### SIGNAL_SOURCE CONFIG ############
SignalSource.implementation=Nsr_File_Signal_Source
-SignalSource.filename=/datalogger/signals/ifen/E1L1_FE0_Band0.stream ; <- PUT YOUR FILE HERE
+SignalSource.filename=/home/javier/Descargas/RoofTop_FE0_Band1.stream ; <- PUT YOUR FILE HERE
SignalSource.item_type=byte
SignalSource.sampling_frequency=20480000
SignalSource.freq=1575420000
@@ -68,7 +68,8 @@ InputFilter.band2_error=1.0
InputFilter.filter_type=bandpass
InputFilter.grid_density=16
InputFilter.sampling_frequency=20480000
-InputFilter.IF=5499998.47412109
+#InputFilter.IF=5499998.47412109
+InputFilter.IF=5679999.2370605494
InputFilter.decimation_factor=8
@@ -81,9 +82,10 @@ Resampler.item_type=gr_complex
;######### CHANNELS GLOBAL CONFIG ############
;#count: Number of available GPS satellite channels.
-Channels_1C.count=8
+Channels_1C.count=0
+Channels_2S.count=8
Channels.in_acquisition=1
-Channel.signal=1C
+#Channel.signal=1C
;######### GPS ACQUISITION CONFIG ############
@@ -98,6 +100,18 @@ Acquisition_1C.threshold=0.0075
Acquisition_1C.doppler_max=10000
Acquisition_1C.doppler_step=500
+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=20
+Acquisition_2S.implementation=GPS_L2_M_PCPS_Acquisition
+Acquisition_2S.threshold=0.00045
+Acquisition_2S.doppler_max=5000
+Acquisition_2S.doppler_step=100
+Acquisition_2S.bit_transition_flag=false
+Acquisition_2S.max_dwells=1
+
;######### TRACKING GPS CONFIG ############
Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
@@ -109,22 +123,43 @@ Tracking_1C.pll_bw_hz=45.0;
Tracking_1C.dll_bw_hz=2.0;
Tracking_1C.order=3;
+;######### 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=../data/epl_tracking_ch_
+Tracking_2S.pll_bw_hz=1.5;
+Tracking_2S.dll_bw_hz=0.4;
+Tracking_2S.order=2;
+Tracking_2S.early_late_space_chips=0.5;
+
+
;######### TELEMETRY DECODER GPS CONFIG ############
TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
TelemetryDecoder_1C.dump=false
TelemetryDecoder_1C.decimation_factor=1;
+TelemetryDecoder_2S.implementation=GPS_L2C_Telemetry_Decoder
+TelemetryDecoder_2S.dump=false
+TelemetryDecoder_2S.decimation_factor=1;
+
;######### OBSERVABLES CONFIG ############
-Observables.implementation=GPS_L1_CA_Observables
+;#implementation:
+Observables.implementation=Hybrid_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 ############
-PVT.implementation=GPS_L1_CA_PVT
-PVT.averaging_depth=100
-PVT.flag_averaging=false
-PVT.output_rate_ms=10
+PVT.implementation=RTKLIB_PVT
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
+PVT.output_rate_ms=100
PVT.display_rate_ms=500
PVT.dump_filename=./PVT
PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea;
@@ -134,4 +169,3 @@ PVT.flag_rtcm_server=false
PVT.flag_rtcm_tty_port=false
PVT.rtcm_dump_devname=/dev/pts/1
PVT.dump=true
-
diff --git a/conf/gnss-sdr_GPS_L1_nsr_twobit_packed.conf b/conf/gnss-sdr_GPS_L1_nsr_twobit_packed.conf
index 06cbb8e7d..809f2bcbb 100644
--- a/conf/gnss-sdr_GPS_L1_nsr_twobit_packed.conf
+++ b/conf/gnss-sdr_GPS_L1_nsr_twobit_packed.conf
@@ -127,18 +127,17 @@ Tracking_1C.order=3;
;######### TELEMETRY DECODER GPS CONFIG ############
TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
TelemetryDecoder_1C.dump=false
-TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-Observables.implementation=GPS_L1_CA_Observables
+Observables.implementation=Hybrid_Observables
Observables.dump=false
Observables.dump_filename=./observables.dat
-
;######### PVT CONFIG ############
-PVT.implementation=GPS_L1_CA_PVT
-PVT.averaging_depth=100
-PVT.flag_averaging=false
+PVT.implementation=RTKLIB_PVT
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
PVT.output_rate_ms=10
PVT.display_rate_ms=500
PVT.dump_filename=./PVT
@@ -149,4 +148,3 @@ PVT.flag_rtcm_server=false
PVT.flag_rtcm_tty_port=false
PVT.rtcm_dump_devname=/dev/pts/1
PVT.dump=true
-
diff --git a/conf/gnss-sdr_GPS_L1_pulse_blanking_gr_complex.conf b/conf/gnss-sdr_GPS_L1_pulse_blanking_gr_complex.conf
index 9401dd8c8..d6222161e 100644
--- a/conf/gnss-sdr_GPS_L1_pulse_blanking_gr_complex.conf
+++ b/conf/gnss-sdr_GPS_L1_pulse_blanking_gr_complex.conf
@@ -30,20 +30,20 @@ SignalSource.implementation=File_Signal_Source
;#When left empty, the device discovery routines will search all vailable transports on the system (ethernet, usb...)
SignalSource.device_address=192.168.50.2
-
+
;#filename: path to file with the captured GNSS signal samples to be processed
SignalSource.filename=/home/javier/signals/signal_source_int.dat
;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
SignalSource.item_type=gr_complex
-;#sampling_frequency: Original Signal sampling frequency in [Hz]
+;#sampling_frequency: Original Signal sampling frequency in [Hz]
SignalSource.sampling_frequency=2000000
-;#freq: RF front-end center frequency in [Hz]
+;#freq: RF front-end center frequency in [Hz]
SignalSource.freq=1575420000
-;#gain: Front-end Gain in [dB]
+;#gain: Front-end Gain in [dB]
SignalSource.gain=40
;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0)
@@ -62,12 +62,12 @@ SignalSource.dump_filename=dump.dat
;#enable_throttle_control: Enabling this option tells the signal source to keep the delay between samples in post processing.
-; it helps to not overload the CPU, but the processing time will be longer.
+; it helps to not overload the CPU, but the processing time will be longer.
SignalSource.enable_throttle_control=false
;######### SIGNAL_CONDITIONER CONFIG ############
-;## It holds blocks to change data type, filter and resample input data.
+;## It holds blocks to change data type, filter and resample input data.
;#implementation: Use [Pass_Through] or [Signal_Conditioner]
;#[Pass_Through] disables this block and the [DataTypeAdapter], [InputFilter] and [Resampler] blocks
@@ -157,19 +157,18 @@ Tracking_1C.order=3;
;######### TELEMETRY DECODER GPS CONFIG ############
TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
TelemetryDecoder_1C.dump=false
-TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-Observables.implementation=GPS_L1_CA_Observables
-Observables.averaging_depth=1
+Observables.implementation=Hybrid_Observables
Observables.dump=true
Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
-PVT.implementation=GPS_L1_CA_PVT
-PVT.averaging_depth=100
-PVT.flag_averaging=false
+PVT.implementation=RTKLIB_PVT
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
PVT.output_rate_ms=1
PVT.display_rate_ms=100
PVT.dump_filename=./PVT
@@ -180,4 +179,3 @@ PVT.flag_rtcm_server=false
PVT.flag_rtcm_tty_port=false
PVT.rtcm_dump_devname=/dev/pts/1
PVT.dump=false
-
diff --git a/conf/gnss-sdr_GPS_L1_rtl_tcp_realtime.conf b/conf/gnss-sdr_GPS_L1_rtl_tcp_realtime.conf
index 946176ce3..5b1ffe1d6 100644
--- a/conf/gnss-sdr_GPS_L1_rtl_tcp_realtime.conf
+++ b/conf/gnss-sdr_GPS_L1_rtl_tcp_realtime.conf
@@ -243,8 +243,8 @@ TelemetryDecoder_1C.dump=false
TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
-Observables.implementation=GPS_L1_CA_Observables
+;#implementation:
+Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
Observables.dump=false
@@ -254,14 +254,11 @@ 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
+;#implementation: Position Velocity and Time (PVT) implementation:
+PVT.implementation=RTKLIB_PVT
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#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
diff --git a/conf/gnss-sdr_GPS_L1_rtlsdr_realtime.conf b/conf/gnss-sdr_GPS_L1_rtlsdr_realtime.conf
index 51f75907f..f7c934703 100644
--- a/conf/gnss-sdr_GPS_L1_rtlsdr_realtime.conf
+++ b/conf/gnss-sdr_GPS_L1_rtlsdr_realtime.conf
@@ -120,20 +120,17 @@ TelemetryDecoder_1C.dump=false
TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-Observables.implementation=GPS_L1_CA_Observables
+Observables.implementation=Hybrid_Observables
Observables.dump=false
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
+;#implementation: Position Velocity and Time (PVT) implementation:
+PVT.implementation=RTKLIB_PVT
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
PVT.output_rate_ms=100
PVT.display_rate_ms=500
PVT.dump_filename=./PVT
diff --git a/conf/gnss-sdr_GPS_L1_two_bits_cpx.conf b/conf/gnss-sdr_GPS_L1_two_bits_cpx.conf
index 0f2521786..b21abf2c7 100644
--- a/conf/gnss-sdr_GPS_L1_two_bits_cpx.conf
+++ b/conf/gnss-sdr_GPS_L1_two_bits_cpx.conf
@@ -113,15 +113,16 @@ TelemetryDecoder_1C.dump=false
TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-Observables.implementation=GPS_L1_CA_Observables
+Observables.implementation=Hybrid_Observables
Observables.dump=false
Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
-PVT.implementation=GPS_L1_CA_PVT
-PVT.averaging_depth=100
-PVT.flag_averaging=false
+PVT.implementation=RTKLIB_PVT
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
PVT.output_rate_ms=10
PVT.display_rate_ms=500
PVT.dump_filename=./PVT
diff --git a/conf/gnss-sdr_GPS_L2C_USRP1_realtime.conf b/conf/gnss-sdr_GPS_L2C_USRP1_realtime.conf
index 3b2629bdd..e96fa0e94 100644
--- a/conf/gnss-sdr_GPS_L2C_USRP1_realtime.conf
+++ b/conf/gnss-sdr_GPS_L2C_USRP1_realtime.conf
@@ -180,18 +180,17 @@ Tracking_2S.early_late_space_chips=0.5;
;######### TELEMETRY DECODER GPS CONFIG ############
TelemetryDecoder_2S.implementation=GPS_L2C_Telemetry_Decoder
TelemetryDecoder_2S.dump=false
-TelemetryDecoder_2S.decimation_factor=1;
;######### OBSERVABLES CONFIG ############.
Observables.implementation=Hybrid_Observables
Observables.dump=false
Observables.dump_filename=./observables.dat
-
;######### PVT CONFIG ############
-PVT.implementation=Hybrid_PVT
-PVT.averaging_depth=10
-PVT.flag_averaging=true
+PVT.implementation=RTKLIB_PVT
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
PVT.output_rate_ms=100
PVT.display_rate_ms=500
PVT.dump_filename=./PVT
diff --git a/conf/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf b/conf/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf
index 838b7d505..4bebf9fcb 100644
--- a/conf/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf
+++ b/conf/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf
@@ -136,18 +136,17 @@ Tracking_2S.early_late_space_chips=0.5;
;######### TELEMETRY DECODER GPS CONFIG ############
TelemetryDecoder_2S.implementation=GPS_L2C_Telemetry_Decoder
TelemetryDecoder_2S.dump=true
-TelemetryDecoder_2S.decimation_factor=1;
;######### OBSERVABLES CONFIG ############.
Observables.implementation=Hybrid_Observables
Observables.dump=false
Observables.dump_filename=./observables.dat
-
;######### PVT CONFIG ############
-PVT.implementation=Hybrid_PVT
-PVT.averaging_depth=10
-PVT.flag_averaging=true
+PVT.implementation=RTKLIB_PVT
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
PVT.output_rate_ms=100
PVT.display_rate_ms=500
PVT.dump_filename=./PVT
diff --git a/conf/gnss-sdr_Galileo_E1_USRP_X300_realtime.conf b/conf/gnss-sdr_Galileo_E1_USRP_X300_realtime.conf
index 5fbe59f95..a305cd277 100644
--- a/conf/gnss-sdr_Galileo_E1_USRP_X300_realtime.conf
+++ b/conf/gnss-sdr_Galileo_E1_USRP_X300_realtime.conf
@@ -62,14 +62,15 @@ TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder
TelemetryDecoder_1B.dump=false
;######### OBSERVABLES CONFIG ############
-Observables.implementation=Galileo_E1B_Observables
+Observables.implementation=Hybrid_Observables
Observables.dump=false
Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
-PVT.implementation=GALILEO_E1_PVT
-PVT.averaging_depth=100
-PVT.flag_averaging=false
+PVT.implementation=RTKLIB_PVT
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
PVT.output_rate_ms=100;
PVT.display_rate_ms=500;
PVT.dump=false
diff --git a/conf/gnss-sdr_Galileo_E1_acq_QuickSync.conf b/conf/gnss-sdr_Galileo_E1_acq_QuickSync.conf
index 59059be2b..9be99d94d 100644
--- a/conf/gnss-sdr_Galileo_E1_acq_QuickSync.conf
+++ b/conf/gnss-sdr_Galileo_E1_acq_QuickSync.conf
@@ -237,7 +237,7 @@ TelemetryDecoder_1B.dump=false
;######### OBSERVABLES CONFIG ############
;#implementation:
-Observables.implementation=Galileo_E1B_Observables
+Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
Observables.dump=false
@@ -248,13 +248,10 @@ Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
;#implementation: Position Velocity and Time (PVT) implementation algorithm:
-PVT.implementation=GALILEO_E1_PVT
-
-;#averaging_depth: Number of PVT observations in the moving average algorithm
-PVT.averaging_depth=100
-
-;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
-PVT.flag_averaging=true
+PVT.implementation=RTKLIB_PVT
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#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;
diff --git a/conf/gnss-sdr_Galileo_E1_ishort.conf b/conf/gnss-sdr_Galileo_E1_ishort.conf
index e26cdf15f..cada1263c 100644
--- a/conf/gnss-sdr_Galileo_E1_ishort.conf
+++ b/conf/gnss-sdr_Galileo_E1_ishort.conf
@@ -239,8 +239,8 @@ TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder
TelemetryDecoder_1B.dump=false
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
-Observables.implementation=Galileo_E1B_Observables
+;#implementation:
+Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
Observables.dump=false
@@ -250,14 +250,11 @@ 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=GALILEO_E1_PVT
-
-;#averaging_depth: Number of PVT observations in the moving average algorithm
-PVT.averaging_depth=100
-
-;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
-PVT.flag_averaging=false
+;#implementation: Position Velocity and Time (PVT) implementation:
+PVT.implementation=RTKLIB_PVT
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#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;
diff --git a/conf/gnss-sdr_Galileo_E1_nsr.conf b/conf/gnss-sdr_Galileo_E1_nsr.conf
index a4b37d02e..c357bd013 100644
--- a/conf/gnss-sdr_Galileo_E1_nsr.conf
+++ b/conf/gnss-sdr_Galileo_E1_nsr.conf
@@ -106,15 +106,16 @@ TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder
TelemetryDecoder_1B.dump=false
;######### OBSERVABLES CONFIG ############
-Observables.implementation=Galileo_E1B_Observables
+Observables.implementation=Hybrid_Observables
Observables.dump=true
Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
-PVT.implementation=GALILEO_E1_PVT
-PVT.averaging_depth=1
-PVT.flag_averaging=false
+PVT.implementation=RTKLIB_PVT
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
PVT.output_rate_ms=100
PVT.display_rate_ms=500
PVT.dump=true
diff --git a/conf/gnss-sdr_Galileo_E5a.conf b/conf/gnss-sdr_Galileo_E5a.conf
index fd4cfe55f..1528a5d2b 100644
--- a/conf/gnss-sdr_Galileo_E5a.conf
+++ b/conf/gnss-sdr_Galileo_E5a.conf
@@ -286,8 +286,7 @@ TelemetryDecoder_5X.dump=false
;######### OBSERVABLES CONFIG ############
;#implementation:
-;Use [Galileo_E1B_Observables] for E5a also.
-Observables.implementation=Galileo_E1B_Observables
+Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
Observables.dump=false
@@ -298,14 +297,11 @@ Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
;#implementation: Position Velocity and Time (PVT) implementation algorithm:
-;Use [GALILEO_E1_PVT] for E5a also.
-PVT.implementation=GALILEO_E1_PVT
+PVT.implementation=RTKLIB_PVT
-;#averaging_depth: Number of PVT observations in the moving average algorithm
-PVT.averaging_depth=100
-
-;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
-PVT.flag_averaging=true
+PVT.positioning_mode=Single ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time [ms]
PVT.output_rate_ms=100
diff --git a/conf/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf b/conf/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf
index f5c045cc6..6b733b4dd 100644
--- a/conf/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf
+++ b/conf/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf
@@ -134,15 +134,16 @@ TelemetryDecoder_5X.implementation=Galileo_E5a_Telemetry_Decoder
TelemetryDecoder_5X.dump=false
;######### OBSERVABLES CONFIG ############
-Observables.implementation=Galileo_E1B_Observables
+Observables.implementation=Hybrid_Observables
Observables.dump=false
Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
-PVT.implementation=GALILEO_E1_PVT
-PVT.averaging_depth=100
-PVT.flag_averaging=true
+PVT.implementation=RTKLIB_PVT
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=OFF ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=OFF ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
PVT.output_rate_ms=100
PVT.dump=false
PVT.dump_filename=./PVT
@@ -152,4 +153,3 @@ PVT.nmea_dump_devname=/dev/pts/4
PVT.flag_rtcm_server=true
PVT.flag_rtcm_tty_port=false
PVT.rtcm_dump_devname=/dev/pts/1
-
diff --git a/conf/gnss-sdr_Hybrid_byte.conf b/conf/gnss-sdr_Hybrid_byte.conf
index d4b2a6a16..047c2bc6f 100644
--- a/conf/gnss-sdr_Hybrid_byte.conf
+++ b/conf/gnss-sdr_Hybrid_byte.conf
@@ -295,10 +295,9 @@ TelemetryDecoder_1C.decimation_factor=4;
;#implementation: Use [Galileo_E1B_Telemetry_Decoder] for Galileo E1B
TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder
TelemetryDecoder_1B.dump=false
-TelemetryDecoder_1B.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
+;#implementation:
Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
@@ -309,14 +308,12 @@ 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=Hybrid_PVT
+;#implementation: Position Velocity and Time (PVT) implementation:
+PVT.implementation=RTKLIB_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=false
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#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;
diff --git a/conf/gnss-sdr_Hybrid_byte_sim.conf b/conf/gnss-sdr_Hybrid_byte_sim.conf
index df7ae450a..32bea4e58 100644
--- a/conf/gnss-sdr_Hybrid_byte_sim.conf
+++ b/conf/gnss-sdr_Hybrid_byte_sim.conf
@@ -7,7 +7,8 @@
;######### GLOBAL OPTIONS ##################
;internal_fs_hz: Internal signal sampling frequency after the signal conditioning stage [Hz].
-GNSS-SDR.internal_fs_hz=4000000
+;#GNSS-SDR.internal_fs_hz=2048000
+GNSS-SDR.internal_fs_hz=2600000
;######### SIGNAL_SOURCE CONFIG ############
@@ -15,7 +16,8 @@ GNSS-SDR.internal_fs_hz=4000000
SignalSource.implementation=File_Signal_Source
;#filename: path to file with the captured GNSS signal samples to be processed
-SignalSource.filename=/datalogger/signals/gnss-sim/signal_out.bin ; <- PUT YOUR FILE HERE
+;#SignalSource.filename=/home/javier/Descargas/rtlsdr_tcxo_l1/rtlsdr_tcxo_l1.bin ; <- PUT YOUR FILE HERE
+SignalSource.filename=/Users/carlesfernandez/git/cttc/build/signal_out.bin ; <- PUT YOUR FILE HERE
;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
SignalSource.item_type=byte
@@ -53,7 +55,7 @@ SignalConditioner.implementation=Signal_Conditioner
;######### DATA_TYPE_ADAPTER CONFIG ############
;## Changes the type of input data. Please disable it in this version.
;#implementation: [Pass_Through] disables this block
-DataTypeAdapter.implementation=Ibyte_To_Cshort
+DataTypeAdapter.implementation=Ibyte_To_Complex
DataTypeAdapter.dump=false
;#dump_filename: Log path and filename.
DataTypeAdapter.dump_filename=../data/DataTypeAdapter.dat
@@ -81,10 +83,10 @@ InputFilter.dump_filename=../data/input_filter.dat
;#These function calculates the optimal (in the Chebyshev/minimax sense) FIR filter inpulse reponse given a set of band edges, the desired reponse on those bands, and the weight given to the error in those bands.
;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version.
-InputFilter.input_item_type=cshort
+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=cshort
+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
@@ -127,7 +129,7 @@ InputFilter.grid_density=16
;#The following options are used only in Freq_Xlating_Fir_Filter implementation.
;#InputFilter.IF is the intermediate frequency (in Hz) shifted down to zero Hz
-InputFilter.sampling_frequency=4000000
+InputFilter.sampling_frequency=2600000
InputFilter.IF=0
@@ -135,30 +137,12 @@ InputFilter.IF=0
;######### RESAMPLER CONFIG ############
;## Resamples the input data.
-;#implementation: Use [Pass_Through] or [Direct_Resampler]
-;#[Pass_Through] disables this block
-;#[Direct_Resampler] enables a resampler that implements a nearest neigbourhood interpolation
-;Resampler.implementation=Direct_Resampler
Resampler.implementation=Pass_Through
-
-;#dump: Dump the resamplered data to a file.
-Resampler.dump=false
-;#dump_filename: Log path and filename.
-Resampler.dump_filename=../data/resampler.dat
-
-;#item_type: Type and resolution for each of the signal samples.
-Resampler.item_type=cshort
-
-;#sample_freq_in: the sample frequency of the input signal
-Resampler.sample_freq_in=4000000
-
-;#sample_freq_out: the desired sample frequency of the output signal
-Resampler.sample_freq_out=4000000
-
+Resampler.item_type = gr_complex;
;######### CHANNELS GLOBAL CONFIG ############
;#count: Number of available GPS satellite channels.
-Channels_1C.count=12
+Channels_1C.count=11
;#count: Number of available Galileo satellite channels.
Channels_1B.count=0
;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver
@@ -167,7 +151,7 @@ Channels.in_acquisition=1
;#IMPORTANT: When cshort is used as input type for Acq and Trk, please set the Channel type to cshort here
;#item_type: Type and resolution for each of the signal samples.
-Channel.item_type=cshort
+Channel.item_type=gr_complex
;#signal:
;#if the option is disabled by default is assigned "1C" GPS L1 C/A
Channel1.signal=1C
@@ -194,7 +178,7 @@ 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=cshort
+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]
@@ -205,7 +189,7 @@ Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
;#notice that this affects the Acquisition threshold range!
Acquisition_1C.use_CFAR_algorithm=false;
;#threshold: Acquisition threshold
-Acquisition_1C.threshold=11
+Acquisition_1C.threshold=15
;#pfa: Acquisition false alarm probability. This option overrides the threshold option. Only use with implementations: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition]
;Acquisition_1C.pfa=0.01
;#doppler_max: Maximum expected Doppler shift [Hz]
@@ -221,7 +205,7 @@ 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=cshort
+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]
@@ -240,9 +224,9 @@ Acquisition_1B.doppler_step=125
;######### TRACKING GPS CONFIG ############
;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_PLL_C_Aid_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking]
-Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_C_Aid_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=cshort
+Tracking_1C.item_type=gr_complex
;#sampling_frequency: Signal Intermediate Frequency in [Hz]
Tracking_1C.if=0
@@ -254,7 +238,7 @@ Tracking_1C.dump=false
Tracking_1C.dump_filename=../data/epl_tracking_ch_
;#pll_bw_hz: PLL loop filter bandwidth [Hz]
-Tracking_1C.pll_bw_hz=15.0;
+Tracking_1C.pll_bw_hz=20.0;
;#dll_bw_hz: DLL loop filter bandwidth [Hz]
Tracking_1C.dll_bw_hz=1.5;
@@ -267,7 +251,7 @@ Tracking_1C.order=3;
;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_PLL_C_Aid_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking]
Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking
;#item_type: Type and resolution for each of the signal samples.
-Tracking_1B.item_type=cshort
+Tracking_1B.item_type=gr_complex
;#sampling_frequency: Signal Intermediate Frequency in [Hz]
Tracking_1B.if=0
@@ -308,8 +292,8 @@ TelemetryDecoder_1B.dump=false
TelemetryDecoder_1B.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
-Observables.implementation=GPS_L1_CA_Observables
+;#implementation:
+Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
Observables.dump=false
@@ -320,13 +304,11 @@ Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version.
-PVT.implementation=GPS_L1_CA_PVT
+PVT.implementation=RTKLIB_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=false
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#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;
diff --git a/conf/gnss-sdr_Hybrid_gr_complex.conf b/conf/gnss-sdr_Hybrid_gr_complex.conf
index a0f10bdb4..e444a9326 100644
--- a/conf/gnss-sdr_Hybrid_gr_complex.conf
+++ b/conf/gnss-sdr_Hybrid_gr_complex.conf
@@ -304,10 +304,9 @@ TelemetryDecoder_1C.decimation_factor=4;
;#implementation: Use [Galileo_E1B_Telemetry_Decoder] for Galileo E1B
TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder
TelemetryDecoder_1B.dump=false
-TelemetryDecoder_1B_factor=4;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
+;#implementation:
Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
@@ -318,14 +317,12 @@ 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=Hybrid_PVT
+;#implementation: Position Velocity and Time (PVT) implementation:
+PVT.implementation=RTKLIB_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=false
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms]
PVT.output_rate_ms=10;
diff --git a/conf/gnss-sdr_Hybrid_ishort.conf b/conf/gnss-sdr_Hybrid_ishort.conf
index e326d475f..b6cbe8591 100644
--- a/conf/gnss-sdr_Hybrid_ishort.conf
+++ b/conf/gnss-sdr_Hybrid_ishort.conf
@@ -311,7 +311,7 @@ TelemetryDecoder_1B.dump=false
TelemetryDecoder_1B.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
+;#implementation:
Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
@@ -322,14 +322,12 @@ 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=Hybrid_PVT
+;#implementation: Position Velocity and Time (PVT) implementation:
+PVT.implementation=RTKLIB_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=false
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#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;
diff --git a/conf/gnss-sdr_Hybrid_nsr.conf b/conf/gnss-sdr_Hybrid_nsr.conf
index a87f44cc3..51ca610e5 100644
--- a/conf/gnss-sdr_Hybrid_nsr.conf
+++ b/conf/gnss-sdr_Hybrid_nsr.conf
@@ -17,7 +17,7 @@ GNSS-SDR.internal_fs_hz=2560000
SignalSource.implementation=Nsr_File_Signal_Source
;#filename: path to file with the captured GNSS signal samples to be processed
-SignalSource.filename=/datalogger/signals/ifen/E1L1_FE0_Band0.stream ; <- PUT YOUR FILE HERE
+SignalSource.filename=/media/javier/SISTEMA/signals/ifen/E1L1_FE0_Band0.stream ; <- PUT YOUR FILE HERE
;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
SignalSource.item_type=byte
@@ -304,7 +304,7 @@ TelemetryDecoder_1B.dump=false
TelemetryDecoder_1B_factor=4;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
+;#implementation:
Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
@@ -315,14 +315,13 @@ 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=Hybrid_PVT
+;#implementation: Position Velocity and Time (PVT) implementation algorithm.
+PVT.implementation=RTKLIB_PVT
-;#averaging_depth: Number of PVT observations in the moving average algorithm
-PVT.averaging_depth=10
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
-;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
-PVT.flag_averaging=false
;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms]
PVT.output_rate_ms=10;
diff --git a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf b/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf
index 7879cb02c..924d72f9e 100644
--- a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf
+++ b/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf
@@ -289,12 +289,10 @@ Tracking_1C.early_late_space_chips=0.5;
;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A
TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
TelemetryDecoder_1C.dump=false
-;#decimation factor
-TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
-Observables.implementation=GPS_L1_CA_Observables
+;#implementation:
+Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
Observables.dump=false
@@ -304,14 +302,12 @@ Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
-;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version.
-PVT.implementation=GPS_L1_CA_PVT
+;#implementation: Position Velocity and Time (PVT) implementation:
+PVT.implementation=RTKLIB_PVT
-;#averaging_depth: Number of PVT observations in the moving average algorithm
-PVT.averaging_depth=10
-
-;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
-PVT.flag_averaging=true
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#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
diff --git a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1a.conf b/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1a.conf
index 2808b251d..b6de1c3cd 100644
--- a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1a.conf
+++ b/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1a.conf
@@ -300,8 +300,8 @@ TelemetryDecoder_1C.dump=false
TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
-Observables.implementation=GPS_L1_CA_Observables
+;#implementation:
+Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
Observables.dump=false
@@ -311,14 +311,12 @@ Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
-;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version.
-PVT.implementation=GPS_L1_CA_PVT
+;#implementation: Position Velocity and Time (PVT) implementation:
+PVT.implementation=RTKLIB_PVT
-;#averaging_depth: Number of PVT observations in the moving average algorithm
-PVT.averaging_depth=10
-
-;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
-PVT.flag_averaging=true
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#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
diff --git a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1b.conf b/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1b.conf
index f7a56a6ff..2e33999f6 100644
--- a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1b.conf
+++ b/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1b.conf
@@ -294,12 +294,10 @@ Tracking_1C.early_late_space_chips=0.5;
;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A
TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
TelemetryDecoder_1C.dump=false
-;#decimation factor
-TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
-Observables.implementation=GPS_L1_CA_Observables
+;#implementation:
+Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
Observables.dump=false
@@ -309,14 +307,12 @@ Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
-;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version.
-PVT.implementation=GPS_L1_CA_PVT
+;#implementation: Position Velocity and Time (PVT) implementation:
+PVT.implementation=RTKLIB_PVT
-;#averaging_depth: Number of PVT observations in the moving average algorithm
-PVT.averaging_depth=10
-
-;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
-PVT.flag_averaging=true
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#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
diff --git a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf b/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf
index 9bd32b4ca..b49d1c795 100644
--- a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf
+++ b/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf
@@ -299,8 +299,8 @@ TelemetryDecoder_1C.dump=false
TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
-Observables.implementation=GPS_L1_CA_Observables
+;#implementation:
+Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
Observables.dump=false
@@ -310,14 +310,12 @@ Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
-;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version.
-PVT.implementation=GPS_L1_CA_PVT
+;#implementation: Position Velocity and Time (PVT) implementation:
+PVT.implementation=RTKLIB_PVT
-;#averaging_depth: Number of PVT observations in the moving average algorithm
-PVT.averaging_depth=10
-
-;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
-PVT.flag_averaging=true
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#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
diff --git a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_I_1b.conf b/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_I_1b.conf
index 65cc26133..8cf620713 100644
--- a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_I_1b.conf
+++ b/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_I_1b.conf
@@ -294,8 +294,8 @@ TelemetryDecoder_1C.dump=false
TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
-Observables.implementation=GPS_L1_CA_Observables
+;#implementation:
+Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
Observables.dump=false
@@ -306,13 +306,11 @@ Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version.
-PVT.implementation=GPS_L1_CA_PVT
+PVT.implementation=RTKLIB_PVT
-;#averaging_depth: Number of PVT observations in the moving average algorithm
-PVT.averaging_depth=10
-
-;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
-PVT.flag_averaging=true
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#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
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
index 3f54ad14d..2f2ba159d 100644
--- 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
@@ -444,7 +444,7 @@ TelemetryDecoder_2S.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.Mixed_Observables
+;#implementation:
Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
@@ -455,8 +455,12 @@ 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=Hybrid_PVT
+;#implementation: Position Velocity and Time (PVT) implementation:
+PVT.implementation=RTKLIB_PVT
+
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#averaging_depth: Number of PVT observations in the moving average algorithm
PVT.averaging_depth=10
diff --git a/conf/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_bin_file_III_1b.conf b/conf/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_bin_file_III_1b.conf
index 6932bd009..436b1070f 100644
--- a/conf/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_bin_file_III_1b.conf
+++ b/conf/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_bin_file_III_1b.conf
@@ -452,7 +452,7 @@ TelemetryDecoder_1B.decimation_factor=5;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
+;#implementation:
Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
@@ -464,13 +464,11 @@ 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=Hybrid_PVT
+PVT.implementation=RTKLIB_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=false
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#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
diff --git a/conf/gnss-sdr_multichannel_GPS_L1_USRP_X300_realtime.conf b/conf/gnss-sdr_multichannel_GPS_L1_USRP_X300_realtime.conf
index b5e865ea8..62938acd4 100644
--- a/conf/gnss-sdr_multichannel_GPS_L1_USRP_X300_realtime.conf
+++ b/conf/gnss-sdr_multichannel_GPS_L1_USRP_X300_realtime.conf
@@ -364,12 +364,10 @@ Tracking_1C.early_late_space_chips=0.5;
;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A
TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
TelemetryDecoder_1C.dump=false
-;#decimation factor
-TelemetryDecoder_1C.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
-Observables.implementation=GPS_L1_CA_Observables
+;#implementation:
+Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
Observables.dump=false
@@ -379,14 +377,12 @@ Observables.dump_filename=./observables.dat
;######### PVT CONFIG ############
-;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version.
-PVT.implementation=GPS_L1_CA_PVT
+;#implementation: Position Velocity and Time (PVT) implementation:
+PVT.implementation=RTKLIB_PVT
-;#averaging_depth: Number of PVT observations in the moving average algorithm
-PVT.averaging_depth=10
-
-;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
-PVT.flag_averaging=true
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#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
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 bfc6b40c9..40913cc7f 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,7 @@ GNSS-SDR.SUPL_CI=0x31b0
SignalSource.implementation=Flexiband_Signal_Source
SignalSource.flag_read_file=true
-SignalSource.signal_file=/datalogger/signals/Fraunhofer/L125_III1b_210s.usb ; <- PUT YOUR FILE HERE
+SignalSource.signal_file=/media/javier/SISTEMA/signals/fraunhofer/L125_III1b_210s.usb ; <- PUT YOUR FILE HERE
;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
SignalSource.item_type=gr_complex
@@ -74,7 +74,7 @@ DataTypeAdapter0.item_type=gr_complex
InputFilter0.implementation=Freq_Xlating_Fir_Filter
;#dump: Dump the filtered data to a file.
-InputFilter0.dump=false
+InputFilter0.dump=true
;#dump_filename: Log path and filename.
InputFilter0.dump_filename=../data/input_filter_ch0.dat
@@ -267,8 +267,8 @@ Resampler2.implementation=Pass_Through
;######### CHANNELS GLOBAL CONFIG ############
;#count: Number of available GPS satellite channels.
-Channels_1C.count=1
-Channels_2S.count=8
+Channels_1C.count=11
+Channels_2S.count=0
;#GPS.prns=7,8
@@ -284,14 +284,25 @@ Channels.in_acquisition=1
;# CHANNEL CONNECTION
Channel0.RF_channel_ID=0
-Channel1.RF_channel_ID=1
-Channel2.RF_channel_ID=1
-Channel3.RF_channel_ID=1
-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
+Channel1.RF_channel_ID=0
+Channel2.RF_channel_ID=0
+Channel3.RF_channel_ID=0
+Channel4.RF_channel_ID=0
+Channel5.RF_channel_ID=0
+Channel6.RF_channel_ID=0
+Channel7.RF_channel_ID=0
+Channel8.RF_channel_ID=0
+Channel9.RF_channel_ID=0
+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
+Channel16.RF_channel_ID=1
+Channel17.RF_channel_ID=1
+Channel18.RF_channel_ID=1
+Channel19.RF_channel_ID=1
;######### ACQUISITION GENERIC CONFIG ######
@@ -309,32 +320,19 @@ Acquisition_1C.doppler_step=250
Acquisition_1C.bit_transition_flag=false
Acquisition_1C.max_dwells=1
+;# 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.0005
+Acquisition_2S.threshold=0.00074
+;Acquisition_2S.pfa=0.001
Acquisition_2S.doppler_max=5000
-Acquisition_2S.doppler_step=100
-Acquisition_2S.bit_transition_flag=false
+Acquisition_2S.doppler_min=-5000
+Acquisition_2S.doppler_step=60
Acquisition_2S.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.0005
-Acquisition_2S1.doppler_max=5000
-Acquisition_2S1.doppler_step=100
-Acquisition_2S1.bit_transition_flag=false
-Acquisition_2S1.max_dwells=1
-
;######### TRACKING CONFIG ############
@@ -342,7 +340,7 @@ Acquisition_2S1.max_dwells=1
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=false
Tracking_1C.dump_filename=../data/epl_tracking_ch_
Tracking_1C.pll_bw_hz=40.0;
Tracking_1C.dll_bw_hz=3.0;
@@ -354,29 +352,18 @@ Tracking_1C.early_late_space_chips=0.5;
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=../data/epl_tracking_ch_
+Tracking_2S.dump=false
+Tracking_2S.dump_filename=./tracking_ch_
Tracking_2S.pll_bw_hz=2.0;
-Tracking_2S.dll_bw_hz=0.5;
+Tracking_2S.dll_bw_hz=0.25;
Tracking_2S.order=2;
Tracking_2S.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=../data/epl_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_1C.implementation=GPS_L1_CA_Telemetry_Decoder
TelemetryDecoder_1C.dump=false
-TelemetryDecoder_1C.decimation_factor=20;
+TelemetryDecoder_1C.decimation_factor=1;
TelemetryDecoder_2S.implementation=GPS_L2C_Telemetry_Decoder
TelemetryDecoder_2S.dump=false
@@ -384,31 +371,27 @@ TelemetryDecoder_2S.decimation_factor=1;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
+;#implementation:
Observables.implementation=Hybrid_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=Hybrid_PVT
+;#implementation: Position Velocity and Time (PVT) implementation:
+PVT.implementation=RTKLIB_PVT
-;#averaging_depth: Number of PVT observations in the moving average algorithm
-PVT.averaging_depth=10
-
-;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
-PVT.flag_averaging=true
+PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
+PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
+PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms]
PVT.output_rate_ms=100
;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms.
-PVT.display_rate_ms=500
+PVT.display_rate_ms=100
;# KML, GeoJSON, NMEA and RTCM output configuration
diff --git a/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b_real.conf b/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b_real.conf
new file mode 100644
index 000000000..26128cf81
--- /dev/null
+++ b/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b_real.conf
@@ -0,0 +1,411 @@
+; 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
+
+
+;######### SUPL RRLP GPS assistance configuration #####
+; Check http://www.mcc-mnc.com/
+; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en
+GNSS-SDR.SUPL_gps_enabled=false
+GNSS-SDR.SUPL_read_gps_assistance_xml=true
+GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.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=/home/javier/signals/20140923_20-24-17_L125_roof_210s.usb ; <- PUT YOUR FILE HERE
+
+;#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_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=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=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]
+InputFilter1.IF=0
+
+;# 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=10
+Channels_2S.count=4
+
+;#GPS.prns=7,8
+
+;#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 NUMBERING ORDER: GPS L1 C/A, GPS L2 L2C (M), GALILEO E1 B, GALILEO E5a
+
+;# CHANNEL CONNECTION
+Channel0.RF_channel_ID=0
+Channel1.RF_channel_ID=0
+Channel2.RF_channel_ID=0
+Channel3.RF_channel_ID=0
+Channel4.RF_channel_ID=0
+Channel5.RF_channel_ID=0
+Channel6.RF_channel_ID=0
+Channel7.RF_channel_ID=0
+Channel8.RF_channel_ID=0
+Channel9.RF_channel_ID=0
+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
+Channel16.RF_channel_ID=1
+Channel17.RF_channel_ID=1
+Channel18.RF_channel_ID=1
+Channel19.RF_channel_ID=1
+
+
+;######### ACQUISITION GENERIC CONFIG ######
+;#The following options are specific to each channel and overwrite the generic options
+
+Acquisition_1C.dump=false
+Acquisition_1C.dump_filename=./acq_dump.dat
+Acquisition_1C.item_type=gr_complex
+Acquisition_1C.if=0
+Acquisition_1C.coherent_integration_time_ms=1
+Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
+Acquisition_1C.threshold=0.005
+Acquisition_1C.doppler_max=5000
+Acquisition_1C.doppler_step=250
+Acquisition_1C.bit_transition_flag=false
+Acquisition_1C.max_dwells=1
+
+;# 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.00074
+;Acquisition_2S.pfa=0.001
+Acquisition_2S.doppler_max=5000
+Acquisition_2S.doppler_min=-5000
+Acquisition_2S.doppler_step=60
+Acquisition_2S.max_dwells=1
+
+
+;######### TRACKING CONFIG ############
+
+;######### GPS L1 C/A GENERIC TRACKING CONFIG ############
+Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
+Tracking_1C.item_type=gr_complex
+Tracking_1C.if=0
+Tracking_1C.dump=false
+Tracking_1C.dump_filename=../data/epl_tracking_ch_
+Tracking_1C.pll_bw_hz=40.0;
+Tracking_1C.dll_bw_hz=3.0;
+Tracking_1C.order=3;
+Tracking_1C.early_late_space_chips=0.5;
+
+
+;######### 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=false
+Tracking_2S.dump_filename=./tracking_ch_
+Tracking_2S.pll_bw_hz=2.0;
+Tracking_2S.dll_bw_hz=0.25;
+Tracking_2S.order=2;
+Tracking_2S.early_late_space_chips=0.5;
+
+
+;######### TELEMETRY DECODER CONFIG ############
+TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
+TelemetryDecoder_1C.dump=false
+TelemetryDecoder_1C.decimation_factor=20;
+
+TelemetryDecoder_2S.implementation=GPS_L2C_Telemetry_Decoder
+TelemetryDecoder_2S.dump=false
+TelemetryDecoder_2S.decimation_factor=1;
+
+
+;######### OBSERVABLES CONFIG ############
+;#implementation:
+Observables.implementation=Hybrid_Observables
+;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
+Observables.dump=true
+
+;#dump_filename: Log path and filename.
+Observables.dump_filename=./observables.dat
+
+
+;######### PVT CONFIG ############
+;#implementation: Position Velocity and Time (PVT) implementation:
+PVT.implementation=RTKLIB_PVT
+
+;#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=100
+
+;# 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_multisource_Hybrid_ishort.conf b/conf/gnss-sdr_multisource_Hybrid_ishort.conf
index 00d85930f..31f777693 100644
--- a/conf/gnss-sdr_multisource_Hybrid_ishort.conf
+++ b/conf/gnss-sdr_multisource_Hybrid_ishort.conf
@@ -420,7 +420,7 @@ TelemetryDecoder_Galileo.dump=false
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
+;#implementation:
Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
@@ -431,14 +431,8 @@ 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=Hybrid_PVT
-
-;#averaging_depth: Number of PVT observations in the moving average algorithm
-PVT.averaging_depth=10
-
-;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
-PVT.flag_averaging=false
+;#implementation: Position Velocity and Time (PVT) implementation:
+PVT.implementation=RTKLIB_PVT
;#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;
diff --git a/conf/gnss-sdr_multisource_Hybrid_nsr.conf b/conf/gnss-sdr_multisource_Hybrid_nsr.conf
index 5ced6c5a5..f0a644f18 100644
--- a/conf/gnss-sdr_multisource_Hybrid_nsr.conf
+++ b/conf/gnss-sdr_multisource_Hybrid_nsr.conf
@@ -446,7 +446,7 @@ TelemetryDecoder_1B.decimation_factor=4;
;######### OBSERVABLES CONFIG ############
-;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.
+;#implementation:
Observables.implementation=Hybrid_Observables
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
@@ -457,14 +457,8 @@ 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=Hybrid_PVT
-
-;#averaging_depth: Number of PVT observations in the moving average algorithm
-PVT.averaging_depth=10
-
-;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
-PVT.flag_averaging=false
+;#implementation: Position Velocity and Time (PVT) implementation:
+PVT.implementation=RTKLIB_PVT
;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms]
PVT.output_rate_ms=10;
diff --git a/src/algorithms/PVT/adapters/CMakeLists.txt b/src/algorithms/PVT/adapters/CMakeLists.txt
index 3a7e524dd..a051c7953 100644
--- a/src/algorithms/PVT/adapters/CMakeLists.txt
+++ b/src/algorithms/PVT/adapters/CMakeLists.txt
@@ -16,10 +16,8 @@
# along with GNSS-SDR. If not, see .
#
-set(PVT_ADAPTER_SOURCES
- gps_l1_ca_pvt.cc
- galileo_e1_pvt.cc
- hybrid_pvt.cc
+set(PVT_ADAPTER_SOURCES
+ rtklib_pvt.cc
)
include_directories(
@@ -29,6 +27,7 @@ include_directories(
${CMAKE_SOURCE_DIR}/src/core/receiver
${CMAKE_SOURCE_DIR}/src/algorithms/PVT/gnuradio_blocks
${CMAKE_SOURCE_DIR}/src/algorithms/PVT/libs
+ ${CMAKE_SOURCE_DIR}/src/algorithms/libs/rtklib
${ARMADILLO_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${GLOG_INCLUDE_DIRS}
diff --git a/src/algorithms/PVT/adapters/galileo_e1_pvt.cc b/src/algorithms/PVT/adapters/galileo_e1_pvt.cc
deleted file mode 100644
index e2c75df27..000000000
--- a/src/algorithms/PVT/adapters/galileo_e1_pvt.cc
+++ /dev/null
@@ -1,141 +0,0 @@
-/*!
- * \file galileo_e1_pvt.cc
- * \brief Implementation of an adapter of a GALILEO E1 PVT solver block to a
- * PvtInterface
- * \author Javier Arribas, 2011. jarribas(at)cttc.es
- *
- *
- * -------------------------------------------------------------------------
- *
- * Copyright (C) 2010-2015 (see AUTHORS file for a list of contributors)
- *
- * GNSS-SDR is a software defined Global Navigation
- * Satellite Systems receiver
- *
- * This file is part of GNSS-SDR.
- *
- * GNSS-SDR is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GNSS-SDR is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNSS-SDR. If not, see .
- *
- * -------------------------------------------------------------------------
- */
-
-
-#include "galileo_e1_pvt.h"
-#include
-#include
-#include "configuration_interface.h"
-
-
-using google::LogMessage;
-
-GalileoE1Pvt::GalileoE1Pvt(ConfigurationInterface* configuration,
- std::string role,
- unsigned int in_streams,
- unsigned int out_streams) :
- role_(role),
- in_streams_(in_streams),
- out_streams_(out_streams)
-{
- // dump parameters
- std::string default_dump_filename = "./pvt.dat";
- std::string default_nmea_dump_filename = "./nmea_pvt.nmea";
- std::string default_nmea_dump_devname = "/dev/tty1";
- std::string default_rtcm_dump_devname = "/dev/pts/1";
- DLOG(INFO) << "role " << role;
-
- dump_ = configuration->property(role + ".dump", false);
- dump_filename_ = configuration->property(role + ".dump_filename", default_dump_filename);
-
- // moving average depth parameters
- int averaging_depth = configuration->property(role + ".averaging_depth", 10);
- bool flag_averaging = configuration->property(role + ".flag_averaging", false);
-
- // output rate
- int output_rate_ms = configuration->property(role + ".output_rate_ms", 500);
-
- // display rate
- int display_rate_ms = configuration->property(role + ".display_rate_ms", 500);
-
- // NMEA Printer settings
- bool flag_nmea_tty_port = configuration->property(role + ".flag_nmea_tty_port", false);
- std::string nmea_dump_filename = configuration->property(role + ".nmea_dump_filename", default_nmea_dump_filename);
- std::string nmea_dump_devname = configuration->property(role + ".nmea_dump_devname", default_nmea_dump_devname);
-
- // RTCM Printer settings
- bool flag_rtcm_tty_port = configuration->property(role + ".flag_rtcm_tty_port", false);
- std::string rtcm_dump_devname = configuration->property(role + ".rtcm_dump_devname", default_rtcm_dump_devname);
- bool flag_rtcm_server = configuration->property(role + ".flag_rtcm_server", false);
- unsigned short rtcm_tcp_port = configuration->property(role + ".rtcm_tcp_port", 2101);
- unsigned short rtcm_station_id = configuration->property(role + ".rtcm_station_id", 1234);
- // RTCM message rates: least common multiple with output_rate_ms
- int rtcm_MT1045_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MT1045_rate_ms", 5000), output_rate_ms);
- int rtcm_MSM_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MSM_rate_ms", 1000), output_rate_ms);
- std::map rtcm_msg_rate_ms;
- rtcm_msg_rate_ms[1045] = rtcm_MT1045_rate_ms;
- for (int k = 1091; k < 1098; k++) // All Galileo MSM
- {
- rtcm_msg_rate_ms[k] = rtcm_MSM_rate_ms;
- }
-
- // make PVT object
- pvt_ = galileo_e1_make_pvt_cc(in_streams_,
- dump_,
- dump_filename_,
- averaging_depth,
- flag_averaging,
- output_rate_ms,
- display_rate_ms,
- flag_nmea_tty_port,
- nmea_dump_filename,
- nmea_dump_devname,
- flag_rtcm_server,
- flag_rtcm_tty_port,
- rtcm_tcp_port,
- rtcm_station_id,
- rtcm_msg_rate_ms,
- rtcm_dump_devname);
-
- DLOG(INFO) << "pvt(" << pvt_->unique_id() << ")";
-}
-
-
-GalileoE1Pvt::~GalileoE1Pvt()
-{}
-
-
-void GalileoE1Pvt::connect(gr::top_block_sptr top_block)
-{
- if(top_block) { /* top_block is not null */};
- // Nothing to connect internally
- DLOG(INFO) << "nothing to connect internally";
-}
-
-
-void GalileoE1Pvt::disconnect(gr::top_block_sptr top_block)
-{
- if(top_block) { /* top_block is not null */};
- // Nothing to disconnect
-}
-
-gr::basic_block_sptr GalileoE1Pvt::get_left_block()
-{
- return pvt_;
-}
-
-
-gr::basic_block_sptr GalileoE1Pvt::get_right_block()
-{
- return pvt_;
-}
-
diff --git a/src/algorithms/PVT/adapters/galileo_e1_pvt.h b/src/algorithms/PVT/adapters/galileo_e1_pvt.h
deleted file mode 100644
index 3614c123a..000000000
--- a/src/algorithms/PVT/adapters/galileo_e1_pvt.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*!
- * \file galileo_e1_pvt.h
- * \brief Interface of an adapter of a GALILEO E1 PVT solver block to a
- * PvtInterface.
- * \author Javier Arribas, 2013. jarribas(at)cttc.es
- *
- * -------------------------------------------------------------------------
- *
- * Copyright (C) 2010-2015 (see AUTHORS file for a list of contributors)
- *
- * GNSS-SDR is a software defined Global Navigation
- * Satellite Systems receiver
- *
- * This file is part of GNSS-SDR.
- *
- * GNSS-SDR is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GNSS-SDR is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNSS-SDR. If not, see .
- *
- * -------------------------------------------------------------------------
- */
-
-
-
-#ifndef GNSS_SDR_GALILEO_E1_PVT_H_
-#define GNSS_SDR_GALILEO_E1_PVT_H_
-
-#include
-#include "pvt_interface.h"
-#include "galileo_e1_pvt_cc.h"
-
-
-class ConfigurationInterface;
-
-/*!
- * \brief This class implements a PvtInterface for Galileo E1
- */
-class GalileoE1Pvt : public PvtInterface
-{
-public:
- GalileoE1Pvt(ConfigurationInterface* configuration,
- std::string role,
- unsigned int in_streams,
- unsigned int out_streams);
-
- virtual ~GalileoE1Pvt();
-
- std::string role()
- {
- return role_;
- }
-
- //! Returns "GALILEO_E1_PVT"
- std::string implementation()
- {
- return "GALILEO_E1_PVT";
- }
-
- void connect(gr::top_block_sptr top_block);
- void disconnect(gr::top_block_sptr top_block);
- gr::basic_block_sptr get_left_block();
- gr::basic_block_sptr get_right_block();
-
- void reset()
- {
- return;
- }
-
- //! All blocks must have an item_size() function implementation. Returns sizeof(gr_complex)
- size_t item_size()
- {
- return sizeof(gr_complex);
- }
-
-private:
- galileo_e1_pvt_cc_sptr pvt_;
- bool dump_;
- //unsigned int fs_in_;
- std::string dump_filename_;
- std::string role_;
- unsigned int in_streams_;
- unsigned int out_streams_;
-};
-
-#endif
diff --git a/src/algorithms/PVT/adapters/gps_l1_ca_pvt.cc b/src/algorithms/PVT/adapters/gps_l1_ca_pvt.cc
deleted file mode 100644
index ba244b5ae..000000000
--- a/src/algorithms/PVT/adapters/gps_l1_ca_pvt.cc
+++ /dev/null
@@ -1,250 +0,0 @@
-/*!
- * \file gps_l1_ca_pvt.cc
- * \brief Implementation of an adapter of a GPS L1 C/A PVT solver block to a
- * PvtInterface
- * \author Javier Arribas, 2011. jarribas(at)cttc.es
- *
- *
- * -------------------------------------------------------------------------
- *
- * Copyright (C) 2010-2015 (see AUTHORS file for a list of contributors)
- *
- * GNSS-SDR is a software defined Global Navigation
- * Satellite Systems receiver
- *
- * This file is part of GNSS-SDR.
- *
- * GNSS-SDR is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GNSS-SDR is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNSS-SDR. If not, see .
- *
- * -------------------------------------------------------------------------
- */
-
-
-#include "gps_l1_ca_pvt.h"
-#include
-#include
-#include
-#include
-#include
-#include "configuration_interface.h"
-
-using google::LogMessage;
-
-GpsL1CaPvt::GpsL1CaPvt(ConfigurationInterface* configuration,
- std::string role,
- unsigned int in_streams,
- unsigned int out_streams) :
- role_(role),
- in_streams_(in_streams),
- out_streams_(out_streams)
-{
- // dump parameters
- std::string default_dump_filename = "./pvt.dat";
- std::string default_nmea_dump_filename = "./nmea_pvt.nmea";
- std::string default_nmea_dump_devname = "/dev/tty1";
- std::string default_rtcm_dump_devname = "/dev/pts/1";
- DLOG(INFO) << "role " << role;
- dump_ = configuration->property(role + ".dump", false);
- dump_filename_ = configuration->property(role + ".dump_filename", default_dump_filename);
- // moving average depth parameters
- int averaging_depth = configuration->property(role + ".averaging_depth", 10);
- bool flag_averaging = configuration->property(role + ".flag_averaging", false);
-
- // output rate
- int output_rate_ms = configuration->property(role + ".output_rate_ms", 500);
-
- // display rate
- int display_rate_ms = configuration->property(role + ".display_rate_ms", 500);
-
- // NMEA Printer settings
- bool flag_nmea_tty_port = configuration->property(role + ".flag_nmea_tty_port", false);
- std::string nmea_dump_filename = configuration->property(role + ".nmea_dump_filename", default_nmea_dump_filename);
- std::string nmea_dump_devname = configuration->property(role + ".nmea_dump_devname", default_nmea_dump_devname);
-
- // RTCM Printer settings
- bool flag_rtcm_tty_port = configuration->property(role + ".flag_rtcm_tty_port", false);
- std::string rtcm_dump_devname = configuration->property(role + ".rtcm_dump_devname", default_rtcm_dump_devname);
- bool flag_rtcm_server = configuration->property(role + ".flag_rtcm_server", false);
- unsigned short rtcm_tcp_port = configuration->property(role + ".rtcm_tcp_port", 2101);
- unsigned short rtcm_station_id = configuration->property(role + ".rtcm_station_id", 1234);
- // RTCM message rates: least common multiple with output_rate_ms
- int rtcm_MT1019_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MT1019_rate_ms", 5000), output_rate_ms);
- int rtcm_MSM_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MSM_rate_ms", 1000), output_rate_ms);
- std::map rtcm_msg_rate_ms;
- rtcm_msg_rate_ms[1019] = rtcm_MT1019_rate_ms;
- for (int k = 1071; k < 1078; k++) // All GPS MSM
- {
- rtcm_msg_rate_ms[k] = rtcm_MSM_rate_ms;
- }
-
- // getting names from the config file, if available
- // default filename for assistance data
- const std::string eph_default_xml_filename = "./gps_ephemeris.xml";
- eph_xml_filename_= configuration->property("GNSS-SDR.SUPL_gps_ephemeris_xml", eph_default_xml_filename);
-
- //const std::string utc_default_xml_filename = "./gps_utc_model.xml";
- //const std::string iono_default_xml_filename = "./gps_iono.xml";
- //const std::string ref_time_default_xml_filename = "./gps_ref_time.xml";
- //const std::string ref_location_default_xml_filename = "./gps_ref_location.xml";
-
- //std::string utc_xml_filename = configuration_->property("GNSS-SDR.SUPL_gps_utc_model.xml", utc_default_xml_filename);
- //std::string iono_xml_filename = configuration_->property("GNSS-SDR.SUPL_gps_iono_xml", iono_default_xml_filename);
- //std::string ref_time_xml_filename = configuration_->property("GNSS-SDR.SUPL_gps_ref_time_xml", ref_time_default_xml_filename);
- //std::string ref_location_xml_filename = configuration_->property("GNSS-SDR.SUPL_gps_ref_location_xml", ref_location_default_xml_filename);
-
- // RINEX version
- int conf_rinex_version;
- conf_rinex_version = configuration->property(role + ".rinex_version", 0);
-
- // make PVT object
- pvt_ = gps_l1_ca_make_pvt_cc(in_streams_,
- dump_,
- dump_filename_,
- averaging_depth,
- flag_averaging,
- output_rate_ms,
- display_rate_ms,
- flag_nmea_tty_port,
- nmea_dump_filename,
- nmea_dump_devname,
- flag_rtcm_server,
- flag_rtcm_tty_port,
- rtcm_tcp_port,
- rtcm_station_id,
- rtcm_msg_rate_ms,
- rtcm_dump_devname,
- conf_rinex_version );
-
- DLOG(INFO) << "pvt(" << pvt_->unique_id() << ")";
-}
-
-
-bool GpsL1CaPvt::save_assistance_to_XML()
-{
- // return variable (true == succeeded)
- bool ret = false;
-
- LOG(INFO) << "SUPL: Try to save GPS ephemeris to XML file " << eph_xml_filename_;
- std::map eph_map = pvt_->get_GPS_L1_ephemeris_map();
-
- if (eph_map.size() > 0)
- {
- try
- {
- std::ofstream ofs(eph_xml_filename_.c_str(), std::ofstream::trunc | std::ofstream::out);
- boost::archive::xml_oarchive xml(ofs);
- xml << boost::serialization::make_nvp("GNSS-SDR_ephemeris_map", eph_map);
- ofs.close();
- LOG(INFO) << "Saved GPS L1 Ephemeris map data";
- }
- catch (std::exception& e)
- {
- LOG(WARNING) << e.what();
- return false;
- }
- return true;
- }
- else
- {
- LOG(WARNING) << "Failed to save Ephemeris, map is empty";
- return false;
- }
- // Only try to save {utc, iono, ref time, ref location} if SUPL is enabled
- // bool enable_gps_supl_assistance = configuration_->property("GNSS-SDR.SUPL_gps_enabled", false);
- // if (enable_gps_supl_assistance == true)
- // {
- // // try to save utc model xml file
- // std::map utc_copy = global_gps_utc_model_map.get_map_copy();
- // if (supl_client_acquisition_.save_utc_map_xml(utc_xml_filename, utc_copy) == true)
- // {
- // LOG(INFO) << "SUPL: Successfully saved UTC Model XML file";
- // //ret = true;
- // }
- // else
- // {
- // LOG(INFO) << "SUPL: Error while trying to save utc XML file";
- // //ret = false;
- // }
- // // try to save iono model xml file
- // std::map iono_copy = global_gps_iono_map.get_map_copy();
- // if (supl_client_acquisition_.save_iono_map_xml(iono_xml_filename, iono_copy) == true)
- // {
- // LOG(INFO) << "SUPL: Successfully saved IONO Model XML file";
- // //ret = true;
- // }
- // else
- // {
- // LOG(INFO) << "SUPL: Error while trying to save iono XML file";
- // //ret = false;
- // }
- // // try to save ref time xml file
- // std::map ref_time_copy = global_gps_ref_time_map.get_map_copy();
- // if (supl_client_acquisition_.save_ref_time_map_xml(ref_time_xml_filename, ref_time_copy) == true)
- // {
- // LOG(INFO) << "SUPL: Successfully saved Ref Time XML file";
- // //ret = true;
- // }
- // else
- // {
- // LOG(INFO) << "SUPL: Error while trying to save ref time XML file";
- // //ref = false;
- // }
- // // try to save ref location xml file
- // std::map ref_location_copy = global_gps_ref_location_map.get_map_copy();
- // if (supl_client_acquisition_.save_ref_location_map_xml(ref_location_xml_filename, ref_location_copy) == true)
- // {
- // LOG(INFO) << "SUPL: Successfully saved Ref Location XML file";
- // //ref = true;
- // }
- // else
- // {
- // LOG(INFO) << "SUPL: Error while trying to save ref location XML file";
- // //ret = false;
- // }
- // }
- return ret;
-}
-
-
-GpsL1CaPvt::~GpsL1CaPvt()
-{
- save_assistance_to_XML();
-}
-
-
-void GpsL1CaPvt::connect(gr::top_block_sptr top_block)
-{
- if(top_block) { /* top_block is not null */};
- // Nothing to connect internally
- DLOG(INFO) << "nothing to connect internally";
-}
-
-
-void GpsL1CaPvt::disconnect(gr::top_block_sptr top_block)
-{
- if(top_block) { /* top_block is not null */};
- // Nothing to disconnect
-}
-
-
-gr::basic_block_sptr GpsL1CaPvt::get_left_block()
-{
- return pvt_;
-}
-
-
-gr::basic_block_sptr GpsL1CaPvt::get_right_block()
-{
- return pvt_;
-}
diff --git a/src/algorithms/PVT/adapters/gps_l1_ca_pvt.h b/src/algorithms/PVT/adapters/gps_l1_ca_pvt.h
deleted file mode 100644
index 4787f94bd..000000000
--- a/src/algorithms/PVT/adapters/gps_l1_ca_pvt.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/*!
- * \file gps_l1_ca_pvt.h
- * \brief Interface of an adapter of a GPS L1 C/A PVT solver block to a
- * PvtInterface
- * Position Velocity and Time
- * \author Javier Arribas, 2011. jarribas(at)cttc.es
- *
- *
- * -------------------------------------------------------------------------
- *
- * Copyright (C) 2010-2015 (see AUTHORS file for a list of contributors)
- *
- * GNSS-SDR is a software defined Global Navigation
- * Satellite Systems receiver
- *
- * This file is part of GNSS-SDR.
- *
- * GNSS-SDR is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GNSS-SDR is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNSS-SDR. If not, see .
- *
- * -------------------------------------------------------------------------
- */
-
-
-
-#ifndef GNSS_SDR_GPS_L1_CA_PVT_H_
-#define GNSS_SDR_GPS_L1_CA_PVT_H_
-
-#include
-#include "pvt_interface.h"
-#include "gps_l1_ca_pvt_cc.h"
-
-
-class ConfigurationInterface;
-
-/*!
- * \brief This class implements a PvtInterface for GPS L1 C/A
- */
-class GpsL1CaPvt : public PvtInterface
-{
-public:
- GpsL1CaPvt(ConfigurationInterface* configuration,
- std::string role,
- unsigned int in_streams,
- unsigned int out_streams);
-
- virtual ~GpsL1CaPvt();
-
- std::string role()
- {
- return role_;
- }
-
- //! Returns "GPS_L1_CA_PVT"
- std::string implementation()
- {
- return "GPS_L1_CA_PVT";
- }
-
- void connect(gr::top_block_sptr top_block);
- void disconnect(gr::top_block_sptr top_block);
- gr::basic_block_sptr get_left_block();
- gr::basic_block_sptr get_right_block();
-
- void reset()
- {
- return;
- }
-
- //! All blocks must have an item_size() function implementation. Returns sizeof(gr_complex)
- size_t item_size()
- {
- return sizeof(gr_complex);
- }
-
-private:
- gps_l1_ca_pvt_cc_sptr pvt_;
- bool dump_;
- std::string dump_filename_;
- std::string role_;
- unsigned int in_streams_;
- unsigned int out_streams_;
-
- std::string eph_xml_filename_;
- bool save_assistance_to_XML();
-};
-
-#endif
diff --git a/src/algorithms/PVT/adapters/hybrid_pvt.cc b/src/algorithms/PVT/adapters/hybrid_pvt.cc
deleted file mode 100644
index 98b7a3836..000000000
--- a/src/algorithms/PVT/adapters/hybrid_pvt.cc
+++ /dev/null
@@ -1,237 +0,0 @@
-/*!
- * \file hybrid_pvt.cc
- * \brief Implementation of an adapter of a GALILEO E1 PVT solver block to a
- * PvtInterface
- * \author Javier Arribas, 2011. jarribas(at)cttc.es
- *
- *
- * -------------------------------------------------------------------------
- *
- * Copyright (C) 2010-2015 (see AUTHORS file for a list of contributors)
- *
- * GNSS-SDR is a software defined Global Navigation
- * Satellite Systems receiver
- *
- * This file is part of GNSS-SDR.
- *
- * GNSS-SDR is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GNSS-SDR is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNSS-SDR. If not, see .
- *
- * -------------------------------------------------------------------------
- */
-
-
-#include "hybrid_pvt.h"
-#include
-#include
-#include
-#include
-#include
-#include "configuration_interface.h"
-
-
-using google::LogMessage;
-
-HybridPvt::HybridPvt(ConfigurationInterface* configuration,
- std::string role,
- unsigned int in_streams,
- unsigned int out_streams) :
- role_(role),
- in_streams_(in_streams),
- out_streams_(out_streams)
-{
- // dump parameters
- std::string default_dump_filename = "./pvt.dat";
- std::string default_nmea_dump_filename = "./nmea_pvt.nmea";
- std::string default_nmea_dump_devname = "/dev/tty1";
- std::string default_rtcm_dump_devname = "/dev/pts/1";
- DLOG(INFO) << "role " << role;
- dump_ = configuration->property(role + ".dump", false);
- dump_filename_ = configuration->property(role + ".dump_filename", default_dump_filename);
-
- // moving average depth parameters
- int averaging_depth = configuration->property(role + ".averaging_depth", 10);
- bool flag_averaging = configuration->property(role + ".flag_averaging", false);
-
- // output rate
- int output_rate_ms = configuration->property(role + ".output_rate_ms", 500);
-
- // display rate
- int display_rate_ms = configuration->property(role + ".display_rate_ms", 500);
-
- // NMEA Printer settings
- bool flag_nmea_tty_port = configuration->property(role + ".flag_nmea_tty_port", false);
- std::string nmea_dump_filename = configuration->property(role + ".nmea_dump_filename", default_nmea_dump_filename);
- std::string nmea_dump_devname = configuration->property(role + ".nmea_dump_devname", default_nmea_dump_devname);
-
- // RTCM Printer settings
- bool flag_rtcm_tty_port = configuration->property(role + ".flag_rtcm_tty_port", false);
- std::string rtcm_dump_devname = configuration->property(role + ".rtcm_dump_devname", default_rtcm_dump_devname);
- bool flag_rtcm_server = configuration->property(role + ".flag_rtcm_server", false);
- unsigned short rtcm_tcp_port = configuration->property(role + ".rtcm_tcp_port", 2101);
- unsigned short rtcm_station_id = configuration->property(role + ".rtcm_station_id", 1234);
- // RTCM message rates: least common multiple with output_rate_ms
- int rtcm_MT1019_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MT1019_rate_ms", 5000), output_rate_ms);
- int rtcm_MT1045_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MT1045_rate_ms", 5000), output_rate_ms);
- int rtcm_MSM_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MSM_rate_ms", 1000), output_rate_ms);
- int rtcm_MT1077_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MT1077_rate_ms", rtcm_MSM_rate_ms), output_rate_ms);
- int rtcm_MT1097_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MT1097_rate_ms", rtcm_MSM_rate_ms), output_rate_ms);
- std::map rtcm_msg_rate_ms;
- rtcm_msg_rate_ms[1019] = rtcm_MT1019_rate_ms;
- rtcm_msg_rate_ms[1045] = rtcm_MT1045_rate_ms;
- for (int k = 1071; k < 1078; k++) // All GPS MSM
- {
- rtcm_msg_rate_ms[k] = rtcm_MT1077_rate_ms;
- }
- for (int k = 1091; k < 1098; k++) // All Galileo MSM
- {
- rtcm_msg_rate_ms[k] = rtcm_MT1097_rate_ms;
- }
- // getting names from the config file, if available
- // default filename for assistance data
- const std::string eph_default_xml_filename = "./gps_ephemeris.xml";
- const std::string utc_default_xml_filename = "./gps_utc_model.xml";
- const std::string iono_default_xml_filename = "./gps_iono.xml";
- const std::string ref_time_default_xml_filename = "./gps_ref_time.xml";
- const std::string ref_location_default_xml_filename = "./gps_ref_location.xml";
- eph_xml_filename_ = configuration->property("GNSS-SDR.SUPL_gps_ephemeris_xml", eph_default_xml_filename);
- //std::string utc_xml_filename = configuration_->property("GNSS-SDR.SUPL_gps_utc_model.xml", utc_default_xml_filename);
- //std::string iono_xml_filename = configuration_->property("GNSS-SDR.SUPL_gps_iono_xml", iono_default_xml_filename);
- //std::string ref_time_xml_filename = configuration_->property("GNSS-SDR.SUPL_gps_ref_time_xml", ref_time_default_xml_filename);
- //std::string ref_location_xml_filename = configuration_->property("GNSS-SDR.SUPL_gps_ref_location_xml", ref_location_default_xml_filename);
-
- // Infer the type of receiver
- /*
- * TYPE | RECEIVER
- * 0 | Unknown
- * 1 | GPS L1 C/A
- * 2 | GPS L2C
- * 3 | GPS L5
- * 4 | Galileo E1B
- * 5 | Galileo E5a
- * 6 | Galileo E5b
- * 7 | GPS L1 C/A + GPS L2C
- * 8 | GPS L1 C/A + GPS L5
- * 9 | GPS L1 C/A + Galileo E1B
- * 10 | GPS L1 C/A + Galileo E5a
- * 11 | GPS L1 C/A + Galileo E5b
- * 12 | Galileo E1B + GPS L2C
- * 13 | Galileo E1B + GPS L5
- * 14 | Galileo E1B + Galileo E5a
- * 15 | Galileo E1B + Galileo E5b
- * 16 | GPS L2C + GPS L5
- * 17 | GPS L2C + Galileo E5a
- * 18 | GPS L2C + Galileo E5b
- * 19 | GPS L5 + Galileo E5a
- * 20 | GPS L5 + Galileo E5b
- * 21 | GPS L1 C/A + Galileo E1B + GPS L2C
- * 22 | GPS L1 C/A + Galileo E1B + GPS L5
- */
- int gps_1C_count = configuration->property("Channels_1C.count", 0);
- int gps_2S_count = configuration->property("Channels_2S.count", 0);
- int gal_1B_count = configuration->property("Channels_1B.count", 0);
- int gal_E5a_count = configuration->property("Channels_5X.count", 0); // GPS L5 or Galileo E5a ?
- int gal_E5b_count = configuration->property("Channels_7X.count", 0);
-
- unsigned int type_of_receiver = 0;
- if( (gps_1C_count != 0) && (gps_2S_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 1;
- if( (gps_1C_count == 0) && (gps_2S_count != 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 2;
-
- if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 4;
- if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count == 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0)) type_of_receiver = 5;
- if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0)) type_of_receiver = 6;
-
- if( (gps_1C_count != 0) && (gps_2S_count != 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 7;
- //if( (gps_1C_count != 0) && (gps_2S_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 8;
- if( (gps_1C_count != 0) && (gps_2S_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 9;
- if( (gps_1C_count != 0) && (gps_2S_count == 0) && (gal_1B_count == 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0)) type_of_receiver = 10;
- if( (gps_1C_count != 0) && (gps_2S_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0)) type_of_receiver = 11;
- if( (gps_1C_count == 0) && (gps_2S_count != 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 12;
- //if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 13;
- if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count != 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0)) type_of_receiver = 14;
- if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0)) type_of_receiver = 15;
- //if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 16;
- if( (gps_1C_count == 0) && (gps_2S_count != 0) && (gal_1B_count == 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0)) type_of_receiver = 17;
- if( (gps_1C_count == 0) && (gps_2S_count != 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0)) type_of_receiver = 18;
- //if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 19;
- //if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 20;
- if( (gps_1C_count != 0) && (gps_2S_count != 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 21;
- //if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count = 0)) type_of_receiver = 22;
-
- // make PVT object
- pvt_ = hybrid_make_pvt_cc(in_streams_, dump_, dump_filename_, averaging_depth, flag_averaging, output_rate_ms, display_rate_ms, flag_nmea_tty_port, nmea_dump_filename, nmea_dump_devname, flag_rtcm_server, flag_rtcm_tty_port, rtcm_tcp_port, rtcm_station_id, rtcm_msg_rate_ms, rtcm_dump_devname, type_of_receiver);
- DLOG(INFO) << "pvt(" << pvt_->unique_id() << ")";
-}
-
-
-bool HybridPvt::save_assistance_to_XML()
-{
- LOG(INFO) << "SUPL: Try to save GPS ephemeris to XML file " << eph_xml_filename_;
- std::map eph_map = pvt_->get_GPS_L1_ephemeris_map();
-
- if (eph_map.size() > 0)
- {
- try
- {
- std::ofstream ofs(eph_xml_filename_.c_str(), std::ofstream::trunc | std::ofstream::out);
- boost::archive::xml_oarchive xml(ofs);
- xml << boost::serialization::make_nvp("GNSS-SDR_ephemeris_map", eph_map);
- ofs.close();
- LOG(INFO) << "Saved GPS L1 Ephemeris map data";
- }
- catch (std::exception& e)
- {
- LOG(WARNING) << e.what();
- return false;
- }
- return true; // return variable (true == succeeded)
- }
- else
- {
- LOG(WARNING) << "Failed to save Ephemeris, map is empty";
- return false;
- }
-}
-
-
-HybridPvt::~HybridPvt()
-{
- save_assistance_to_XML();
-}
-
-
-void HybridPvt::connect(gr::top_block_sptr top_block)
-{
- if(top_block) { /* top_block is not null */};
- // Nothing to connect internally
- DLOG(INFO) << "nothing to connect internally";
-}
-
-
-void HybridPvt::disconnect(gr::top_block_sptr top_block)
-{
- if(top_block) { /* top_block is not null */};
- // Nothing to disconnect
-}
-
-
-gr::basic_block_sptr HybridPvt::get_left_block()
-{
- return pvt_;
-}
-
-
-gr::basic_block_sptr HybridPvt::get_right_block()
-{
- return pvt_; // this is a sink, nothing downstream
-}
diff --git a/src/algorithms/PVT/adapters/rtklib_pvt.cc b/src/algorithms/PVT/adapters/rtklib_pvt.cc
new file mode 100644
index 000000000..7f63dc1e1
--- /dev/null
+++ b/src/algorithms/PVT/adapters/rtklib_pvt.cc
@@ -0,0 +1,531 @@
+/*!
+ * \file rtklib_pvt.cc
+ * \brief Interface of a Position Velocity and Time computation block
+ * \author Javier Arribas, 2017. jarribas(at)cttc.es
+ *
+ * -------------------------------------------------------------------------
+ *
+ * Copyright (C) 2010-2015 (see AUTHORS file for a list of contributors)
+ *
+ * GNSS-SDR is a software defined Global Navigation
+ * Satellite Systems receiver
+ *
+ * This file is part of GNSS-SDR.
+ *
+ * GNSS-SDR is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GNSS-SDR is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNSS-SDR. If not, see .
+ *
+ * -------------------------------------------------------------------------
+ */
+
+
+#include "rtklib_pvt.h"
+#include
+#include
+#include
+#include
+#include
+#include "configuration_interface.h"
+
+
+using google::LogMessage;
+
+RtklibPvt::RtklibPvt(ConfigurationInterface* configuration,
+ std::string role,
+ unsigned int in_streams,
+ unsigned int out_streams) :
+ role_(role),
+ in_streams_(in_streams),
+ out_streams_(out_streams)
+{
+ // dump parameters
+ std::string default_dump_filename = "./pvt.dat";
+ std::string default_nmea_dump_filename = "./nmea_pvt.nmea";
+ std::string default_nmea_dump_devname = "/dev/tty1";
+ std::string default_rtcm_dump_devname = "/dev/pts/1";
+ DLOG(INFO) << "role " << role;
+ dump_ = configuration->property(role + ".dump", false);
+ dump_filename_ = configuration->property(role + ".dump_filename", default_dump_filename);
+
+ // output rate
+ int output_rate_ms = configuration->property(role + ".output_rate_ms", 500);
+
+ // display rate
+ int display_rate_ms = configuration->property(role + ".display_rate_ms", 500);
+
+ // NMEA Printer settings
+ bool flag_nmea_tty_port = configuration->property(role + ".flag_nmea_tty_port", false);
+ std::string nmea_dump_filename = configuration->property(role + ".nmea_dump_filename", default_nmea_dump_filename);
+ std::string nmea_dump_devname = configuration->property(role + ".nmea_dump_devname", default_nmea_dump_devname);
+
+ // RINEX version
+ int rinex_version = configuration->property(role + ".rinex_version", 3);
+ if( (rinex_version < 2) || (rinex_version > 3) )
+ {
+ //warn user and set the default
+ rinex_version = 3;
+ }
+
+ // RTCM Printer settings
+ bool flag_rtcm_tty_port = configuration->property(role + ".flag_rtcm_tty_port", false);
+ std::string rtcm_dump_devname = configuration->property(role + ".rtcm_dump_devname", default_rtcm_dump_devname);
+ bool flag_rtcm_server = configuration->property(role + ".flag_rtcm_server", false);
+ unsigned short rtcm_tcp_port = configuration->property(role + ".rtcm_tcp_port", 2101);
+ unsigned short rtcm_station_id = configuration->property(role + ".rtcm_station_id", 1234);
+ // RTCM message rates: least common multiple with output_rate_ms
+ int rtcm_MT1019_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MT1019_rate_ms", 5000), output_rate_ms);
+ int rtcm_MT1045_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MT1045_rate_ms", 5000), output_rate_ms);
+ int rtcm_MSM_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MSM_rate_ms", 1000), output_rate_ms);
+ int rtcm_MT1077_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MT1077_rate_ms", rtcm_MSM_rate_ms), output_rate_ms);
+ int rtcm_MT1097_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MT1097_rate_ms", rtcm_MSM_rate_ms), output_rate_ms);
+ std::map rtcm_msg_rate_ms;
+ rtcm_msg_rate_ms[1019] = rtcm_MT1019_rate_ms;
+ rtcm_msg_rate_ms[1045] = rtcm_MT1045_rate_ms;
+ for (int k = 1071; k < 1078; k++) // All GPS MSM
+ {
+ rtcm_msg_rate_ms[k] = rtcm_MT1077_rate_ms;
+ }
+ for (int k = 1091; k < 1098; k++) // All Galileo MSM
+ {
+ rtcm_msg_rate_ms[k] = rtcm_MT1097_rate_ms;
+ }
+ // getting names from the config file, if available
+ // default filename for assistance data
+ const std::string eph_default_xml_filename = "./gps_ephemeris.xml";
+ const std::string utc_default_xml_filename = "./gps_utc_model.xml";
+ const std::string iono_default_xml_filename = "./gps_iono.xml";
+ const std::string ref_time_default_xml_filename = "./gps_ref_time.xml";
+ const std::string ref_location_default_xml_filename = "./gps_ref_location.xml";
+ eph_xml_filename_ = configuration->property("GNSS-SDR.SUPL_gps_ephemeris_xml", eph_default_xml_filename);
+ //std::string utc_xml_filename = configuration_->property("GNSS-SDR.SUPL_gps_utc_model.xml", utc_default_xml_filename);
+ //std::string iono_xml_filename = configuration_->property("GNSS-SDR.SUPL_gps_iono_xml", iono_default_xml_filename);
+ //std::string ref_time_xml_filename = configuration_->property("GNSS-SDR.SUPL_gps_ref_time_xml", ref_time_default_xml_filename);
+ //std::string ref_location_xml_filename = configuration_->property("GNSS-SDR.SUPL_gps_ref_location_xml", ref_location_default_xml_filename);
+
+ // Infer the type of receiver
+ /*
+ * TYPE | RECEIVER
+ * 0 | Unknown
+ * 1 | GPS L1 C/A
+ * 2 | GPS L2C
+ * 3 | GPS L5
+ * 4 | Galileo E1B
+ * 5 | Galileo E5a
+ * 6 | Galileo E5b
+ * 7 | GPS L1 C/A + GPS L2C
+ * 8 | GPS L1 C/A + GPS L5
+ * 9 | GPS L1 C/A + Galileo E1B
+ * 10 | GPS L1 C/A + Galileo E5a
+ * 11 | GPS L1 C/A + Galileo E5b
+ * 12 | Galileo E1B + GPS L2C
+ * 13 | Galileo E1B + GPS L5
+ * 14 | Galileo E1B + Galileo E5a
+ * 15 | Galileo E1B + Galileo E5b
+ * 16 | GPS L2C + GPS L5
+ * 17 | GPS L2C + Galileo E5a
+ * 18 | GPS L2C + Galileo E5b
+ * 19 | GPS L5 + Galileo E5a
+ * 20 | GPS L5 + Galileo E5b
+ * 21 | GPS L1 C/A + Galileo E1B + GPS L2C
+ * 22 | GPS L1 C/A + Galileo E1B + GPS L5
+ */
+ int gps_1C_count = configuration->property("Channels_1C.count", 0);
+ int gps_2S_count = configuration->property("Channels_2S.count", 0);
+ int gal_1B_count = configuration->property("Channels_1B.count", 0);
+ int gal_E5a_count = configuration->property("Channels_5X.count", 0); // GPS L5 or Galileo E5a ?
+ int gal_E5b_count = configuration->property("Channels_7X.count", 0);
+
+ unsigned int type_of_receiver = 0;
+ if( (gps_1C_count != 0) && (gps_2S_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 1;
+ if( (gps_1C_count == 0) && (gps_2S_count != 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 2;
+
+ if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 4;
+ if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count == 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0)) type_of_receiver = 5;
+ if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0)) type_of_receiver = 6;
+
+ if( (gps_1C_count != 0) && (gps_2S_count != 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 7;
+ //if( (gps_1C_count != 0) && (gps_2S_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 8;
+ if( (gps_1C_count != 0) && (gps_2S_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 9;
+ if( (gps_1C_count != 0) && (gps_2S_count == 0) && (gal_1B_count == 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0)) type_of_receiver = 10;
+ if( (gps_1C_count != 0) && (gps_2S_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0)) type_of_receiver = 11;
+ if( (gps_1C_count == 0) && (gps_2S_count != 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 12;
+ //if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 13;
+ if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count != 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0)) type_of_receiver = 14;
+ if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0)) type_of_receiver = 15;
+ //if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 16;
+ if( (gps_1C_count == 0) && (gps_2S_count != 0) && (gal_1B_count == 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0)) type_of_receiver = 17;
+ if( (gps_1C_count == 0) && (gps_2S_count != 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0)) type_of_receiver = 18;
+ //if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 19;
+ //if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 20;
+ if( (gps_1C_count != 0) && (gps_2S_count != 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 21;
+ //if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count = 0)) type_of_receiver = 22;
+
+ //RTKLIB PVT solver options
+ // Settings 1
+ int positioning_mode = -1;
+ std::string default_pos_mode("Single");
+ std::string positioning_mode_str = configuration->property(role + ".positioning_mode", default_pos_mode); /* (PMODE_XXX) see src/algorithms/libs/rtklib/rtklib.h */
+ if(positioning_mode_str.compare("Single") == 0) positioning_mode = PMODE_SINGLE;
+ if(positioning_mode_str.compare("Static") == 0) positioning_mode = PMODE_STATIC;
+ if(positioning_mode_str.compare("Kinematic") == 0) positioning_mode = PMODE_KINEMA;
+ if(positioning_mode_str.compare("PPP_Static") == 0) positioning_mode = PMODE_PPP_STATIC;
+ if(positioning_mode_str.compare("PPP_Kinematic") == 0) positioning_mode = PMODE_PPP_KINEMA;
+
+ if( positioning_mode == -1 )
+ {
+ //warn user and set the default
+ std::cout << "WARNING: Bad specification of positioning mode." << std::endl;
+ std::cout << "positioning_mode possible values: Single / Static / Kinematic / PPP_Static / PPP_Kinematic" << std::endl;
+ std::cout << "positioning_mode specified value: " << positioning_mode_str << std::endl;
+ std::cout << "Setting positioning_mode to Single" << std::endl;
+ positioning_mode = PMODE_SINGLE;
+ }
+
+ int num_bands = 0;
+ if ((gps_1C_count > 0) || (gal_1B_count > 0)) num_bands = 1;
+ if (((gps_1C_count > 0) || (gal_1B_count > 0)) && (gps_2S_count > 0) ) num_bands = 2;
+ if (((gps_1C_count > 0) || (gal_1B_count > 0)) && (gps_2S_count > 0) && ((gal_E5a_count > 0) || (gal_E5a_count > 0))) num_bands = 3;
+ int number_of_frequencies = configuration->property(role + ".num_bands", num_bands); /* (1:L1, 2:L1+L2, 3:L1+L2+L5) */
+ if( (number_of_frequencies < 1) || (number_of_frequencies > 3) )
+ {
+ //warn user and set the default
+ number_of_frequencies = num_bands;
+ }
+
+ double elevation_mask = configuration->property(role + ".elevation_mask", 15.0);
+ if( (elevation_mask < 0.0) || (elevation_mask > 90.0) )
+ {
+ //warn user and set the default
+ elevation_mask = 15.0;
+ }
+
+ int dynamics_model = configuration->property(role + ".dynamics_model", 0); /* dynamics model (0:none, 1:velocity, 2:accel) */
+ if( (dynamics_model < 0) || (dynamics_model > 2) )
+ {
+ //warn user and set the default
+ dynamics_model = 0;
+ }
+
+ std::string default_iono_model("OFF");
+ std::string iono_model_str = configuration->property(role + ".iono_model", default_iono_model); /* (IONOOPT_XXX) see src/algorithms/libs/rtklib/rtklib.h */
+ int iono_model = -1;
+ if(iono_model_str.compare("OFF") == 0) iono_model = IONOOPT_OFF;
+ if(iono_model_str.compare("Broadcast") == 0) iono_model = IONOOPT_BRDC;
+ if(iono_model_str.compare("SBAS") == 0) iono_model = IONOOPT_SBAS;
+ if(iono_model_str.compare("Iono-Free-LC") == 0) iono_model = IONOOPT_IFLC;
+ if(iono_model_str.compare("Estimate_STEC") == 0) iono_model = IONOOPT_EST;
+ if(iono_model_str.compare("IONEX") == 0) iono_model = IONOOPT_TEC;
+ if( iono_model == -1 )
+ {
+ //warn user and set the default
+ std::cout << "WARNING: Bad specification of ionospheric model." << std::endl;
+ std::cout << "iono_model possible values: OFF / Broadcast / SBAS / Iono-Free-LC / Estimate_STEC / IONEX" << std::endl;
+ std::cout << "iono_model specified value: " << iono_model_str << std::endl;
+ std::cout << "Setting iono_model to OFF" << std::endl;
+ iono_model = IONOOPT_OFF; /* 0: ionosphere option: correction off */
+ }
+
+ std::string default_trop_model("OFF");
+ int trop_model = -1;
+ std::string trop_model_str = configuration->property(role + ".trop_model", default_trop_model); /* (TROPOPT_XXX) see src/algorithms/libs/rtklib/rtklib.h */
+ if(trop_model_str.compare("OFF") == 0) trop_model = TROPOPT_OFF;
+ if(trop_model_str.compare("Saastamoinen") == 0) trop_model = TROPOPT_SAAS;
+ if(trop_model_str.compare("SBAS") == 0) trop_model = TROPOPT_SBAS;
+ if(trop_model_str.compare("Estimate_ZTD") == 0) trop_model = TROPOPT_EST;
+ if(trop_model_str.compare("Estimate_ZTD_Grad") == 0) trop_model = TROPOPT_ESTG;
+ if( trop_model == -1 )
+ {
+ //warn user and set the default
+ std::cout << "WARNING: Bad specification of tropospheric model." << std::endl;
+ std::cout << "trop_model possible values: OFF / Saastamoinen / SBAS / Estimate_ZTD / Estimate_ZTD_Grad" << std::endl;
+ std::cout << "trop_model specified value: " << trop_model_str << std::endl;
+ std::cout << "Setting trop_model to OFF" << std::endl;
+ trop_model = TROPOPT_OFF;
+ }
+
+ /* RTKLIB positioning options */
+ int sat_PCV = 0; /* Set whether the satellite antenna PCV (phase center variation) model is used or not. This feature requires a Satellite Antenna PCV File. */
+ int rec_PCV = 0; /* Set whether the receiver antenna PCV (phase center variation) model is used or not. This feature requires a Receiver Antenna PCV File. */
+ int phwindup = 0; /* Set whether the phase windup correction for PPP modes is applied or not. Only applicable to PPP‐* modes.*/
+ int reject_GPS_IIA = 0; /* Set whether the GPS Block IIA satellites in eclipse are excluded or not.
+ The eclipsing Block IIA satellites often degrade the PPP solutions due to unpredicted behavior of yaw‐attitude. Only applicable to PPP‐* modes.*/
+
+ int raim_fde = 0; /* Set whether RAIM (receiver autonomous integrity monitoring) FDE (fault detection and exclusion) feature is enabled or not.
+ In case of RAIM FDE enabled, a satellite is excluded if SSE (sum of squared errors) of residuals is over a threshold.
+ The excluded satellite is selected to indicate the minimum SSE. */
+
+ int nsys = 0;
+ if ((gps_1C_count > 0) || (gps_2S_count > 0)) nsys += SYS_GPS;
+ if ((gal_1B_count > 0) || (gal_E5a_count > 0) || (gal_E5b_count > 0)) nsys += SYS_GAL;
+ int navigation_system = configuration->property(role + ".navigation_system", nsys); /* (SYS_XXX) see src/algorithms/libs/rtklib/rtklib.h */
+ if( (navigation_system < 1) || (navigation_system > 255) ) /* GPS: 1 SBAS: 2 GPS+SBAS: 3 Galileo: 8 Galileo+GPS: 9 GPS+SBAS+Galileo: 11 All: 255 */
+ {
+ //warn user and set the default
+ navigation_system = nsys;
+ }
+
+ // Settings 2
+ std::string default_gps_ar("Continuous");
+ std::string integer_ambiguity_resolution_gps_str = configuration->property(role + ".AR_GPS", default_gps_ar); /* Integer Ambiguity Resolution mode for GPS (0:off,1:continuous,2:instantaneous,3:fix and hold,4:ppp-ar) */
+ int integer_ambiguity_resolution_gps = -1;
+ if(integer_ambiguity_resolution_gps_str.compare("OFF") == 0) integer_ambiguity_resolution_gps = ARMODE_OFF;
+ if(integer_ambiguity_resolution_gps_str.compare("Continuous") == 0) integer_ambiguity_resolution_gps = ARMODE_CONT;
+ if(integer_ambiguity_resolution_gps_str.compare("Instantaneous") == 0) integer_ambiguity_resolution_gps = ARMODE_INST;
+ if(integer_ambiguity_resolution_gps_str.compare("Fix-and-Hold") == 0) integer_ambiguity_resolution_gps = ARMODE_FIXHOLD;
+ if(integer_ambiguity_resolution_gps_str.compare("PPP-AR") == 0) integer_ambiguity_resolution_gps = ARMODE_PPPAR;
+ if( integer_ambiguity_resolution_gps == -1 )
+ {
+ //warn user and set the default
+ std::cout << "WARNING: Bad specification of GPS ambiguity resolution method." << std::endl;
+ std::cout << "AR_GPS possible values: OFF / Continuous / Instantaneous / Fix-and-Hold / PPP-AR" << std::endl;
+ std::cout << "AR_GPS specified value: " << integer_ambiguity_resolution_gps_str << std::endl;
+ std::cout << "Setting AR_GPS to OFF" << std::endl;
+ integer_ambiguity_resolution_gps = ARMODE_OFF;
+ }
+
+ int integer_ambiguity_resolution_glo = configuration->property(role + ".AR_GLO", 1); /* Integer Ambiguity Resolution mode for GLONASS (0:off,1:on,2:auto cal,3:ext cal) */
+ if( (integer_ambiguity_resolution_glo < 0) || (integer_ambiguity_resolution_glo > 3) )
+ {
+ //warn user and set the default
+ integer_ambiguity_resolution_glo = 1;
+ }
+
+ int integer_ambiguity_resolution_bds = configuration->property(role + ".AR_DBS", 1); /* Integer Ambiguity Resolution mode for BEIDOU (0:off,1:on) */
+ if( (integer_ambiguity_resolution_bds < 0) || (integer_ambiguity_resolution_bds > 1) )
+ {
+ //warn user and set the default
+ integer_ambiguity_resolution_bds = 1;
+ }
+
+ double min_ratio_to_fix_ambiguity = configuration->property(role + ".min_ratio_to_fix_ambiguity", 3.0); /* Set the integer ambiguity validation threshold for ratio‐test,
+ which uses the ratio of squared residuals of the best integer vector to the second‐best vector. */
+
+ int min_lock_to_fix_ambiguity = configuration->property(role + ".min_lock_to_fix_ambiguity", 0); /* Set the minimum lock count to fix integer ambiguity.
+ If the lock count is less than the value, the ambiguity is excluded from the fixed integer vector. */
+
+ double min_elevation_to_fix_ambiguity = configuration->property(role + ".min_elevation_to_fix_ambiguity", 0.0); /* Set the minimum elevation (deg) to fix integer ambiguity.
+ If the elevation of the satellite is less than the value, the ambiguity is excluded from the fixed integer vector. */
+
+ int outage_reset_ambiguity = configuration->property(role + ".outage_reset_ambiguity", 5); /* Set the outage count to reset ambiguity. If the data outage count is over the value, the estimated ambiguity is reset to the initial value. */
+
+ double slip_threshold = configuration->property(role + ".slip_threshold", 0.05); /* set the cycle‐slip threshold (m) of geometry‐free LC carrier‐phase difference between epochs */
+
+ double threshold_reject_gdop = configuration->property(role + ".threshold_reject_gdop", 30.0); /* reject threshold of GDOP. If the GDOP is over the value, the observable is excluded for the estimation process as an outlier. */
+
+ double threshold_reject_innovation = configuration->property(role + ".threshold_reject_innovation", 30.0); /* reject threshold of innovation (m). If the innovation is over the value, the observable is excluded for the estimation process as an outlier. */
+
+ int number_filter_iter = configuration->property(role + ".number_filter_iter", 1); /* Set the number of iteration in the measurement update of the estimation filter.
+ If the baseline length is very short like 1 m, the iteration may be effective to handle
+ the nonlinearity of measurement equation. */
+
+ /// Statistics
+ double bias_0 = configuration->property(role + ".bias_0", 30.0);
+
+ double iono_0 = configuration->property(role + ".iono_0", 0.03);
+
+ double trop_0 = configuration->property(role + ".trop_0", 0.3);
+
+ double sigma_bias = configuration->property(role + ".sigma_bias", 1e-4); /* Set the process noise standard deviation of carrier‐phase
+ bias (ambiguity) (cycle/sqrt(s)) */
+
+ double sigma_iono = configuration->property(role + ".sigma_iono", 1e-3); /* Set the process noise standard deviation of vertical ionospheric delay per 10 km baseline (m/sqrt(s)). */
+
+ double sigma_trop = configuration->property(role + ".sigma_trop", 1e-4); /* Set the process noise standard deviation of zenith tropospheric delay (m/sqrt(s)). */
+
+ double sigma_acch = configuration->property(role + ".sigma_acch", 1e-1); /* Set the process noise standard deviation of the receiver acceleration as
+ the horizontal component. (m/s2/sqrt(s)). If Receiver Dynamics is set to OFF, they are not used. */
+
+ double sigma_accv = configuration->property(role + ".sigma_accv", 1e-2); /* Set the process noise standard deviation of the receiver acceleration as
+ the vertical component. (m/s2/sqrt(s)). If Receiver Dynamics is set to OFF, they are not used. */
+
+ double sigma_pos = configuration->property(role + ".sigma_pos", 0.0);
+
+ snrmask_t snrmask = { {}, {{},{}} };
+
+ prcopt_t rtklib_configuration_options = {positioning_mode, /* positioning mode (PMODE_XXX) see src/algorithms/libs/rtklib/rtklib.h */
+ 0, /* solution type (0:forward,1:backward,2:combined) */
+ number_of_frequencies, /* number of frequencies (1:L1, 2:L1+L2, 3:L1+L2+L5)*/
+ navigation_system, /* navigation system */
+ elevation_mask * D2R, /* elevation mask angle (degrees) */
+ snrmask, /* snrmask_t snrmask SNR mask */
+ 0, /* satellite ephemeris/clock (EPHOPT_XXX) */
+ integer_ambiguity_resolution_gps, /* AR mode (0:off,1:continuous,2:instantaneous,3:fix and hold,4:ppp-ar) */
+ integer_ambiguity_resolution_glo, /* GLONASS AR mode (0:off,1:on,2:auto cal,3:ext cal) */
+ integer_ambiguity_resolution_bds, /* BeiDou AR mode (0:off,1:on) */
+ outage_reset_ambiguity, /* obs outage count to reset bias */
+ min_lock_to_fix_ambiguity, /* min lock count to fix ambiguity */
+ 10, /* min fix count to hold ambiguity */
+ 1, /* max iteration to resolve ambiguity */
+ iono_model, /* ionosphere option (IONOOPT_XXX) */
+ trop_model, /* troposphere option (TROPOPT_XXX) */
+ dynamics_model, /* dynamics model (0:none, 1:velocity, 2:accel) */
+ 0, /* earth tide correction (0:off,1:solid,2:solid+otl+pole) */
+ number_filter_iter, /* number of filter iteration */
+ 0, /* code smoothing window size (0:none) */
+ 0, /* interpolate reference obs (for post mission) */
+ 0, /* sbssat_t sbssat SBAS correction options */
+ 0, /* sbsion_t sbsion[MAXBAND+1] SBAS satellite selection (0:all) */
+ 0, /* rover position for fixed mode */
+ 0, /* base position for relative mode */
+ /* 0:pos in prcopt, 1:average of single pos, */
+ /* 2:read from file, 3:rinex header, 4:rtcm pos */
+ {100.0,100.0,100.0}, /* eratio[NFREQ] code/phase error ratio */
+ {100.0,0.003,0.003,0.0,1.0}, /* err[5]: measurement error factor [0]:reserved, [1-3]:error factor a/b/c of phase (m) , [4]:doppler frequency (hz) */
+ {bias_0,iono_0,trop_0}, /* std[3]: initial-state std [0]bias,[1]iono [2]trop*/
+ {sigma_bias,sigma_iono,sigma_trop,sigma_acch,sigma_accv,sigma_pos}, /* prn[6] process-noise std */
+ 5e-12, /* sclkstab: satellite clock stability (sec/sec) */
+ {min_ratio_to_fix_ambiguity,0.9999,0.25,0.1,0.05,0.0,0.0,0.0}, /* thresar[8]: AR validation threshold */
+ min_elevation_to_fix_ambiguity, /* elevation mask of AR for rising satellite (deg) */
+ 0.0, /* elevation mask to hold ambiguity (deg) */
+ slip_threshold, /* slip threshold of geometry-free phase (m) */
+ 30.0, /* max difference of time (sec) */
+ threshold_reject_innovation, /* reject threshold of innovation (m) */
+ threshold_reject_gdop, /* reject threshold of gdop */
+ {}, /* double baseline[2] baseline length constraint {const,sigma} (m) */
+ {}, /* double ru[3] rover position for fixed mode {x,y,z} (ecef) (m) */
+ {}, /* double rb[3] base position for relative mode {x,y,z} (ecef) (m) */
+ {"",""}, /* char anttype[2][MAXANT] antenna types {rover,base} */
+ {{},{}}, /* double antdel[2][3] antenna delta {{rov_e,rov_n,rov_u},{ref_e,ref_n,ref_u}} */
+ {}, /* pcv_t pcvr[2] receiver antenna parameters {rov,base} */
+ {}, /* unsigned char exsats[MAXSAT] excluded satellites (1:excluded, 2:included) */
+ 0, /* max averaging epoches */
+ 0, /* initialize by restart */
+ 1, /* output single by dgps/float/fix/ppp outage */
+ {"",""}, /* char rnxopt[2][256] rinex options {rover,base} */
+ {sat_PCV,rec_PCV,phwindup,reject_GPS_IIA,raim_fde}, /* posopt[6] positioning options [0]: satellite and receiver antenna PCV model; [1]: interpolate antenna parameters; [2]: apply phase wind-up correction for PPP modes; [3]: exclude measurements of GPS Block IIA satellites satellite [4]: RAIM FDE (fault detection and exclusion) [5]: handle day-boundary clock jump */
+ 0, /* solution sync mode (0:off,1:on) */
+ {{},{}}, /* odisp[2][6*11] ocean tide loading parameters {rov,base} */
+ { {}, {{},{}}, {{},{}}, {}, {} }, /* exterr_t exterr extended receiver error model */
+ 0, /* disable L2-AR */
+ {} /* char pppopt[256] ppp option "-GAP_RESION=" default gap to reset iono parameters (ep) */
+ };
+
+ sol_t sol_ = {{0,0}, {0,0,0,0,0,0}, {0,0,0,0,0,0}, {0,0,0,0,0,0}, '0', '0', '0', 0, 0, 0 };
+
+ ambc_t ambc_ = { {{0,0}, {0,0}, {0,0}, {0,0}}, {0, 0, 0, 0}, {}, {}, 0, {'0'}};
+
+ ssat_t ssat_ = { '0', /* navigation system */
+ '0', /* valid satellite flag single */
+ {0.0}, /* azel[2] azimuth/elevation angles {az,el} (rad) */
+ {0.0}, /* residuals of pseudorange (m) */
+ {0.0}, /* residuals of carrier-phase (m) */
+ {'0'}, /* valid satellite flag */
+ {'0'}, /* signal strength (0.25 dBHz) */
+ {'0'}, /* ambiguity fix flag (1:fix,2:float,3:hold) */
+ {'0'}, /* cycle-slip flag */
+ {'0'}, /* half-cycle valid flag */
+ {}, /* lock counter of phase */
+ {}, /* obs outage counter of phase */
+ {}, /* cycle-slip counter */
+ {}, /* reject counter */
+ 0.0, /* geometry-free phase L1-L2 (m) */
+ 0.0, /* geometry-free phase L1-L5 (m) */
+ 0.0, /* MW-LC (m) */
+ 0.0, /* phase windup (cycle) */
+ {{{0,0}},{{0,0}}}, /* previous carrier-phase time */
+ {{},{}} /* previous carrier-phase observable (cycle) */
+ };
+
+ int nx = 0; /* Number of estimated states */
+ if(positioning_mode <= PMODE_FIXED) nx = 4 + 3;
+ if(positioning_mode >= PMODE_PPP_KINEMA) nx = NX_PPP(&rtklib_configuration_options);
+ int na = NP_PPP(&rtklib_configuration_options);
+
+ double x[nx];
+ double Px[nx*nx];
+ double xa[na];
+ double Pa[na*na];
+ rtk = { sol_, /* RTK solution */
+ {}, /* base position/velocity (ecef) (m|m/s) */
+ nx, /* number of float states */
+ na, /* number of fixed states */
+ output_rate_ms / 1000.0, /* time difference between current and previous (s) */
+ x, /* float states */
+ Px, /* float states covariance */
+ xa, /* fixed states */
+ Pa, /* fixed states covariance */
+ 3, /* number of continuous fixes of ambiguity */
+ {ambc_}, /* ambiguity control */
+ {ssat_}, /* satellite status */
+ 256, /* bytes in error message buffer */
+ {'0'}, /* error message buffer */
+ rtklib_configuration_options /* processing options */
+ };
+
+ // make PVT object
+ pvt_ = rtklib_make_pvt_cc(in_streams_, dump_, dump_filename_, output_rate_ms, display_rate_ms, flag_nmea_tty_port, nmea_dump_filename, nmea_dump_devname, rinex_version, flag_rtcm_server, flag_rtcm_tty_port, rtcm_tcp_port, rtcm_station_id, rtcm_msg_rate_ms, rtcm_dump_devname, type_of_receiver, rtk);
+ DLOG(INFO) << "pvt(" << pvt_->unique_id() << ")";
+}
+
+
+bool RtklibPvt::save_assistance_to_XML()
+{
+ LOG(INFO) << "SUPL: Try to save GPS ephemeris to XML file " << eph_xml_filename_;
+ std::map eph_map = pvt_->get_GPS_L1_ephemeris_map();
+
+ if (eph_map.size() > 0)
+ {
+ try
+ {
+ std::ofstream ofs(eph_xml_filename_.c_str(), std::ofstream::trunc | std::ofstream::out);
+ boost::archive::xml_oarchive xml(ofs);
+ xml << boost::serialization::make_nvp("GNSS-SDR_ephemeris_map", eph_map);
+ ofs.close();
+ LOG(INFO) << "Saved GPS L1 Ephemeris map data";
+ }
+ catch (std::exception& e)
+ {
+ LOG(WARNING) << e.what();
+ return false;
+ }
+ return true; // return variable (true == succeeded)
+ }
+ else
+ {
+ LOG(WARNING) << "Failed to save Ephemeris, map is empty";
+ return false;
+ }
+}
+
+
+RtklibPvt::~RtklibPvt()
+{
+ save_assistance_to_XML();
+}
+
+
+void RtklibPvt::connect(gr::top_block_sptr top_block)
+{
+ if(top_block) { /* top_block is not null */};
+ // Nothing to connect internally
+ DLOG(INFO) << "nothing to connect internally";
+}
+
+
+void RtklibPvt::disconnect(gr::top_block_sptr top_block)
+{
+ if(top_block) { /* top_block is not null */};
+ // Nothing to disconnect
+}
+
+
+gr::basic_block_sptr RtklibPvt::get_left_block()
+{
+ return pvt_;
+}
+
+
+gr::basic_block_sptr RtklibPvt::get_right_block()
+{
+ return pvt_; // this is a sink, nothing downstream
+}
diff --git a/src/algorithms/PVT/adapters/hybrid_pvt.h b/src/algorithms/PVT/adapters/rtklib_pvt.h
similarity index 81%
rename from src/algorithms/PVT/adapters/hybrid_pvt.h
rename to src/algorithms/PVT/adapters/rtklib_pvt.h
index c2a5c30d3..33d04ecf0 100644
--- a/src/algorithms/PVT/adapters/hybrid_pvt.h
+++ b/src/algorithms/PVT/adapters/rtklib_pvt.h
@@ -1,8 +1,7 @@
/*!
- * \file hybrid_pvt.h
- * \brief Interface of an adapter of a GALILEO E1 PVT solver block to a
- * PvtInterface.
- * \author Javier Arribas, 2013. jarribas(at)cttc.es
+ * \file rtklib_pvt.h
+ * \brief Interface of a Position Velocity and Time computation block
+ * \author Javier Arribas, 2017. jarribas(at)cttc.es
*
* -------------------------------------------------------------------------
*
@@ -31,12 +30,12 @@
-#ifndef GNSS_SDR_HYBRID_PVT_H_
-#define GNSS_SDR_HYBRID_PVT_H_
+#ifndef GNSS_SDR_RTKLIB_PVT_H_
+#define GNSS_SDR_RTKLIB_PVT_H_
#include
#include "pvt_interface.h"
-#include "hybrid_pvt_cc.h"
+#include "rtklib_pvt_cc.h"
class ConfigurationInterface;
@@ -44,25 +43,25 @@ class ConfigurationInterface;
/*!
* \brief This class implements a PvtInterface for Galileo E1
*/
-class HybridPvt : public PvtInterface
+class RtklibPvt : public PvtInterface
{
public:
- HybridPvt(ConfigurationInterface* configuration,
+ RtklibPvt(ConfigurationInterface* configuration,
std::string role,
unsigned int in_streams,
unsigned int out_streams);
- virtual ~HybridPvt();
+ virtual ~RtklibPvt();
std::string role()
{
return role_;
}
- //! Returns "Hybrid_Pvt"
+ //! Returns "RTKLIB_Pvt"
std::string implementation()
{
- return "Hybrid_PVT";
+ return "RTKLIB_PVT";
}
void connect(gr::top_block_sptr top_block);
@@ -82,13 +81,16 @@ public:
}
private:
- hybrid_pvt_cc_sptr pvt_;
+ rtklib_pvt_cc_sptr pvt_;
+
+ rtk_t rtk;
+
bool dump_;
std::string dump_filename_;
std::string role_;
unsigned int in_streams_;
unsigned int out_streams_;
-
+
std::string eph_xml_filename_;
bool save_assistance_to_XML();
};
diff --git a/src/algorithms/PVT/gnuradio_blocks/CMakeLists.txt b/src/algorithms/PVT/gnuradio_blocks/CMakeLists.txt
index 1eb1eaf1c..a80c236a4 100644
--- a/src/algorithms/PVT/gnuradio_blocks/CMakeLists.txt
+++ b/src/algorithms/PVT/gnuradio_blocks/CMakeLists.txt
@@ -16,10 +16,8 @@
# along with GNSS-SDR. If not, see .
#
-set(PVT_GR_BLOCKS_SOURCES
- gps_l1_ca_pvt_cc.cc
- galileo_e1_pvt_cc.cc
- hybrid_pvt_cc.cc
+set(PVT_GR_BLOCKS_SOURCES
+ rtklib_pvt_cc.cc
)
include_directories(
@@ -28,6 +26,7 @@ include_directories(
${CMAKE_SOURCE_DIR}/src/core/interfaces
${CMAKE_SOURCE_DIR}/src/core/receiver
${CMAKE_SOURCE_DIR}/src/algorithms/PVT/libs
+ ${CMAKE_SOURCE_DIR}/src/algorithms/libs/rtklib
${ARMADILLO_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${GLOG_INCLUDE_DIRS}
diff --git a/src/algorithms/PVT/gnuradio_blocks/galileo_e1_pvt_cc.cc b/src/algorithms/PVT/gnuradio_blocks/galileo_e1_pvt_cc.cc
deleted file mode 100644
index e7c1f9813..000000000
--- a/src/algorithms/PVT/gnuradio_blocks/galileo_e1_pvt_cc.cc
+++ /dev/null
@@ -1,424 +0,0 @@
-/*!
- * \file galileo_e1_pvt_cc.cc
- * \brief Implementation of a Position Velocity and Time computation block for GPS L1 C/A
- * \author Javier Arribas, 2013. jarribas(at)cttc.es
- *
- * -------------------------------------------------------------------------
- *
- * Copyright (C) 2010-2015 (see AUTHORS file for a list of contributors)
- *
- * GNSS-SDR is a software defined Global Navigation
- * Satellite Systems receiver
- *
- * This file is part of GNSS-SDR.
- *
- * GNSS-SDR is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GNSS-SDR is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNSS-SDR. If not, see .
- *
- * -------------------------------------------------------------------------
- */
-
-#include "galileo_e1_pvt_cc.h"
-#include
-#include
-#include