1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
/* -*- c++ -*- */
/*
* Copyright 2008,2009,2011 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
* GNU Radio is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3, or (at your option)
* any later version.
*
* GNU Radio is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GNU Radio; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street,
* Boston, MA 02110-1301, USA.
*/
#ifndef INCLUDED_QTGUI_SINK_C_H
#define INCLUDED_QTGUI_SINK_C_H
#include <Python.h>
#include <gr_qtgui_api.h>
#include <gr_block.h>
#include <gr_firdes.h>
#include <gri_fft.h>
#include <qapplication.h>
#include <gruel/high_res_timer.h>
#include "SpectrumGUIClass.h"
class qtgui_sink_c;
typedef boost::shared_ptr<qtgui_sink_c> qtgui_sink_c_sptr;
GR_QTGUI_API qtgui_sink_c_sptr qtgui_make_sink_c (int fftsize, int wintype,
double fc=0, double bandwidth=1.0,
const std::string &name="Spectrum Display",
bool plotfreq=true, bool plotwaterfall=true,
bool plottime=true, bool plotconst=true,
QWidget *parent=NULL);
/*!
* \brief A graphical sink to display freq, spec, time, and const plots.
* \ingroup instrumentation_blk
* \ingroup qtgui_blk
*
* \details
* This is a QT-based graphical sink the takes a complex stream and
* plots it. The default action is to plot the signal as a PSD (FFT),
* spectrogram (waterfall), time domain I&Q, and constellation (I
* vs. Q) plots. The plots may be turned off by setting the
* appropriate boolean value in the constructor to False.
*/
class GR_QTGUI_API qtgui_sink_c : public gr_block
{
private:
friend GR_QTGUI_API qtgui_sink_c_sptr qtgui_make_sink_c (int fftsize, int wintype,
double fc, double bw,
const std::string &name,
bool plotfreq, bool plotwaterfall,
bool plottime, bool plotconst,
QWidget *parent);
qtgui_sink_c (int fftsize, int wintype,
double fc, double bw,
const std::string &name,
bool plotfreq, bool plotwaterfall,
bool plottime, bool plotconst,
QWidget *parent);
void forecast(int noutput_items, gr_vector_int &ninput_items_required);
void initialize();
int d_fftsize;
gr_firdes::win_type d_wintype;
std::vector<float> d_window;
double d_center_freq;
double d_bandwidth;
std::string d_name;
gruel::high_res_timer_type d_last_update;
bool d_update_active;
bool d_shift;
gri_fft_complex *d_fft;
int d_index;
gr_complex *d_residbuf;
bool d_plotfreq, d_plotwaterfall, d_plottime, d_plotconst;
gruel::high_res_timer_type d_update_time;
QWidget *d_parent;
SpectrumGUIClass *d_main_gui;
void windowreset();
void buildwindow();
void fftresize();
void fft(const gr_complex *data_in, int size);
public:
~qtgui_sink_c();
void exec_();
QWidget* qwidget();
PyObject* pyqwidget();
void set_frequency_range(const double centerfreq,
const double bandwidth);
void set_time_domain_axis(double min, double max);
void set_constellation_axis(double xmin, double xmax,
double ymin, double ymax);
void set_constellation_pen_size(int size);
void set_frequency_axis(double min, double max);
void set_update_time(double t);
QApplication *d_qApplication;
int general_work (int noutput_items,
gr_vector_int &ninput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items);
};
#endif /* INCLUDED_QTGUI_SINK_C_H */
|