diff options
-rw-r--r-- | gr-analog/lib/CMakeLists.txt | 11 | ||||
-rw-r--r-- | gr-analog/lib/frequency_modulator_fc_impl.cc | 22 | ||||
-rw-r--r-- | gr-analog/lib/frequency_modulator_fc_impl.h | 2 | ||||
-rw-r--r-- | gr-blocks/lib/min_XX_impl.cc.t | 4 | ||||
-rw-r--r-- | gr-qtgui/grc/qtgui_freq_sink_x.xml | 17 | ||||
-rw-r--r-- | gr-qtgui/include/gnuradio/qtgui/FrequencyDisplayPlot.h | 3 | ||||
-rw-r--r-- | gr-qtgui/include/gnuradio/qtgui/freq_sink_c.h | 1 | ||||
-rw-r--r-- | gr-qtgui/include/gnuradio/qtgui/freq_sink_f.h | 2 | ||||
-rw-r--r-- | gr-qtgui/include/gnuradio/qtgui/freqdisplayform.h | 2 | ||||
-rw-r--r-- | gr-qtgui/lib/FrequencyDisplayPlot.cc | 13 | ||||
-rw-r--r-- | gr-qtgui/lib/freq_sink_c_impl.cc | 7 | ||||
-rw-r--r-- | gr-qtgui/lib/freq_sink_c_impl.h | 1 | ||||
-rw-r--r-- | gr-qtgui/lib/freq_sink_f_impl.cc | 7 | ||||
-rw-r--r-- | gr-qtgui/lib/freq_sink_f_impl.h | 1 | ||||
-rw-r--r-- | gr-qtgui/lib/freqdisplayform.cc | 6 | ||||
-rw-r--r-- | gr-uhd/apps/uhd_app.py | 22 | ||||
-rwxr-xr-x | gr-uhd/apps/uhd_rx_cfile | 13 |
17 files changed, 110 insertions, 24 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-qtgui/grc/qtgui_freq_sink_x.xml b/gr-qtgui/grc/qtgui_freq_sink_x.xml index d7c3139849..f69650fab3 100644 --- a/gr-qtgui/grc/qtgui_freq_sink_x.xml +++ b/gr-qtgui/grc/qtgui_freq_sink_x.xml @@ -22,6 +22,7 @@ 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) @@ -252,6 +253,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> 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/freq_sink_c.h b/gr-qtgui/include/gnuradio/qtgui/freq_sink_c.h index bf5a91f0df..c77283f1c8 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; diff --git a/gr-qtgui/include/gnuradio/qtgui/freq_sink_f.h b/gr-qtgui/include/gnuradio/qtgui/freq_sink_f.h index f13d5c6e40..ccf9db49a3 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; diff --git a/gr-qtgui/include/gnuradio/qtgui/freqdisplayform.h b/gr-qtgui/include/gnuradio/qtgui/freqdisplayform.h index e7b95cb30e..b11f8a2016 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); 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/freq_sink_c_impl.cc b/gr-qtgui/lib/freq_sink_c_impl.cc index 7dc0b2cf89..b667ccaee4 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 diff --git a/gr-qtgui/lib/freq_sink_c_impl.h b/gr-qtgui/lib/freq_sink_c_impl.h index 8da193bf29..7eec1ba10c 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); diff --git a/gr-qtgui/lib/freq_sink_f_impl.cc b/gr-qtgui/lib/freq_sink_f_impl.cc index 5418eca9ec..359854593a 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 diff --git a/gr-qtgui/lib/freq_sink_f_impl.h b/gr-qtgui/lib/freq_sink_f_impl.h index 39e5c92eac..e52da7fb94 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); 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-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..85a7562d08 100755 --- a/gr-uhd/apps/uhd_rx_cfile +++ b/gr-uhd/apps/uhd_rx_cfile @@ -115,18 +115,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 +191,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: |