1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2024-12-14 20:20:35 +00:00

Fix 16-bit complex resampler

This commit is contained in:
Carles Fernandez 2016-08-15 12:03:15 +02:00
parent 62e1e6f81a
commit 3abe944877
2 changed files with 5 additions and 17 deletions

View File

@ -45,7 +45,6 @@ bool cpu_multicorrelator_16sc::init(
size_t size = max_signal_length_samples * sizeof(lv_16sc_t); size_t size = max_signal_length_samples * sizeof(lv_16sc_t);
d_n_correlators = n_correlators; d_n_correlators = n_correlators;
d_tmp_code_phases_chips = static_cast<float*>(volk_gnsssdr_malloc(n_correlators * sizeof(float), volk_gnsssdr_get_alignment()));
d_local_codes_resampled = static_cast<lv_16sc_t**>(volk_gnsssdr_malloc(n_correlators * sizeof(lv_16sc_t*), volk_gnsssdr_get_alignment())); d_local_codes_resampled = static_cast<lv_16sc_t**>(volk_gnsssdr_malloc(n_correlators * sizeof(lv_16sc_t*), volk_gnsssdr_get_alignment()));
for (int n = 0; n < n_correlators; n++) for (int n = 0; n < n_correlators; n++)
@ -80,18 +79,14 @@ bool cpu_multicorrelator_16sc::set_input_output_vectors(lv_16sc_t* corr_out, con
void cpu_multicorrelator_16sc::update_local_code(int correlator_length_samples, float rem_code_phase_chips, float code_phase_step_chips) void cpu_multicorrelator_16sc::update_local_code(int correlator_length_samples, float rem_code_phase_chips, float code_phase_step_chips)
{ {
for (int n = 0; n < d_n_correlators; n++) volk_gnsssdr_16ic_xn_resampler_16ic_xn(d_local_codes_resampled,
{
d_tmp_code_phases_chips[n] = d_shifts_chips[n] - rem_code_phase_chips;
}
volk_gnsssdr_16ic_xn_resampler_fast_16ic_xn(d_local_codes_resampled,
d_local_code_in, d_local_code_in,
d_tmp_code_phases_chips, rem_code_phase_chips,
code_phase_step_chips, code_phase_step_chips,
correlator_length_samples, d_shifts_chips,
d_code_length_chips,
d_n_correlators, d_n_correlators,
d_code_length_chips); correlator_length_samples);
} }
@ -119,7 +114,6 @@ cpu_multicorrelator_16sc::cpu_multicorrelator_16sc()
d_shifts_chips = nullptr; d_shifts_chips = nullptr;
d_corr_out = nullptr; d_corr_out = nullptr;
d_local_codes_resampled = nullptr; d_local_codes_resampled = nullptr;
d_tmp_code_phases_chips = nullptr;
d_code_length_chips = 0; d_code_length_chips = 0;
d_n_correlators = 0; d_n_correlators = 0;
} }
@ -137,11 +131,6 @@ cpu_multicorrelator_16sc::~cpu_multicorrelator_16sc()
bool cpu_multicorrelator_16sc::free() bool cpu_multicorrelator_16sc::free()
{ {
// Free memory // Free memory
if (d_tmp_code_phases_chips != nullptr)
{
volk_gnsssdr_free(d_tmp_code_phases_chips);
d_tmp_code_phases_chips = nullptr;
}
if (d_local_codes_resampled != nullptr) if (d_local_codes_resampled != nullptr)
{ {
for (int n = 0; n < d_n_correlators; n++) for (int n = 0; n < d_n_correlators; n++)

View File

@ -56,7 +56,6 @@ public:
private: private:
// Allocate the device input vectors // Allocate the device input vectors
const lv_16sc_t *d_sig_in; const lv_16sc_t *d_sig_in;
float *d_tmp_code_phases_chips;
lv_16sc_t **d_local_codes_resampled; lv_16sc_t **d_local_codes_resampled;
const lv_16sc_t *d_local_code_in; const lv_16sc_t *d_local_code_in;
lv_16sc_t *d_corr_out; lv_16sc_t *d_corr_out;