mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-01-31 11:19:18 +00:00
Improve internal handling of Gnss_Synchro objects
Added noexcept move constructor and move assignment operator. Small refactor of includes
This commit is contained in:
parent
fbd3485aed
commit
b9c84a451e
@ -10,6 +10,12 @@ SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades <carles.fernandez@cttc
|
|||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
### Improvements in Efficiency:
|
||||||
|
|
||||||
|
- Faster internal handling of `Gnss_Synchro` objects by reducing the amount of
|
||||||
|
copying via adding `noexcept` move constructor and move assignment operators,
|
||||||
|
so the move semantics are also used in STL containers.
|
||||||
|
|
||||||
### Improvements in Maintainability:
|
### Improvements in Maintainability:
|
||||||
|
|
||||||
- The software can now be built against the GNU Radio 3.9 API that uses C++11
|
- The software can now be built against the GNU Radio 3.9 API that uses C++11
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
#include "beidou_b3i_signal_processing.h"
|
#include "beidou_b3i_signal_processing.h"
|
||||||
#include "galileo_e1_signal_processing.h"
|
#include "galileo_e1_signal_processing.h"
|
||||||
#include "galileo_e5_signal_processing.h"
|
#include "galileo_e5_signal_processing.h"
|
||||||
|
#include "gnss_satellite.h"
|
||||||
#include "gnss_sdr_create_directory.h"
|
#include "gnss_sdr_create_directory.h"
|
||||||
#include "gnss_synchro.h"
|
#include "gnss_synchro.h"
|
||||||
#include "gps_l2c_signal.h"
|
#include "gps_l2c_signal.h"
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#include "Galileo_E5a.h"
|
#include "Galileo_E5a.h"
|
||||||
#include "MATH_CONSTANTS.h"
|
#include "MATH_CONSTANTS.h"
|
||||||
#include "fpga_multicorrelator.h"
|
#include "fpga_multicorrelator.h"
|
||||||
|
#include "gnss_satellite.h"
|
||||||
#include "gnss_sdr_create_directory.h"
|
#include "gnss_sdr_create_directory.h"
|
||||||
#include "gnss_synchro.h"
|
#include "gnss_synchro.h"
|
||||||
#include "gps_sdr_signal_processing.h"
|
#include "gps_sdr_signal_processing.h"
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#include "GPS_L1_CA.h"
|
#include "GPS_L1_CA.h"
|
||||||
#include "Galileo_E1.h"
|
#include "Galileo_E1.h"
|
||||||
#include "galileo_e1_signal_processing.h"
|
#include "galileo_e1_signal_processing.h"
|
||||||
|
#include "gnss_satellite.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
#include "lock_detectors.h"
|
#include "lock_detectors.h"
|
||||||
#include "tcp_communication.h"
|
#include "tcp_communication.h"
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "glonass_l1_ca_dll_pll_c_aid_tracking_cc.h"
|
#include "glonass_l1_ca_dll_pll_c_aid_tracking_cc.h"
|
||||||
#include "GLONASS_L1_L2_CA.h"
|
#include "GLONASS_L1_L2_CA.h"
|
||||||
#include "glonass_l1_signal_processing.h"
|
#include "glonass_l1_signal_processing.h"
|
||||||
|
#include "gnss_satellite.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
#include "lock_detectors.h"
|
#include "lock_detectors.h"
|
||||||
#include "tracking_discriminators.h"
|
#include "tracking_discriminators.h"
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "glonass_l1_ca_dll_pll_c_aid_tracking_sc.h"
|
#include "glonass_l1_ca_dll_pll_c_aid_tracking_sc.h"
|
||||||
#include "GLONASS_L1_L2_CA.h"
|
#include "GLONASS_L1_L2_CA.h"
|
||||||
#include "glonass_l1_signal_processing.h"
|
#include "glonass_l1_signal_processing.h"
|
||||||
|
#include "gnss_satellite.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
#include "lock_detectors.h"
|
#include "lock_detectors.h"
|
||||||
#include "tracking_discriminators.h"
|
#include "tracking_discriminators.h"
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "glonass_l1_ca_dll_pll_tracking_cc.h"
|
#include "glonass_l1_ca_dll_pll_tracking_cc.h"
|
||||||
#include "GLONASS_L1_L2_CA.h"
|
#include "GLONASS_L1_L2_CA.h"
|
||||||
#include "glonass_l1_signal_processing.h"
|
#include "glonass_l1_signal_processing.h"
|
||||||
|
#include "gnss_satellite.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
#include "lock_detectors.h"
|
#include "lock_detectors.h"
|
||||||
#include "tracking_discriminators.h"
|
#include "tracking_discriminators.h"
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#include "glonass_l2_ca_dll_pll_c_aid_tracking_cc.h"
|
#include "glonass_l2_ca_dll_pll_c_aid_tracking_cc.h"
|
||||||
#include "GLONASS_L1_L2_CA.h"
|
#include "GLONASS_L1_L2_CA.h"
|
||||||
#include "glonass_l2_signal_processing.h"
|
#include "glonass_l2_signal_processing.h"
|
||||||
|
#include "gnss_satellite.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
#include "lock_detectors.h"
|
#include "lock_detectors.h"
|
||||||
#include "tracking_discriminators.h"
|
#include "tracking_discriminators.h"
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#include "glonass_l2_ca_dll_pll_c_aid_tracking_sc.h"
|
#include "glonass_l2_ca_dll_pll_c_aid_tracking_sc.h"
|
||||||
#include "GLONASS_L1_L2_CA.h"
|
#include "GLONASS_L1_L2_CA.h"
|
||||||
#include "glonass_l2_signal_processing.h"
|
#include "glonass_l2_signal_processing.h"
|
||||||
|
#include "gnss_satellite.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
#include "lock_detectors.h"
|
#include "lock_detectors.h"
|
||||||
#include "tracking_discriminators.h"
|
#include "tracking_discriminators.h"
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "glonass_l2_ca_dll_pll_tracking_cc.h"
|
#include "glonass_l2_ca_dll_pll_tracking_cc.h"
|
||||||
#include "GLONASS_L1_L2_CA.h"
|
#include "GLONASS_L1_L2_CA.h"
|
||||||
#include "glonass_l2_signal_processing.h"
|
#include "glonass_l2_signal_processing.h"
|
||||||
|
#include "gnss_satellite.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
#include "lock_detectors.h"
|
#include "lock_detectors.h"
|
||||||
#include "tracking_discriminators.h"
|
#include "tracking_discriminators.h"
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
#include "gps_l1_ca_dll_pll_tracking_gpu_cc.h"
|
#include "gps_l1_ca_dll_pll_tracking_gpu_cc.h"
|
||||||
#include "GPS_L1_CA.h"
|
#include "GPS_L1_CA.h"
|
||||||
|
#include "gnss_satellite.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
#include "gps_sdr_signal_processing.h"
|
#include "gps_sdr_signal_processing.h"
|
||||||
#include "lock_detectors.h"
|
#include "lock_detectors.h"
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
#include "gps_l1_ca_kf_tracking_cc.h"
|
#include "gps_l1_ca_kf_tracking_cc.h"
|
||||||
#include "GPS_L1_CA.h"
|
#include "GPS_L1_CA.h"
|
||||||
|
#include "gnss_satellite.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
#include "gps_sdr_signal_processing.h"
|
#include "gps_sdr_signal_processing.h"
|
||||||
#include "lock_detectors.h"
|
#include "lock_detectors.h"
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
#include "gps_l1_ca_tcp_connector_tracking_cc.h"
|
#include "gps_l1_ca_tcp_connector_tracking_cc.h"
|
||||||
#include "GPS_L1_CA.h"
|
#include "GPS_L1_CA.h"
|
||||||
|
#include "gnss_satellite.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
#include "gps_sdr_signal_processing.h"
|
#include "gps_sdr_signal_processing.h"
|
||||||
#include "lock_detectors.h"
|
#include "lock_detectors.h"
|
||||||
|
@ -22,7 +22,6 @@
|
|||||||
#ifndef GNSS_SDR_GNSS_SYNCHRO_H
|
#ifndef GNSS_SDR_GNSS_SYNCHRO_H
|
||||||
#define GNSS_SDR_GNSS_SYNCHRO_H
|
#define GNSS_SDR_GNSS_SYNCHRO_H
|
||||||
|
|
||||||
#include "gnss_signal.h"
|
|
||||||
#include <boost/serialization/nvp.hpp>
|
#include <boost/serialization/nvp.hpp>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
@ -68,6 +67,129 @@ public:
|
|||||||
bool Flag_valid_pseudorange; //!< Set by Observables processing block
|
bool Flag_valid_pseudorange; //!< Set by Observables processing block
|
||||||
double interp_TOW_ms; //!< Set by Observables processing block
|
double interp_TOW_ms; //!< Set by Observables processing block
|
||||||
|
|
||||||
|
/// Constructor
|
||||||
|
Gnss_Synchro()
|
||||||
|
{
|
||||||
|
System = 0;
|
||||||
|
Signal[0] = 0;
|
||||||
|
Signal[1] = 0;
|
||||||
|
Signal[2] = '\0';
|
||||||
|
PRN = 0U;
|
||||||
|
Channel_ID = 0;
|
||||||
|
|
||||||
|
Acq_delay_samples = 0.0;
|
||||||
|
Acq_doppler_hz = 0.0;
|
||||||
|
Acq_samplestamp_samples = 0UL;
|
||||||
|
Acq_doppler_step = 0U;
|
||||||
|
Flag_valid_acquisition = false;
|
||||||
|
|
||||||
|
fs = 0L;
|
||||||
|
Prompt_I = 0.0;
|
||||||
|
Prompt_Q = 0.0;
|
||||||
|
CN0_dB_hz = 0.0;
|
||||||
|
Carrier_Doppler_hz = 0.0;
|
||||||
|
Carrier_phase_rads = 0.0;
|
||||||
|
Code_phase_samples = 0.0;
|
||||||
|
Tracking_sample_counter = 0UL;
|
||||||
|
Flag_valid_symbol_output = false;
|
||||||
|
correlation_length_ms = 0;
|
||||||
|
|
||||||
|
Flag_valid_word = false;
|
||||||
|
TOW_at_current_symbol_ms = 0U;
|
||||||
|
|
||||||
|
Pseudorange_m = 0.0;
|
||||||
|
RX_time = 0.0;
|
||||||
|
Flag_valid_pseudorange = false;
|
||||||
|
interp_TOW_ms = 0.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
~Gnss_Synchro() = default; //!< Default destructor
|
||||||
|
|
||||||
|
/// Copy constructor
|
||||||
|
Gnss_Synchro(Gnss_Synchro&& other) noexcept
|
||||||
|
{
|
||||||
|
*this = other;
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Copy assignment operator
|
||||||
|
Gnss_Synchro& operator=(const Gnss_Synchro& rhs)
|
||||||
|
{
|
||||||
|
// Only do assignment if RHS is a different object from this.
|
||||||
|
if (this != &rhs)
|
||||||
|
{
|
||||||
|
this->System = rhs.System;
|
||||||
|
this->Signal[0] = rhs.Signal[0];
|
||||||
|
this->Signal[1] = rhs.Signal[1];
|
||||||
|
this->Signal[2] = rhs.Signal[2];
|
||||||
|
this->PRN = rhs.PRN;
|
||||||
|
this->Channel_ID = rhs.Channel_ID;
|
||||||
|
this->Acq_delay_samples = rhs.Acq_delay_samples;
|
||||||
|
this->Acq_doppler_hz = rhs.Acq_doppler_hz;
|
||||||
|
this->Acq_samplestamp_samples = rhs.Acq_samplestamp_samples;
|
||||||
|
this->Acq_doppler_step = rhs.Acq_doppler_step;
|
||||||
|
this->Flag_valid_acquisition = rhs.Flag_valid_acquisition;
|
||||||
|
this->fs = rhs.fs;
|
||||||
|
this->Prompt_I = rhs.Prompt_I;
|
||||||
|
this->Prompt_Q = rhs.Prompt_Q;
|
||||||
|
this->CN0_dB_hz = rhs.CN0_dB_hz;
|
||||||
|
this->Carrier_Doppler_hz = rhs.Carrier_Doppler_hz;
|
||||||
|
this->Carrier_phase_rads = rhs.Carrier_phase_rads;
|
||||||
|
this->Code_phase_samples = rhs.Code_phase_samples;
|
||||||
|
this->Tracking_sample_counter = rhs.Tracking_sample_counter;
|
||||||
|
this->Flag_valid_symbol_output = rhs.Flag_valid_symbol_output;
|
||||||
|
this->correlation_length_ms = rhs.correlation_length_ms;
|
||||||
|
this->Flag_valid_word = rhs.Flag_valid_word;
|
||||||
|
this->TOW_at_current_symbol_ms = rhs.TOW_at_current_symbol_ms;
|
||||||
|
this->Pseudorange_m = rhs.Pseudorange_m;
|
||||||
|
this->RX_time = rhs.RX_time;
|
||||||
|
this->Flag_valid_pseudorange = rhs.Flag_valid_pseudorange;
|
||||||
|
this->interp_TOW_ms = rhs.interp_TOW_ms;
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Move constructor
|
||||||
|
Gnss_Synchro(const Gnss_Synchro& other) noexcept
|
||||||
|
{
|
||||||
|
*this = other;
|
||||||
|
};
|
||||||
|
|
||||||
|
/// Move assignment operator
|
||||||
|
Gnss_Synchro& operator=(Gnss_Synchro&& other) noexcept
|
||||||
|
{
|
||||||
|
if (this != &other)
|
||||||
|
{
|
||||||
|
this->System = other.System;
|
||||||
|
this->Signal[0] = other.Signal[0];
|
||||||
|
this->Signal[1] = other.Signal[1];
|
||||||
|
this->Signal[2] = other.Signal[2];
|
||||||
|
this->PRN = other.PRN;
|
||||||
|
this->Channel_ID = other.Channel_ID;
|
||||||
|
this->Acq_delay_samples = other.Acq_delay_samples;
|
||||||
|
this->Acq_doppler_hz = other.Acq_doppler_hz;
|
||||||
|
this->Acq_samplestamp_samples = other.Acq_samplestamp_samples;
|
||||||
|
this->Acq_doppler_step = other.Acq_doppler_step;
|
||||||
|
this->Flag_valid_acquisition = other.Flag_valid_acquisition;
|
||||||
|
this->fs = other.fs;
|
||||||
|
this->Prompt_I = other.Prompt_I;
|
||||||
|
this->Prompt_Q = other.Prompt_Q;
|
||||||
|
this->CN0_dB_hz = other.CN0_dB_hz;
|
||||||
|
this->Carrier_Doppler_hz = other.Carrier_Doppler_hz;
|
||||||
|
this->Carrier_phase_rads = other.Carrier_phase_rads;
|
||||||
|
this->Code_phase_samples = other.Code_phase_samples;
|
||||||
|
this->Tracking_sample_counter = other.Tracking_sample_counter;
|
||||||
|
this->Flag_valid_symbol_output = other.Flag_valid_symbol_output;
|
||||||
|
this->correlation_length_ms = other.correlation_length_ms;
|
||||||
|
this->Flag_valid_word = other.Flag_valid_word;
|
||||||
|
this->TOW_at_current_symbol_ms = other.TOW_at_current_symbol_ms;
|
||||||
|
this->Pseudorange_m = other.Pseudorange_m;
|
||||||
|
this->RX_time = other.RX_time;
|
||||||
|
this->Flag_valid_pseudorange = other.Flag_valid_pseudorange;
|
||||||
|
this->interp_TOW_ms = other.interp_TOW_ms;
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief This member function serializes and restores
|
* \brief This member function serializes and restores
|
||||||
* Gnss_Synchro objects from a byte stream.
|
* Gnss_Synchro objects from a byte stream.
|
||||||
|
Loading…
Reference in New Issue
Block a user