GNU Radio Manual and C++ API Reference  3.10.3.0
The Free & Open Software Radio Ecosystem
fmcomms2_source_impl.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  * SPDX-License-Identifier: GPL-3.0-or-later
7  *
8  */
9 
10 #ifndef INCLUDED_IIO_FMCOMMS2_SOURCE_IMPL_H
11 #define INCLUDED_IIO_FMCOMMS2_SOURCE_IMPL_H
12 
13 #include "device_source_impl.h"
15 
16 #include <string>
17 #include <thread>
18 #include <vector>
19 
20 #include <volk/volk_alloc.hh>
21 
22 namespace gr {
23 namespace iio {
24 
25 template <typename T>
27 {
28 private:
29  std::vector<std::string>
30  get_channels_vector(bool ch1_en, bool ch2_en, bool ch3_en, bool ch4_en);
31  std::vector<std::string> get_channels_vector(const std::vector<bool>& ch_en);
32  std::thread overflow_thd;
33  void check_overflow(void);
34 
35  const static int s_initial_device_buf_size = 8192;
36  std::vector<volk::vector<short>> d_device_bufs;
37  gr_vector_void_star d_device_item_ptrs;
38  volk::vector<float> d_float_rvec;
39  volk::vector<float> d_float_ivec;
40 
41  int work(int noutput_items,
42  gr_vector_const_void_star& input_items,
43  gr_vector_void_star& output_items);
44 
45 
46 public:
47  fmcomms2_source_impl(iio_context* ctx,
48  const std::vector<bool>& ch_en,
49  unsigned long buffer_size);
50 
52 
53  virtual void set_len_tag_key(const std::string& len_tag_key);
54  virtual void set_frequency(double frequency);
55  virtual void set_samplerate(unsigned long samplerate);
56  virtual void set_gain_mode(size_t chan, const std::string& mode);
57  virtual void set_gain(size_t chan, double gain_value);
58  virtual void set_quadrature(bool quadrature);
59  virtual void set_rfdc(bool rfdc);
60  virtual void set_bbdc(bool bbdc);
61  virtual void set_filter_params(const std::string& filter_source,
62  const std::string& filter_filename,
63  float fpass,
64  float fstop);
65 
66 protected:
68 
69  unsigned long long d_frequency = 2400000000;
70  unsigned long d_samplerate = 1000000;
71  unsigned long d_bandwidth = 20000000;
72  bool d_quadrature = true;
73  bool d_rfdc = true;
74  bool d_bbdc = true;
75  std::vector<std::string> d_gain_mode = {
76  "manual", "manual", "manual", "manual"
77  }; // TODO - make these enums
78  std::vector<double> d_gain_value = { 0, 0, 0, 0 };
79  std::string d_rf_port_select = "A_BALANCED";
80  std::string d_filter_source = "Auto";
81  std::string d_filter_filename = "";
82  float d_fpass = (float)d_samplerate / 4.0;
83  float d_fstop = (float)d_samplerate / 3.0;
84 };
85 
86 } // namespace iio
87 } // namespace gr
88 
89 #endif /* INCLUDED_IIO_FMCOMMS2_SOURCE_IMPL_H */
Definition: device_source_impl.h:37
iio_context * ctx
Definition: device_source_impl.h:57
unsigned int buffer_size
Definition: device_source_impl.h:61
Definition: fmcomms2_source_impl.h:27
std::vector< std::string > d_gain_mode
Definition: fmcomms2_source_impl.h:75
bool d_bbdc
Definition: fmcomms2_source_impl.h:74
unsigned long d_bandwidth
Definition: fmcomms2_source_impl.h:71
virtual void set_len_tag_key(const std::string &len_tag_key)
Key of the packet length tag. If empty no tag will be emitted.
float d_fstop
Definition: fmcomms2_source_impl.h:83
std::vector< double > d_gain_value
Definition: fmcomms2_source_impl.h:78
unsigned long long d_frequency
Definition: fmcomms2_source_impl.h:69
virtual void set_gain(size_t chan, double gain_value)
fmcomms2_source_impl(iio_context *ctx, const std::vector< bool > &ch_en, unsigned long buffer_size)
virtual void set_rfdc(bool rfdc)
virtual void set_filter_params(const std::string &filter_source, const std::string &filter_filename, float fpass, float fstop)
virtual void set_frequency(double frequency)
virtual void set_bbdc(bool bbdc)
virtual void set_gain_mode(size_t chan, const std::string &mode)
bool d_rfdc
Definition: fmcomms2_source_impl.h:73
std::string d_filter_source
Definition: fmcomms2_source_impl.h:80
std::string d_filter_filename
Definition: fmcomms2_source_impl.h:81
std::string d_rf_port_select
Definition: fmcomms2_source_impl.h:79
float d_fpass
Definition: fmcomms2_source_impl.h:82
virtual void set_quadrature(bool quadrature)
unsigned long d_samplerate
Definition: fmcomms2_source_impl.h:70
bool d_quadrature
Definition: fmcomms2_source_impl.h:72
virtual void set_samplerate(unsigned long samplerate)
Device specific source for FMComms evaluation cards.
Definition: fmcomms2_source.h:34
boost::thread thread
Definition: thread.h:36
GNU Radio logging wrapper.
Definition: basic_block.h:29
std::vector< const void * > gr_vector_const_void_star
Definition: types.h:28
std::vector< void * > gr_vector_void_star
Definition: types.h:27