From 299be53c22f7de6ecfea35cac971735219cf5c4c Mon Sep 17 00:00:00 2001
From: Marc Majoral <majoralmarc@gmail.com>
Date: Tue, 5 Oct 2021 21:38:32 +0200
Subject: [PATCH] updated the FPGA tracking module following the changes made
 in commit 58c2a432393caadafdd352b7a5b66c4a209d2d62 (Oct 4, 2021) for the SW
 tracking (improving the reliability of GPS L1 CA symbol synchronization)

---
 .../gnuradio_blocks/dll_pll_veml_tracking_fpga.cc  | 14 ++++++++++++--
 .../gnuradio_blocks/dll_pll_veml_tracking_fpga.h   |  1 +
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking_fpga.cc b/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking_fpga.cc
index 9dcade032..3f54943c4 100644
--- a/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking_fpga.cc
+++ b/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking_fpga.cc
@@ -132,8 +132,8 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga &
                     d_trk_parameters.y_intercept = 1.0;
                     // symbol integration: 20 trk symbols (20 ms) = 1 tlm bit
                     // set the bit transition pattern in secondary code to obtain bit synchronization
-                    d_secondary_code_length = static_cast<uint32_t>(GPS_CA_BIT_TRANSITION_SYMBOLS_LENGTH_SYMBOLS);
-                    d_secondary_code_string = GPS_CA_BIT_TRANSITION_SYMBOLS_STR;
+                    d_secondary_code_length = static_cast<uint32_t>(GPS_CA_PREAMBLE_LENGTH_SYMBOLS);
+                    d_secondary_code_string = GPS_CA_PREAMBLE_SYMBOLS_STR;
                     d_symbols_per_bit = GPS_CA_TELEMETRY_SYMBOLS_PER_BIT;
                 }
             else if (d_signal_type == "2S")
@@ -466,6 +466,7 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga &
     d_stop_tracking = false;
 
     d_acc_carrier_phase_initialized = false;
+    d_Flag_PLL_180_deg_phase_locked = false;
 }
 
 
@@ -585,6 +586,14 @@ bool dll_pll_veml_tracking_fpga::acquire_secondary()
 
     if (abs(corr_value) == static_cast<int32_t>(d_secondary_code_length))
         {
+            if (corr_value < 0)
+                {
+                    d_Flag_PLL_180_deg_phase_locked = true;
+                }
+            else
+                {
+                    d_Flag_PLL_180_deg_phase_locked = false;
+                }
             return true;
         }
 
@@ -2002,6 +2011,7 @@ int dll_pll_veml_tracking_fpga::general_work(int noutput_items __attribute__((un
             current_synchro_data.fs = static_cast<int64_t>(d_trk_parameters.fs_in);
             current_synchro_data.Tracking_sample_counter = d_sample_counter_next;  // d_sample_counter;
             current_synchro_data.Flag_valid_symbol_output = !loss_of_lock;
+            current_synchro_data.Flag_PLL_180_deg_phase_locked = d_Flag_PLL_180_deg_phase_locked;
             *out[0] = current_synchro_data;
             return 1;
         }
diff --git a/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking_fpga.h b/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking_fpga.h
index d00385fb9..fae0911d6 100644
--- a/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking_fpga.h
+++ b/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking_fpga.h
@@ -240,6 +240,7 @@ private:
     bool d_current_extended_correlation_in_fpga;
     bool d_stop_tracking;
     bool d_sc_demodulate_enabled;
+    bool d_Flag_PLL_180_deg_phase_locked;
 };