diff options
author | Johnathan Corgan <johnathan@corganlabs.com> | 2016-02-21 07:33:02 -0800 |
---|---|---|
committer | Johnathan Corgan <johnathan@corganlabs.com> | 2016-02-21 07:33:02 -0800 |
commit | e34866dad21a98e901c188df7e87f37ae5502a88 (patch) | |
tree | fb5dd0f2c395b31c70e65f127ce0190ec2b90a56 | |
parent | 4aabba72f0d268174855fce97a80bd55acb1358c (diff) | |
parent | 762a08915c252e0604b466dc97d5e51b0a86562d (diff) |
Merge branch 'master' into next
Conflicts:
gr-utils/python/modtool/templates.py
53 files changed, 274 insertions, 27 deletions
diff --git a/cmake/Modules/GrVersion.cmake b/cmake/Modules/GrVersion.cmake index bafd0a7326..dceac67bab 100644 --- a/cmake/Modules/GrVersion.cmake +++ b/cmake/Modules/GrVersion.cmake @@ -41,7 +41,13 @@ if(GIT_FOUND AND EXISTS ${CMAKE_SOURCE_DIR}/.git) WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ) else() - set(GIT_DESCRIBE "v${MAJOR_VERSION}.${API_COMPAT}.x-xxx-xunknown") + if(NOT GR_GIT_COUNT) + set(GR_GIT_COUNT "compat-xxx") + endif() + if(NOT GR_GIT_HASH) + set(GR_GIT_HASH "xunknown") + endif() + set(GIT_DESCRIBE "v${MAJOR_VERSION}.${API_COMPAT}-${GR_GIT_COUNT}-${GR_GIT_HASH}") endif() ######################################################################## 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 f69650fab3..009a184327 100644 --- a/gr-qtgui/grc/qtgui_freq_sink_x.xml +++ b/gr-qtgui/grc/qtgui_freq_sink_x.xml @@ -27,6 +27,7 @@ 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: @@ -400,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/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 c77283f1c8..3aea2d1b84 100644 --- a/gr-qtgui/include/gnuradio/qtgui/freq_sink_c.h +++ b/gr-qtgui/include/gnuradio/qtgui/freq_sink_c.h @@ -183,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 ccf9db49a3..eb68806c07 100644 --- a/gr-qtgui/include/gnuradio/qtgui/freq_sink_f.h +++ b/gr-qtgui/include/gnuradio/qtgui/freq_sink_f.h @@ -190,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 b11f8a2016..4d8ed3e2a1 100644 --- a/gr-qtgui/include/gnuradio/qtgui/freqdisplayform.h +++ b/gr-qtgui/include/gnuradio/qtgui/freqdisplayform.h @@ -110,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/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 b667ccaee4..517786d58d 100644 --- a/gr-qtgui/lib/freq_sink_c_impl.cc +++ b/gr-qtgui/lib/freq_sink_c_impl.cc @@ -414,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 7eec1ba10c..b102209359 100644 --- a/gr-qtgui/lib/freq_sink_c_impl.h +++ b/gr-qtgui/lib/freq_sink_c_impl.h @@ -154,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 359854593a..90624e78eb 100644 --- a/gr-qtgui/lib/freq_sink_f_impl.cc +++ b/gr-qtgui/lib/freq_sink_f_impl.cc @@ -419,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 e52da7fb94..85d45b3f4c 100644 --- a/gr-qtgui/lib/freq_sink_f_impl.h +++ b/gr-qtgui/lib/freq_sink_f_impl.h @@ -154,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/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_rx_cfile b/gr-uhd/apps/uhd_rx_cfile index 85a7562d08..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() diff --git a/gr-utils/python/modtool/modtool_add.py b/gr-utils/python/modtool/modtool_add.py index 75d4d6d2e4..eb269080b4 100644 --- a/gr-utils/python/modtool/modtool_add.py +++ b/gr-utils/python/modtool/modtool_add.py @@ -51,6 +51,8 @@ class ModToolAdd(ModTool): choices=self._block_types, default=None, help="One of %s." % ', '.join(self._block_types)) ogroup.add_option("--license-file", type="string", default=None, help="File containing the license header for every source code file.") + ogroup.add_option("--copyright", type="string", default=None, + help="Name of the copyright holder (you or your company) MUST be a quoted string.") ogroup.add_option("--argument-list", type="string", default=None, help="The argument list for the constructor and make functions.") ogroup.add_option("--add-python-qa", action="store_true", default=None, @@ -75,7 +77,6 @@ class ModToolAdd(ModTool): self._info['blocktype'] = raw_input("Enter block type: ") if self._info['blocktype'] not in self._block_types: print 'Must be one of ' + str(self._block_types) - # Allow user to specify language interactively if not set self._info['lang'] = options.lang if self._info['lang'] is None: @@ -100,8 +101,14 @@ class ModToolAdd(ModTool): raise ModToolException('Invalid block name.') print "Block/code identifier: " + self._info['blockname'] self._info['fullblockname'] = self._info['modname'] + '_' + self._info['blockname'] + if not options.license_file: + self._info['copyrightholder'] = options.copyright + if self._info['copyrightholder'] is None: + self._info['copyrightholder'] = '<+YOU OR YOUR COMPANY+>' + elif self._info['is_component']: + print "For GNU Radio components the FSF is added as copyright holder" + self._license_file = options.license_file self._info['license'] = self.setup_choose_license() - if options.argument_list is not None: self._info['arglist'] = options.argument_list else: @@ -120,7 +127,6 @@ class ModToolAdd(ModTool): print "Warning: Autotools modules are not supported. ", print "Files will be created, but Makefiles will not be edited." self._skip_cmakefiles = True - self._license_file = options.license_file def setup_choose_license(self): """ Select a license by the following rules, in this order: @@ -138,7 +144,7 @@ class ModToolAdd(ModTool): elif self._info['is_component']: return Templates['grlicense'] else: - return Templates['defaultlicense'] + return get_template('defaultlicense', **self._info) def _write_tpl(self, tpl, path, fname): """ Shorthand for writing a substituted template to a file""" diff --git a/gr-utils/python/modtool/templates.py b/gr-utils/python/modtool/templates.py index 2e222e2172..1d03d9f24d 100644 --- a/gr-utils/python/modtool/templates.py +++ b/gr-utils/python/modtool/templates.py @@ -26,7 +26,7 @@ Templates = {} # Default licence Templates['defaultlicense'] = ''' -Copyright {0} <+YOU OR YOUR COMPANY+>. +Copyright %d ${copyrightholder}. This is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -770,4 +770,3 @@ class ${modname.upper()}_API ${modname}_${blockname} : public gr_${grblocktype} #endif /* INCLUDED_${modname.upper()}_${blockname.upper()}_H */ ''' - 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') |