GNSS-SDR  0.0.13
An Open Source GNSS Software Defined Receiver
direct_resampler_conditioner_cb.h
Go to the documentation of this file.
1 /*!
2  * \file direct_resampler_conditioner_cb.h
3  * \brief Nearest neighborhood resampler with
4  * std::complex<signed char> input and std::complex<signed char> output
5  * \author Luis Esteve, 2011. luis(at)epsilon-formacion.com
6  *
7  *
8  * -----------------------------------------------------------------------------
9  *
10  * Copyright (C) 2010-2020 (see AUTHORS file for a list of contributors)
11  *
12  * GNSS-SDR is a software defined Global Navigation
13  * Satellite Systems receiver
14  *
15  * This file is part of GNSS-SDR.
16  *
17  * SPDX-License-Identifier: GPL-3.0-or-later
18  *
19  * -----------------------------------------------------------------------------
20  */
21 
22 #ifndef GNSS_SDR_DIRECT_RESAMPLER_CONDITIONER_CB_H
23 #define GNSS_SDR_DIRECT_RESAMPLER_CONDITIONER_CB_H
24 
25 #include <gnuradio/block.h>
26 #include <cstdint>
27 #if GNURADIO_USES_STD_POINTERS
28 #include <memory>
29 #else
30 #include <boost/shared_ptr.hpp>
31 #endif
32 
34 
35 #if GNURADIO_USES_STD_POINTERS
36 using direct_resampler_conditioner_cb_sptr = std::shared_ptr<direct_resampler_conditioner_cb>;
37 #else
38 using direct_resampler_conditioner_cb_sptr = boost::shared_ptr<direct_resampler_conditioner_cb>;
39 #endif
40 
41 direct_resampler_conditioner_cb_sptr direct_resampler_make_conditioner_cb(
42  double sample_freq_in,
43  double sample_freq_out);
44 
45 /*!
46  * \brief This class implements a direct resampler conditioner for std::complex<signed char>
47  *
48  * Direct resampling without interpolation
49  */
50 class direct_resampler_conditioner_cb : public gr::block
51 {
52 public:
54 
55  inline unsigned int sample_freq_in() const
56  {
57  return d_sample_freq_in;
58  }
59 
60  inline unsigned int sample_freq_out() const
61  {
62  return d_sample_freq_out;
63  }
64 
65  void forecast(int noutput_items, gr_vector_int &ninput_items_required);
66 
67  int general_work(int noutput_items, gr_vector_int &ninput_items,
68  gr_vector_const_void_star &input_items,
69  gr_vector_void_star &output_items);
70 
71 private:
72  friend direct_resampler_conditioner_cb_sptr direct_resampler_make_conditioner_cb(
73  double sample_freq_in,
74  double sample_freq_out);
75 
77  double sample_freq_in,
78  double sample_freq_out);
79 
80  double d_sample_freq_in;
81  double d_sample_freq_out;
82  uint32_t d_phase;
83  uint32_t d_lphase;
84  uint32_t d_phase_step;
85 };
86 
87 #endif // GNSS_SDR_DIRECT_RESAMPLER_CONDITIONER_CB_H
This class implements a direct resampler conditioner for std::complex<signed char> ...