summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gr-analog/lib/CMakeLists.txt11
-rw-r--r--gr-analog/lib/frequency_modulator_fc_impl.cc22
-rw-r--r--gr-analog/lib/frequency_modulator_fc_impl.h2
-rw-r--r--gr-blocks/lib/min_XX_impl.cc.t4
-rw-r--r--gr-blocks/lib/tagged_stream_align_impl.cc1
-rw-r--r--gr-fec/include/gnuradio/fec/polar_decoder_common.h6
-rw-r--r--gr-qtgui/grc/qtgui_const_sink_x.xml18
-rw-r--r--gr-qtgui/grc/qtgui_freq_sink_x.xml35
-rw-r--r--gr-qtgui/grc/qtgui_histogram_sink_x.xml18
-rw-r--r--gr-qtgui/grc/qtgui_time_raster_x.xml17
-rw-r--r--gr-qtgui/grc/qtgui_time_sink_x.xml18
-rw-r--r--gr-qtgui/grc/qtgui_waterfall_sink_x.xml18
-rw-r--r--gr-qtgui/include/gnuradio/qtgui/DisplayPlot.h1
-rw-r--r--gr-qtgui/include/gnuradio/qtgui/FrequencyDisplayPlot.h3
-rw-r--r--gr-qtgui/include/gnuradio/qtgui/const_sink_c.h1
-rw-r--r--gr-qtgui/include/gnuradio/qtgui/displayform.h3
-rw-r--r--gr-qtgui/include/gnuradio/qtgui/freq_sink_c.h2
-rw-r--r--gr-qtgui/include/gnuradio/qtgui/freq_sink_f.h3
-rw-r--r--gr-qtgui/include/gnuradio/qtgui/freqcontrolpanel.h1
-rw-r--r--gr-qtgui/include/gnuradio/qtgui/freqdisplayform.h3
-rw-r--r--gr-qtgui/include/gnuradio/qtgui/histogram_sink_f.h1
-rw-r--r--gr-qtgui/include/gnuradio/qtgui/time_raster_sink_b.h1
-rw-r--r--gr-qtgui/include/gnuradio/qtgui/time_raster_sink_f.h1
-rw-r--r--gr-qtgui/include/gnuradio/qtgui/time_sink_c.h1
-rw-r--r--gr-qtgui/include/gnuradio/qtgui/time_sink_f.h1
-rw-r--r--gr-qtgui/include/gnuradio/qtgui/timecontrolpanel.h2
-rw-r--r--gr-qtgui/include/gnuradio/qtgui/waterfall_sink_c.h1
-rw-r--r--gr-qtgui/include/gnuradio/qtgui/waterfall_sink_f.h1
-rw-r--r--gr-qtgui/lib/DisplayPlot.cc9
-rw-r--r--gr-qtgui/lib/FrequencyDisplayPlot.cc13
-rw-r--r--gr-qtgui/lib/WaterfallDisplayPlot.cc2
-rw-r--r--gr-qtgui/lib/const_sink_c_impl.cc6
-rw-r--r--gr-qtgui/lib/const_sink_c_impl.h1
-rw-r--r--gr-qtgui/lib/displayform.cc16
-rw-r--r--gr-qtgui/lib/freq_sink_c_impl.cc13
-rw-r--r--gr-qtgui/lib/freq_sink_c_impl.h2
-rw-r--r--gr-qtgui/lib/freq_sink_f_impl.cc13
-rw-r--r--gr-qtgui/lib/freq_sink_f_impl.h2
-rw-r--r--gr-qtgui/lib/freqcontrolpanel.cc5
-rw-r--r--gr-qtgui/lib/freqdisplayform.cc6
-rw-r--r--gr-qtgui/lib/histogram_sink_f_impl.cc6
-rw-r--r--gr-qtgui/lib/histogram_sink_f_impl.h1
-rw-r--r--gr-qtgui/lib/time_raster_sink_b_impl.cc6
-rw-r--r--gr-qtgui/lib/time_raster_sink_b_impl.h1
-rw-r--r--gr-qtgui/lib/time_raster_sink_f_impl.cc6
-rw-r--r--gr-qtgui/lib/time_raster_sink_f_impl.h1
-rw-r--r--gr-qtgui/lib/time_sink_c_impl.cc10
-rw-r--r--gr-qtgui/lib/time_sink_c_impl.h1
-rw-r--r--gr-qtgui/lib/time_sink_f_impl.cc8
-rw-r--r--gr-qtgui/lib/time_sink_f_impl.h1
-rw-r--r--gr-qtgui/lib/timecontrolpanel.cc5
-rw-r--r--gr-qtgui/lib/waterfall_sink_c_impl.cc6
-rw-r--r--gr-qtgui/lib/waterfall_sink_c_impl.h1
-rw-r--r--gr-qtgui/lib/waterfall_sink_f_impl.cc6
-rw-r--r--gr-qtgui/lib/waterfall_sink_f_impl.h1
-rw-r--r--gr-uhd/apps/uhd_app.py22
-rwxr-xr-xgr-uhd/apps/uhd_rx_cfile40
-rw-r--r--grc/gui/FlowGraph.py4
58 files changed, 366 insertions, 44 deletions
diff --git a/gr-analog/lib/CMakeLists.txt b/gr-analog/lib/CMakeLists.txt
index 918f894abe..a75d70337b 100644
--- a/gr-analog/lib/CMakeLists.txt
+++ b/gr-analog/lib/CMakeLists.txt
@@ -110,17 +110,6 @@ GR_LIBRARY_FOO(gnuradio-analog RUNTIME_COMPONENT "analog_runtime" DEVEL_COMPONEN
add_dependencies(gnuradio-analog analog_generated_includes analog_generated_swigs gnuradio-filter)
if(ENABLE_STATIC_LIBS)
- if(ENABLE_GR_CTRLPORT)
- # Remove GR_CTRLPORT set this target's definitions.
- # Makes sure we don't try to use ControlPort stuff in source files
- GET_DIRECTORY_PROPERTY(STATIC_DEFS COMPILE_DEFINITIONS)
- list(REMOVE_ITEM STATIC_DEFS "GR_CTRLPORT")
- SET_PROPERTY(DIRECTORY PROPERTY COMPILE_DEFINITIONS "${STATIC_DEFS}")
-
- # readd it to the target since we removed it from the directory-wide list.
- SET_PROPERTY(TARGET gnuradio-analog APPEND PROPERTY COMPILE_DEFINITIONS "GR_CTRLPORT")
- endif(ENABLE_GR_CTRLPORT)
-
add_library(gnuradio-analog_static STATIC ${analog_sources})
add_dependencies(gnuradio-analog_static
diff --git a/gr-analog/lib/frequency_modulator_fc_impl.cc b/gr-analog/lib/frequency_modulator_fc_impl.cc
index 812eb8bf0b..56fa0f7c17 100644
--- a/gr-analog/lib/frequency_modulator_fc_impl.cc
+++ b/gr-analog/lib/frequency_modulator_fc_impl.cc
@@ -76,5 +76,27 @@ namespace gr {
return noutput_items;
}
+ void
+ frequency_modulator_fc_impl::setup_rpc()
+ {
+#ifdef GR_CTRLPORT
+ add_rpc_variable(
+ rpcbasic_sptr(new rpcbasic_register_get<frequency_modulator_fc, float>(
+ alias(), "sensitivity",
+ &frequency_modulator_fc::sensitivity,
+ pmt::mp(-1024.0f), pmt::mp(1024.0f), pmt::mp(0.0f),
+ "", "Sensitivity", RPC_PRIVLVL_MIN,
+ DISPTIME | DISPOPTSTRIP)));
+
+ add_rpc_variable(
+ rpcbasic_sptr(new rpcbasic_register_set<frequency_modulator_fc, float>(
+ alias(), "sensitivity",
+ &frequency_modulator_fc::set_sensitivity,
+ pmt::mp(-1024.0f), pmt::mp(1024.0f), pmt::mp(0.0f),
+ "", "sensitivity",
+ RPC_PRIVLVL_MIN, DISPNULL)));
+#endif /* GR_CTRLPORT */
+
+ }
} /* namespace analog */
} /* namespace gr */
diff --git a/gr-analog/lib/frequency_modulator_fc_impl.h b/gr-analog/lib/frequency_modulator_fc_impl.h
index 9f5310ce97..9f595d1ddb 100644
--- a/gr-analog/lib/frequency_modulator_fc_impl.h
+++ b/gr-analog/lib/frequency_modulator_fc_impl.h
@@ -41,6 +41,8 @@ namespace gr {
void set_sensitivity(float sens) { d_sensitivity = sens; }
float sensitivity() const { return d_sensitivity; }
+ void setup_rpc();
+
int work(int noutput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items);
diff --git a/gr-blocks/lib/min_XX_impl.cc.t b/gr-blocks/lib/min_XX_impl.cc.t
index d1cea61424..0f7059f7cd 100644
--- a/gr-blocks/lib/min_XX_impl.cc.t
+++ b/gr-blocks/lib/min_XX_impl.cc.t
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2014,2015 Free Software Foundation, Inc.
+ * Copyright 2014,2015,2016 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -77,7 +77,7 @@ namespace gr {
}
else // vector mode output
- for(int i = 0; i < noutput_items * d_vlen_out; i++) {
+ for(size_t i = 0; i < noutput_items * d_vlen_out; i++) {
@I_TYPE@ min = ((@I_TYPE@ *)input_items[0])[i];
for(int k = 1; k < ninputs; k++) {
diff --git a/gr-blocks/lib/tagged_stream_align_impl.cc b/gr-blocks/lib/tagged_stream_align_impl.cc
index c71d038fcb..80b5286278 100644
--- a/gr-blocks/lib/tagged_stream_align_impl.cc
+++ b/gr-blocks/lib/tagged_stream_align_impl.cc
@@ -44,6 +44,7 @@ namespace gr {
d_lengthtag(pmt::mp(lengthtagname)),
d_have_sync(false)
{
+ set_tag_propagation_policy(TPP_DONT);
}
tagged_stream_align_impl::~tagged_stream_align_impl()
diff --git a/gr-fec/include/gnuradio/fec/polar_decoder_common.h b/gr-fec/include/gnuradio/fec/polar_decoder_common.h
index b0ecb85149..a39ee4f232 100644
--- a/gr-fec/include/gnuradio/fec/polar_decoder_common.h
+++ b/gr-fec/include/gnuradio/fec/polar_decoder_common.h
@@ -28,6 +28,10 @@
#include <gnuradio/fec/generic_decoder.h>
#include <gnuradio/fec/polar_common.h>
+#ifndef BOOST_CONSTEXPR_OR_CONST
+#define BOOST_CONSTEXPR_OR_CONST const
+#endif
+
namespace gr {
namespace fec {
namespace code {
@@ -64,7 +68,7 @@ namespace gr {
bool set_frame_size(unsigned int frame_size){return false;};
private:
- static const float D_LLR_FACTOR = -2.19722458f;
+ static BOOST_CONSTEXPR_OR_CONST float D_LLR_FACTOR = -2.19722458f;
unsigned int d_frozen_bit_counter;
protected:
diff --git a/gr-qtgui/grc/qtgui_const_sink_x.xml b/gr-qtgui/grc/qtgui_const_sink_x.xml
index 956a1694ec..755f12f964 100644
--- a/gr-qtgui/grc/qtgui_const_sink_x.xml
+++ b/gr-qtgui/grc/qtgui_const_sink_x.xml
@@ -22,6 +22,7 @@ self.$(id).set_x_axis($xmin, $xmax)
self.$(id).set_trigger_mode($tr_mode, $tr_slope, $tr_level, $tr_chan, $tr_tag)
self.$(id).enable_autoscale($autoscale)
self.$(id).enable_grid($grid)
+self.$(id).enable_axis_labels($axislabels)
if not $legend:
self.$(id).disable_legend()
@@ -276,6 +277,23 @@ $(gui_hint()($win))</make>
</param>
<param>
+ <name>Axis Labels</name>
+ <key>axislabels</key>
+ <value>True</value>
+ <type>enum</type>
+ <hide>part</hide>
+ <option>
+ <name>Yes</name>
+ <key>True</key>
+ </option>
+ <option>
+ <name>No</name>
+ <key>False</key>
+ </option>
+ <tab>Config</tab>
+ </param>
+
+ <param>
<name>Line 1 Label</name>
<key>label1</key>
<type>string</type>
diff --git a/gr-qtgui/grc/qtgui_freq_sink_x.xml b/gr-qtgui/grc/qtgui_freq_sink_x.xml
index d7c3139849..009a184327 100644
--- a/gr-qtgui/grc/qtgui_freq_sink_x.xml
+++ b/gr-qtgui/grc/qtgui_freq_sink_x.xml
@@ -22,10 +22,12 @@ qtgui.$(type.fcn)(
)
self.$(id).set_update_time($update_time)
self.$(id).set_y_axis($ymin, $ymax)
+self.$(id).set_y_label($label, $units)
self.$(id).set_trigger_mode($tr_mode, $tr_level, $tr_chan, $tr_tag)
self.$(id).enable_autoscale($autoscale)
self.$(id).enable_grid($grid)
self.$(id).set_fft_average($average)
+self.$(id).enable_axis_labels($axislabels)
self.$(id).enable_control_panel($ctrlpanel)
if not $legend:
@@ -252,6 +254,22 @@ $(gui_hint()($win))</make>
</param>
<param>
+ <name>Y label</name>
+ <key>label</key>
+ <value>Relative Gain</value>
+ <type>string</type>
+ <hide>part</hide>
+ </param>
+
+ <param>
+ <name>Y units</name>
+ <key>units</key>
+ <value>dB</value>
+ <type>string</type>
+ <hide>part</hide>
+ </param>
+
+ <param>
<name>Number of Inputs</name>
<key>nconnections</key>
<value>1</value>
@@ -383,6 +401,23 @@ $(gui_hint()($win))</make>
</param>
<param>
+ <name>Axis Labels</name>
+ <key>axislabels</key>
+ <value>True</value>
+ <type>enum</type>
+ <hide>part</hide>
+ <option>
+ <name>Yes</name>
+ <key>True</key>
+ </option>
+ <option>
+ <name>No</name>
+ <key>False</key>
+ </option>
+ <tab>Config</tab>
+ </param>
+
+ <param>
<name>Line 1 Label</name>
<key>label1</key>
<type>string</type>
diff --git a/gr-qtgui/grc/qtgui_histogram_sink_x.xml b/gr-qtgui/grc/qtgui_histogram_sink_x.xml
index a9966fd7ec..a789d2e4fa 100644
--- a/gr-qtgui/grc/qtgui_histogram_sink_x.xml
+++ b/gr-qtgui/grc/qtgui_histogram_sink_x.xml
@@ -24,6 +24,7 @@ self.$(id).set_update_time($update_time)
self.$(id).enable_autoscale($autoscale)
self.$(id).enable_accumulate($accum)
self.$(id).enable_grid($grid)
+self.$(id).enable_axis_labels($axislabels)
if not $legend:
self.$(id).disable_legend()
@@ -211,6 +212,23 @@ $(gui_hint()($win))
</param>
<param>
+ <name>Axis Labels</name>
+ <key>axislabels</key>
+ <value>True</value>
+ <type>enum</type>
+ <hide>part</hide>
+ <option>
+ <name>Yes</name>
+ <key>True</key>
+ </option>
+ <option>
+ <name>No</name>
+ <key>False</key>
+ </option>
+ <tab>Config</tab>
+ </param>
+
+ <param>
<name>Line 1 Label</name>
<key>label1</key>
<type>string</type>
diff --git a/gr-qtgui/grc/qtgui_time_raster_x.xml b/gr-qtgui/grc/qtgui_time_raster_x.xml
index b36944c1e5..0359dc3b71 100644
--- a/gr-qtgui/grc/qtgui_time_raster_x.xml
+++ b/gr-qtgui/grc/qtgui_time_raster_x.xml
@@ -24,6 +24,7 @@ qtgui.$(type.fcn)(
self.$(id).set_update_time($update_time)
self.$(id).set_intensity_range($zmin, $zmax)
self.$(id).enable_grid($grid)
+self.$(id).enable_axis_labels($axislabels)
labels = [$label1, $label2, $label3, $label4, $label5,
$label6, $label7, $label8, $label9, $label10]
@@ -185,6 +186,22 @@ $(gui_hint()($win))</make>
<hide>part</hide>
</param>
+ <param>
+ <name>Axis Labels</name>
+ <key>axislabels</key>
+ <value>True</value>
+ <type>enum</type>
+ <hide>part</hide>
+ <option>
+ <name>Yes</name>
+ <key>True</key>
+ </option>
+ <option>
+ <name>No</name>
+ <key>False</key>
+ </option>
+ <tab>Config</tab>
+ </param>
<param>
<name>Line 1 Label</name>
diff --git a/gr-qtgui/grc/qtgui_time_sink_x.xml b/gr-qtgui/grc/qtgui_time_sink_x.xml
index b17b55fc48..c0584b6d34 100644
--- a/gr-qtgui/grc/qtgui_time_sink_x.xml
+++ b/gr-qtgui/grc/qtgui_time_sink_x.xml
@@ -27,6 +27,7 @@ self.$(id).enable_tags(-1, $entags)
self.$(id).set_trigger_mode($tr_mode, $tr_slope, $tr_level, $tr_delay, $tr_chan, $tr_tag)
self.$(id).enable_autoscale($autoscale)
self.$(id).enable_grid($grid)
+self.$(id).enable_axis_labels($axislabels)
self.$(id).enable_control_panel($ctrlpanel)
if not $legend:
@@ -363,6 +364,23 @@ $(gui_hint()($win))</make>
</param>
<param>
+ <name>Axis Labels</name>
+ <key>axislabels</key>
+ <value>True</value>
+ <type>enum</type>
+ <hide>part</hide>
+ <option>
+ <name>Yes</name>
+ <key>True</key>
+ </option>
+ <option>
+ <name>No</name>
+ <key>False</key>
+ </option>
+ <tab>Config</tab>
+ </param>
+
+ <param>
<name>Line 1 Label</name>
<key>label1</key>
<type>string</type>
diff --git a/gr-qtgui/grc/qtgui_waterfall_sink_x.xml b/gr-qtgui/grc/qtgui_waterfall_sink_x.xml
index 1d8461b8c4..cdecd5cce1 100644
--- a/gr-qtgui/grc/qtgui_waterfall_sink_x.xml
+++ b/gr-qtgui/grc/qtgui_waterfall_sink_x.xml
@@ -22,6 +22,7 @@ qtgui.$(type.fcn)(
)
self.$(id).set_update_time($update_time)
self.$(id).enable_grid($grid)
+self.$(id).enable_axis_labels($axislabels)
if not $legend:
self.$(id).disable_legend()
@@ -271,6 +272,23 @@ $(gui_hint()($win))</make>
</param>
<param>
+ <name>Axis Labels</name>
+ <key>axislabels</key>
+ <value>True</value>
+ <type>enum</type>
+ <hide>part</hide>
+ <option>
+ <name>Yes</name>
+ <key>True</key>
+ </option>
+ <option>
+ <name>No</name>
+ <key>False</key>
+ </option>
+ <tab>Config</tab>
+ </param>
+
+ <param>
<name>Line 1 Color</name>
<key>color1</key>
<type>enum</type>
diff --git a/gr-qtgui/include/gnuradio/qtgui/DisplayPlot.h b/gr-qtgui/include/gnuradio/qtgui/DisplayPlot.h
index 9edff7b183..eba12e2635 100644
--- a/gr-qtgui/include/gnuradio/qtgui/DisplayPlot.h
+++ b/gr-qtgui/include/gnuradio/qtgui/DisplayPlot.h
@@ -190,6 +190,7 @@ public:
public slots:
virtual void disableLegend();
+ virtual void setAxisLabels(bool en);
virtual void setYaxis(double min, double max);
virtual void setXaxis(double min, double max);
virtual void setLineLabel(int which, QString label);
diff --git a/gr-qtgui/include/gnuradio/qtgui/FrequencyDisplayPlot.h b/gr-qtgui/include/gnuradio/qtgui/FrequencyDisplayPlot.h
index 8b2ef457fb..5c6b2c71b0 100644
--- a/gr-qtgui/include/gnuradio/qtgui/FrequencyDisplayPlot.h
+++ b/gr-qtgui/include/gnuradio/qtgui/FrequencyDisplayPlot.h
@@ -118,6 +118,9 @@ public slots:
void setPlotPosHalf(bool half);
+ void setYLabel(const std::string &label,
+ const std::string &unit);
+
void clearMaxData();
void clearMinData();
diff --git a/gr-qtgui/include/gnuradio/qtgui/const_sink_c.h b/gr-qtgui/include/gnuradio/qtgui/const_sink_c.h
index 851f3be7ca..9905eb7690 100644
--- a/gr-qtgui/include/gnuradio/qtgui/const_sink_c.h
+++ b/gr-qtgui/include/gnuradio/qtgui/const_sink_c.h
@@ -144,6 +144,7 @@ namespace gr {
virtual void enable_menu(bool en=true) = 0;
virtual void enable_autoscale(bool en) = 0;
virtual void enable_grid(bool en) = 0;
+ virtual void enable_axis_labels(bool en=true) = 0;
virtual void disable_legend() = 0;
virtual int nsamps() const = 0;
virtual void reset() = 0;
diff --git a/gr-qtgui/include/gnuradio/qtgui/displayform.h b/gr-qtgui/include/gnuradio/qtgui/displayform.h
index 2ef4b801cf..1da1383370 100644
--- a/gr-qtgui/include/gnuradio/qtgui/displayform.h
+++ b/gr-qtgui/include/gnuradio/qtgui/displayform.h
@@ -83,6 +83,7 @@ public slots:
void setStop();
void setGrid(bool on);
+ void setAxisLabels(bool en);
void saveFigure();
@@ -117,6 +118,8 @@ protected:
bool d_stop_state;
QAction *d_grid_act;
bool d_grid_state;
+ QAction *d_axislabelsmenu;
+ bool d_axislabels;
QAction *d_autoscale_act;
bool d_autoscale_state;
diff --git a/gr-qtgui/include/gnuradio/qtgui/freq_sink_c.h b/gr-qtgui/include/gnuradio/qtgui/freq_sink_c.h
index bf5a91f0df..3aea2d1b84 100644
--- a/gr-qtgui/include/gnuradio/qtgui/freq_sink_c.h
+++ b/gr-qtgui/include/gnuradio/qtgui/freq_sink_c.h
@@ -128,6 +128,7 @@ namespace gr {
virtual void set_update_time(double t) = 0;
virtual void set_title(const std::string &title) = 0;
+ virtual void set_y_label(const std::string &label, const std::string &unit) = 0;
virtual void set_line_label(int which, const std::string &label) = 0;
virtual void set_line_color(int which, const std::string &color) = 0;
virtual void set_line_width(int which, int width) = 0;
@@ -182,6 +183,7 @@ namespace gr {
virtual void clear_min_hold() = 0;
virtual void disable_legend() = 0;
virtual void reset() = 0;
+ virtual void enable_axis_labels(bool en=true) = 0;
QApplication *d_qApplication;
};
diff --git a/gr-qtgui/include/gnuradio/qtgui/freq_sink_f.h b/gr-qtgui/include/gnuradio/qtgui/freq_sink_f.h
index f13d5c6e40..eb68806c07 100644
--- a/gr-qtgui/include/gnuradio/qtgui/freq_sink_f.h
+++ b/gr-qtgui/include/gnuradio/qtgui/freq_sink_f.h
@@ -126,7 +126,9 @@ namespace gr {
virtual void set_y_axis(double min, double max) = 0;
virtual void set_update_time(double t) = 0;
+
virtual void set_title(const std::string &title) = 0;
+ virtual void set_y_label(const std::string &label, const std::string &unit) = 0;
virtual void set_line_label(int which, const std::string &label) = 0;
virtual void set_line_color(int which, const std::string &color) = 0;
virtual void set_line_width(int which, int width) = 0;
@@ -188,6 +190,7 @@ namespace gr {
virtual void clear_min_hold() = 0;
virtual void disable_legend() = 0;
virtual void reset() = 0;
+ virtual void enable_axis_labels(bool en=true) = 0;
QApplication *d_qApplication;
};
diff --git a/gr-qtgui/include/gnuradio/qtgui/freqcontrolpanel.h b/gr-qtgui/include/gnuradio/qtgui/freqcontrolpanel.h
index ce0aeedf9f..ec3ef6cfd1 100644
--- a/gr-qtgui/include/gnuradio/qtgui/freqcontrolpanel.h
+++ b/gr-qtgui/include/gnuradio/qtgui/freqcontrolpanel.h
@@ -76,6 +76,7 @@ private:
QVBoxLayout *d_axes_layout;
QCheckBox *d_grid_check;
+ QCheckBox *d_axislabels_check;
QHBoxLayout *d_yrange_layout;
QLabel *d_yrange_label;
QPushButton *d_yrange_plus;
diff --git a/gr-qtgui/include/gnuradio/qtgui/freqdisplayform.h b/gr-qtgui/include/gnuradio/qtgui/freqdisplayform.h
index e7b95cb30e..4d8ed3e2a1 100644
--- a/gr-qtgui/include/gnuradio/qtgui/freqdisplayform.h
+++ b/gr-qtgui/include/gnuradio/qtgui/freqdisplayform.h
@@ -75,6 +75,8 @@ public slots:
void setFrequencyRange(const double centerfreq,
const double bandwidth);
void setYaxis(double min, double max);
+ void setYLabel(const std::string &label,
+ const std::string &unit="");
void setYMax(const QString &m);
void setYMin(const QString &m);
void autoScale(bool en);
@@ -108,7 +110,6 @@ public slots:
void notifyTriggerLevelPlus();
void notifyTriggerLevelMinus();
-
signals:
void signalFFTSize(int size);
void signalFFTWindow(gr::filter::firdes::win_type win);
diff --git a/gr-qtgui/include/gnuradio/qtgui/histogram_sink_f.h b/gr-qtgui/include/gnuradio/qtgui/histogram_sink_f.h
index 431941a414..6e7dee005d 100644
--- a/gr-qtgui/include/gnuradio/qtgui/histogram_sink_f.h
+++ b/gr-qtgui/include/gnuradio/qtgui/histogram_sink_f.h
@@ -121,6 +121,7 @@ namespace gr {
virtual void enable_semilogx(bool en=true) = 0;
virtual void enable_semilogy(bool en=true) = 0;
virtual void enable_accumulate(bool en=true) = 0;
+ virtual void enable_axis_labels(bool en=true) = 0;
virtual void autoscalex() = 0;
virtual int nsamps() const = 0;
virtual int bins() const = 0;
diff --git a/gr-qtgui/include/gnuradio/qtgui/time_raster_sink_b.h b/gr-qtgui/include/gnuradio/qtgui/time_raster_sink_b.h
index ed55e2ed50..efaef1cc4b 100644
--- a/gr-qtgui/include/gnuradio/qtgui/time_raster_sink_b.h
+++ b/gr-qtgui/include/gnuradio/qtgui/time_raster_sink_b.h
@@ -131,6 +131,7 @@ namespace gr {
virtual void enable_menu(bool en) = 0;
virtual void enable_grid(bool en) = 0;
virtual void enable_autoscale(bool en) = 0;
+ virtual void enable_axis_labels(bool en=true) = 0;
virtual void reset() = 0;
QApplication *d_qApplication;
diff --git a/gr-qtgui/include/gnuradio/qtgui/time_raster_sink_f.h b/gr-qtgui/include/gnuradio/qtgui/time_raster_sink_f.h
index 5610dabdda..ae2ec8d11b 100644
--- a/gr-qtgui/include/gnuradio/qtgui/time_raster_sink_f.h
+++ b/gr-qtgui/include/gnuradio/qtgui/time_raster_sink_f.h
@@ -127,6 +127,7 @@ namespace gr {
virtual void enable_menu(bool en) = 0;
virtual void enable_grid(bool en) = 0;
virtual void enable_autoscale(bool en) = 0;
+ virtual void enable_axis_labels(bool en=true) = 0;
virtual void reset() = 0;
QApplication *d_qApplication;
diff --git a/gr-qtgui/include/gnuradio/qtgui/time_sink_c.h b/gr-qtgui/include/gnuradio/qtgui/time_sink_c.h
index 10c87c8bf2..af921afc1b 100644
--- a/gr-qtgui/include/gnuradio/qtgui/time_sink_c.h
+++ b/gr-qtgui/include/gnuradio/qtgui/time_sink_c.h
@@ -170,6 +170,7 @@ namespace gr {
virtual void enable_semilogy(bool en=true) = 0;
virtual void enable_control_panel(bool en=true) = 0;
virtual void enable_tags(int which, bool en) = 0;
+ virtual void enable_axis_labels(bool en=true) = 0;
virtual void disable_legend() = 0;
virtual int nsamps() const = 0;
diff --git a/gr-qtgui/include/gnuradio/qtgui/time_sink_f.h b/gr-qtgui/include/gnuradio/qtgui/time_sink_f.h
index d96383c0e8..7ddca46297 100644
--- a/gr-qtgui/include/gnuradio/qtgui/time_sink_f.h
+++ b/gr-qtgui/include/gnuradio/qtgui/time_sink_f.h
@@ -160,6 +160,7 @@ namespace gr {
virtual void enable_semilogy(bool en=true) = 0;
virtual void enable_control_panel(bool en=true) = 0;
virtual void enable_tags(int which, bool en) = 0;
+ virtual void enable_axis_labels(bool en=true) = 0;
virtual void disable_legend() = 0;
virtual int nsamps() const = 0;
diff --git a/gr-qtgui/include/gnuradio/qtgui/timecontrolpanel.h b/gr-qtgui/include/gnuradio/qtgui/timecontrolpanel.h
index aabd890e6e..d7cbf5431b 100644
--- a/gr-qtgui/include/gnuradio/qtgui/timecontrolpanel.h
+++ b/gr-qtgui/include/gnuradio/qtgui/timecontrolpanel.h
@@ -75,6 +75,8 @@ private:
QCheckBox *d_autoscale_check;
QCheckBox *d_grid_check;
+ QCheckBox *d_axislabels_check;
+
QPushButton *d_yoff_plus, *d_yoff_minus;
QPushButton *d_yrange_plus, *d_yrange_minus;
QPushButton *d_xmax_plus, *d_xmax_minus;
diff --git a/gr-qtgui/include/gnuradio/qtgui/waterfall_sink_c.h b/gr-qtgui/include/gnuradio/qtgui/waterfall_sink_c.h
index 71a8b925bb..1e4073aa01 100644
--- a/gr-qtgui/include/gnuradio/qtgui/waterfall_sink_c.h
+++ b/gr-qtgui/include/gnuradio/qtgui/waterfall_sink_c.h
@@ -156,6 +156,7 @@ namespace gr {
virtual void enable_menu(bool en=true) = 0;
virtual void enable_grid(bool en=true) = 0;
virtual void disable_legend() = 0;
+ virtual void enable_axis_labels(bool en=true) = 0;
QApplication *d_qApplication;
};
diff --git a/gr-qtgui/include/gnuradio/qtgui/waterfall_sink_f.h b/gr-qtgui/include/gnuradio/qtgui/waterfall_sink_f.h
index 2a51fba865..93c93bdd5e 100644
--- a/gr-qtgui/include/gnuradio/qtgui/waterfall_sink_f.h
+++ b/gr-qtgui/include/gnuradio/qtgui/waterfall_sink_f.h
@@ -164,6 +164,7 @@ namespace gr {
virtual void enable_menu(bool en=true) = 0;
virtual void enable_grid(bool en=true) = 0;
virtual void disable_legend() = 0;
+ virtual void enable_axis_labels(bool en=true) = 0;
QApplication *d_qApplication;
};
diff --git a/gr-qtgui/lib/DisplayPlot.cc b/gr-qtgui/lib/DisplayPlot.cc
index 30fd837772..59384c88f6 100644
--- a/gr-qtgui/lib/DisplayPlot.cc
+++ b/gr-qtgui/lib/DisplayPlot.cc
@@ -443,3 +443,12 @@ DisplayPlot::onPickerPointSelected6(const QPointF & p)
//fprintf(stderr,"onPickerPointSelected %f %f\n", point.x(), point.y());
emit plotPointSelected(point);
}
+
+void
+DisplayPlot::setAxisLabels(bool en)
+{
+ enableAxis(0,en);
+ enableAxis(2,en);
+}
+
+
diff --git a/gr-qtgui/lib/FrequencyDisplayPlot.cc b/gr-qtgui/lib/FrequencyDisplayPlot.cc
index aef975d332..233c786d0a 100644
--- a/gr-qtgui/lib/FrequencyDisplayPlot.cc
+++ b/gr-qtgui/lib/FrequencyDisplayPlot.cc
@@ -97,7 +97,7 @@ FrequencyDisplayPlot::FrequencyDisplayPlot(int nplots, QWidget* parent)
d_ymax = 10;
setAxisScaleEngine(QwtPlot::yLeft, new QwtLinearScaleEngine);
setAxisScale(QwtPlot::yLeft, d_ymin, d_ymax);
- setAxisTitle(QwtPlot::yLeft, "Power (dB)");
+ setAxisTitle(QwtPlot::yLeft, "Relative Gain (dB)");
QList<QColor> default_colors;
default_colors << QColor(Qt::blue) << QColor(Qt::red) << QColor(Qt::green)
@@ -600,6 +600,17 @@ FrequencyDisplayPlot::onPickerPointSelected6(const QPointF & p)
}
void
+FrequencyDisplayPlot::setYLabel(const std::string &label,
+ const std::string &unit)
+{
+ std::string l = label;
+ if(unit.length() > 0)
+ l += " (" + unit + ")";
+ setAxisTitle(QwtPlot::yLeft, QString(l.c_str()));
+ ((FreqDisplayZoomer*)d_zoomer)->setUnitType(unit);
+}
+
+void
FrequencyDisplayPlot::setMinFFTColor (QColor c)
{
d_min_fft_color = c;
diff --git a/gr-qtgui/lib/WaterfallDisplayPlot.cc b/gr-qtgui/lib/WaterfallDisplayPlot.cc
index 676e4077db..b16c32bf9d 100644
--- a/gr-qtgui/lib/WaterfallDisplayPlot.cc
+++ b/gr-qtgui/lib/WaterfallDisplayPlot.cc
@@ -657,8 +657,6 @@ WaterfallDisplayPlot::_updateIntensityRangeDisplay()
setAxisScale(QwtPlot::yRight, intv.minValue(), intv.maxValue());
#endif
- enableAxis(d_legend_enabled);
-
plotLayout()->setAlignCanvasToScales(true);
// Tell the display to redraw everything
diff --git a/gr-qtgui/lib/const_sink_c_impl.cc b/gr-qtgui/lib/const_sink_c_impl.cc
index 7ef8db393d..eaaf5f570a 100644
--- a/gr-qtgui/lib/const_sink_c_impl.cc
+++ b/gr-qtgui/lib/const_sink_c_impl.cc
@@ -375,6 +375,12 @@ namespace gr {
}
void
+ const_sink_c_impl::enable_axis_labels(bool en)
+ {
+ d_main_gui->setAxisLabels(en);
+ }
+
+ void
const_sink_c_impl::disable_legend()
{
d_main_gui->disableLegend();
diff --git a/gr-qtgui/lib/const_sink_c_impl.h b/gr-qtgui/lib/const_sink_c_impl.h
index 7d52c3ae15..f2dcb6e73e 100644
--- a/gr-qtgui/lib/const_sink_c_impl.h
+++ b/gr-qtgui/lib/const_sink_c_impl.h
@@ -118,6 +118,7 @@ namespace gr {
void enable_menu(bool en);
void enable_autoscale(bool en);
void enable_grid(bool en);
+ void enable_axis_labels(bool en);
void disable_legend();
void reset();
diff --git a/gr-qtgui/lib/displayform.cc b/gr-qtgui/lib/displayform.cc
index 27a09512fc..13c2d8a193 100644
--- a/gr-qtgui/lib/displayform.cc
+++ b/gr-qtgui/lib/displayform.cc
@@ -29,6 +29,7 @@ DisplayForm::DisplayForm(int nplots, QWidget* parent)
: QWidget(parent), d_nplots(nplots), d_system_specified_flag(false)
{
d_isclosed = false;
+ d_axislabels = true;
// Set the initial plot size
resize(QSize(800, 600));
@@ -53,11 +54,18 @@ DisplayForm::DisplayForm(int nplots, QWidget* parent)
this, SLOT(setGrid(bool)));
d_grid_state = false;
+ d_axislabelsmenu = new QAction("Axis Labels", this);
+ d_axislabelsmenu->setCheckable(true);
+ d_axislabelsmenu->setStatusTip(tr("Toggle Axis Labels on/off"));
+ connect(d_axislabelsmenu, SIGNAL(triggered(bool)),
+ this, SLOT(setAxisLabels(bool)));
+
// Create a pop-up menu for manipulating the figure
d_menu_on = true;
d_menu = new QMenu(this);
d_menu->addAction(d_stop_act);
d_menu->addAction(d_grid_act);
+ d_menu->addAction(d_axislabelsmenu);
for(int i = 0; i < d_nplots; i++) {
d_line_title_act.push_back(new LineTitleAction(i, this));
@@ -339,6 +347,14 @@ DisplayForm::setGrid(bool on)
}
void
+DisplayForm::setAxisLabels(bool en)
+{
+ d_axislabels = en;
+ d_axislabelsmenu->setChecked(en);
+ getPlot()->setAxisLabels(d_axislabels);
+}
+
+void
DisplayForm::saveFigure()
{
QPixmap qpix = QPixmap::grabWidget(this);
diff --git a/gr-qtgui/lib/freq_sink_c_impl.cc b/gr-qtgui/lib/freq_sink_c_impl.cc
index 7dc0b2cf89..517786d58d 100644
--- a/gr-qtgui/lib/freq_sink_c_impl.cc
+++ b/gr-qtgui/lib/freq_sink_c_impl.cc
@@ -266,6 +266,13 @@ namespace gr {
}
void
+ freq_sink_c_impl::set_y_label(const std::string &label,
+ const std::string &unit)
+ {
+ d_main_gui->setYLabel(label, unit);
+ }
+
+ void
freq_sink_c_impl::set_update_time(double t)
{
//convert update time to ticks
@@ -407,6 +414,12 @@ namespace gr {
}
void
+ freq_sink_c_impl::enable_axis_labels(bool en)
+ {
+ d_main_gui->setAxisLabels(en);
+ }
+
+ void
freq_sink_c_impl::enable_control_panel(bool en)
{
if(en)
diff --git a/gr-qtgui/lib/freq_sink_c_impl.h b/gr-qtgui/lib/freq_sink_c_impl.h
index 8da193bf29..b102209359 100644
--- a/gr-qtgui/lib/freq_sink_c_impl.h
+++ b/gr-qtgui/lib/freq_sink_c_impl.h
@@ -123,6 +123,7 @@ namespace gr {
void set_update_time(double t);
void set_title(const std::string &title);
+ void set_y_label(const std::string &label, const std::string &unit);
void set_line_label(int which, const std::string &label);
void set_line_color(int which, const std::string &color);
void set_line_width(int which, int width);
@@ -153,6 +154,7 @@ namespace gr {
void clear_min_hold();
void disable_legend();
void reset();
+ void enable_axis_labels(bool en);
int work(int noutput_items,
gr_vector_const_void_star &input_items,
diff --git a/gr-qtgui/lib/freq_sink_f_impl.cc b/gr-qtgui/lib/freq_sink_f_impl.cc
index 5418eca9ec..90624e78eb 100644
--- a/gr-qtgui/lib/freq_sink_f_impl.cc
+++ b/gr-qtgui/lib/freq_sink_f_impl.cc
@@ -265,6 +265,13 @@ namespace gr {
}
void
+ freq_sink_f_impl::set_y_label(const std::string &label,
+ const std::string &unit)
+ {
+ d_main_gui->setYLabel(label, unit);
+ }
+
+ void
freq_sink_f_impl::set_update_time(double t)
{
//convert update time to ticks
@@ -412,6 +419,12 @@ namespace gr {
}
void
+ freq_sink_f_impl::enable_axis_labels(bool en)
+ {
+ d_main_gui->setAxisLabels(en);
+ }
+
+ void
freq_sink_f_impl::enable_control_panel(bool en)
{
if(en)
diff --git a/gr-qtgui/lib/freq_sink_f_impl.h b/gr-qtgui/lib/freq_sink_f_impl.h
index 39e5c92eac..85d45b3f4c 100644
--- a/gr-qtgui/lib/freq_sink_f_impl.h
+++ b/gr-qtgui/lib/freq_sink_f_impl.h
@@ -122,6 +122,7 @@ namespace gr {
void set_update_time(double t);
void set_title(const std::string &title);
+ void set_y_label(const std::string &label, const std::string &unit);
void set_line_label(int which, const std::string &label);
void set_line_color(int which, const std::string &color);
void set_line_width(int which, int width);
@@ -153,6 +154,7 @@ namespace gr {
void clear_min_hold();
void disable_legend();
void reset();
+ void enable_axis_labels(bool en);
int work(int noutput_items,
gr_vector_const_void_star &input_items,
diff --git a/gr-qtgui/lib/freqcontrolpanel.cc b/gr-qtgui/lib/freqcontrolpanel.cc
index 5840989949..9729005f50 100644
--- a/gr-qtgui/lib/freqcontrolpanel.cc
+++ b/gr-qtgui/lib/freqcontrolpanel.cc
@@ -50,6 +50,7 @@ FreqControlPanel::FreqControlPanel(FreqDisplayForm *form)
d_axes_layout = new QVBoxLayout;
d_grid_check = new QCheckBox("Grid");
+ d_axislabels_check = new QCheckBox("Axis Labels");
d_yrange_layout = new QHBoxLayout;
d_yrange_label = new QLabel("Y Range:");
d_yrange_plus = new QPushButton("+");
@@ -133,6 +134,7 @@ FreqControlPanel::FreqControlPanel(FreqDisplayForm *form)
d_trace_box->setLayout(d_trace_layout);
d_axes_layout->addWidget(d_grid_check);
+ d_axes_layout->addWidget(d_axislabels_check);
d_axes_layout->addLayout(d_yrange_layout);
d_axes_layout->addLayout(d_ymin_layout);
d_axes_layout->addWidget(d_autoscale_button);
@@ -171,6 +173,9 @@ FreqControlPanel::FreqControlPanel(FreqDisplayForm *form)
connect(d_grid_check, SIGNAL(clicked(bool)),
d_parent, SLOT(setGrid(bool)));
+ connect(d_axislabels_check, SIGNAL(clicked(bool)),
+ d_parent, SLOT(setAxisLabels(bool)));
+
connect(d_ymin_plus, SIGNAL(pressed(void)),
d_parent, SLOT(notifyYAxisPlus(void)));
connect(d_ymin_minus, SIGNAL(pressed(void)),
diff --git a/gr-qtgui/lib/freqdisplayform.cc b/gr-qtgui/lib/freqdisplayform.cc
index a51da3f35d..141df5475c 100644
--- a/gr-qtgui/lib/freqdisplayform.cc
+++ b/gr-qtgui/lib/freqdisplayform.cc
@@ -323,6 +323,12 @@ FreqDisplayForm::setYaxis(double min, double max)
getPlot()->setYaxis(min, max);
}
+void FreqDisplayForm::setYLabel(const std::string &label,
+ const std::string &unit)
+{
+ getPlot()->setYLabel(label, unit);
+}
+
void
FreqDisplayForm::setYMax(const QString &m)
{
diff --git a/gr-qtgui/lib/histogram_sink_f_impl.cc b/gr-qtgui/lib/histogram_sink_f_impl.cc
index 0ac494d751..4a1267c129 100644
--- a/gr-qtgui/lib/histogram_sink_f_impl.cc
+++ b/gr-qtgui/lib/histogram_sink_f_impl.cc
@@ -346,6 +346,12 @@ namespace gr {
}
void
+ histogram_sink_f_impl::enable_axis_labels(bool en)
+ {
+ d_main_gui->setAxisLabels(en);
+ }
+
+ void
histogram_sink_f_impl::enable_autoscale(bool en)
{
d_main_gui->autoScale(en);
diff --git a/gr-qtgui/lib/histogram_sink_f_impl.h b/gr-qtgui/lib/histogram_sink_f_impl.h
index acacf1a745..d397beeb6b 100644
--- a/gr-qtgui/lib/histogram_sink_f_impl.h
+++ b/gr-qtgui/lib/histogram_sink_f_impl.h
@@ -88,6 +88,7 @@ namespace gr {
void set_line_alpha(int which, double alpha);
void set_nsamps(const int newsize);
void set_bins(const int bins);
+ void enable_axis_labels(bool en);
std::string title();
std::string line_label(int which);
diff --git a/gr-qtgui/lib/time_raster_sink_b_impl.cc b/gr-qtgui/lib/time_raster_sink_b_impl.cc
index 26fed4b062..c0990a9890 100644
--- a/gr-qtgui/lib/time_raster_sink_b_impl.cc
+++ b/gr-qtgui/lib/time_raster_sink_b_impl.cc
@@ -418,6 +418,12 @@ namespace gr {
}
void
+ time_raster_sink_b_impl::enable_axis_labels(bool en)
+ {
+ d_main_gui->setAxisLabels(en);
+ }
+
+ void
time_raster_sink_b_impl::enable_autoscale(bool en)
{
d_main_gui->autoScale(en);
diff --git a/gr-qtgui/lib/time_raster_sink_b_impl.h b/gr-qtgui/lib/time_raster_sink_b_impl.h
index 4da6990a18..48037b5e5e 100644
--- a/gr-qtgui/lib/time_raster_sink_b_impl.h
+++ b/gr-qtgui/lib/time_raster_sink_b_impl.h
@@ -122,6 +122,7 @@ namespace gr {
void enable_menu(bool en);
void enable_grid(bool en);
void enable_autoscale(bool en);
+ void enable_axis_labels(bool en);
void reset();
int work(int noutput_items,
diff --git a/gr-qtgui/lib/time_raster_sink_f_impl.cc b/gr-qtgui/lib/time_raster_sink_f_impl.cc
index 419d52cad6..2fb3e7db68 100644
--- a/gr-qtgui/lib/time_raster_sink_f_impl.cc
+++ b/gr-qtgui/lib/time_raster_sink_f_impl.cc
@@ -408,6 +408,12 @@ namespace gr {
}
void
+ time_raster_sink_f_impl::enable_axis_labels(bool en)
+ {
+ d_main_gui->setAxisLabels(en);
+ }
+
+ void
time_raster_sink_f_impl::enable_autoscale(bool en)
{
d_main_gui->autoScale(en);
diff --git a/gr-qtgui/lib/time_raster_sink_f_impl.h b/gr-qtgui/lib/time_raster_sink_f_impl.h
index ad63e4d777..1f25dc5534 100644
--- a/gr-qtgui/lib/time_raster_sink_f_impl.h
+++ b/gr-qtgui/lib/time_raster_sink_f_impl.h
@@ -121,6 +121,7 @@ namespace gr {
void enable_menu(bool en);
void enable_grid(bool en);
void enable_autoscale(bool en);
+ void enable_axis_labels(bool en);
void reset();
int work(int noutput_items,
diff --git a/gr-qtgui/lib/time_sink_c_impl.cc b/gr-qtgui/lib/time_sink_c_impl.cc
index 9f1a04c5c8..3bdf7d13d6 100644
--- a/gr-qtgui/lib/time_sink_c_impl.cc
+++ b/gr-qtgui/lib/time_sink_c_impl.cc
@@ -441,10 +441,16 @@ namespace gr {
d_main_gui->setTagMenu(which, en);
}
+ void
+ time_sink_c_impl::enable_axis_labels(bool en)
+ {
+ d_main_gui->setAxisLabels(en);
+ }
+
void
time_sink_c_impl::disable_legend()
{
- d_main_gui->disableLegend();
+ d_main_gui->disableLegend();
}
void
@@ -652,7 +658,7 @@ namespace gr {
uint64_t nr = nitems_read(n);
std::vector<gr::tag_t> tags;
- get_tags_in_range(tags, n, nr, nr + nitems + 1);
+ get_tags_in_range(tags, n, nr, nr + nitems);
for(size_t t = 0; t < tags.size(); t++) {
tags[t].offset = tags[t].offset - nr + (d_index-d_start-1);
}
diff --git a/gr-qtgui/lib/time_sink_c_impl.h b/gr-qtgui/lib/time_sink_c_impl.h
index ce6bd94d51..ff938f8ea1 100644
--- a/gr-qtgui/lib/time_sink_c_impl.h
+++ b/gr-qtgui/lib/time_sink_c_impl.h
@@ -130,6 +130,7 @@ namespace gr {
void enable_semilogy(bool en);
void enable_control_panel(bool en);
void enable_tags(int which, bool en);
+ void enable_axis_labels(bool en);
void disable_legend();
void reset();
diff --git a/gr-qtgui/lib/time_sink_f_impl.cc b/gr-qtgui/lib/time_sink_f_impl.cc
index e81a9f4acc..50a86d7dff 100644
--- a/gr-qtgui/lib/time_sink_f_impl.cc
+++ b/gr-qtgui/lib/time_sink_f_impl.cc
@@ -437,6 +437,12 @@ namespace gr {
}
void
+ time_sink_f_impl::enable_axis_labels(bool en)
+ {
+ d_main_gui->setAxisLabels(en);
+ }
+
+ void
time_sink_f_impl::disable_legend()
{
d_main_gui->disableLegend();
@@ -643,7 +649,7 @@ namespace gr {
uint64_t nr = nitems_read(idx);
std::vector<gr::tag_t> tags;
- get_tags_in_range(tags, idx, nr, nr + nitems + 1);
+ get_tags_in_range(tags, idx, nr, nr + nitems);
for(size_t t = 0; t < tags.size(); t++) {
tags[t].offset = tags[t].offset - nr + (d_index-d_start-1);
}
diff --git a/gr-qtgui/lib/time_sink_f_impl.h b/gr-qtgui/lib/time_sink_f_impl.h
index 25d920c0da..a7a304aee1 100644
--- a/gr-qtgui/lib/time_sink_f_impl.h
+++ b/gr-qtgui/lib/time_sink_f_impl.h
@@ -130,6 +130,7 @@ namespace gr {
void enable_semilogy(bool en);
void enable_control_panel(bool en);
void enable_tags(int which, bool en);
+ void enable_axis_labels(bool en);
void disable_legend();
void reset();
diff --git a/gr-qtgui/lib/timecontrolpanel.cc b/gr-qtgui/lib/timecontrolpanel.cc
index 4c5a718f97..95d2cb7a1c 100644
--- a/gr-qtgui/lib/timecontrolpanel.cc
+++ b/gr-qtgui/lib/timecontrolpanel.cc
@@ -31,6 +31,8 @@ TimeControlPanel::TimeControlPanel(TimeDisplayForm *form)
d_axes_layout = new QVBoxLayout;
d_autoscale_check = new QCheckBox("Autoscale");
d_grid_check = new QCheckBox("Grid");
+ d_axislabels_check = new QCheckBox("Axis Labels");
+ d_axislabels_check->setChecked(true);
d_yoff_layout = new QHBoxLayout;
d_yoff_label = new QLabel("Y Offset:");
@@ -106,6 +108,7 @@ TimeControlPanel::TimeControlPanel(TimeDisplayForm *form)
// Set up the boxes into the layout
d_axes_layout->addWidget(d_autoscale_check);
d_axes_layout->addWidget(d_grid_check);
+ d_axes_layout->addWidget(d_axislabels_check);
d_axes_layout->addLayout(d_yoff_layout);
d_axes_layout->addLayout(d_yrange_layout);
d_axes_layout->addLayout(d_xmax_layout);
@@ -132,6 +135,8 @@ TimeControlPanel::TimeControlPanel(TimeDisplayForm *form)
d_parent, SLOT(autoScale(bool)));
connect(d_grid_check, SIGNAL(clicked(bool)),
d_parent, SLOT(setGrid(bool)));
+ connect(d_axislabels_check, SIGNAL(clicked(bool)),
+ d_parent, SLOT(setAxisLabels(bool)));
connect(d_yoff_plus, SIGNAL(pressed(void)),
d_parent, SLOT(notifyYAxisPlus(void)));
connect(d_yoff_minus, SIGNAL(pressed(void)),
diff --git a/gr-qtgui/lib/waterfall_sink_c_impl.cc b/gr-qtgui/lib/waterfall_sink_c_impl.cc
index 694ef4dac7..7395aaf2a9 100644
--- a/gr-qtgui/lib/waterfall_sink_c_impl.cc
+++ b/gr-qtgui/lib/waterfall_sink_c_impl.cc
@@ -368,6 +368,12 @@ namespace gr {
}
void
+ waterfall_sink_c_impl::enable_axis_labels(bool en)
+ {
+ d_main_gui->setAxisLabels(en);
+ }
+
+ void
waterfall_sink_c_impl::disable_legend()
{
d_main_gui->disableLegend();
diff --git a/gr-qtgui/lib/waterfall_sink_c_impl.h b/gr-qtgui/lib/waterfall_sink_c_impl.h
index 3e7f9ddd2d..49766cd3dc 100644
--- a/gr-qtgui/lib/waterfall_sink_c_impl.h
+++ b/gr-qtgui/lib/waterfall_sink_c_impl.h
@@ -132,6 +132,7 @@ namespace gr {
void enable_menu(bool en);
void enable_grid(bool en);
void disable_legend();
+ void enable_axis_labels(bool en);
int work(int noutput_items,
gr_vector_const_void_star &input_items,
diff --git a/gr-qtgui/lib/waterfall_sink_f_impl.cc b/gr-qtgui/lib/waterfall_sink_f_impl.cc
index 56c2061f25..b6f50de31d 100644
--- a/gr-qtgui/lib/waterfall_sink_f_impl.cc
+++ b/gr-qtgui/lib/waterfall_sink_f_impl.cc
@@ -374,6 +374,12 @@ namespace gr {
}
void
+ waterfall_sink_f_impl::enable_axis_labels(bool en)
+ {
+ d_main_gui->setAxisLabels(en);
+ }
+
+ void
waterfall_sink_f_impl::disable_legend()
{
d_main_gui->disableLegend();
diff --git a/gr-qtgui/lib/waterfall_sink_f_impl.h b/gr-qtgui/lib/waterfall_sink_f_impl.h
index e4f855c9f5..db0f4239bc 100644
--- a/gr-qtgui/lib/waterfall_sink_f_impl.h
+++ b/gr-qtgui/lib/waterfall_sink_f_impl.h
@@ -133,6 +133,7 @@ namespace gr {
void enable_menu(bool en);
void enable_grid(bool en);
void disable_legend();
+ void enable_axis_labels(bool en);
int work(int noutput_items,
gr_vector_const_void_star &input_items,
diff --git a/gr-uhd/apps/uhd_app.py b/gr-uhd/apps/uhd_app.py
index 0a2beec21c..ff4412a140 100644
--- a/gr-uhd/apps/uhd_app.py
+++ b/gr-uhd/apps/uhd_app.py
@@ -170,12 +170,17 @@ class UHDApp(object):
treq = uhd.tune_request(args.freq)
self.has_lo_sensor = 'lo_locked' in self.usrp.get_sensor_names()
# Make sure tuning is synched:
+ command_time_set = False
if len(self.channels) > 1:
if args.sync == 'pps':
self.usrp.set_time_unknown_pps(uhd.time_spec())
cmd_time = self.usrp.get_time_now() + uhd.time_spec(COMMAND_DELAY)
- for mb_idx in xrange(self.usrp.get_num_mboards()):
- self.usrp.set_command_time(cmd_time, mb_idx)
+ try:
+ for mb_idx in xrange(self.usrp.get_num_mboards()):
+ self.usrp.set_command_time(cmd_time, mb_idx)
+ command_time_set = True
+ except RuntimeError:
+ sys.stderr.write('[{prefix}] [WARNING] Failed to set command times.\n'.format(prefix=self.prefix))
for chan in self.channels:
self.tr = self.usrp.set_center_freq(treq, chan)
if self.tr == None:
@@ -183,7 +188,7 @@ class UHDApp(object):
prefix=self.prefix, chan=chan
))
exit(1)
- if len(self.channels) > 1:
+ if command_time_set:
for mb_idx in xrange(self.usrp.get_num_mboards()):
self.usrp.clear_command_time(mb_idx)
self.vprint("Syncing channels...".format(prefix=self.prefix))
@@ -226,10 +231,15 @@ class UHDApp(object):
else:
treq = uhd.tune_request(freq)
# Make sure tuning is synched:
+ command_time_set = False
if len(self.channels) > 1 and not skip_sync:
cmd_time = self.usrp.get_time_now() + uhd.time_spec(COMMAND_DELAY)
- for mb_idx in xrange(self.usrp.get_num_mboards()):
- self.usrp.set_command_time(cmd_time, mb_idx)
+ try:
+ for mb_idx in xrange(self.usrp.get_num_mboards()):
+ self.usrp.set_command_time(cmd_time, mb_idx)
+ command_time_set = True
+ except RuntimeError:
+ sys.stderr.write('[{prefix}] [WARNING] Failed to set command times.\n'.format(prefix=self.prefix))
for chan in self.channels:
self.tr = self.usrp.set_center_freq(treq, chan)
if self.tr == None:
@@ -237,7 +247,7 @@ class UHDApp(object):
prefix=self.prefix, chan=chan
))
exit(1)
- if len(self.channels) > 1 and not skip_sync:
+ if command_time_set:
for mb_idx in xrange(self.usrp.get_num_mboards()):
self.usrp.clear_command_time(mb_idx)
self.vprint("Syncing channels...".format(prefix=self.prefix))
diff --git a/gr-uhd/apps/uhd_rx_cfile b/gr-uhd/apps/uhd_rx_cfile
index 80bbc8766c..f76dc2ed68 100755
--- a/gr-uhd/apps/uhd_rx_cfile
+++ b/gr-uhd/apps/uhd_rx_cfile
@@ -82,20 +82,21 @@ class rx_cfile_block(gr.top_block):
for mb_idx in xrange(self._u.get_num_mboards()):
self._u.set_subdev_spec(options.spec, mb_idx)
# Set the antenna:
- self.antenna = [x.strip() for x in options.antenna.split(",")]
- if len(self.antenna) != 1 and len(self.antenna) != len(self.channels):
- sys.stderr.write("[UHD_RX] [ERROR] Invalid antenna setting for {} channels: {}".format(
- len(self.channels), options.antenna
- ))
- exit(1)
- if len(self.antenna) == 1 and len(self.channels) > 1:
- self.antenna = [self.antenna[0],] * len(self.channels)
- for i, chan in enumerate(self.channels):
- self._u.set_antenna(self.antenna[i], chan)
- if options.verbose:
- print("[UHD_RX] Channel {chan}: Using antenna {ant}.".format(
- chan=chan, ant=self._u.get_antenna(chan)
+ if options.antenna is not None:
+ self.antenna = [x.strip() for x in options.antenna.split(",")]
+ if len(self.antenna) != 1 and len(self.antenna) != len(self.channels):
+ sys.stderr.write("[UHD_RX] [ERROR] Invalid antenna setting for {} channels: {}".format(
+ len(self.channels), options.antenna
))
+ exit(1)
+ if len(self.antenna) == 1 and len(self.channels) > 1:
+ self.antenna = [self.antenna[0],] * len(self.channels)
+ for i, chan in enumerate(self.channels):
+ self._u.set_antenna(self.antenna[i], chan)
+ if options.verbose:
+ print("[UHD_RX] Channel {chan}: Using antenna {ant}.".format(
+ chan=chan, ant=self._u.get_antenna(chan)
+ ))
# Set receiver sample rate:
self._u.set_samp_rate(options.samp_rate)
samp_rate = self._u.get_samp_rate()
@@ -115,18 +116,23 @@ class rx_cfile_block(gr.top_block):
else:
treq = uhd.tune_request(options.freq)
# Make sure tuning is synched:
+ command_time_set = False
if len(self.channels) > 1:
if options.sync == 'pps':
self._u.set_time_unknown_pps(uhd.time_spec())
cmd_time = self._u.get_time_now() + uhd.time_spec(COMMAND_DELAY)
- for mb_idx in xrange(self._u.get_num_mboards()):
- self._u.set_command_time(cmd_time, mb_idx)
+ try:
+ for mb_idx in xrange(self._u.get_num_mboards()):
+ self._u.set_command_time(cmd_time, mb_idx)
+ command_time_set = True
+ except RuntimeError:
+ sys.stderr.write('[UHD_RX] [WARNING] Failed to set command times.\n')
for chan in self.channels:
tr = self._u.set_center_freq(treq, chan)
if tr == None:
sys.stderr.write('[UHD_RX] [ERROR] Failed to set center frequency on channel {chan}\n'.format(chan=chan))
exit(1)
- if len(self.channels) > 1:
+ if command_time_set:
for mb_idx in xrange(self._u.get_num_mboards()):
self._u.clear_command_time(mb_idx)
print("[UHD_RX] Syncing channels...")
@@ -186,7 +192,7 @@ class rx_cfile_block(gr.top_block):
if options.nsamples is None:
print("[UHD_RX] Receiving samples until Ctrl-C")
else:
- print("[UHD_RX] Receiving {n} samples.".format(n2s(options.nsamples)))
+ print("[UHD_RX] Receiving {n} samples.".format(n=n2s(options.nsamples)))
if options.output_shorts:
print("[UHD_RX] Writing 16-bit complex shorts")
else:
diff --git a/grc/gui/FlowGraph.py b/grc/gui/FlowGraph.py
index 867a7cd2e8..63fd841218 100644
--- a/grc/gui/FlowGraph.py
+++ b/grc/gui/FlowGraph.py
@@ -184,11 +184,15 @@ class FlowGraph(Element):
v_adj = self.get_scroll_pane().get_vadjustment()
x_off = h_adj.get_value() - x_min + h_adj.page_size/4
y_off = v_adj.get_value() - y_min + v_adj.page_size/4
+ if len(self.get_elements()) <= 1:
+ x_off, y_off = 0, 0
#create blocks
for block_n in blocks_n:
block_key = block_n.find('key')
if block_key == 'options': continue
block = self.get_new_block(block_key)
+ if not block:
+ continue # unknown block was pasted (e.g. dummy block)
selected.add(block)
#set params
params_n = block_n.findall('param')