From 44045162897e58e63078639a75381d2b3b3a180a Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Sat, 11 Aug 2018 11:42:07 +0200 Subject: [PATCH] Add more extensive use of cstdint typenames --- .../gnuradio_blocks/pcps_acquisition.cc | 28 +++++------ .../gnuradio_blocks/pcps_acquisition_fpga.h | 34 +++++++------- .../acquisition/libs/fpga_acquisition.cc | 46 +++++++++---------- .../acquisition/libs/fpga_acquisition.h | 43 +++++++++-------- 4 files changed, 77 insertions(+), 74 deletions(-) diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition.cc index bb5d79b29..838ff3404 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition.cc +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition.cc @@ -268,7 +268,7 @@ void pcps_acquisition::init() d_mag = 0.0; d_input_power = 0.0; - d_num_doppler_bins = static_cast(std::ceil(static_cast(static_cast(acq_parameters.doppler_max) - static_cast(-acq_parameters.doppler_max)) / static_cast(d_doppler_step))); + d_num_doppler_bins = static_cast(std::ceil(static_cast(static_cast(acq_parameters.doppler_max) - static_cast(-acq_parameters.doppler_max)) / static_cast(d_doppler_step))); // Create the carrier Doppler wipeoff signals d_grid_doppler_wipeoffs = new gr_complex*[d_num_doppler_bins]; @@ -290,7 +290,7 @@ void pcps_acquisition::init() { d_magnitude_grid[doppler_index][k] = 0.0; } - int32_t doppler = -static_cast(acq_parameters.doppler_max) + d_doppler_step * doppler_index; + int32_t doppler = -static_cast(acq_parameters.doppler_max) + d_doppler_step * doppler_index; update_local_carrier(d_grid_doppler_wipeoffs[doppler_index], d_fft_size, d_old_freq + doppler); } @@ -309,7 +309,7 @@ void pcps_acquisition::update_grid_doppler_wipeoffs() { for (uint32_t doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) { - int32_t doppler = -static_cast(acq_parameters.doppler_max) + d_doppler_step * doppler_index; + int32_t doppler = -static_cast(acq_parameters.doppler_max) + d_doppler_step * doppler_index; update_local_carrier(d_grid_doppler_wipeoffs[doppler_index], d_fft_size, d_old_freq + doppler); } } @@ -510,11 +510,11 @@ float pcps_acquisition::max_to_input_power_statistic(uint32_t& indext, int32_t& indext = index_time; if (!d_step_two) { - doppler = -static_cast(doppler_max) + doppler_step * static_cast(index_doppler); + doppler = -static_cast(doppler_max) + doppler_step * static_cast(index_doppler); } else { - doppler = static_cast(d_doppler_center_step_two + (static_cast(index_doppler) - static_cast(floor(d_num_doppler_bins_step2 / 2.0))) * acq_parameters.doppler_step2); + doppler = static_cast(d_doppler_center_step_two + (static_cast(index_doppler) - static_cast(floor(d_num_doppler_bins_step2 / 2.0))) * acq_parameters.doppler_step2); } float magt = grid_maximum / (fft_normalization_factor * fft_normalization_factor); @@ -548,11 +548,11 @@ float pcps_acquisition::first_vs_second_peak_statistic(uint32_t& indext, int32_t if (!d_step_two) { - doppler = -static_cast(doppler_max) + doppler_step * static_cast(index_doppler); + doppler = -static_cast(doppler_max) + doppler_step * static_cast(index_doppler); } else { - doppler = static_cast(d_doppler_center_step_two + (static_cast(index_doppler) - static_cast(floor(d_num_doppler_bins_step2 / 2.0))) * acq_parameters.doppler_step2); + doppler = static_cast(d_doppler_center_step_two + (static_cast(index_doppler) - static_cast(floor(d_num_doppler_bins_step2 / 2.0))) * acq_parameters.doppler_step2); } // Find 1 chip wide code phase exclude range around the peak @@ -564,7 +564,7 @@ float pcps_acquisition::first_vs_second_peak_statistic(uint32_t& indext, int32_t { excludeRangeIndex1 = d_fft_size + excludeRangeIndex1; } - else if (excludeRangeIndex2 >= static_cast(d_fft_size)) + else if (excludeRangeIndex2 >= static_cast(d_fft_size)) { excludeRangeIndex2 = excludeRangeIndex2 - d_fft_size; } @@ -575,7 +575,7 @@ float pcps_acquisition::first_vs_second_peak_statistic(uint32_t& indext, int32_t { d_tmp_buffer[idx] = 0.0; idx++; - if (idx == static_cast(d_fft_size)) idx = 0; + if (idx == static_cast(d_fft_size)) idx = 0; } while (idx != excludeRangeIndex2); @@ -716,11 +716,11 @@ void pcps_acquisition::acquisition_core(uint64_t samp_count) // Compute the test statistic if (d_use_CFAR_algorithm_flag) { - d_test_statistics = max_to_input_power_statistic(indext, doppler, d_input_power, d_num_doppler_bins_step2, static_cast(d_doppler_center_step_two - (static_cast(d_num_doppler_bins_step2) / 2.0) * acq_parameters.doppler_step2), acq_parameters.doppler_step2); + d_test_statistics = max_to_input_power_statistic(indext, doppler, d_input_power, d_num_doppler_bins_step2, static_cast(d_doppler_center_step_two - (static_cast(d_num_doppler_bins_step2) / 2.0) * acq_parameters.doppler_step2), acq_parameters.doppler_step2); } else { - d_test_statistics = first_vs_second_peak_statistic(indext, doppler, d_num_doppler_bins_step2, static_cast(d_doppler_center_step_two - (static_cast(d_num_doppler_bins_step2) / 2.0) * acq_parameters.doppler_step2), acq_parameters.doppler_step2); + d_test_statistics = first_vs_second_peak_statistic(indext, doppler, d_num_doppler_bins_step2, static_cast(d_doppler_center_step_two - (static_cast(d_num_doppler_bins_step2) / 2.0) * acq_parameters.doppler_step2), acq_parameters.doppler_step2); } d_gnss_synchro->Acq_delay_samples = static_cast(std::fmod(static_cast(indext), acq_parameters.samples_per_code)); d_gnss_synchro->Acq_doppler_hz = static_cast(doppler); @@ -844,7 +844,7 @@ int pcps_acquisition::general_work(int noutput_items __attribute__((unused)), { if (!acq_parameters.blocking_on_standby) { - d_sample_counter += ninput_items[0]; + d_sample_counter += static_cast(ninput_items[0]); consume_each(ninput_items[0]); } if (d_step_two) @@ -872,7 +872,7 @@ int pcps_acquisition::general_work(int noutput_items __attribute__((unused)), d_buffer_count = 0; if (!acq_parameters.blocking_on_standby) { - d_sample_counter += ninput_items[0]; // sample counter + d_sample_counter += static_cast(ninput_items[0]); // sample counter consume_each(ninput_items[0]); } break; @@ -913,7 +913,7 @@ int pcps_acquisition::general_work(int noutput_items __attribute__((unused)), d_state = 2; } d_buffer_count += buff_increment; - d_sample_counter += buff_increment; + d_sample_counter += static_cast(buff_increment); consume_each(buff_increment); break; } diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fpga.h b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fpga.h index 3555e5df1..4dc8b6505 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fpga.h +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fpga.h @@ -64,13 +64,13 @@ typedef struct { /* pcps acquisition configuration */ - unsigned int sampled_ms; - unsigned int doppler_max; - long freq; - long fs_in; - int samples_per_ms; - int samples_per_code; - unsigned int select_queue_Fpga; + uint32_t sampled_ms; + uint32_t doppler_max; + int64_t freq; + int64_t fs_in; + int32_tsamples_per_ms; + int32_tsamples_per_code; + uint32_t select_queue_Fpga; std::string device_name; lv_16sc_t* all_fft_codes; // memory that contains all the code ffts @@ -108,11 +108,11 @@ private: float d_mag; float d_input_power; float d_test_statistics; - int d_state; - unsigned int d_channel; - unsigned int d_doppler_step; - unsigned int d_fft_size; - unsigned int d_num_doppler_bins; + int32_td_state; + uint32_t d_channel; + uint32_t d_doppler_step; + uint32_t d_fft_size; + uint32_t d_num_doppler_bins; uint64_t d_sample_counter; Gnss_Synchro* d_gnss_synchro; std::shared_ptr acquisition_fpga; @@ -133,7 +133,7 @@ public: /*! * \brief Returns the maximum peak of grid search. */ - inline unsigned int mag() const + inline uint32_t mag() const { return d_mag; } @@ -154,7 +154,7 @@ public: * first available sample. * \param state - int=1 forces start of acquisition */ - void set_state(int state); + void set_state(int32_tstate); /*! * \brief Starts acquisition algorithm, turning from standby mode to @@ -167,7 +167,7 @@ public: * \brief Set acquisition channel unique ID * \param channel - receiver channel. */ - inline void set_channel(unsigned int channel) + inline void set_channel(uint32_t channel) { d_channel = channel; } @@ -186,7 +186,7 @@ public: * \brief Set maximum Doppler grid search * \param doppler_max - Maximum Doppler shift considered in the grid search [Hz]. */ - inline void set_doppler_max(unsigned int doppler_max) + inline void set_doppler_max(uint32_t doppler_max) { acq_parameters.doppler_max = doppler_max; acquisition_fpga->set_doppler_max(doppler_max); @@ -196,7 +196,7 @@ public: * \brief Set Doppler steps for the grid search * \param doppler_step - Frequency bin of the search grid [Hz]. */ - inline void set_doppler_step(unsigned int doppler_step) + inline void set_doppler_step(uint32_t doppler_step) { d_doppler_step = doppler_step; acquisition_fpga->set_doppler_step(doppler_step); diff --git a/src/algorithms/acquisition/libs/fpga_acquisition.cc b/src/algorithms/acquisition/libs/fpga_acquisition.cc index bf2f91c24..f60be67b8 100644 --- a/src/algorithms/acquisition/libs/fpga_acquisition.cc +++ b/src/algorithms/acquisition/libs/fpga_acquisition.cc @@ -64,7 +64,7 @@ bool fpga_acquisition::init() } -bool fpga_acquisition::set_local_code(unsigned int PRN) +bool fpga_acquisition::set_local_code(uint32_t PRN) { // select the code with the chosen PRN fpga_acquisition::fpga_configure_acquisition_local_code( @@ -74,13 +74,13 @@ bool fpga_acquisition::set_local_code(unsigned int PRN) fpga_acquisition::fpga_acquisition(std::string device_name, - unsigned int nsamples, - unsigned int doppler_max, - unsigned int nsamples_total, long fs_in, - unsigned int sampled_ms, unsigned select_queue, + uint32_t nsamples, + uint32_t doppler_max, + uint32_t nsamples_total, int64_t fs_in, + uint32_t sampled_ms, uint32_t select_queue, lv_16sc_t *all_fft_codes) { - unsigned int vector_length = nsamples_total * sampled_ms; + uint32_t vector_length = nsamples_total * sampled_ms; // initial values d_device_name = device_name; d_fs_in = fs_in; @@ -99,7 +99,7 @@ fpga_acquisition::fpga_acquisition(std::string device_name, { LOG(WARNING) << "Cannot open deviceio" << d_device_name; } - d_map_base = reinterpret_cast(mmap(NULL, PAGE_SIZE, + d_map_base = reinterpret_cast(mmap(NULL, PAGE_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, d_fd, 0)); if (d_map_base == reinterpret_cast(-1)) @@ -108,8 +108,8 @@ fpga_acquisition::fpga_acquisition(std::string device_name, } // sanity check : check test register - unsigned writeval = TEST_REG_SANITY_CHECK; - unsigned readval; + uint32_t writeval = TEST_REG_SANITY_CHECK; + uint32_t readval; readval = fpga_acquisition::fpga_acquisition_test_register(writeval); if (writeval != readval) { @@ -136,9 +136,9 @@ bool fpga_acquisition::free() } -unsigned fpga_acquisition::fpga_acquisition_test_register(unsigned writeval) +uint32_t fpga_acquisition::fpga_acquisition_test_register(uint32_t writeval) { - unsigned readval; + uint32_t readval; // write value to test register d_map_base[15] = writeval; // read value from test register @@ -150,9 +150,9 @@ unsigned fpga_acquisition::fpga_acquisition_test_register(unsigned writeval) void fpga_acquisition::fpga_configure_acquisition_local_code(lv_16sc_t fft_local_code[]) { - unsigned short local_code; - unsigned int k, tmp, tmp2; - unsigned int fft_data; + uint16_t local_code; + uint32_t k, tmp, tmp2; + uint32_t fft_data; // clear memory address counter d_map_base[4] = LOCAL_CODE_CLEAR_MEM; // write local code @@ -170,12 +170,12 @@ void fpga_acquisition::fpga_configure_acquisition_local_code(lv_16sc_t fft_local void fpga_acquisition::run_acquisition(void) { // enable interrupts - int reenable = 1; - write(d_fd, reinterpret_cast(&reenable), sizeof(int)); + int32_t reenable = 1; + write(d_fd, reinterpret_cast(&reenable), sizeof(int32_t)); // launch the acquisition process d_map_base[6] = LAUNCH_ACQUISITION; // writing anything to reg 6 launches the acquisition process - int irq_count; + int32_t irq_count; ssize_t nb; // wait for interrupt nb = read(d_fd, &irq_count, sizeof(irq_count)); @@ -192,16 +192,16 @@ void fpga_acquisition::configure_acquisition() d_map_base[0] = d_select_queue; d_map_base[1] = d_vector_length; d_map_base[2] = d_nsamples; - d_map_base[5] = (int)log2((float)d_vector_length); // log2 FFTlength + d_map_base[5] = static_cast(log2(static_cast(d_vector_length))); // log2 FFTlength } -void fpga_acquisition::set_phase_step(unsigned int doppler_index) +void fpga_acquisition::set_phase_step(uint32_t doppler_index) { float phase_step_rad_real; float phase_step_rad_int_temp; int32_t phase_step_rad_int; - int doppler = static_cast(-d_doppler_max) + d_doppler_step * doppler_index; + int32_t doppler = static_cast(-d_doppler_max) + d_doppler_step * doppler_index; float phase_step_rad = GPS_TWO_PI * doppler / static_cast(d_fs_in); // The doppler step can never be outside the range -pi to +pi, otherwise there would be aliasing // The FPGA expects phase_step_rad between -1 (-pi) to +1 (+pi) @@ -221,9 +221,9 @@ void fpga_acquisition::set_phase_step(unsigned int doppler_index) void fpga_acquisition::read_acquisition_results(uint32_t *max_index, - float *max_magnitude, unsigned *initial_sample, float *power_sum) + float *max_magnitude, uint32_t *initial_sample, float *power_sum) { - unsigned readval = 0; + uint32_t readval = 0; readval = d_map_base[1]; *initial_sample = readval; readval = d_map_base[2]; @@ -249,7 +249,7 @@ void fpga_acquisition::unblock_samples() void fpga_acquisition::close_device() { - unsigned *aux = const_cast(d_map_base); + uint32_t *aux = const_cast(d_map_base); if (munmap(static_cast(aux), PAGE_SIZE) == -1) { printf("Failed to unmap memory uio\n"); diff --git a/src/algorithms/acquisition/libs/fpga_acquisition.h b/src/algorithms/acquisition/libs/fpga_acquisition.h index e9b1482db..17afbe361 100644 --- a/src/algorithms/acquisition/libs/fpga_acquisition.h +++ b/src/algorithms/acquisition/libs/fpga_acquisition.h @@ -38,6 +38,7 @@ #include #include +#include /*! * \brief Class that implements carrier wipe-off and correlators. @@ -46,20 +47,22 @@ class fpga_acquisition { public: fpga_acquisition(std::string device_name, - unsigned int nsamples, - unsigned int doppler_max, - unsigned int nsamples_total, long fs_in, - unsigned int sampled_ms, unsigned select_queue, + uint32_t nsamples, + uint32_t doppler_max, + uint32_t nsamples_total, + int64_t fs_in, + uint32_t sampled_ms, + uint32_t select_queue, lv_16sc_t *all_fft_codes); + ~fpga_acquisition(); bool init(); - bool set_local_code( - unsigned int PRN); + bool set_local_code(uint32_t PRN); bool free(); void run_acquisition(void); - void set_phase_step(unsigned int doppler_index); + void set_phase_step(uint32_t doppler_index); void read_acquisition_results(uint32_t *max_index, float *max_magnitude, - unsigned *initial_sample, float *power_sum); + uint32_t *initial_sample, float *power_sum); void block_samples(); void unblock_samples(); @@ -67,7 +70,7 @@ public: * \brief Set maximum Doppler grid search * \param doppler_max - Maximum Doppler shift considered in the grid search [Hz]. */ - void set_doppler_max(unsigned int doppler_max) + void set_doppler_max(uint32_t doppler_max) { d_doppler_max = doppler_max; } @@ -76,26 +79,26 @@ public: * \brief Set Doppler steps for the grid search * \param doppler_step - Frequency bin of the search grid [Hz]. */ - void set_doppler_step(unsigned int doppler_step) + void set_doppler_step(uint32_t doppler_step) { d_doppler_step = doppler_step; } private: - long d_fs_in; + int64_t d_fs_in; // data related to the hardware module and the driver - int d_fd; // driver descriptor - volatile unsigned *d_map_base; // driver memory map + int32_t d_fd; // driver descriptor + volatile uint32_t *d_map_base; // driver memory map lv_16sc_t *d_all_fft_codes; // memory that contains all the code ffts - unsigned int d_vector_length; // number of samples incluing padding and number of ms - unsigned int d_nsamples_total; // number of samples including padding - unsigned int d_nsamples; // number of samples not including padding - unsigned int d_select_queue; // queue selection + uint32_t d_vector_length; // number of samples incluing padding and number of ms + uint32_t d_nsamples_total; // number of samples including padding + uint32_t d_nsamples; // number of samples not including padding + uint32_t d_select_queue; // queue selection std::string d_device_name; // HW device name - unsigned int d_doppler_max; // max doppler - unsigned int d_doppler_step; // doppler step + uint32_t d_doppler_max; // max doppler + uint32_t d_doppler_step; // doppler step // FPGA private functions - unsigned fpga_acquisition_test_register(unsigned writeval); + uint32_t fpga_acquisition_test_register(uint32_t writeval); void fpga_configure_acquisition_local_code(lv_16sc_t fft_local_code[]); void configure_acquisition(); void reset_acquisition(void);