mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-01-29 02:14:51 +00:00
Fix defects detected by coverity scan
This commit is contained in:
parent
d6bf84b222
commit
fcfe63ba08
@ -85,6 +85,10 @@ GpsL2MPcpsAcquisitionFpga::GpsL2MPcpsAcquisitionFpga(
|
|||||||
//acq_parameters.samples_per_ms = static_cast<int>(std::round(static_cast<double>(fs_in_) * 0.001));
|
//acq_parameters.samples_per_ms = static_cast<int>(std::round(static_cast<double>(fs_in_) * 0.001));
|
||||||
acq_parameters.samples_per_code = nsamples_total;
|
acq_parameters.samples_per_code = nsamples_total;
|
||||||
|
|
||||||
|
acq_parameters.downsampling_factor = configuration_->property(role + ".downsampling_factor", 1.0);
|
||||||
|
acq_parameters.total_block_exp = configuration_->property(role + ".total_block_exp", 14);
|
||||||
|
acq_parameters.excludelimit = static_cast<uint32_t>(std::round(static_cast<double>(fs_in_) / GPS_L2_M_CODE_RATE_HZ));
|
||||||
|
|
||||||
// compute all the GPS L1 PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time
|
// compute all the GPS L1 PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time
|
||||||
// a channel is assigned)
|
// a channel is assigned)
|
||||||
auto* fft_if = new gr::fft::fft_complex(vector_length, true); // Direct FFT
|
auto* fft_if = new gr::fft::fft_complex(vector_length, true); // Direct FFT
|
||||||
@ -220,6 +224,7 @@ void GpsL2MPcpsAcquisitionFpga::reset()
|
|||||||
acquisition_fpga_->set_active(true);
|
acquisition_fpga_->set_active(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GpsL2MPcpsAcquisitionFpga::set_state(int state)
|
void GpsL2MPcpsAcquisitionFpga::set_state(int state)
|
||||||
{
|
{
|
||||||
acquisition_fpga_->set_state(state);
|
acquisition_fpga_->set_state(state);
|
||||||
|
@ -63,6 +63,7 @@ pcps_acquisition_fpga::pcps_acquisition_fpga(pcpsconf_fpga_t conf_) : gr::block(
|
|||||||
d_num_doppler_bins = 0U;
|
d_num_doppler_bins = 0U;
|
||||||
d_threshold = 0.0;
|
d_threshold = 0.0;
|
||||||
d_doppler_step = 0U;
|
d_doppler_step = 0U;
|
||||||
|
d_doppler_index = 0U;
|
||||||
d_test_statistics = 0.0;
|
d_test_statistics = 0.0;
|
||||||
d_channel = 0U;
|
d_channel = 0U;
|
||||||
d_gnss_synchro = nullptr;
|
d_gnss_synchro = nullptr;
|
||||||
|
@ -39,9 +39,6 @@
|
|||||||
|
|
||||||
using google::LogMessage;
|
using google::LogMessage;
|
||||||
|
|
||||||
void GalileoE5aDllPllTrackingFpga::stop_tracking()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
GalileoE5aDllPllTrackingFpga::GalileoE5aDllPllTrackingFpga(
|
GalileoE5aDllPllTrackingFpga::GalileoE5aDllPllTrackingFpga(
|
||||||
ConfigurationInterface *configuration, const std::string &role,
|
ConfigurationInterface *configuration, const std::string &role,
|
||||||
@ -186,6 +183,11 @@ void GalileoE5aDllPllTrackingFpga::start_tracking()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void GalileoE5aDllPllTrackingFpga::stop_tracking()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set tracking channel unique ID
|
* Set tracking channel unique ID
|
||||||
*/
|
*/
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include "dll_pll_veml_tracking_fpga.h"
|
#include "dll_pll_veml_tracking_fpga.h"
|
||||||
#include "tracking_interface.h"
|
#include "tracking_interface.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
class ConfigurationInterface;
|
class ConfigurationInterface;
|
||||||
|
|
||||||
@ -64,7 +65,7 @@ public:
|
|||||||
|
|
||||||
inline size_t item_size() override
|
inline size_t item_size() override
|
||||||
{
|
{
|
||||||
return item_size_;
|
return sizeof(int);
|
||||||
}
|
}
|
||||||
|
|
||||||
void connect(gr::top_block_sptr top_block) override;
|
void connect(gr::top_block_sptr top_block) override;
|
||||||
@ -91,13 +92,11 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
dll_pll_veml_tracking_fpga_sptr tracking_fpga_sc;
|
dll_pll_veml_tracking_fpga_sptr tracking_fpga_sc;
|
||||||
size_t item_size_;
|
|
||||||
uint32_t channel_;
|
uint32_t channel_;
|
||||||
std::string role_;
|
std::string role_;
|
||||||
uint32_t in_streams_;
|
uint32_t in_streams_;
|
||||||
uint32_t out_streams_;
|
uint32_t out_streams_;
|
||||||
|
|
||||||
|
|
||||||
int32_t* d_ca_codes;
|
int32_t* d_ca_codes;
|
||||||
int32_t* d_data_codes;
|
int32_t* d_data_codes;
|
||||||
bool d_track_pilot;
|
bool d_track_pilot;
|
||||||
|
@ -47,20 +47,14 @@
|
|||||||
|
|
||||||
using google::LogMessage;
|
using google::LogMessage;
|
||||||
|
|
||||||
void GpsL2MDllPllTrackingFpga::stop_tracking()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
GpsL2MDllPllTrackingFpga::GpsL2MDllPllTrackingFpga(
|
GpsL2MDllPllTrackingFpga::GpsL2MDllPllTrackingFpga(
|
||||||
ConfigurationInterface* configuration, const std::string& role,
|
ConfigurationInterface* configuration, const std::string& role,
|
||||||
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
//dllpllconf_t trk_param;
|
|
||||||
Dll_Pll_Conf_Fpga trk_param_fpga = Dll_Pll_Conf_Fpga();
|
Dll_Pll_Conf_Fpga trk_param_fpga = Dll_Pll_Conf_Fpga();
|
||||||
DLOG(INFO) << "role " << role;
|
DLOG(INFO) << "role " << role;
|
||||||
//################# CONFIGURATION PARAMETERS ########################
|
//################# CONFIGURATION PARAMETERS ########################
|
||||||
//std::string default_item_type = "gr_complex";
|
|
||||||
//std::string item_type = configuration->property(role + ".item_type", default_item_type);
|
|
||||||
int fs_in_deprecated = configuration->property("GNSS-SDR.internal_fs_hz", 2048000);
|
int fs_in_deprecated = configuration->property("GNSS-SDR.internal_fs_hz", 2048000);
|
||||||
int fs_in = configuration->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated);
|
int fs_in = configuration->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated);
|
||||||
trk_param_fpga.fs_in = fs_in;
|
trk_param_fpga.fs_in = fs_in;
|
||||||
@ -123,15 +117,12 @@ GpsL2MDllPllTrackingFpga::GpsL2MDllPllTrackingFpga(
|
|||||||
//unsigned int multicorr_type = configuration->property(role + ".multicorr_type", 0);
|
//unsigned int multicorr_type = configuration->property(role + ".multicorr_type", 0);
|
||||||
trk_param_fpga.multicorr_type = 0; //multicorr_type : 0 -> 3 correlators, 1 -> 5 correlators
|
trk_param_fpga.multicorr_type = 0; //multicorr_type : 0 -> 3 correlators, 1 -> 5 correlators
|
||||||
|
|
||||||
//d_tracking_code = static_cast<float *>(volk_gnsssdr_malloc(2 * static_cast<unsigned int>(GPS_L2_M_CODE_LENGTH_CHIPS) * sizeof(float), volk_gnsssdr_get_alignment()));
|
|
||||||
d_ca_codes = static_cast<int*>(volk_gnsssdr_malloc(static_cast<unsigned int>(GPS_L2_M_CODE_LENGTH_CHIPS) * NUM_PRNs * sizeof(int), volk_gnsssdr_get_alignment()));
|
|
||||||
auto* ca_codes_f = static_cast<float*>(volk_gnsssdr_malloc(static_cast<unsigned int>(GPS_L2_M_CODE_LENGTH_CHIPS) * sizeof(float), volk_gnsssdr_get_alignment()));
|
auto* ca_codes_f = static_cast<float*>(volk_gnsssdr_malloc(static_cast<unsigned int>(GPS_L2_M_CODE_LENGTH_CHIPS) * sizeof(float), volk_gnsssdr_get_alignment()));
|
||||||
|
|
||||||
//################# PRE-COMPUTE ALL THE CODES #################
|
//################# PRE-COMPUTE ALL THE CODES #################
|
||||||
d_ca_codes = static_cast<int*>(volk_gnsssdr_malloc(static_cast<int>(GPS_L2_M_CODE_LENGTH_CHIPS * NUM_PRNs) * sizeof(int), volk_gnsssdr_get_alignment()));
|
d_ca_codes = static_cast<int*>(volk_gnsssdr_malloc(static_cast<int>(GPS_L2_M_CODE_LENGTH_CHIPS * NUM_PRNs) * sizeof(int), volk_gnsssdr_get_alignment()));
|
||||||
for (unsigned int PRN = 1; PRN <= NUM_PRNs; PRN++)
|
for (unsigned int PRN = 1; PRN <= NUM_PRNs; PRN++)
|
||||||
{
|
{
|
||||||
//gps_l1_ca_code_gen_int(&d_ca_codes[(int(GPS_L1_CA_CODE_LENGTH_CHIPS)) * (PRN - 1)], PRN, 0);
|
|
||||||
gps_l2c_m_code_gen_float(ca_codes_f, PRN);
|
gps_l2c_m_code_gen_float(ca_codes_f, PRN);
|
||||||
for (unsigned int s = 0; s < 2 * static_cast<unsigned int>(GPS_L2_M_CODE_LENGTH_CHIPS); s++)
|
for (unsigned int s = 0; s < 2 * static_cast<unsigned int>(GPS_L2_M_CODE_LENGTH_CHIPS); s++)
|
||||||
{
|
{
|
||||||
@ -139,27 +130,13 @@ GpsL2MDllPllTrackingFpga::GpsL2MDllPllTrackingFpga(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
delete[] ca_codes_f;
|
volk_gnsssdr_free(ca_codes_f);
|
||||||
|
|
||||||
trk_param_fpga.ca_codes = d_ca_codes;
|
trk_param_fpga.ca_codes = d_ca_codes;
|
||||||
trk_param_fpga.code_length_chips = GPS_L2_M_CODE_LENGTH_CHIPS;
|
trk_param_fpga.code_length_chips = GPS_L2_M_CODE_LENGTH_CHIPS;
|
||||||
trk_param_fpga.code_samples_per_chip = 1; // 1 sample per chip
|
trk_param_fpga.code_samples_per_chip = 1; // 1 sample per chip
|
||||||
|
|
||||||
//################# MAKE TRACKING GNURadio object ###################
|
//################# MAKE TRACKING GNU Radio object ###################
|
||||||
|
|
||||||
// //################# MAKE TRACKING GNURadio object ###################
|
|
||||||
// if (item_type.compare("gr_complex") == 0)
|
|
||||||
// {
|
|
||||||
// item_size_ = sizeof(gr_complex);
|
|
||||||
// tracking_ = dll_pll_veml_make_tracking(trk_param);
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// item_size_ = sizeof(gr_complex);
|
|
||||||
// LOG(WARNING) << item_type << " unknown tracking item type.";
|
|
||||||
// }
|
|
||||||
|
|
||||||
//################# MAKE TRACKING GNURadio object ###################
|
|
||||||
tracking_fpga_sc = dll_pll_veml_make_tracking_fpga(trk_param_fpga);
|
tracking_fpga_sc = dll_pll_veml_make_tracking_fpga(trk_param_fpga);
|
||||||
|
|
||||||
channel_ = 0;
|
channel_ = 0;
|
||||||
@ -167,30 +144,35 @@ GpsL2MDllPllTrackingFpga::GpsL2MDllPllTrackingFpga(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
GpsL2MDllPllTrackingFpga::~GpsL2MDllPllTrackingFpga() = default;
|
GpsL2MDllPllTrackingFpga::~GpsL2MDllPllTrackingFpga()
|
||||||
|
{
|
||||||
|
volk_gnsssdr_free(d_ca_codes);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void GpsL2MDllPllTrackingFpga::start_tracking()
|
void GpsL2MDllPllTrackingFpga::start_tracking()
|
||||||
{
|
{
|
||||||
//tracking_->start_tracking();
|
|
||||||
tracking_fpga_sc->start_tracking();
|
tracking_fpga_sc->start_tracking();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void GpsL2MDllPllTrackingFpga::stop_tracking()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set tracking channel unique ID
|
* Set tracking channel unique ID
|
||||||
*/
|
*/
|
||||||
void GpsL2MDllPllTrackingFpga::set_channel(unsigned int channel)
|
void GpsL2MDllPllTrackingFpga::set_channel(unsigned int channel)
|
||||||
{
|
{
|
||||||
channel_ = channel;
|
channel_ = channel;
|
||||||
//tracking_->set_channel(channel);
|
|
||||||
tracking_fpga_sc->set_channel(channel);
|
tracking_fpga_sc->set_channel(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GpsL2MDllPllTrackingFpga::set_gnss_synchro(Gnss_Synchro* p_gnss_synchro)
|
void GpsL2MDllPllTrackingFpga::set_gnss_synchro(Gnss_Synchro* p_gnss_synchro)
|
||||||
{
|
{
|
||||||
//tracking_->set_gnss_synchro(p_gnss_synchro);
|
|
||||||
tracking_fpga_sc->set_gnss_synchro(p_gnss_synchro);
|
tracking_fpga_sc->set_gnss_synchro(p_gnss_synchro);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -200,7 +182,7 @@ void GpsL2MDllPllTrackingFpga::connect(gr::top_block_sptr top_block)
|
|||||||
if (top_block)
|
if (top_block)
|
||||||
{ /* top_block is not null */
|
{ /* top_block is not null */
|
||||||
};
|
};
|
||||||
//nothing to connect, now the tracking uses gr_sync_decimator
|
// nothing to connect
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -209,19 +191,17 @@ void GpsL2MDllPllTrackingFpga::disconnect(gr::top_block_sptr top_block)
|
|||||||
if (top_block)
|
if (top_block)
|
||||||
{ /* top_block is not null */
|
{ /* top_block is not null */
|
||||||
};
|
};
|
||||||
//nothing to disconnect, now the tracking uses gr_sync_decimator
|
// nothing to disconnect
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
gr::basic_block_sptr GpsL2MDllPllTrackingFpga::get_left_block()
|
gr::basic_block_sptr GpsL2MDllPllTrackingFpga::get_left_block()
|
||||||
{
|
{
|
||||||
//return tracking_;
|
|
||||||
return tracking_fpga_sc;
|
return tracking_fpga_sc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
gr::basic_block_sptr GpsL2MDllPllTrackingFpga::get_right_block()
|
gr::basic_block_sptr GpsL2MDllPllTrackingFpga::get_right_block()
|
||||||
{
|
{
|
||||||
//return tracking_;
|
|
||||||
return tracking_fpga_sc;
|
return tracking_fpga_sc;
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ public:
|
|||||||
|
|
||||||
inline size_t item_size() override
|
inline size_t item_size() override
|
||||||
{
|
{
|
||||||
return item_size_;
|
return sizeof(int);
|
||||||
}
|
}
|
||||||
|
|
||||||
void connect(gr::top_block_sptr top_block) override;
|
void connect(gr::top_block_sptr top_block) override;
|
||||||
@ -98,7 +98,6 @@ public:
|
|||||||
private:
|
private:
|
||||||
//dll_pll_veml_tracking_sptr tracking_;
|
//dll_pll_veml_tracking_sptr tracking_;
|
||||||
dll_pll_veml_tracking_fpga_sptr tracking_fpga_sc;
|
dll_pll_veml_tracking_fpga_sptr tracking_fpga_sc;
|
||||||
size_t item_size_;
|
|
||||||
unsigned int channel_;
|
unsigned int channel_;
|
||||||
std::string role_;
|
std::string role_;
|
||||||
unsigned int in_streams_;
|
unsigned int in_streams_;
|
||||||
|
@ -150,6 +150,7 @@ GpsL5DllPllTrackingFpga::GpsL5DllPllTrackingFpga(
|
|||||||
|
|
||||||
d_ca_codes = static_cast<int32_t *>(volk_gnsssdr_malloc(static_cast<int32_t>(code_length_chips * NUM_PRNs) * sizeof(int32_t), volk_gnsssdr_get_alignment()));
|
d_ca_codes = static_cast<int32_t *>(volk_gnsssdr_malloc(static_cast<int32_t>(code_length_chips * NUM_PRNs) * sizeof(int32_t), volk_gnsssdr_get_alignment()));
|
||||||
|
|
||||||
|
d_data_codes = nullptr;
|
||||||
if (track_pilot)
|
if (track_pilot)
|
||||||
{
|
{
|
||||||
d_data_codes = static_cast<int32_t *>(volk_gnsssdr_malloc((static_cast<uint32_t>(code_length_chips)) * NUM_PRNs * sizeof(int32_t), volk_gnsssdr_get_alignment()));
|
d_data_codes = static_cast<int32_t *>(volk_gnsssdr_malloc((static_cast<uint32_t>(code_length_chips)) * NUM_PRNs * sizeof(int32_t), volk_gnsssdr_get_alignment()));
|
||||||
@ -195,10 +196,10 @@ GpsL5DllPllTrackingFpga::GpsL5DllPllTrackingFpga(
|
|||||||
|
|
||||||
GpsL5DllPllTrackingFpga::~GpsL5DllPllTrackingFpga()
|
GpsL5DllPllTrackingFpga::~GpsL5DllPllTrackingFpga()
|
||||||
{
|
{
|
||||||
delete[] d_ca_codes;
|
volk_gnsssdr_free(d_ca_codes);
|
||||||
if (d_track_pilot)
|
if (d_track_pilot)
|
||||||
{
|
{
|
||||||
delete[] d_data_codes;
|
volk_gnsssdr_free(d_data_codes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -421,6 +421,7 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga &
|
|||||||
uint32_t multicorr_type = trk_parameters.multicorr_type;
|
uint32_t multicorr_type = trk_parameters.multicorr_type;
|
||||||
multicorrelator_fpga = std::make_shared<Fpga_Multicorrelator_8sc>(d_n_correlator_taps, device_name, device_base, ca_codes, data_codes, d_code_length_chips, trk_parameters.track_pilot, multicorr_type, d_code_samples_per_chip);
|
multicorrelator_fpga = std::make_shared<Fpga_Multicorrelator_8sc>(d_n_correlator_taps, device_name, device_base, ca_codes, data_codes, d_code_length_chips, trk_parameters.track_pilot, multicorr_type, d_code_samples_per_chip);
|
||||||
multicorrelator_fpga->set_output_vectors(d_correlator_outs, d_Prompt_Data);
|
multicorrelator_fpga->set_output_vectors(d_correlator_outs, d_Prompt_Data);
|
||||||
|
d_sample_counter_next = 0ULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -119,8 +119,6 @@ private:
|
|||||||
int32_t d_correlation_length_ms;
|
int32_t d_correlation_length_ms;
|
||||||
int32_t d_n_correlator_taps;
|
int32_t d_n_correlator_taps;
|
||||||
|
|
||||||
float *d_tracking_code;
|
|
||||||
float *d_data_code;
|
|
||||||
float *d_local_code_shift_chips;
|
float *d_local_code_shift_chips;
|
||||||
float *d_prompt_data_shift;
|
float *d_prompt_data_shift;
|
||||||
std::shared_ptr<Fpga_Multicorrelator_8sc> multicorrelator_fpga;
|
std::shared_ptr<Fpga_Multicorrelator_8sc> multicorrelator_fpga;
|
||||||
|
@ -248,7 +248,7 @@ void Fpga_Multicorrelator_8sc::set_channel(uint32_t channel)
|
|||||||
int32_t numdevice = d_device_base + d_channel;
|
int32_t numdevice = d_device_base + d_channel;
|
||||||
devicebasetemp << numdevice;
|
devicebasetemp << numdevice;
|
||||||
mergedname = d_device_name + devicebasetemp.str();
|
mergedname = d_device_name + devicebasetemp.str();
|
||||||
strcpy(device_io_name, mergedname.c_str());
|
strcpy(device_io_name, mergedname.substr(0, MAX_LENGTH_DEVICEIO_NAME).c_str());
|
||||||
|
|
||||||
std::cout << "trk device_io_name = " << device_io_name << std::endl;
|
std::cout << "trk device_io_name = " << device_io_name << std::endl;
|
||||||
|
|
||||||
@ -351,8 +351,7 @@ void Fpga_Multicorrelator_8sc::fpga_compute_code_shift_parameters(void)
|
|||||||
temp_calculation = temp_calculation + (d_code_length_chips * d_code_samples_per_chip); // % operator does not work as in Matlab with negative numbers
|
temp_calculation = temp_calculation + (d_code_length_chips * d_code_samples_per_chip); // % operator does not work as in Matlab with negative numbers
|
||||||
}
|
}
|
||||||
d_initial_index[i] = static_cast<uint32_t>((static_cast<int32_t>(temp_calculation)) % (d_code_length_chips * d_code_samples_per_chip));
|
d_initial_index[i] = static_cast<uint32_t>((static_cast<int32_t>(temp_calculation)) % (d_code_length_chips * d_code_samples_per_chip));
|
||||||
temp_calculation = fmod(d_shifts_chips[i] - d_rem_code_phase_chips,
|
temp_calculation = fmod(d_shifts_chips[i] - d_rem_code_phase_chips, 1.0);
|
||||||
1.0);
|
|
||||||
if (temp_calculation < 0)
|
if (temp_calculation < 0)
|
||||||
{
|
{
|
||||||
temp_calculation = temp_calculation + 1.0; // fmod operator does not work as in Matlab with negative numbers
|
temp_calculation = temp_calculation + 1.0; // fmod operator does not work as in Matlab with negative numbers
|
||||||
@ -362,16 +361,14 @@ void Fpga_Multicorrelator_8sc::fpga_compute_code_shift_parameters(void)
|
|||||||
}
|
}
|
||||||
if (d_track_pilot)
|
if (d_track_pilot)
|
||||||
{
|
{
|
||||||
temp_calculation = floor(
|
temp_calculation = floor(d_prompt_data_shift[0] - d_rem_code_phase_chips);
|
||||||
d_prompt_data_shift[0] - d_rem_code_phase_chips);
|
|
||||||
|
|
||||||
if (temp_calculation < 0)
|
if (temp_calculation < 0)
|
||||||
{
|
{
|
||||||
temp_calculation = temp_calculation + (d_code_length_chips * d_code_samples_per_chip); // % operator does not work as in Matlab with negative numbers
|
temp_calculation = temp_calculation + (d_code_length_chips * d_code_samples_per_chip); // % operator does not work as in Matlab with negative numbers
|
||||||
}
|
}
|
||||||
d_initial_index[d_n_correlators] = static_cast<uint32_t>((static_cast<int32_t>(temp_calculation)) % (d_code_length_chips * d_code_samples_per_chip));
|
d_initial_index[d_n_correlators] = static_cast<uint32_t>((static_cast<int32_t>(temp_calculation)) % (d_code_length_chips * d_code_samples_per_chip));
|
||||||
temp_calculation = fmod(d_prompt_data_shift[0] - d_rem_code_phase_chips,
|
temp_calculation = fmod(d_prompt_data_shift[0] - d_rem_code_phase_chips, 1.0);
|
||||||
1.0);
|
|
||||||
if (temp_calculation < 0)
|
if (temp_calculation < 0)
|
||||||
{
|
{
|
||||||
temp_calculation = temp_calculation + 1.0; // fmod operator does not work as in Matlab with negative numbers
|
temp_calculation = temp_calculation + 1.0; // fmod operator does not work as in Matlab with negative numbers
|
||||||
@ -421,14 +418,12 @@ void Fpga_Multicorrelator_8sc::fpga_compute_signal_parameters_in_fpga(void)
|
|||||||
{
|
{
|
||||||
d_rem_carrier_phase_in_rad_temp = d_rem_carrier_phase_in_rad;
|
d_rem_carrier_phase_in_rad_temp = d_rem_carrier_phase_in_rad;
|
||||||
}
|
}
|
||||||
d_rem_carr_phase_rad_int = static_cast<int32_t>(roundf(
|
d_rem_carr_phase_rad_int = static_cast<int32_t>(roundf((fabs(d_rem_carrier_phase_in_rad_temp) / M_PI) * pow(2, PHASE_CARR_NBITS_FRAC)));
|
||||||
(fabs(d_rem_carrier_phase_in_rad_temp) / M_PI) * pow(2, PHASE_CARR_NBITS_FRAC)));
|
|
||||||
if (d_rem_carrier_phase_in_rad_temp < 0)
|
if (d_rem_carrier_phase_in_rad_temp < 0)
|
||||||
{
|
{
|
||||||
d_rem_carr_phase_rad_int = -d_rem_carr_phase_rad_int;
|
d_rem_carr_phase_rad_int = -d_rem_carr_phase_rad_int;
|
||||||
}
|
}
|
||||||
d_phase_step_rad_int = static_cast<int32_t>(roundf(
|
d_phase_step_rad_int = static_cast<int32_t>(roundf((fabs(d_phase_step_rad) / M_PI) * pow(2, PHASE_CARR_NBITS_FRAC))); // the FPGA accepts a range for the phase step between -pi and +pi
|
||||||
(fabs(d_phase_step_rad) / M_PI) * pow(2, PHASE_CARR_NBITS_FRAC))); // the FPGA accepts a range for the phase step between -pi and +pi
|
|
||||||
|
|
||||||
if (d_phase_step_rad < 0)
|
if (d_phase_step_rad < 0)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user