GNU Radio Manual and C++ API Reference 3.7.14.0
The Free & Open Software Radio Ecosystem
time_raster_sink_b.h
Go to the documentation of this file.
1/* -*- c++ -*- */
2/*
3 * Copyright 2012,2013,2015 Free Software Foundation, Inc.
4 *
5 * This file is part of GNU Radio
6 *
7 * GNU Radio is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 3, or (at your option)
10 * any later version.
11 *
12 * GNU Radio is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with GNU Radio; see the file COPYING. If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street,
20 * Boston, MA 02110-1301, USA.
21 */
22
23#ifndef INCLUDED_QTGUI_TIME_RASTER_SINK_B_H
24#define INCLUDED_QTGUI_TIME_RASTER_SINK_B_H
25
26#ifdef ENABLE_PYTHON
27#include <Python.h>
28#endif
29
30#include <gnuradio/qtgui/api.h>
31#include <gnuradio/sync_block.h>
32#include <qapplication.h>
33#include <qwt_symbol.h>
34
35namespace gr {
36namespace qtgui {
37
38/*!
39 * \brief A graphical sink to display multiple signals on a
40 * time_raster plot.
41 * \ingroup instrumentation_blk
42 * \ingroup qtgui_blk
43 *
44 * \details
45 * This is a QT-based graphical sink that takes in byte
46 * streams and plots a time_raster (spectrogram) plot.
47 *
48 * Input stream: This expects a bit stream (0, 1 in the LSB of a
49 * byte). It will display packed bytes but the display will have
50 * to be autoscaled.
51 *
52 * The sink supports plotting streaming byte/char data or
53 * messages. The message port is named "in". The two modes cannot
54 * be used simultaneously, and \p nconnections should be set to 0
55 * when using the message mode. GRC handles this issue by
56 * providing the "Float Message" type that removes the streaming
57 * port(s).
58 *
59 * This sink can plot messages that contain either uniform vectors
60 * of byte/char values (pmt::is_{u,s}32vector) or PDUs where the
61 * data is a uniform vector of byte/char values.
62 */
64{
65public:
66 // gr::qtgui::time_raster_sink_b::sptr
67 typedef boost::shared_ptr<time_raster_sink_b> sptr;
68
69 /*!
70 * \brief Build a bit time raster sink.
71 *
72 * \param samp_rate sample rate of signal
73 * \param cols number of cols to plot
74 * \param rows number of rows to plot
75 * \param mult vector of floats as a scaling multiplier for each input stream
76 * \param offset vector of floats as an offset for each input stream
77 * \param name title for the plot
78 * \param nconnections number of streams connected
79 * \param parent a QWidget parent object, if any
80 */
81 static sptr make(double samp_rate,
82 double rows,
83 double cols,
84 const std::vector<float>& mult,
85 const std::vector<float>& offset,
86 const std::string& name,
87 int nconnections = 1,
88 QWidget* parent = NULL);
89
90 virtual void exec_() = 0;
91 virtual QWidget* qwidget() = 0;
92
93#ifdef ENABLE_PYTHON
94 virtual PyObject* pyqwidget() = 0;
95#else
96 virtual void* pyqwidget() = 0;
97#endif
98
99 virtual void set_update_time(double t) = 0;
100 virtual void set_title(const std::string& title) = 0;
101 virtual void set_line_label(int which, const std::string& lable) = 0;
102 virtual void set_line_color(int which, const std::string& color) = 0;
103 virtual void set_line_width(int which, int width) = 0;
104 virtual void set_line_style(int which, Qt::PenStyle style) = 0;
105 virtual void set_line_marker(int which, QwtSymbol::Style marker) = 0;
106 virtual void set_line_alpha(int which, double alpha) = 0;
107 virtual void set_color_map(int which, const int color) = 0;
108
109 virtual std::string title() = 0;
110 virtual std::string line_label(int which) = 0;
111 virtual std::string line_color(int which) = 0;
112 virtual int line_width(int which) = 0;
113 virtual int line_style(int which) = 0;
114 virtual int line_marker(int which) = 0;
115 virtual double line_alpha(int which) = 0;
116 virtual int color_map(int which) = 0;
117
118 virtual void set_size(int width, int height) = 0;
119
120 virtual void set_samp_rate(const double samp_rate) = 0;
121 virtual void set_num_rows(double rows) = 0;
122 virtual void set_num_cols(double cols) = 0;
123
124 virtual double num_rows() = 0;
125 virtual double num_cols() = 0;
126
127 virtual void set_multiplier(const std::vector<float>& mult) = 0;
128 virtual void set_offset(const std::vector<float>& offset) = 0;
129
130 virtual void set_intensity_range(float min, float max) = 0;
131
132 virtual void enable_menu(bool en) = 0;
133 virtual void enable_grid(bool en) = 0;
134 virtual void enable_autoscale(bool en) = 0;
135 virtual void enable_axis_labels(bool en = true) = 0;
136 virtual void reset() = 0;
137
138 QApplication* d_qApplication;
139};
140
141} /* namespace qtgui */
142} /* namespace gr */
143
144#endif /* INCLUDED_QTGUI_TIME_RASTER_SINK_B_H */
A graphical sink to display multiple signals on a time_raster plot.
Definition: time_raster_sink_b.h:64
virtual void set_line_marker(int which, QwtSymbol::Style marker)=0
virtual void set_size(int width, int height)=0
virtual void set_title(const std::string &title)=0
virtual double num_cols()=0
boost::shared_ptr< time_raster_sink_b > sptr
Definition: time_raster_sink_b.h:67
virtual void set_line_style(int which, Qt::PenStyle style)=0
virtual void set_multiplier(const std::vector< float > &mult)=0
virtual void set_line_width(int which, int width)=0
virtual void set_intensity_range(float min, float max)=0
virtual void set_line_color(int which, const std::string &color)=0
virtual int line_style(int which)=0
virtual void set_line_label(int which, const std::string &lable)=0
virtual void enable_grid(bool en)=0
virtual std::string title()=0
virtual void set_samp_rate(const double samp_rate)=0
virtual int color_map(int which)=0
virtual void set_offset(const std::vector< float > &offset)=0
virtual void enable_autoscale(bool en)=0
virtual void set_num_rows(double rows)=0
virtual void enable_axis_labels(bool en=true)=0
virtual QWidget * qwidget()=0
virtual int line_marker(int which)=0
virtual void enable_menu(bool en)=0
static sptr make(double samp_rate, double rows, double cols, const std::vector< float > &mult, const std::vector< float > &offset, const std::string &name, int nconnections=1, QWidget *parent=NULL)
Build a bit time raster sink.
virtual std::string line_color(int which)=0
QApplication * d_qApplication
Definition: time_raster_sink_b.h:138
virtual double line_alpha(int which)=0
virtual std::string line_label(int which)=0
virtual void * pyqwidget()=0
virtual void set_num_cols(double cols)=0
virtual void set_line_alpha(int which, double alpha)=0
virtual void set_update_time(double t)=0
virtual int line_width(int which)=0
virtual void set_color_map(int which, const int color)=0
virtual double num_rows()=0
synchronous 1:1 input to output with history
Definition: sync_block.h:38
#define QTGUI_API
Definition: gr-qtgui/include/gnuradio/qtgui/api.h:30
float min(float a, float b)
Include this header to use the message passing features.
Definition: basic_block.h:45