GNU Radio Manual and C++ API Reference 3.10.1.1
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
22namespace gr {
23namespace iio {
24
25template <typename T>
27{
28private:
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
46public:
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
66protected:
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