GNU Radio's IIO Package
fmcomms5_source.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2014 Analog Devices Inc.
4  * Author: Paul Cercueil <paul.cercueil@analog.com>
5  *
6  * This is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 3, or (at your option)
9  * any later version.
10  *
11  * This software is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this software; see the file COPYING. If not, write to
18  * the Free Software Foundation, Inc., 51 Franklin Street,
19  * Boston, MA 02110-1301, USA.
20  */
21 
22 
23 #ifndef INCLUDED_IIO_FMCOMMS5_SOURCE_H
24 #define INCLUDED_IIO_FMCOMMS5_SOURCE_H
25 
26 #include <iio/api.h>
27 #include <gnuradio/hier_block2.h>
28 #include <gnuradio/sync_block.h>
29 
30 #include "device_source.h"
31 
32 namespace gr {
33  namespace iio {
34 
35  /*!
36  * \brief <+description of block+>
37  * \ingroup iio
38  *
39  */
40  class IIO_API fmcomms5_source : virtual public gr::sync_block
41  {
42  public:
43  typedef std::shared_ptr<fmcomms5_source> sptr;
44 
45  /*!
46  * \brief Return a shared_ptr to a new instance of iio::device.
47  *
48  * To avoid accidental use of raw pointers, iio::device's
49  * constructor is in a private implementation
50  * class. iio::device::make is the public interface for
51  * creating new instances.
52  */
53  static sptr make(const std::string &uri, unsigned long long frequency1,
54  unsigned long long frequency2,
55  unsigned long samplerate,
56  unsigned long bandwidth,
57  bool ch1_en, bool ch2_en, bool ch3_en, bool ch4_en,
58  bool ch5_en, bool ch6_en, bool ch7_en, bool ch8_en,
59  unsigned long buffer_size, bool quadrature, bool rfdc,
60  bool bbdc, const char *gain1, double gain1_value,
61  const char *gain2, double gain2_value,
62  const char *gain3, double gain3_value,
63  const char *gain4, double gain4_value,
64  const char *rf_port_select, const char *filter = "");
65 
66  static sptr make_from(struct iio_context *ctx,
67  unsigned long long frequency1,
68  unsigned long long frequency2, unsigned long samplerate,
69  unsigned long bandwidth,
70  bool ch1_en, bool ch2_en, bool ch3_en, bool ch4_en,
71  bool ch5_en, bool ch6_en, bool ch7_en, bool ch8_en,
72  unsigned long buffer_size, bool quadrature, bool rfdc,
73  bool bbdc, const char *gain1, double gain1_value,
74  const char *gain2, double gain2_value,
75  const char *gain3, double gain3_value,
76  const char *gain4, double gain4_value,
77  const char *rf_port_select, const char *filter = "");
78 
79  virtual void set_params(unsigned long long frequency1,
80  unsigned long long frequency2,
81  unsigned long samplerate, unsigned long bandwidth,
82  bool quadrature, bool rfdc, bool bbdc,
83  const char *gain1, double gain1_value,
84  const char *gain2, double gain2_value,
85  const char *gain3, double gain3_value,
86  const char *gain4, double gain4_value,
87  const char *rf_port_select) = 0;
88  };
89 
90  class IIO_API fmcomms5_source_f32c : virtual public gr::hier_block2
91  {
92  public:
93  typedef std::shared_ptr<fmcomms5_source_f32c> sptr;
94 
95  static sptr make(const std::string &uri,
96  unsigned long long frequency1, unsigned long long frequency2,
97  unsigned long samplerate,
98  unsigned long bandwidth,
99  bool rx1_en, bool rx2_en, bool rx3_en, bool rx4_en,
100  unsigned long buffer_size, bool quadrature, bool rfdc,
101  bool bbdc, const char *gain1, double gain1_value,
102  const char *gain2, double gain2_value,
103  const char *gain3, double gain3_value,
104  const char *gain4, double gain4_value,
105  const char *rf_port_select, const char *filter = "")
106  {
108  frequency1, frequency2, samplerate,
109  bandwidth, rx1_en, rx1_en, rx2_en,
110  rx2_en, rx3_en, rx3_en, rx4_en,
111  rx4_en, buffer_size, quadrature,
112  rfdc, bbdc, gain1, gain1_value,
113  gain2, gain2_value, gain3, gain3_value,
114  gain4, gain4_value, rf_port_select,
115  filter);
116 
117  return gnuradio::get_initial_sptr(
118  new fmcomms5_source_f32c(rx1_en, rx2_en, rx3_en, rx4_en, block));
119  }
120 
121  void set_params(unsigned long long frequency1,
122  unsigned long long frequency2,
123  unsigned long samplerate, unsigned long bandwidth,
124  bool quadrature, bool rfdc, bool bbdc,
125  const char *gain1, double gain1_value,
126  const char *gain2, double gain2_value,
127  const char *gain3, double gain3_value,
128  const char *gain4, double gain4_value,
129  const char *rf_port_select)
130  {
131  fmcomms5_block->set_params(frequency1, frequency2, samplerate, bandwidth,
132  quadrature, rfdc, bbdc, gain1, gain1_value,
133  gain2, gain2_value, gain3, gain3_value,
134  gain4, gain4_value, rf_port_select);
135  }
136  private:
137  fmcomms5_source::sptr fmcomms5_block;
138 
139  protected:
140  explicit fmcomms5_source_f32c(bool rx1_en, bool rx2_en,
141  bool rx3_en, bool rx4_en, fmcomms5_source::sptr block);
142  };
143 
144  } // namespace iio
145 } // namespace gr
146 
147 #endif /* INCLUDED_IIO_FMCOMMS5_SOURCE_H */
#define IIO_API
Definition: api.h:19
void set_params(unsigned long long frequency1, unsigned long long frequency2, unsigned long samplerate, unsigned long bandwidth, bool quadrature, bool rfdc, bool bbdc, const char *gain1, double gain1_value, const char *gain2, double gain2_value, const char *gain3, double gain3_value, const char *gain4, double gain4_value, const char *rf_port_select)
Definition: fmcomms5_source.h:121
static sptr make(const std::string &uri, unsigned long long frequency1, unsigned long long frequency2, unsigned long samplerate, unsigned long bandwidth, bool rx1_en, bool rx2_en, bool rx3_en, bool rx4_en, unsigned long buffer_size, bool quadrature, bool rfdc, bool bbdc, const char *gain1, double gain1_value, const char *gain2, double gain2_value, const char *gain3, double gain3_value, const char *gain4, double gain4_value, const char *rf_port_select, const char *filter="")
Definition: fmcomms5_source.h:95
Definition: fmcomms5_source.h:90
Definition: attr_sink.h:29
static sptr make(const std::string &uri, unsigned long long frequency1, unsigned long long frequency2, unsigned long samplerate, unsigned long bandwidth, bool ch1_en, bool ch2_en, bool ch3_en, bool ch4_en, bool ch5_en, bool ch6_en, bool ch7_en, bool ch8_en, unsigned long buffer_size, bool quadrature, bool rfdc, bool bbdc, const char *gain1, double gain1_value, const char *gain2, double gain2_value, const char *gain3, double gain3_value, const char *gain4, double gain4_value, const char *rf_port_select, const char *filter="")
Return a shared_ptr to a new instance of iio::device.
std::shared_ptr< fmcomms5_source > sptr
Definition: fmcomms5_source.h:43
std::shared_ptr< fmcomms5_source_f32c > sptr
Definition: fmcomms5_source.h:93
<+description of block+>
Definition: fmcomms5_source.h:40