GNSS-SDR  0.0.13
An Open Source GNSS Software Defined Receiver
direct_resampler_conditioner_cs.h
Go to the documentation of this file.
1 /*!
2  * \file direct_resampler_conditioner_cs.h
3  * \brief Nearest neighborhood resampler with
4  * std::complex<short> input and std::complex<short> 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_CS_H
23 #define GNSS_SDR_DIRECT_RESAMPLER_CONDITIONER_CS_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 #if GNURADIO_USES_STD_POINTERS
35 using direct_resampler_conditioner_cs_sptr = std::shared_ptr<direct_resampler_conditioner_cs>;
36 #else
37 using direct_resampler_conditioner_cs_sptr = boost::shared_ptr<direct_resampler_conditioner_cs>;
38 #endif
39 
40 direct_resampler_conditioner_cs_sptr direct_resampler_make_conditioner_cs(
41  double sample_freq_in,
42  double sample_freq_out);
43 
44 /*!
45  * \brief This class implements a direct resampler conditioner for std::complex<short>
46  *
47  * Direct resampling without interpolation
48  */
49 class direct_resampler_conditioner_cs : public gr::block
50 {
51 public:
53 
54  inline unsigned int sample_freq_in() const
55  {
56  return d_sample_freq_in;
57  }
58 
59  inline unsigned int sample_freq_out() const
60  {
61  return d_sample_freq_out;
62  }
63 
64  void forecast(int noutput_items, gr_vector_int &ninput_items_required);
65 
66  int general_work(int noutput_items, gr_vector_int &ninput_items,
67  gr_vector_const_void_star &input_items,
68  gr_vector_void_star &output_items);
69 
70 private:
71  friend direct_resampler_conditioner_cs_sptr direct_resampler_make_conditioner_cs(
72  double sample_freq_in,
73  double sample_freq_out);
74 
76  double sample_freq_in,
77  double sample_freq_out);
78 
79  double d_sample_freq_in;
80  double d_sample_freq_out;
81  uint32_t d_phase;
82  uint32_t d_lphase;
83  uint32_t d_phase_step;
84 };
85 
86 #endif // GNSS_SDR_DIRECT_RESAMPLER_CONDITIONER_CS_H
This class implements a direct resampler conditioner for std::complex<short>